xiaoshushu 2 years ago
parent
commit
71c548d99e

+ 16 - 1
src/main/java/com/lsw/controller/ReportController.java

@@ -43,7 +43,7 @@ public class ReportController extends BaseController {
             }
 
         }
-        if (op.equals("data")) {
+        if (op.equals("data")||op.equals("change")) {
             List<Record> prouname = Db.template("prouname").find();
             set("prouname", JsonKit.toJson(prouname));
         }
@@ -149,4 +149,19 @@ 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 change() {
+        long start = System.currentTimeMillis();
+        List<Record> list = Db.template("change", getParam()).find();
+        long end = System.currentTimeMillis();
+        renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
+    }
+    //样机选择
+    public void prou() {
+        long start = System.currentTimeMillis();
+        List<Record> list = Db.template("prou", getParam()).find();
+        long end = System.currentTimeMillis();
+        renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
+    }
 }

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

@@ -174,6 +174,7 @@ WHERE
 	#end
 #end
 
+###试验时间线列表
 #sql("times")
 SELECT
 	y.item_name,
@@ -193,3 +194,36 @@ WHERE
 	AND y.item_name =#para(time_name)
 #end
 
+###试验时间线列表
+#sql("change")
+SELECT
+	m.item_name AS name,
+	y.*
+FROM
+	( SELECT item_name, item_key FROM tlk_myjcs WHERE item_upbh IS NULL
+	 #if(item_name)
+	 AND item_name =#para(item_name)
+	 #end
+	) m
+	LEFT JOIN tlk_myjcs y ON y.item_key = m.item_key
+WHERE
+	y.ITEM_TLOG IS NOT NULL
+	#if(item_pro)
+	AND item_pro =#para(item_pro)
+	#end
+#end
+
+###样机选择
+#sql("prou")
+SELECT
+ D.item_name,
+ D.item_xl_num,
+ D.item_version
+FROM
+ TLK_MYJCS D
+ LEFT JOIN tlk_dic_prou p ON D.item_pro = p.item_dic_prouname LEFT outer
+ JOIN t_user ON t_user.ID = D.author LEFT outer
+ JOIN t_department ON t_user.defaultdepartment = t_department.ID
+WHERE
+ D.item_upbh IS NULL
+#end

+ 111 - 25
src/main/webapp/WEB-INF/view/report/change.html

@@ -1,10 +1,21 @@
 #set(title="样机变更报表")
 #@header()
