xiaoshushu 2 years ago
parent
commit
c9add27c50

+ 31 - 4
src/main/java/com/lsw/controller/ReportController.java

@@ -16,16 +16,18 @@ public class ReportController extends BaseController {
         String op = getPara("op", "finish");
         String ID = getPara("ID", "ZMMMGm5mnGCE4WvWFeI");//部门ID
 
-        set("ip", getPara("ip","192.168.0.251"));
+        set("ip", getPara("ip", "192.168.0.251"));
         set("DOMAINID", getPara("DOMAINID", "uumsxrgm1KEEqSZIoHs"));
         set("ID", ID); //部门ID
+        set("time_name",getPara("time_name","CLGF220叉装车"));
+
 
         set("begin", "2021-06-01");//TimeUtil.getDay("firstDay")
         set("end", TimeUtil.getDay("lastDay"));//TimeUtil.getDay("lastDay")
         List<Record> department_list = Db.template("department", Kv.by("ID", ID)).find();
         List<Record> list = department_list.stream().filter(r -> r.get("ID").equals(ID)).collect(Collectors.toList());
         for (Record record : list) {
-            set("value",record.getStr("ID"));
+            set("value", record.getStr("ID"));
             //二级
             List<Record> list2 = department_list.stream().filter(r -> r.get("SUPERIOR") != null && r.get("SUPERIOR").equals(record.get("ID"))).collect(Collectors.toList());
             record.set("children", list2);
@@ -41,8 +43,8 @@ public class ReportController extends BaseController {
             }
 
         }
-        if(op.equals("data")){
-            List<Record>prouname=Db.template("prouname").find();
+        if (op.equals("data")) {
+            List<Record> prouname = Db.template("prouname").find();
             set("prouname", JsonKit.toJson(prouname));
         }
         set("department", JsonKit.toJson(list));
@@ -80,6 +82,7 @@ public class ReportController extends BaseController {
         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();
@@ -87,6 +90,7 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "秒"));
     }
+
     //样机试验统计
     public void model() {
         long start = System.currentTimeMillis();
@@ -94,6 +98,7 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
+
     //样机试验统计列表
     public void model_list() {
         long start = System.currentTimeMillis();
@@ -101,6 +106,7 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "秒"));
     }
