Bladeren bron

维修统计

wangxiaoming 5 jaren geleden
bovenliggende
commit
f49016bf5b

+ 14 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/fm/DetectStatisticService.java

@@ -38,4 +38,18 @@ public interface DetectStatisticService {
      */
     List<DetectionConfig> getDetectConfigByTypeList(DetectionConfig detectionConfig);
 
+    /**
+     * 获取所有的返厂日期
+     * @param detectStatistics
+     * @return
+     */
+    List<DetectStatistics> getCreatTimeByConfigIdList(DetectStatistics detectStatistics);
+
+    /**
+     * 依据某个configId , 返厂日期与出厂日期对应的机器的台数
+     * @param detectStatistics
+     * @return
+     */
+    List<DetectStatistics> getDetectAllByConfigIdList(DetectStatistics detectStatistics)
+
 }

+ 11 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/DetectStatisticServiceImpl.java

@@ -40,4 +40,15 @@ public class DetectStatisticServiceImpl implements DetectStatisticService {
     public List<DetectionConfig> getDetectConfigByTypeList(DetectionConfig detectionConfig) {
         return detectStatisticMapper.getDetectConfigByTypeList(detectionConfig);
     }
+
+
+    @Override
+    public List<DetectStatistics> getCreatTimeByConfigIdList(DetectStatistics detectStatistics) {
+        return detectStatisticMapper.getCreatTimeByConfigIdList(detectStatistics);
+    }
+
+    @Override
+    public List<DetectStatistics> getDetectAllByConfigIdList(DetectStatistics detectStatistics) {
+        return detectStatisticMapper.getDetectAllByConfigIdList(detectStatistics);
+    }
 }

+ 12 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/DetectStatisticMapper.java

@@ -38,4 +38,16 @@ public interface DetectStatisticMapper {
      */
     List<DetectionConfig> getDetectConfigByTypeList(DetectionConfig detectionConfig);
 
+    /**
+     * 依据某个config 来获取所有的 返厂时间
+     * @return
+     */
+    List<DetectStatistics> getCreatTimeByConfigIdList(DetectStatistics detectStatistics);
+
+    /**
+     * 依据某个configId , 返厂日期与出厂日期对应的机器的台数
+     * @return
+     */
+    List<DetectStatistics> getDetectAllByConfigIdList(DetectStatistics detectStatistics);
+
 }

+ 60 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/detectStatisticMapper.xml

@@ -111,10 +111,70 @@
             <if test="configType != null ">
                 AND  cdc.config_type = #{configType}
             </if >
+            <if test="configId != null ">
+                AND  cdc.config_id = #{configId}
+            </if >
         </where>
         ORDER BY cdc.config_id DESC
     </select>
 
 
+    <select id="getCreatTimeByConfigIdList" resultType="DetectStatistics"  parameterType="DetectStatistics">
+        SELECT
+            t.detect_id,
+            IF (
+            t.detect_production = '',
+            '未知',
+            ifnull(
+            t.detect_production,
+            '未知'
+            )
+            ) AS detect_production,
+            t.detect_create_time,
+            cdc.config_id,
+            cdc.config_detect_content,
+            cdc.config_type
+        FROM
+            tb_rst_complaint_detect t
+        LEFT JOIN tb_rst_complaint_detection_item cdi ON t.detect_id = cdi.detect_id
+        LEFT JOIN tb_rst_complaint_detection_config cdc ON cdi.item_config_id = cdc.config_id
+        <where>
+            <if test="configId != null ">
+                AND  t.config_id = #{configId}
+            </if >
+        </where>
+        GROUP BY
+        date_format(t.detect_create_time, '%Y-%m-%d')
+        ORDER BY
+        t.detect_create_time
+    </select>
+
+    <select id="getDetectAllByConfigIdList" resultType="DetectStatistics"  parameterType="DetectStatistics">
+        SELECT *
+        FROM (
+        SELECT
+        t.detect_id,
+        COUNT(distinct t.detect_id),
+        t.detect_production,
+        t.detect_create_time,
+        cdi.item_config_id,
+        cdi.item_detect_content
+        FROM
+        (SELECT cc.detect_id,IF (cc.detect_production = '','未知',ifnull(cc.detect_production,'未知')) AS detect_production, cc.detect_create_time FROM	tb_rst_complaint_detect cc
+        ) t
+        LEFT JOIN tb_rst_complaint_detection_item cdi ON t.detect_id = cdi.detect_id
+        <where>
+            <if test="configId != null ">
+                AND  cdi.item_config_id = #{configId}
+            </if >
+            AND	t.detect_create_time > '2019-09-02 00:00:00'
+            AND t.detect_create_time < '2019-09-04 00:00:00'
+        </where>
+            GROUP BY t.detect_production,date_format(t.detect_create_time, '%Y-%m-%d')
+        ) xx
+        ORDER BY date_format(xx.detect_create_time , '%Y-%m-%d')
+    </select>
+
+
 
 </mapper>