+<style>
+    .bg{padding: 0px 15px 15px 15px;background-color: white;}
+    .items{padding: 8px;border-bottom: 1px solid #e9ebed;color: #545555}
+    .s1{padding-right: 10px}
+    .bh{color: #2D93CA;padding-left: 15px}
+</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_test_name" clearable />
+        <el-form-item label="产品线选择">
+            <el-select placeholder="请选择" v-model="param.item_pro">
+                <el-option v-for="(item,index) in prouname" :key="index" :value="item.ITEM_DIC_PROUNAME"  :label="item.ITEM_DIC_PROUNAME"></el-option>
+            </el-select>
+        </el-form-item>
+        <el-form-item label="样机选择" style="cursor: pointer">
+            <el-select placeholder="请选择" v-model="param.item_name" @click.native="show()" readonly></el-select>
         </el-form-item>
         <el-form-item label="时间范围">
             <el-date-picker
@@ -23,18 +34,46 @@
         <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-dialog title="样机选择" width="87%" :visible.sync="dialogVisible2" top="2%" append-to-body>
+        <el-form :inline="true" label-width="auto" style="margin-top: -20px">
+            <el-form-item label="实验名称">
+                <el-input placeholder="请输入实验名称" v-model="param.item_test_name" clearable/>
+            </el-form-item>
+            <el-form-item label="实验名称">
+                <el-input placeholder="请输入实验名称" v-model="param.item_test_name" clearable/>
+            </el-form-item>
+            <el-form-item label="实验名称">
+                <el-input placeholder="请输入实验名称" v-model="param.item_test_name" clearable/>
+            </el-form-item>
+            <el-form-item>
+                <el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button>
+            </el-form-item>
+        </el-form>
+        <el-table :data="tableData" style="width: 100%;" @row-click="select">
+            <el-table-column prop="ITEM_NAME" label="样机名称"></el-table-column>
+            <el-table-column prop="ITEM_XL_NUM" align="center" label="序列号"></el-table-column>
+            <el-table-column prop="ITEM_VERSION" align="center" label="版本号"></el-table-column>
         </el-table>
     </el-dialog>
+    <!--查看记录-->
+    <el-dialog :title="param.title" width="87%" :visible.sync="dialogVisible" top="2%" append-to-body>
+        <el-divider>变更记录</el-divider>
+        <div class="bg">
+            <div v-for="(item, index) in change_list" :key="index" class="items">
+                <div>
+                    <span>{{item.ITEM_VERSION}}:</span>
+                    <span class="s1">{{item.NAME}}</span>
+                    <span class="s1">{{item.ITEM_PKY}}</span>
+                </div>
+                <div>
+                    <span>{{item.ITEM_VERSION}}:</span>
+                    <span class="s1">{{item.NAME}}</span>
+                    {{item.ITEM_PKY}}:{{item.ITEM_NAME}} <span class="s1 bh">变更值</span>
+                </div>
+            </div>
+        </div>
+    </el-dialog>
 </div>
 </body>
 <script src="#(path)/static/js/jquery.min.js"></script>
@@ -45,51 +84,98 @@
 <script src="#(path)/static/js/element-ui.js"></script>
 <script>
     let myChart = null;
+    let data = [];
     let vm = new Vue({
         el: "#app",
         data: {
             dialogVisible: false,
-            tableData: [],
+            dialogVisible2: false,
+            change_list: [],
             param: {
                 DOMAINID: '#(DOMAINID)',
                 ID: '#(ID)',
                 value: ['#(value)'],
                 begin: '#(begin)',
                 end: '#(end)',
-                created: ['#(begin)', '#(end)'],
-            }
+                created: []
+            },
+            tableData: [],
+            prouname: #(prouname),
         },
         mounted() {
-            this.getData();
+            // this.getData();
             myChart = echarts.init(document.getElementById('echart'));
             myChart.on('click', function (params) {
+                vm.change_list = data.filter(item => item.day == params.name)[0].list;
                 vm.dialogVisible = true;
+                vm.param.title = params.name;
+                console.log("asd:" + vm.change_list.length);
+            })
+            sendAjax("#(path)/report/prou", this.param, res => {
+                cancelLoding();
+                vm.tableData = res.data;
             })
         },
         methods: {
             handleChange(value) {
                 this.param.ID = value[value.length - 1]
             },
+            show() {
+                vm.dialogVisible2 = true;
+            },
+            select(row){
+                vm.param.item_name=row.ITEM_NAME;
+                vm.dialogVisible2=false;
+                console.log(JSON.stringify(row));
+            },
             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/change", this.param, res => {
                     cancelLoding();
-                    vm.tableData = res.data;
-                    vm.initEcharts(res.data);
+                    let list = [];
+                    data = [];
                     vm.param.time = res.time;
-                    vm.tableData = res.data;
+                    let day = new Set();
+                    res.data.forEach(item => {
+                        item.ITEM_TLOG = JSON.parse(item.ITEM_TLOG);
+                        item.ITEM_TLOG.forEach(it => {
+                            if (it.DAY != '原记录') {
+                                list.push({
+                                    ITEM_VERSION: item.ITEM_VERSION,
+                                    NAME: item.NAME,
+                                    ITEM_PKY: item.ITEM_PKY,
+                                    DAY: it.DAY.substring(0, 10),
+                                    ITEM_NAME: it.ITEM_NAME
+                                });
+                                day.add(it.DAY.substring(0, 10));
+                            }
+                        })
+                    })
+                    Array.from(day).forEach(item => {
+                        data.push({day: item, list: list.filter(i => i.DAY == item)});
+                    })
+                    //按日期排序
+                    data.sort((a, b) => new Date(a.day).getTime() - new Date(b.day).getTime());
+                    //时间范围
+                    if (this.param.created[0]) {
+                        this.param.begin = this.param.created[0];
+                        this.param.end = this.param.created[1];
+                        data = data.filter(item => {
+                            return Date.parse(vm.param.created[0]) <= Date.parse(item.day) && Date.parse(item.day) <= Date.parse(vm.param.created[1]);
+                        });
+                        this.$forceUpdate();
+                    }
+                    vm.initEcharts();
                 })
             },
-            initEcharts(data) {
+            initEcharts() {
                 let legend = [];
                 let series = [];
                 data.forEach(item => {
-                    legend.push(item.ITEM_TEST_NAME);
-                    series.push(item.ITEM_VALUE);
+                    legend.push(item.day);
+                    series.push(item.list.length);
                 });
                 let option = {
                     title: {