+
     //产品线统计
     public void product() {
         long start = System.currentTimeMillis();
@@ -108,6 +114,7 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
+
     //产品线统计列表
     public void product_list() {
         long start = System.currentTimeMillis();
@@ -115,6 +122,7 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
+
     //数据查询与统计
     public void data() {
         long start = System.currentTimeMillis();
@@ -122,4 +130,23 @@ public class ReportController extends BaseController {
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
+
+    //时间线统计
+    public void time() {
+        long start = System.currentTimeMillis();
+        List<Record> list = Db.template("time", getParam()).find();
+        List<Record> times = Db.template("times", getParam()).find();
+        Kv kv=getParam();
+        for (Record record : list) {
+            record.set("times", times.stream().filter(r ->r.get("ITEM_VERSION").equals(record.getStr("ITEM_VERSION"))).collect(Collectors.toList()));
+            kv.set("item_key",record.getStr("ITEM_KEY"));
+            List<Record> list2 =Db.template("time_list", kv).find();
+            for (Record record2 : list2) {
+                record2.set("ITEM_VERSION", record.getStr("ITEM_VERSION"));
+            }
+            record.set("children", list2);
+        }
+        long end = System.currentTimeMillis();
+        renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
+    }
 }

+ 48 - 1
src/main/resources/report.sql

@@ -145,4 +145,51 @@ WHERE
 	and D.item_pro_num LIKE #para(item_pro_num, "like")
 	#end
 
-#end
+#end
+
+###试验时间线
+#sql("time")
+SELECT
+	y.ITEM_VERSION,
+	y.item_key,
+	'变更' AS TYPE
+FROM
+	tlk_myjcs y
+WHERE
+	y.item_upbh IS NULL
+	AND y.item_name =#para(time_name)
+#end
+
+#sql("time_list")
+SELECT
+	y.item_pky,
+	y.item_tlog
+FROM
+	tlk_myjcs y
+WHERE
+	y.item_key =#para(item_key)
+	AND y.ITEM_TLOG IS NOT NULL
+	#if(item_pky)
+	AND y.item_pky LIKE #para(item_pky, "like")
+	#end
+#end
+
+#sql("times")
+SELECT
+	y.item_name,
+	y.item_pro,
+	y.item_version,
+	y.item_xl_num,
+	w.id,
+	w.ITEM_WT_NUM,
+	w.ITEM_TITLE,
+	y.created,
+	'委托单试验' AS TYPE
+FROM
+	tlk_wyjcs y
+	LEFT JOIN TLK_EXAMINE w ON w.item_wt_num = y.item_value
+WHERE
+	y.item_upbh IS NULL
+	AND y.item_name =#para(time_name)
+#end
+

+ 153 - 0
src/main/webapp/WEB-INF/view/report/change.html

@@ -0,0 +1,153 @@
+#set(title="样机变更报表")
+#@header()
+<body>
+<div id="app" v-cloak>
+    <el-form :inline="true" label-width="auto">
+        <el-form-item label="实验名称">
+            <el-input placeholder="请输入实验名称" v-model="param.item_test_name" clearable />
+        </el-form-item>
+        <el-form-item label="时间范围">
+            <el-date-picker
+                    v-model="param.created"
+                    style="width: 240px"
+                    value-format="yyyy-MM-dd"
+                    type="daterange"
+                    range-separator="-"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+            ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+            <el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button>
+        </el-form-item>
+        <div style="float:right;">耗时: {{param.time}}</div>
+    </el-form>
+    <div id="echart" class="bar"></div>
+    <el-dialog title="数据查询与统计" width="87%" :visible.sync="dialogVisible" top="2%" append-to-body>
+        <el-table :data="tableData" style="width: 100%;">
+            <el-table-column prop="ITEM_WT_NUM" label="委托单号"></el-table-column>
+            <el-table-column prop="ITEM_TEST_NAME" align="center" label="试验名称"></el-table-column>
+            <el-table-column prop="ITEM_PRO_NUM" align="center" label="样机型号"></el-table-column>
+            <el-table-column prop="ITEM_PRO_TYPE" align="center" label="产品线"></el-table-column>
+            <el-table-column prop="ITEM_SJ_VALUE" align="center" label="设计参数"></el-table-column>
+            <el-table-column prop="ITEM_VALUE" align="center" label="结果值"></el-table-column>
+            <el-table-column prop="ITEM_REMARKS" align="center" label="备注"></el-table-column>
+            <el-table-column prop="CREATED" align="center" label="创建时间"></el-table-column>
+        </el-table>
+    </el-dialog>
+</div>
+</body>
+<script src="#(path)/static/js/jquery.min.js"></script>
+<script src="#(path)/static/js/layer/layer.js"></script>
+<script src="#(path)/static/js/vue.js"></script>
+<script src="#(path)/static/js/common.js"></script>
+<script src="#(path)/static/js/echarts.min.js"></script>
+<script src="#(path)/static/js/element-ui.js"></script>
+<script>
+    let myChart = null;
+    let vm = new Vue({
+        el: "#app",
+        data: {
+            dialogVisible: false,
+            tableData: [],
+            param: {
+                DOMAINID: '#(DOMAINID)',
+                ID: '#(ID)',
+                value: ['#(value)'],
+                begin: '#(begin)',
+                end: '#(end)',
+                created: ['#(begin)', '#(end)'],
+            }
+        },
+        mounted() {
+            this.getData();
+            myChart = echarts.init(document.getElementById('echart'));
+            myChart.on('click', function (params) {
+                vm.dialogVisible = true;
+            })
+        },
+        methods: {
+            handleChange(value) {
+                this.param.ID = value[value.length - 1]
+            },
+            search() {
+                this.param.begin = this.param.created[0];
+                this.param.end = this.param.created[1];
+                this.getData();
+            },
+            getData() {
+                sendAjax("#(path)/report/data", this.param, res => {
+                    cancelLoding();
+                    vm.tableData = res.data;
+                    vm.initEcharts(res.data);
+                    vm.param.time = res.time;
+                    vm.tableData = res.data;
+                })
+            },
+            initEcharts(data) {
+                let legend = [];
+                let series = [];
+                data.forEach(item => {
+                    legend.push(item.ITEM_TEST_NAME);
+                    series.push(item.ITEM_VALUE);
+                });
+                let option = {
+                    title: {
+                        text: '数据查询与统计',
+                    },
+                    tooltip: {
+                        trigger: 'axis',
+                        axisPointer: {
+                            type: 'shadow'
+                        }
+                    },
+                    xAxis: {
+                        type: 'category',
+                        data: legend
+                    },
+                    yAxis: {
+                        type: 'value'
+                    },
+                    series: [
+                        {
+                            data: series,
+                            type: 'line',
+                            smooth: true,
+                            symbol: 'circle',
+                            symbolSize: 15,
+                            showSymbol: true,
+                            itemStyle: {
+                                normal: {
+                                    label: {
+                                        show: true,
+                                        position: 'top',
+                                        textStyle: {
+                                            fontSize: 16
+                                        }
+                                    }
+                                }
+                            },
+                            areaStyle: {
+                                normal: {
+                                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                        offset: 0,
+                                        color: '#F44336'
+                                    }, {
+                                        offset: 0.8,
+                                        color: '#b14239'
+                                    }], false),
+                                    shadowColor: 'rgba(0, 0, 0, 0.1)',
+                                }
+                            },
+                        }
+                    ]
+                };
+                myChart.setOption(option);
+                window.addEventListener("resize", function () {
+                    myChart.resize();
+                });
+            }
+        }
+    })
+</script>
+</html>

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