+ 44 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java

@@ -1510,5 +1510,49 @@ public class AdminDetectController {
         return msg;
     }
 
+    /**
+     * 跳转到统计页面
+     * @return
+     */
+    @RequiresPermissions("detect:statistics:detect")
+    @RequestMapping(value = "/to_select_config_statistic")
+    public ModelAndView toSelectConfigStatistic(HttpServletRequest request,Integer configId) {
+        ModelAndView mv = new ModelAndView("cm/inspection/detect_statistics_config");
+
+        DetectionConfig detectionConfig = new DetectionConfig();
+        detectionConfig.setConfigId(configId);
+        List<DetectionConfig>  configList = detectStatisticService.getDetectConfigByTypeList(detectionConfig);
+        detectionConfig = configList.get(0);
+
+        mv.addObject("detectionConfig",detectionConfig);
+        return mv;
+    }
+
+
+
+
+    /**
+     * 报表 - 按照各个检测类型分类统计固定生产时间内,机器损坏数量
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("detect:statistics:detect")
+    @RequestMapping("/select_config_statistic")
+    public ResponseJson selectConfigStatistic(HttpServletRequest request,DetectStatistics detectStatistics){
+        ResponseJson msg = ResponseJson.getSUCCESS();
+
+        //生产年份
+        List<DetectStatistics> detectProductionList = detectStatisticService.getDetectProductionList(detectStatistics);
+//        for (:) {
+//
+//        }
+
+        List<DetectStatistics> creatTimeList = detectStatisticService.getCreatTimeByConfigIdList(detectStatistics);
+
+        return msg;
+    }
+
 }
 

+ 11 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_statistics.ftl

@@ -342,8 +342,9 @@
                         echartsObj.setOption(option,true);
 
                         echartsObj.on('click', function (params) {
-                            toSelectConfigStatistic();
-                                 alert("单击了"+params.componentType+"x轴标签");
+                            toSelectConfigStatistic(data);
+
+                            // alert("单击了"+params.componentType+"x轴标签");
 
                             //param具体包含的参数见 https://blog.csdn.net/allenjay11/article/details/76033232
 
@@ -399,6 +400,14 @@
             detectStatisticsJudgement(type,beginTime,endTime,configId);
         }
 
+        /**
+         * 到单独配置页面
+         */
+        function toSelectConfigStatistic(data) {
+            var configId = data.configId;
+            window.location.href= "${path}/admin/dealer/to_select_config_statistic?configId="+configId;
+        }
+
         $('.chosen').chosen({
             no_results_text: "没有找到结果!",//搜索无结果时显示的提示
             search_contains:true,   //关键字模糊搜索。设置为true,只要选项包含搜索词就会显示;设置为false,则要求从选项开头开始匹配

+ 215 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_statistics_config.ftl

@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <#include "/base/add_base.ftl">
+		<title>维修统计</title>
+        <style>
+            .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+            .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+            .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+            .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+            .input-box{margin: 18px 0;}
+            .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+            .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+            .add-list>li{margin: 10px 0;}
+            .my-textarea{padding: 5px 10px;width: 65%;border:1px solid rgba(0,0,0,.1);margin-left: 12.5%;}
+            .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+            .my-btn-submit{padding: 10px 20px;width: 130px; background-color: #50a2ea;color: #fff;border: 1px solid #50a2ea;cursor:pointer;margin: 10px auto 0 auto;display: block;}
+            .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px; -webkit-appearance:none;appearance:none;background: url(/common/images/pts/select-11.png) right center no-repeat;background-size:auto 100%;}
+            input[type=radio]{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+            input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+            .huanhang{ float:left}
+            .check-box, .radio-box{padding-left: 0;}
+            .my-close{position:absolute;right: 0.5em;top: 0.45em;width:0.15em;height:1em;background: #333;-webkit-transform: rotate(45deg);transform: rotate(45deg);display: inline-block;}
+            .my-close:after{content: "";position: absolute;top: 0;left: 0;width:0.15em;height:1em;background: #333;-webkit-transform: rotate(270deg);transform: rotate(270deg);}
+            .b-close{position: relative; display: inline-block;margin: 2px 0; padding:4px 1em 4px 4px; width: 100px;background: #f0f0f0;border: 1px solid rgba(0,0,0,.1);border-radius: 5px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;cursor: pointer;}
+            .close-box{width: 500px;margin-left: 15px;margin-top: -15px;}
+        </style>
+	</head>
+	<body>
+    	<div id="main" style="width: 1400px;height:500px;"></div>
+
+	</body>
+    <script type="text/javascript" src="${path}/common/lib/echarts/3.8/echarts.common.min.js"></script>
+    <script type="text/javascript" src="${path}/common/lib/echarts/3.8/echarts.min.js"></script>
+    <script type="text/javascript" src="${path}/common/lib/echarts/3.8/macarons.js"></script>
+    <script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+	<script>
+        var myChart = echarts.init(document.getElementById('main'));
+		$(function () {
+            detectStatisticsData();
+        })
+
+        /**
+         * 当月统计
+         * @param state
+         */
+        function detectStatisticsData() {
+            $.ajax({
+                type: "POST",
+                data: {},
+                url: "${path}/admin/detect/detect_statistics_data",
+                success: function(data){
+                    if (data.returnCode == 200) {
+
+                        var numArray = new Array();
+                        var monthArray = new Array();
+                        for (var i=0;i<data.returnMsg.complaintDetectInfoList.length;i++){
+                            var countNum = data.returnMsg.complaintDetectInfoList[i].countNum;
+                            numArray.push(countNum);
+
+                            var detectProduction = data.returnMsg.complaintDetectInfoList[i].detectProduction;
+                            if(detectProduction == "未知"){
+                                var flag = false;
+                                for (var k=0;k<monthArray.length;k++){
+                                    if(monthArray[k] == '未知'){
+                                        var otherMonthNum = numArray[k];
+                                        numArray[k] = numArray[k]+countNum;
+                                        flag = true;
+                                    }
+                                }
+                                if(!flag){
+                                    monthArray.push('未知');
+                                }
+                            }else{
+                                var newDate = formatDate(detectProduction,"yyyy年MM月");
+                                monthArray.push(newDate.substring(2,newDate.length))
+                            }
+						}
+
+                        var newNumArray = new Array();
+                        for (var i=0;i<monthArray.length;i++){
+                            newNumArray.push(numArray[i]);
+                        }
+                        var option = {
+                            title : {
+                                text: '本月故障机器',
+                                subtext: ''
+                            },
+                            tooltip : {
+                                trigger: 'axis'
+                            },
+                            legend: {
+                                data:['本月故障机器']
+                            },
+                            toolbox: {
+                                show : true,
+                                feature : {
+//                                    dataView : {show: true, readOnly: false},
+//                                    magicType : {show: true, type: ['line', 'bar']},
+//                                    restore : {show: true},
+//                                    saveAsImage : {show: true}
+                                }
+                            },
+                            calculable : true,
+                            xAxis : [
+                                {
+                                    type : 'category',
+                                    data : monthArray
+                                }
+                            ],
+                            yAxis : [
+                                {
+                                    type : 'value'
+                                }
+                            ],
+                            series : {
+                                name:'本月故障机器',
+                                type:'bar',
+                                data:newNumArray,
+//								barWidth : 10%,
+                                markPoint : {
+                                    data : [
+                                        {type : 'max', name: '最大值'},
+                                        {type : 'min', name: '最小值'}
+                                    ]
+                                }
+//                                ,markLine : {
+//                                    data : [
+//                                        {type : 'average', name: '平均值'}
+//                                    ]
+//                                }
+                            }
+                        };
+
+                        // 使用刚指定的配置项和数据显示图表。
+                        myChart.setOption(option);
+                    }else{
+                        layer.msg("获取信息失败!", {icon: 5, time: 3000});
+                    }
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+                }
+            });
+        }
+
+        $('.configSelect').change(function() {
+            getResetDate($(this));
+        });
+
+        $('.beginTime').change(function() {
+            getResetDate($(this));
+        });
+        $('.endTime').change(function() {
+            getResetDate($(this));
+        });
+
+        /**
+         * 选择数据后重置数据
+         */
+        function getResetDateByTime() {
+            var id = this.id;
+            var $node = $("#"+id);
+//            var $thisDiv = $node.parents(".dataTableStatis");
+            var $thisDiv = $node.parent().parent();
+            var type = $thisDiv.attr("seachType");
+            var beginTime = $thisDiv.find(".beginTime").val();
+            var endTime = $thisDiv.find(".endTime").val();
+            var configName = $thisDiv.find(".configSelect").find("option:selected").text();
+            var configId = $thisDiv.find(".configSelect").val();
+            detectStatisticsJudgement(type,beginTime,endTime,configId);
+        }
+        /**
+         * 选择数据后重置数据
+         */
+        function getResetDate($node) {
+//            var $thisDiv = $node.parents(".dataTableStatis");
+            var $thisDiv = $node.parent().parent();
+            var type = $thisDiv.attr("seachType");
+            var beginTime = $thisDiv.find(".beginTime").val();
+            var endTime = $thisDiv.find(".endTime").val();
+            var configName = $thisDiv.find(".configSelect").find("option:selected").text();
+            var configId = $thisDiv.find(".configSelect").val();
+            detectStatisticsJudgement(type,beginTime,endTime,configId);
+        }
+
+        /**
+         * 到单独配置页面
+         */
+        function toSelectConfigStatistic(data) {
+            var configId = data.configId;
+            window.location.href= "${path}/admin/dealer/to_select_config_statistic?configId="+configId;
+        }
+
+        $('.chosen').chosen({
+            no_results_text: "没有找到结果!",//搜索无结果时显示的提示
+            search_contains:true,   //关键字模糊搜索。设置为true,只要选项包含搜索词就会显示;设置为false,则要求从选项开头开始匹配
+            allow_single_deselect:true, //单选下拉框是否允许取消选择。如果允许,选中选项会有一个x号可以删除选项
+            disable_search: false, //禁用搜索。设置为true,则无法搜索选项。
+            disable_search_threshold: 0, //当选项少等于于指定个数时禁用搜索。
+            inherit_select_classes: true, //是否继承原下拉框的样式类,此处设为继承
+            placeholder_text_single: '', //单选选择框的默认提示信息,当选项为空时会显示。如果原下拉框设置了data-placeholder,会覆盖这里的值。
+            width: '200px', //设置chosen下拉框的宽度。即使原下拉框本身设置了宽度,也会被width覆盖。
+            max_shown_results: 1000, //下拉框最大显示选项数量
+            display_disabled_options: false,
+            single_backstroke_delete: false, //false表示按两次删除键才能删除选项,true表示按一次删除键即可删除
+            case_sensitive_search: false, //搜索大小写敏感。此处设为不敏感
+            group_search: false, //选项组是否可搜。此处搜索不可搜
+            include_group_label_in_selected: true //选中选项是否显示选项分组。false不显示,true显示。默认false。
+        });
+	</script>
+</html>