@@ -31,7 +31,8 @@
     </el-form>
     <div id="echart" class="bar"></div>
     <el-dialog :title="param.name" width="80%" :visible.sync="dialogVisible" top="2%" append-to-body>
-        <el-table :data="tableData" style="width: 100%;">
+        <el-button type="primary"><a :href="'#(path)/report?op=time&time_name='+param.name" style="color: white">查看时间线</a></el-button>
+        <el-table :data="tableData" style="width: 100%;margin-top: 10px">
             <el-table-column prop="ITEM_XL_NUM" label="出厂编号"></el-table-column>
             <el-table-column prop="ITEM_TITLE" label="实验标题"></el-table-column>
             <el-table-column prop="ITEM_NAME" label="样机名称"></el-table-column>

+ 47 - 24
src/main/webapp/WEB-INF/view/report/time.html

@@ -1,29 +1,53 @@
 #set(title="时间线统计")
 #@header()
+<style>
+    .bg{padding: 15px;background-color: white;}
+    .items{padding: 8px;border-bottom: 1px solid #e9ebed;color: #545555}
+    .item{padding-top: 10px}
+    .s1{padding-right: 10px}
+    .bh{color: #2D93CA}
+    .before{color: #878787;padding-left: 10px}
+    .time{font-size: 14px;color: #878787}
+    .av{background-color: aliceblue;padding: 7px 0px 7px 7px;color: #545555}
+    .av span{padding-left: 10px}
+</style>
 <body>
 <div id="app" v-cloak>
     <el-form :inline="true" label-width="auto">
         <el-form-item label="样机型号">
-            <el-input placeholder="请输入样机型号" v-model="param.item_pro_num" clearable />
+            <el-input placeholder="请输入样机型号" v-model="param.time_name" clearable :disabled="true" />
+        </el-form-item>
+        <el-form-item label="参数名称">
+            <el-input placeholder="请输入参数名称模糊查询" v-model="param.item_pky" clearable />
         </el-form-item>
         <el-form-item>
             <el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button>
         </el-form-item>
         <div style="float:right;">耗时: {{param.time}}</div>
     </el-form>
-    <div id="echart" class="bar"></div>
-    <el-dialog title="数据查询与统计" width="87%" :visible.sync="dialogVisible" top="2%" append-to-body>
-        <el-table :data="tableData" style="width: 100%;">
-            <el-table-column prop="ITEM_WT_NUM" label="委托单号"></el-table-column>
-            <el-table-column prop="ITEM_TEST_NAME" align="center" label="试验名称"></el-table-column>
-            <el-table-column prop="ITEM_PRO_NUM" align="center" label="样机型号"></el-table-column>
-            <el-table-column prop="ITEM_PRO_TYPE" align="center" label="产品线"></el-table-column>
-            <el-table-column prop="ITEM_SJ_VALUE" align="center" label="设计参数"></el-table-column>
-            <el-table-column prop="ITEM_VALUE" align="center" label="结果值"></el-table-column>
-            <el-table-column prop="ITEM_REMARKS" align="center" label="备注"></el-table-column>
-            <el-table-column prop="CREATED" align="center" label="创建时间"></el-table-column>
-        </el-table>
-    </el-dialog>
+    <div >
+        <el-divider>变更记录</el-divider>
+        <div v-for="(item, index) in list" :key="index" class="bg">
+               <div v-for="(i, index) in item.times" class="av">
+                   {{item.ITEM_VERSION}}:
+                   {{i.ITEM_WT_NUM}}:
+                   {{i.ITEM_TITLE}}
+                   <span class="s1 bh">{{i.TYPE}}</span>
+                   <span class="s1 time">{{i.CREATED}}</span>
+               </div>
+               <div v-for="(a, index) in item.children" class="items">
+                   {{item.ITEM_VERSION}}: {{a.ITEM_PKY}} <span class="s1 before">原记录</span>
+                   <div v-for="(b, index) in a.ITEM_TLOG">
+                       <div v-if="b.ITEM_NAME" class="item">
+                           <span>{{item.ITEM_VERSION}}:</span>
+                           <span class="s1">{{a.ITEM_PKY}}{{b.ITEM_NAME}}</span>
+                           <span class="s1 bh">变更</span>
+                           <span class="s1 time">{{b.DAY}}</span>
+                       </div>
+                   </div>
+               </div>
+        </div>
+    </div>
 </div>
 </body>
 <script src="#(path)/static/js/jquery.min.js"></script>
@@ -38,8 +62,9 @@
         el: "#app",
         data: {
             dialogVisible: false,
-            tableData: [],
+            list: [],
             param: {
+                time_name:'#(time_name)',
                 DOMAINID: '#(DOMAINID)',
                 ID: '#(ID)',
                 value: ['#(value)'],
@@ -50,26 +75,24 @@
         },
         mounted() {
             this.getData();
-            myChart = echarts.init(document.getElementById('echart'));
-            myChart.on('click', function (params) {
-                vm.dialogVisible = true;
-            })
         },
         methods: {
             handleChange(value) {
                 this.param.ID = value[value.length - 1]
             },
             search() {
-                this.param.begin = this.param.created[0];
-                this.param.end = this.param.created[1];
                 this.getData();
             },
             getData() {
-                sendAjax("#(path)/report/data", this.param, res => {
+                sendAjax("#(path)/report/time", this.param, res => {
                     cancelLoding();
-                    vm.tableData = res.data;
                     vm.param.time = res.time;
-                    vm.tableData = res.data;
+                    vm.list=res.data;
+                    vm.list.forEach(item=>{
+                        item.children.forEach(item=>{
+                            item.ITEM_TLOG=JSON.parse(item.ITEM_TLOG);
+                        })
+                    })
                 })
             }
         }