소스 검색

Merge branch 'master' of http://git_xt.jsxt.jsjtyxt.com/wenhongquan/VisualInspection

minitiger 8 년 전
부모
커밋
e530b6d865
19개의 변경된 파일1478개의 추가작업 그리고 181개의 파일을 삭제
  1. 1 0
      .gitignore
  2. 3 1
      VisualInspection/css/statistics/assess_situation.css
  3. 196 0
      VisualInspection/js/statistics/wrecker.js
  4. 198 0
      VisualInspection/js/statistics/wrecker_person.js
  5. 88 0
      VisualInspection/view/statistics/wrecker.html
  6. 127 0
      VisualInspection/view/statistics/wrecker_person.html
  7. 5 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/StatisticsBean.java
  8. 4 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/UnregularUserClass.java
  9. 14 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/UserClassRemove.java
  10. 2 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/WreckerGroup.java
  11. 112 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/WreckerStatisticsBO.java
  12. 14 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/StatisticsController.java
  13. 10 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/master/StatisticsDao.java
  14. 17 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/master/UserClassDao.java
  15. 73 4
      VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/StatisticsMapper.xml
  16. 156 43
      VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/UserClassMapper.xml
  17. 8 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/service/StatisticsService.java
  18. 141 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/StatisticsServiceImpl.java
  19. 309 133
      VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/UserClassServiceImpl.java

+ 1 - 0
.gitignore

@@ -13,3 +13,4 @@
 hs_err_pid*
 
 jicha/
+VisualInspection_server/src/main/resources/application.properties

+ 3 - 1
VisualInspection/css/statistics/assess_situation.css

@@ -91,7 +91,9 @@ table{
     padding-top: 6px;
 }
 
-
+.special-style td{
+    border:  1px solid #c7c6c5;
+}
 
 
 

+ 196 - 0
VisualInspection/js/statistics/wrecker.js

@@ -0,0 +1,196 @@
+var url = "statistics/check/wrecker";
+
+/**
+ * 点击查询
+ */
+function queryTypeClick(){
+    //每次点击前清空表格数据
+    $(".table-tbody").empty('');
+    var start_date = $("#start-time").val();
+    var end_date = $("#end-time").val();
+    if(start_date==null||start_date==''||start_date==undefined||
+    end_date==null||end_date==''||end_date==undefined){
+        tip("请选择起止日期");
+                return ;
+    }else{
+        start_date += " 23:00:00";
+        end_date += " 23:00:00";
+    }
+    var startStr = start_date.replace(/-/g, '/');
+    var endStr = end_date.replace(/-/g, '/');
+    var start = new Date(startStr);
+    //开始日期取前一天的23:00
+    start.setDate(start.getDate()-1);
+    start_date = start.Format("yyyy-MM-dd HH:mm:ss");
+    var end = new Date(endStr);
+    if(start>end){
+        tip("开始时间不能比结束时间大");
+        return;
+    }
+    var param = {
+        "dept_id": $("#fsList").val(),
+        "start_date": start_date,
+        "end_date": end_date,
+    }
+
+    post_common_service( url,param,function(data){
+        check_operation_avg(data);
+        },function(error){
+            return "" ;
+    });
+}
+
+/**
+ * 表格初始化
+ */
+function initQueryType(){
+    var endD = new Date();
+    var startD = new Date();
+    var start_time = startD.getFullYear()+"-"+(startD.getMonth())+"-26";
+    var end_time = endD.getFullYear()+"-"+(endD.getMonth()+1)+"-25";
+    // 默认初始化时间页面回显
+    $("#start-time").val(start_time);
+    $("#end-time").val(end_time);
+    var start_date = start_time+" 23:00:00"; 
+    var end_date = end_time+" 23:00:00"; 
+    var start = new Date(start_date);
+    //开始日期取前一天的23:00
+    start.setDate(start.getDate()-1);
+    start_date = start.Format("yyyy-MM-dd HH:mm:ss");
+    var param = {
+        "start_date": start_date,
+        "end_date": end_date,
+    }
+   
+    post_common_service( url,param,function(data){
+            check_operation_avg(data); 
+        },function(error){
+            return "" ;
+     });
+}
+
+/**
+ * 表格拼接及数据传入
+ * @param {*} data 
+ * @param {*} i 
+ * @param {*} avg 
+ */
+function gethtml(data,i){
+    var strTbody = "<tr><td  width='5%'>"+ i +"</td>";
+    strTbody+="<td width='10%'>"+data.name+"</td><td width='5%'>"+data.people_num+"</td><td width='5%'>"+data.checked_people_num
+                +"</td><td width='5%'>"+data.data_check_num+"</td><td width='5%'>"+data.data_total_score
+                +"</td><td width='5%'>"+data.special_check_num+"</td><td width='5%'>"+data.special_total_score
+                +"</td><td width='5%'>"+data.third_check_num+"</td><td width='5%'>"+data.third_total_score
+                +"</td><td width='5%'>"+data.onsite_check_num+"</td><td width='5%'>"+data.onsite_total_score
+                +"</td><td width='5%'>"+data.other_check_num+"</td><td width='5%'>"+data.other_total_score
+                 +"</td><td width='5%'>"+data.check_all_score+"</td><td width='8%'>"
+                + calculate_avg( data.check_all_score,data.checked_num) +"</td>"
+                +"<td width='7%'></td><tr>";
+    return strTbody;
+}
+// data.check_all_score/data.checked_num
+function calculate_avg(score,num){
+    if(num == 0){
+        return '/';
+    }
+    return 1000 -  (score/num).toFixed(2) ;
+}
+
+
+// function gethtml(data,i,avg,lists){
+//     var strTbody = "";
+
+//     strTbody += "<tr><td width='8%'>"+data.company_ranking2+"</td>";
+//     strTbody+="<td width='8%'>"+data.name+"</td><td width='8%'>"+data.people_num+"</td><td width='6%'>"+data.company_check_num
+//                 +"</td><td width='6%'>"+data.company_total_score+"</td><td width='6%'>"+data.third_check_num
+//                 +"</td><td width='6%'>"+data.third_total_score+"</td><td width='6%'>"+data.special_check_num
+//                 +"</td><td width='6%'>"+data.special_total_score+"</td><td width='6%'>"+data.onsite_check_num
+//                 +"</td><td width='6%'>"+data.onsite_total_score+"</td><td width='6%'>"+data.data_check_num
+//                 +"</td><td width='6%'>"+data.data_total_score+"</td><td width='8%'>"
+//                 +data.check_total_avg+"</td>"
+//                 +"<td width='8%'>"+data.score_avg+"</td>";
+//     strTbody += "</tr>";
+//     return strTbody;
+// }
+
+function getTotalHtml(data){
+    var html = "<tr><td>合计</td><td></td><td>"+data.totalMan+"</td><td>"+data.totalCompanyNum+"</td><td>"+data.totalCompanyScore+"</td><td>"
+    +data.totalThirdNum+"</td><td>"+data.totalThirdScore+"</td><td>"+data.totalSpecialNum+"</td><td>"+data.totalSpecialScore
+    +"</td><td>"+data.totalOnsiteNum+"</td><td>"+data.totalOnsiteScore+"</td><td>"+data.totalDataNum
+    +"</td><td>"+data.totalDataScore+"</td><td>-</td><td>-</td></tr>";
+    return html;
+}
+
+/**
+ * @param {*} data 
+ */
+function check_operation_avg(data){
+      // 获取的请求数据初始化到表格中 ... 
+    //   console.log(data) ;
+    $(".table-tbody").empty();
+    for(var i =0;i<data.length; i++ ){
+        $(".table-tbody").append( gethtml(data[i],i+1) );
+    }
+}
+
+/**
+ * 过滤undefined
+ * @param {*} value 
+ * @param {*} default_display_value 
+ */
+function filter(value , default_display_value){
+    if(value!='' && value!=undefined ){
+        return value ;
+    }else if(default_display_value != undefined){
+        return default_display_value ;
+    }else{
+        return "" ;
+    }
+}
+
+/**
+ * 过滤除数为0和保留二位小数时出现的0.00
+ * @param {*} value 
+ * @param {*} default_display_value 
+ */
+function filterByZeroHandle(value , default_display_value){
+        if(isNaN(value)){
+            return default_display_value ;
+        }else{
+            if((value+'').endsWith('.00')){
+                return value.substring(0,value.length-3);
+            }
+            return value ;
+        }
+}
+
+function filterJudge(num1,num2){
+        if(num2==0){
+            return 0;
+        }else{
+            return (num1/num2).toFixed(2);
+        }
+}
+
+function exportExcel(){
+    var start_date = $("#start-time").val();
+    var end_date = $("#end-time").val();
+    if( start_date=='' || end_date==''){
+        tip("请选择起止日期");
+        return ;
+    }else{
+        start_date += " 23:00:00";
+        end_date += " 23:00:00";
+        var start = new Date(start_date);
+        //开始日期取前一天的23:00
+        start.setDate(start.getDate()-1);
+        start_date = start.Format("yyyy-MM-dd HH:mm:ss");
+    }
+    window.open( getserveraddr() + "/file/operation/manage/integration?start_date="+start_date+"&end_date="+end_date);
+}
+
+
+
+
+
+

+ 198 - 0
VisualInspection/js/statistics/wrecker_person.js

@@ -0,0 +1,198 @@
+var isshownumber = false;
+$(function() {
+    $('[data-toggle="tooltip"]').tooltip();
+
+    var feeList = getOrganList();
+    $("#select-dept").append("<option value='' >请选择清障单位</option>");
+    for(var i =0  ;i<feeList.length;  i++){
+        $("#select-dept").append("<option value='"+ feeList[i].deptid +"'>"+ feeList[i].name +"</option>");
+    }
+
+    // 初始化查询
+    initQueryEmp();
+})
+
+function queryEmpClick() {
+
+    //每次点击前清空表格数据
+    $(".table-tbody").empty('');
+    var start_date = $("#start-time").val();
+    var end_date = $("#end-time").val();
+    var start_score = $("#start-score").val();
+    var end_score = $("#end-score").val();
+    var start_num = $("#start-num").val() != '' ? $("#start-num").val() : 0;
+    var end_num = $("#end-num").val() != '' ? $("#end-num").val() : 100;
+    var flag = param_method(start_score, end_score);
+    if (flag == false) {
+        return;
+    }
+    if (start_date == '' || end_date == '') {
+        tip("请选择起止日期");
+        return;
+    } else {
+        start_date += " 23:00:00";
+        end_date += " 23:00:00";
+    }
+    var startStr = start_date.replace(/-/g, '/');
+    var endStr = end_date.replace(/-/g, '/');
+    var start = new Date(startStr);
+    //开始日期取前一天的23:00
+    start.setDate(start.getDate() - 1);
+    start_date = start.Format("yyyy-MM-dd HH:mm:ss");
+    var end = new Date(endStr);
+    if (start > end) {
+        tip("开始时间不能比结束时间大");
+        return;
+    }
+    var param = {
+        "positionid": $("#jobSelect").val(),
+        "dept_id": $("#select-dept").val(),
+        "start_date": start_date,
+        "end_date": end_date,
+    }
+    var url = "statistics/check/wrecker/staff";
+    getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num)
+}
+
+function initQueryEmp() {
+   
+     setJobSelect("#jobSelect");
+
+    //默认初始化前一周查所有
+    var endD = new Date();
+    var startD = new Date();
+
+    var start_time = startD.getFullYear() + "-" + (startD.getMonth() > 10 ? startD.getMonth() : "0" + startD.getMonth()) + "-26";
+    var end_time = endD.getFullYear() + "-" + (endD.getMonth() + 1 >= 10 ? endD.getMonth() + 1 : "0" + (endD.getMonth() + 1)) + "-25";
+    var start_score = $("#start-score").val();
+    var end_score = $("#end-score").val();
+    var start_num = $("#start-num").val() != '' ? $("#start-num").val() : 0;
+    var end_num = $("#end-num").val() != '' ? $("#end-num").val() : 100;
+
+    //默认初始化时间页面回显
+    $("#start-time").val(start_time);
+    $("#end-time").val(end_time);
+    var start_date = start_time + " 23:00:00";
+    var end_date = end_time + " 23:00:00";
+
+    var start = moment(start_date).subtract(1, "day");
+    //开始日期取前一天的23:00
+
+    start_date = start.toDate().Format("yyyy-MM-dd HH:mm:ss");
+
+    var param = {
+        "positionid": $("#jobSelect").val(),
+        "dept_id": $("#select-dept").val(),
+        "start_date": start_date,
+        "end_date": end_date,
+    }
+
+    var url = "statistics/check/wrecker/staff";
+    getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num);
+}
+/**
+ * click
+ * @param {*} url
+ * @param {*} param
+ */
+function getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num) {
+    post_common_service(url, param, function(data) {
+        var strTbody = '';
+        for (var i = 0; i < data.length; i++) {
+            var agv = filterSlash( data[i].all_check_score, data[i].check_num) ;
+            if( !(start_score ==0 && end_score ==1000)){
+                 if(agv ==  '/' || agv< start_score || agv > end_score ){
+                    continue ;
+                }
+            }
+            strTbody += "<tr><td width='4%;'>" + (i + 1) + "</td><td width='6%;'>" + data[i].dept_name + "</td>" +
+                "<td width='5%;'>" + data[i].name + "</td><td width='5%;'>" + data[i].work_no + "</td>" +
+                    "<td width='5%;'>" + data[i].position_name + "</td>"+
+
+                "</td><td width='4%;'>" + data[i].chu_jing + "</td>" +
+                "<td width='4%;'>" +  data[i].xian_chang + "</td><td width='4%;'>" + data[i].chang_tong + "</td>" +
+                "<td width='4%;'>" + data[i].zuo_ye + "</td><td width='4%;'>" + data[i].xin_xi + "</td>" +
+                "<td width='4%;'>" + data[i].zhuo_zhuang + "</td><td width='4%'>" +data[i].zuo_ye_xian_chang + "</td><td width='4%;'>" +
+                data[i].wen_ming + "</td><td width='4%;'>" + data[i].cao_zuo + "</td>" +
+                "<td width='4%;'>" +   data[i].gong_zuo + "</td><td width='5%;'>" + data[i].private_check + "</td>" +
+                "<td width='5%;'>" + data[i].in_check + "</td>" + "<td width='5%;'>"+  data[i].other_check +"</td><td width='5%;'>"+data[i].all_check_score +"</td><td width='5%;'>"+ agv+"</td><td width='5%;'></td><td width='5%;'>" + "</td></tr>";
+        }
+         $(".table-tbody").empty();
+        $(".table-tbody").append(strTbody);
+    }, function(error) {
+        return "";
+    });
+}
+
+function getOrganList(){
+    var  organList = $.zui.store.get("cache_wrecker_group_list");
+    return organList;
+}
+
+/**
+ * 对于受检次数为0,扣分和得分都为 /
+ * @param {*} value , check_num 受此次数
+ * @return value or /
+ */
+function filterSlash(value, check_num) {
+    if (check_num == 0) {
+        return '/';
+    } else {
+        return 1000- (value/check_num).toFixed(2);
+    }
+}
+
+
+
+
+function exportExcel() {
+    var dept_id = $("#fsList").val();
+    var start_date = $("#start-time").val();
+    var end_date = $("#end-time").val();
+    var start_score = $("#start-score").val();
+    var end_score = $("#end-score").val();
+    var parent_dept_id = $("#center-manager").val();
+    var max_score = $("#end-score").val();
+    var min_score = $("#start-score").val();
+    var min_check_num = $("#start-num").val();
+    var max_check_num = $("#end-num").val();
+    var position_id = $("#jobSelect").val();
+    var flag = param_method(start_score, end_score);
+    if (flag == false) {
+        return;
+    }
+    if (start_date == '' || end_date == '') {
+        tip("请选择起止日期");
+        return;
+    } else {
+        start_date += " 23:00:00";
+        end_date += " 23:00:00";
+        var start = new Date(start_date);
+        //开始日期取前一天的23:00
+        start.setDate(start.getDate() - 1);
+        start_date = start.Format("yyyy-MM-dd HH:mm:ss");
+    }
+    if (!dept_id) dept_id = "";
+    window.open(getserveraddr() + "/file/business/feedback?dept_id=" + dept_id +
+        "&start_date=" + start_date + "&end_date=" + end_date + "&start_score=" + start_score + "&end_score=" + end_score + "&parent_dept_id=" + parent_dept_id +
+        "&max_score=" + max_score + "&min_score=" + min_score + "&min_check_num=" + min_check_num + "&max_check_num=" + max_check_num + "&position_id=" + position_id);
+}
+
+
+function param_method(start_score, end_score) {
+    if (start_score == '' || end_score == '') {
+        tip("请输入得分区间");
+        return false;
+    } else if (!(/^[0-9]*$/).test(start_score) || !(/^[0-9]*$/).test(end_score)) {
+        tip("数字不合法!");
+        return false;
+    } else if (parseInt(start_score) > parseInt(end_score)) {
+        tip("开始得分不能比结束得分大");
+        return false;
+    } else if (start_score < 0 || start_score > 1000 || end_score < 0 || end_score > 1000) {
+        tip("得分只能在0-1000之间");
+        return false;
+    } else {
+        return true;
+    }
+}

+ 88 - 0
VisualInspection/view/statistics/wrecker.html

@@ -0,0 +1,88 @@
+<script src="/js/statistics/wrecker.js?__inline"></script>
+<link rel="stylesheet" type="text/css" href="/css/statistics/assess_situation.css?__inline">
+<div class="container-fluid ">
+    <div class="form-div">
+        <form  class="form-horizontal">
+            <div class="form-group">
+                <div class="from-label"><label>查询日期</label></div>
+                <div class="col-sm-2">
+                    <input type="text" id="start-time" class="form-control form-date" placeholder="开始日期">
+                </div>
+                <div class="col-sm-2">
+                    <input type="text" id="end-time" class="form-control form-date" placeholder="结束日期">
+                </div>
+                <div class="col-sm-1">
+                    <button class="btn btn-primary " type="button" onclick="queryTypeClick()">查询</button>
+                </div>
+                <!--<div class="col-sm-1">
+                    <button class="btn btn-primary " type="button" onclick="exportExcel()" >导出Excel</button>
+                </div>-->
+            </div>
+        </form>
+    </div>
+    <div class="table-title"><span>清障队检查情况汇总表</span></div>
+
+    <div class="row">
+          <div class="datatable" data-checkable="false" data-sortable="false"  style="margin-bottom:0px;">
+              <div class="table-head" ><table border="1" width="100%" height="90px" align="center">
+                 <thead>
+                        <tr>
+                        <th rowspan="3" width="5%">序号</th>
+                        <th rowspan="3" width="10%">单位</th>
+                        <th rowspan="3" width="5%">岗位人数</th>
+                        <th rowspan="3" width="5%">受检人数</th>
+                        <th colspan="10" height="30px">存在问题扣分详情</th>
+                        <th rowspan="3" width="5%" >扣分合计</th>
+                        <th rowspan="3" width="8%">平均得分</th>
+                        <th rowspan="3" width="7%">备注</th>
+                        </tr>
+                        <tr> 
+                        <th  height="30px;" colspan="2">中心实时检查</th><th colspan="2">视频稽查</th><th colspan="2">第三方暗访</th>
+                        <th colspan="2" width="54px">现场检查</th><th colspan="2" width="54px">其他</th>
+                        </tr>
+                        <tr> 
+                            <th width="5%" height="30px;">受检次数</th>
+                            <th width="5%">扣分</th>
+                            <th width="5%">受检次数</th>
+                            <th width="5%">扣分</th>
+                            <th width="5%">受检次数</th>
+                            <th width="5%">扣分</th>
+                            <th width="5%">受检次数</th>
+                            <th width="5%">扣分</th>
+                            <th width="5%">受检次数</th>
+                            <th width="5%">扣分</th>
+                        </tr>
+                 </thead>
+                </table></div>
+          </div>
+          <div id="scrollTable" style="height:300px;overflow:scroll;margin-right:-10px;">
+              <div class="table-head" style="margin:0px;">
+                  <table border="1" width="100%" height="90px" align="center" style="border-top:0px;">
+                    <tbody class="table-tbody " style="background:white" align="center">
+               
+                    </tbody>
+                  </table></div>
+          </div>
+    </div>
+</div>
+<script>
+   
+    $(document).ready(function() {
+        // 设置滚动表格的高度
+        $("#scrollTable").height($(window).height() - 360);
+        // 仅选择日期
+        $("#start-time,#end-time").datetimepicker(
+        {
+            language:  "zh-CN",
+            weekStart: 1,
+            todayBtn:  1,
+            autoclose: 1,
+            todayHighlight: 1,
+            startView: 2,
+            minView: 2,
+            forceParse: 0,
+            format: "yyyy-mm-dd"
+        });
+        initQueryType();
+    });
+</script>

+ 127 - 0
VisualInspection/view/statistics/wrecker_person.html

@@ -0,0 +1,127 @@
+<script src="/js/statistics/wrecker_person.js?__inline"></script>
+<script src="/js/statistics/common_statistic.js?__inline"></script>
+<link rel="stylesheet" type="text/css" href="/css/statistics/assess_situation.css">
+<div class="container-fluid ">
+    <div class="form-div">
+        <form class="form-horizontal">
+            <div class="form-group">
+                <div class="form-group col-sm-3">
+                    <label for="exampleInputAccount1" class="col-sm-4">清障单位</label>
+                    <div class="col-sm-8">
+                        <select class="form-control" id="select-dept">
+                        </select>
+                    </div>
+                </div>
+                
+                <div  class="form-group col-sm-4">
+                    <label for="exampleInputAccount1" class="col-sm-4">查询日期</label>
+                    <div class="col-sm-4">
+                        <input type="text" id="start-time" class="form-control form-date" placeholder="开始日期">
+                    </div>
+                    <div class="col-sm-4">
+                        <input type="text" id="end-time" class="form-control form-date" placeholder="结束日期">
+                    </div>
+                </div>
+                <div  class="form-group col-sm-2">
+                    <div class="col-sm-6">
+                        <button class="btn btn-primary " type="button" onclick="queryEmpClick()">查询</button>
+                    </div>
+                    <!--<div class="col-sm-6">
+                        <button class="btn btn-primary " type="button" onclick="exportExcel()">导出Excel</button>
+                    </div>-->
+                </div>
+            </div>
+            <div class="form-group">
+               
+                <div  class="form-group col-sm-3">
+                    <label for="exampleInputAccount1" class="col-sm-4">职位</label>
+                    <div class="col-sm-8">
+                        <select class="form-control" id="jobSelect">
+                        </select>
+                    </div>
+                </div>
+                <div  class="form-group col-sm-4">
+                    <label for="exampleInputAccount1" class="col-sm-4">得分区间</label>
+                    <div class="col-sm-3">
+                        <input type="text" id="start-score" class="form-control form-date"  value="0">
+                    </div>
+                    <div class="to-score col-sm-2" style="padding-top: 6px;text-align:center;"><label> - </label></div>
+                    <div class="col-sm-3">
+                        <input type="text" id="end-score" class="form-control form-date" value="1000">
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <div class="table-title"><span>清障人员业务提升考核情况反馈表</span></div>
+
+    <div class="row">
+        <!-- 使用一个div来显示数据表格   -->
+        <div class="datatable" data-checkable="false" style="margin-bottom: 0px;margin-right:10px;" data-sortable="false">
+            <div class="table-head">
+                <table border="0" width="100%" align="center">
+                    <thead class="table-thead" align="center">
+                        <tr>
+                            <th rowspan="3" width="4%;" id='th_1'>序号</th>
+                            <th rowspan="3" width="6%" id='th_2'>单位</th>
+                            <th rowspan="3" width="5%" id='th_3'>姓名</th>
+                            <th rowspan="3" width="5%" id='th_5'>工号</th>
+                            <th rowspan="3" width="5%" id='th_4'>岗位</th>
+                            <th colspan="13" height="40px" id='th_9'>考核扣分</th>
+                            <th rowspan="3" width="5%" id='th_13'>合计扣分</th>
+                            <th rowspan="3" width="5%" id='th_11'>平均得分(千分制)</th>
+                            <th rowspan="3" width="5%" id='th_12'>服务评价</th>
+                            <th rowspan="3" width="5%" id='th_14'>备注</th>
+                        </tr>
+                        <tr>
+                            <th colspan="5"  id='th_9_1'>中心实时检查</th>
+                            <th colspan="5" id='th_9_2'>视频稽查</th>
+                            <th rowspan="2" width="5%"  id='th_9_3'>暗访</th>
+                            <th rowspan="2" width="5%"  id='th_9_4'>现场检查</th>
+                            <th rowspan="2" width="5%"  id='th_9_5'>其他</th>
+                        </tr>
+                        <tr>
+                            <th width="4%">出警<br>及时<br>性</th>
+                            <th width="4%">现场<br>到达<br>率</th>
+                            <th width="4%">畅通<br>率</th>
+                            <th width="4%">作业<br>现场<br>安全<br>管理</th>
+                            <th width="4%">信息<br>上报</th>
+
+                            <th width="4%">着装<br>规范</th>
+                            <th width="4%">作业<br>现场<br>安全<br>管理</th>
+                            <th width="4%">文明<br>服务</th>
+                            <th width="4%">操作<br>规范</th>
+                            <th width="4%">工作<br>纪律</th>
+                        </tr>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <div id="scrollTable" style="height:200px;overflow:scroll;">
+            <table style="border-top:0;" border="0" width="100%" align="center">
+                <tbody class="table-tbody special-style" style="background:white; " align="center">
+
+                </tbody>
+            </table>
+        </div>
+    </div>
+</div>
+<script>
+    $(document).ready(function() {
+        // 设置滚动表格的高度
+        $("#scrollTable").height($(window).height() - 410);
+
+        // 仅选择日期 开始 ,结束时间
+        $("#start-time,#end-time").datetimepicker({
+            language: "zh-CN",
+            weekStart: 1,
+            todayBtn: 1,
+            autoclose: 1,
+            todayHighlight: 1,
+            startView: 2,
+            minView: 2,
+            forceParse: 0,
+            format: "yyyy-mm-dd"
+        });
+    });
+</script>

+ 5 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/StatisticsBean.java

@@ -155,6 +155,11 @@ public class StatisticsBean {
     // 数据平台受检次数
     private Integer data_check_num = 0;
     // 数据平台扣分合计
+    
+    // 其他
+    private Integer other_check_num =0;
+    private Integer other_total_score = 0 ;
+    
     private Integer data_total_score = 0;
     // 总平均扣分
     private String check_total_avg  = "0";

+ 4 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/UnregularUserClass.java

@@ -35,6 +35,10 @@ public class UnregularUserClass {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
     private Date end_time;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date update_time;
     //班组id
     private Long team_id;
     //人员ids

+ 14 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/UserClassRemove.java

@@ -0,0 +1,14 @@
+package com.xintong.visualinspection.bean;
+
+import lombok.Data;
+
+/**
+ * 文件名:UserClassRemove
+ * 版本信息:日期:2017/10/20 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有.
+ */
+@Data
+public class UserClassRemove {
+    private Integer id;
+    private String data;
+    private Integer type;
+}

+ 2 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/WreckerGroup.java

@@ -29,4 +29,6 @@ public class WreckerGroup {
     //是否显示,0:不显示,1:显示
     private String isshow;
     private String parentid;
+    
+    private Integer people_num ;
 }

+ 112 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/WreckerStatisticsBO.java

@@ -0,0 +1,112 @@
+package com.xintong.visualinspection.bean;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class WreckerStatisticsBO {
+	
+	 //编号
+    private Integer id;
+ 
+    private String dept_name ;
+    
+    // 部门id
+    private Long dept_id;
+    
+    //开始日期
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date start_date ;
+    
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date end_date ;
+
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date update_time ;
+
+    private Long work_no;
+
+    private Integer positionid ;
+    
+    private Long user_id ;
+    
+    private String name ;
+    
+    private String position_name ;
+    
+    private int score;
+    
+    private Integer item_id ;
+
+    private String item_name ;
+    
+    private int chu_jing ;
+    
+    private int xian_chang;
+    
+    private int chang_tong ;
+    
+    private int zuo_ye;
+    
+    private int xin_xi ;
+    
+    private int zhuo_zhuang;
+    
+    private int zuo_ye_xian_chang;
+    
+    private int wen_ming ;
+    
+    private int cao_zuo ;
+    
+    private int gong_zuo;
+    
+    //
+    private int private_check ;
+    
+    private int in_check ;
+    
+    private int other_check ;
+    
+    private int all_check_score ;
+    
+    private int check_num;
+    
+    private Integer wrecker_check_type ;
+
+    
+    public int compareTo(WreckerStatisticsBO o2){
+    	if(this.getCheck_num() !=0  && o2.getCheck_num() !=0){
+    		double a=this.getAll_check_score()/this.getCheck_num();
+    		double b= o2.getAll_check_score() /  this.getCheck_num()  ;
+    		if(a>b){
+    			return 1;
+    		}else if(a<b){
+    			return -1 ;
+    		}else{
+    			return 0 ;
+    		}
+    	}else{
+    		if(this.getCheck_num() == 0 && o2.getCheck_num() !=0){
+    			return 1 ;
+    		}else if(this.getCheck_num() != 0 && o2.getCheck_num() ==0){
+    			return -1 ;
+    		}else{
+    			return 0 ;
+    		}
+    	}
+    }
+    
+}

+ 14 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/StatisticsController.java

@@ -17,6 +17,7 @@ import com.xintong.visualinspection.bean.Constant;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBo;
 import com.xintong.visualinspection.bean.StatisticsFsWork;
+import com.xintong.visualinspection.bean.WreckerStatisticsBO;
 import com.xintong.visualinspection.service.StatisticsService;
 import com.xintong.visualinspection.util.CodeUtil;
 
@@ -361,4 +362,17 @@ public class StatisticsController extends BaseController {
     	return super.returnSuccessResult(lists);
     }
     
+    
+    @RequestMapping(value = "/check/wrecker")
+    public String getCheckWrecker(@RequestBody StatisticsBean obj){
+    	List<StatisticsBean> lists=  statisticsService.getWreckerCheckInfo(obj);
+    	return super.returnSuccessResult(lists);
+    }
+    
+    @RequestMapping(value = "/check/wrecker/staff")
+    public String getCheckWreckerStaff(@RequestBody WreckerStatisticsBO obj){
+    	List<WreckerStatisticsBO> lists=  statisticsService.getWreckerStaffInfo(obj);
+    	return super.returnSuccessResult(lists);
+    }
+    
 }

+ 10 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/master/StatisticsDao.java

@@ -71,5 +71,15 @@ public interface StatisticsDao  {
 
 	public List<StatisticsBean> selectBFStatistics(StatisticsBean obj);
 	
+	public List<StatisticsBean> selectWreckerInfo(StatisticsBean obj) ;
+	
+	public List<WreckerGroup> selectWreckerOrgan();
+	
+	
+	public List<WreckerStatisticsBO> selectWreckerStaff(WreckerStatisticsBO obj);
+	
+	public List<WreckerStatisticsBO> selectWreckerStatisticDetail(WreckerStatisticsBO obj);
+	
+	public List<WreckerStatisticsBO> selectWreckerStatistic(WreckerStatisticsBO obj);
 	
 }

+ 17 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/master/UserClassDao.java

@@ -2,6 +2,7 @@ package com.xintong.visualinspection.dao.master;
 
 import java.util.List;
 
+import com.xintong.visualinspection.bean.UserClassRemove;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.xintong.visualinspection.bean.UnregularUserClass;
@@ -15,9 +16,25 @@ import com.xintong.visualinspection.bean.UserClass;
 public interface UserClassDao  {
     public List<UserClass> selectList(UserClass userClass);
     public void insert(UserClass userClass);
+    public void insertremove(UserClassRemove userClassRemove);
+
+
+    public void update(UserClass userClass);
+    public void update_detail(UnregularUserClass unregularUserClass);
+
+
     public void delete(UserClass userClass);
+
+    public void deleteById(List<String> ids);
     public String getUsersByTeamId(Integer user_class_id);
     
     public void insert_detail(List<UnregularUserClass> userClass);
+    public void insert_detail2(UnregularUserClass userClass);
+
     public void deleteDetail(UserClass userClass);
+    public void deleteDetailById(List<String> ids);
+
+    public List<UserClass> getUsersClassByDeptAndWorkDay(UserClass userClass);
+
+    public List<UnregularUserClass> getUnregularUsersClassByDeptAndWorkDay(UserClass userClass);
 }

+ 73 - 4
VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/StatisticsMapper.xml

@@ -37,7 +37,36 @@
         )
 
     </sql>
-
+	
+	<select id="selectWreckerOrgan" resultType="com.xintong.visualinspection.bean.WreckerGroup">
+		SELECT ORGANID AS deptid,COUNT(1) AS people_num ,t.name FROM t_sys_users o
+				LEFT JOIN t_br_layer_wrecker_group t ON o.ORGANID = t.ORGAN_ID
+				WHERE o.STATUS = 1 AND o.ORGANID IN
+				(
+					SELECT organ_id FROM t_br_layer_wrecker_group 
+				) 
+				GROUP BY o.ORGANID
+	</select>
+	
+	<select id="selectWreckerInfo" parameterType="com.xintong.visualinspection.bean.StatisticsBean" 
+			resultType="com.xintong.visualinspection.bean.StatisticsBean" >
+		SELECT t.* , m.code_name AS name FROM 
+		(
+			SELECT
+				COUNT(1) AS checked_num , dept_id ,COUNT(DISTINCT user_id) AS checked_people_num,
+				wrecker_check_type,
+				sum(check_score) AS all_check_score
+			FROM
+				other_check 
+			WHERE
+				check_type = 5
+			<if test="start_date!=null and end_date != null">
+		        AND	check_time &gt;= #{start_date} AND check_time &lt; #{end_date}
+			</if>
+			GROUP BY
+				wrecker_check_type,dept_id
+		) t LEFT JOIN  ( SELECT * FROM sys_code where  code_flag = 'wrecker_group_check_type' ) m ON t.wrecker_check_type = m.code_value
+	</select>
 	
    <select id="selectBFStatistics" parameterType="com.xintong.visualinspection.bean.StatisticsBean" resultType="com.xintong.visualinspection.bean.StatisticsBean">
 	SELECT y.user_id,y.dept_id,IFNULL(x.checked_num,0)+IFNULL(o1.check_a_num,0) checked_num,IFNULL(x.score,0)+IFNULL(o1.check_a_score,0) score,o2.check_t_num,o2.check_t_score,o3.check_x_num,o3.check_x_score,o4.check_s_num,o4.check_s_score  
@@ -805,9 +834,6 @@
             <result property="appeal_result" column="appeal_result"/>
         </collection>
     </resultMap>
-
-
-
 	
 	<select id="selectCheckAppealNum" parameterType="com.xintong.visualinspection.bean.CheckAppealStatistic" resultMap="appealNum" >
 		SELECT COUNT(t.appeal_dept) AS appeal_num ,t.appeal_dept AS dept_id,t.appeal_result FROM check_appeal t 
@@ -832,4 +858,47 @@
 			ORDER BY t.appeal_dept
 	</select>
 	
+	<select id="selectWreckerStaff" parameterType="com.xintong.visualinspection.bean.WreckerStatisticsBO" 
+				resultType="com.xintong.visualinspection.bean.WreckerStatisticsBO">
+		SELECT  o.id AS user_id , tlw.NAME as dept_name  , o.TRUENAME AS name ,b.name AS position_name , o.WORKNO as work_no   FROM  t_sys_users o  
+			LEFT JOIN sys_job b ON o.POSITIONID = b.id 
+			LEFT JOIN t_br_layer_wrecker_group tlw ON tlw.ORGAN_ID = o.ORGANID
+			where o.`STATUS` = 1 
+			AND o.ORGANID IN 
+			(
+				SELECT ORGAN_ID FROM t_br_layer_wrecker_group
+			)
+			<if test="positionid != null">
+			   AND	o.positionid = #{positionid}
+			</if>
+			<if test="dept_id != null">
+			  AND	o.organid = #{dept_id}
+			</if>
+	</select>
+	
+	<select id="selectWreckerStatisticDetail" parameterType="com.xintong.visualinspection.bean.WreckerStatisticsBO" 
+			resultType="com.xintong.visualinspection.bean.WreckerStatisticsBO">
+		SELECT cim.name AS item_name , COUNT(1) AS check_num , t.user_id , t.wrecker_check_type , SUM(t.check_score) AS score
+		FROM
+		(
+			SELECT ci.parent_id , o.* FROM other_check o
+			LEFT JOIN check_item ci ON o.check_item_id = ci.id
+			WHERE o.check_type = 5 AND o.wrecker_check_type IN (1,2)
+			<if test="start_date!=null and end_date != null">
+		        AND	 o.check_time &gt;= #{start_date} AND o.check_time &lt; #{end_date}
+			</if>
+		) t LEFT JOIN check_item cim ON t.parent_id = cim.id
+		GROUP BY user_id , t.parent_id   ;
+	</select>
+	
+	<select id="selectWreckerStatistic" parameterType="com.xintong.visualinspection.bean.WreckerStatisticsBO" 
+				resultType="com.xintong.visualinspection.bean.WreckerStatisticsBO">
+		SELECT o.user_id , COUNT(1) AS check_num , sum(o.check_score) AS score ,o.wrecker_check_type  FROM other_check o 
+		WHERE o.check_type = 5 AND o.wrecker_check_type IN (3,4,5)
+		<if test="start_date!=null and end_date != null">
+	        AND	 o.check_time &gt;= #{start_date} AND o.check_time &lt; #{end_date}
+		</if>
+		GROUP BY o.wrecker_check_type , o.user_id
+	</select>
+	
 </mapper>

+ 156 - 43
VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/UserClassMapper.xml

@@ -1,68 +1,181 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xintong.visualinspection.dao.master.UserClassDao" >
-   
-   <resultMap type="com.xintong.visualinspection.bean.UserClass" id="userClassMap">
-   		<id property="id" column="id" />
-   		<result property="work_date" column="work_date" />
-   		<result property="dept_id" column="dept_id" />
-   		<result property="user_id" column="user_id" />
-   		<result property="class_type" column="class_type" />
-   		<result property="team_id" column="team_id" />
-   		<result property="start_time" column="start_time"/>
-   		<result property="end_time" column="end_time"/>
-   		<result property="lane" column="lane"/>
-   		<result property="class_flag" column="class_flag"/>
-   		<result property="monitor_user_id" column="monitor_user_id"/>
-   		<collection property="list" ofType="com.xintong.visualinspection.bean.UnregularUserClass">
-   			<id property="id" column="ids" />
-   			<result property="start_time" column="start_time_u"/>
-   			<result property="end_time" column="end_time_u"/>
-   			<result property="user_name" column="user_name"/>
-   			<result property="user_id" column="user_id_u"/>
-   			<result property="monitor_user_id" column="monitor_user_id_u"/>
-   		</collection>
-   </resultMap>
-   
-   <insert id="insert" parameterType="com.xintong.visualinspection.bean.UserClass" useGeneratedKeys="true" keyProperty="id">
+<mapper namespace="com.xintong.visualinspection.dao.master.UserClassDao">
+
+    <resultMap type="com.xintong.visualinspection.bean.UserClass" id="userClassMap">
+        <id property="id" column="id"/>
+        <result property="work_date" column="work_date"/>
+        <result property="dept_id" column="dept_id"/>
+        <result property="user_id" column="user_id"/>
+        <result property="class_type" column="class_type"/>
+        <result property="team_id" column="team_id"/>
+        <result property="start_time" column="start_time"/>
+        <result property="end_time" column="end_time"/>
+        <result property="lane" column="lane"/>
+        <result property="class_flag" column="class_flag"/>
+        <result property="monitor_user_id" column="monitor_user_id"/>
+        <collection property="list" ofType="com.xintong.visualinspection.bean.UnregularUserClass">
+            <id property="id" column="ids"/>
+            <result property="start_time" column="start_time_u"/>
+            <result property="end_time" column="end_time_u"/>
+            <result property="user_name" column="user_name"/>
+            <result property="user_id" column="user_id_u"/>
+            <result property="monitor_user_id" column="monitor_user_id_u"/>
+        </collection>
+    </resultMap>
+
+    <resultMap type="com.xintong.visualinspection.bean.UnregularUserClass" id="unregularUserClass">
+        <id property="id" column="id"/>
+        <result property="start_time" column="start_time"/>
+        <result property="end_time" column="end_time"/>
+        <result property="user_name" column="user_name"/>
+        <result property="user_id" column="user_id"/>
+        <result property="work_date" column="work_date"/>
+        <result property="dept_id" column="dept_id"/>
+        <result property="class_type" column="class_type"/>
+        <result property="team_id" column="team_id"/>
+        <result property="lane" column="lane"/>
+        <result property="update_time" column="update_time"/>
+        <result property="monitor_user_id" column="monitor_user_id"/>
+        <result property="class_id" column="class_id"/>
+    </resultMap>
+
+
+    <insert id="insertremove" parameterType="com.xintong.visualinspection.bean.UserClassRemove" useGeneratedKeys="true"
+            keyProperty="id">
+        INSERT INTO
+        sys_user_class_remove
+        (data,type)
+        VALUES
+        (#{data},#{type})
+    </insert>
+
+
+    <insert id="insert" parameterType="com.xintong.visualinspection.bean.UserClass" useGeneratedKeys="true"
+            keyProperty="id">
    		INSERT INTO
         sys_user_class
         (work_date,dept_id,user_id,class_type,team_id,start_time,end_time,lane,class_flag,monitor_user_id)
         VALUES
         (#{work_date},#{dept_id},#{user_id},#{class_type},#{team_id},#{start_time},#{end_time},#{lane},#{class_flag},#{monitor_user_id})
-   </insert>
-   
-   
-   <insert id="insert_detail" parameterType="java.util.List" >
-   		INSERT INTO
+    </insert>
+
+    <update  id="update" parameterType="com.xintong.visualinspection.bean.UserClass" >
+        UPDATE sys_user_class SET update_time = now()
+        <if test="work_date != null">,work_date = #{work_date}</if>
+        <if test="dept_id != null">,dept_id = #{dept_id}</if>
+        <if test="user_id != null">,user_id = #{user_id}</if>
+        <if test="class_type != null">,class_type = #{class_type}</if>
+        <if test="team_id != null">,team_id = #{team_id}</if>
+        <if test="start_time != null">,start_time = #{start_time}</if>
+        <if test="end_time != null">,end_time = #{end_time}</if>
+        <if test="lane != null">,lane = #{lane}</if>
+        <if test="class_flag != null">,class_flag = #{class_flag}</if>
+        <if test="monitor_user_id != null">,monitor_user_id = #{monitor_user_id}</if>
+         WHERE
+        id = #{id}
+    </update>
+
+
+
+
+    <insert id="insert_detail" parameterType="java.util.List">
+        INSERT INTO
+        sys_user_class_unregular
+        (work_date,dept_id,user_id,class_type,team_id,start_time,end_time,lane,class_id,user_name,monitor_user_id)
+        VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.work_date},#{item.dept_id},#{item.user_id},#{item.class_type},#{item.team_id},#{item.start_time},#{item.end_time},#{item.lane},#{item.class_id},#{item.user_name},#{item.monitor_user_id})
+        </foreach>
+    </insert>
+
+    <insert id="insert_detail2" parameterType="com.xintong.visualinspection.bean.UnregularUserClass">
+        INSERT INTO
         sys_user_class_unregular
         (work_date,dept_id,user_id,class_type,team_id,start_time,end_time,lane,class_id,user_name,monitor_user_id)
         VALUES
-        <foreach collection="list" item="item" index="index" separator="," > 
-			(#{item.work_date},#{item.dept_id},#{item.user_id},#{item.class_type},#{item.team_id},#{item.start_time},#{item.end_time},#{item.lane},#{item.class_id},#{item.user_name},#{item.monitor_user_id})
-		</foreach> 
-   </insert>
-   
-   <select id="selectList" parameterType="com.xintong.visualinspection.bean.UserClass" resultMap="userClassMap" >
+         (#{work_date},#{dept_id},#{user_id},#{class_type},#{team_id},#{start_time},#{end_time},#{lane},#{class_id},#{user_name},#{monitor_user_id})
+    </insert>
+
+    <update  id="update_detail" parameterType="com.xintong.visualinspection.bean.UnregularUserClass" >
+        UPDATE sys_user_class_unregular SET update_time = now()
+        <if test="work_date != null">,work_date = #{work_date}</if>
+        <if test="dept_id != null">,dept_id = #{dept_id}</if>
+        <if test="user_id != null">,user_id = #{user_id}</if>
+        <if test="class_type != null">,class_type = #{class_type}</if>
+        <if test="team_id != null">,team_id = #{team_id}</if>
+        <if test="start_time != null">,start_time = #{start_time}</if>
+        <if test="end_time != null">,end_time = #{end_time}</if>
+        <if test="lane != null">,lane = #{lane}</if>
+        <if test="class_id != null">,class_id = #{class_id}</if>
+        <if test="user_name != null">,user_name = #{user_name}</if>
+        <if test="monitor_user_id != null">,monitor_user_id = #{monitor_user_id}</if>
+        WHERE
+        id = #{id}
+    </update>
+
+    <select id="selectList" parameterType="com.xintong.visualinspection.bean.UserClass" resultMap="userClassMap">
    	   SELECT su.*,t.start_time AS start_time_u,t.end_time AS end_time_u,t.user_name , t.user_id AS user_id_u , t.id AS ids,t.monitor_user_id AS monitor_user_id_u FROM sys_user_class su LEFT JOIN sys_user_class_unregular t ON su.id = t.class_id 
    		 WHERE su.work_date = #{work_date} AND su.dept_id=#{dept_id} order by t.start_time asc,class_type asc , lane asc
    </select>
-   
-   <delete id="delete" parameterType="com.xintong.visualinspection.bean.UserClass">
+
+    <delete id="delete" parameterType="com.xintong.visualinspection.bean.UserClass">
    		DELETE FROM
         sys_user_class
         WHERE
         work_date =#{work_date} and dept_id=#{dept_id}
    </delete>
-   
-   <delete id="deleteDetail" parameterType="com.xintong.visualinspection.bean.UserClass">
+
+
+    <delete id="deleteById" parameterType="java.util.List">
+        DELETE FROM
+        sys_user_class
+        WHERE
+        id IN
+        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
+                #{item}
+        </foreach>
+    </delete>
+
+
+    <select id="getUsersClassByDeptAndWorkDay" parameterType="com.xintong.visualinspection.bean.UserClass"
+            resultMap="userClassMap">
+        SELECT * FROM
+        sys_user_class
+        WHERE
+        work_date =#{work_date} and dept_id=#{dept_id}
+    </select>
+
+    <select id="getUnregularUsersClassByDeptAndWorkDay" parameterType="com.xintong.visualinspection.bean.UserClass"
+            resultMap="unregularUserClass">
+        SELECT * FROM
+        sys_user_class_unregular
+        WHERE
+        work_date =#{work_date} and dept_id=#{dept_id}
+    </select>
+
+
+
+
+    <delete id="deleteDetail" parameterType="com.xintong.visualinspection.bean.UserClass">
    		DELETE FROM 
    		sys_user_class_unregular
    		WHERE   work_date =#{work_date} and dept_id=#{dept_id}
    </delete>
-   
-   
-   <select id="getUsersByTeamId" parameterType="java.lang.Integer" resultType="String"  >
+
+    <delete id="deleteDetailById" parameterType="java.util.List">
+        DELETE FROM
+        sys_user_class_unregular
+        WHERE
+        id IN
+        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+
+
+    <select id="getUsersByTeamId" parameterType="java.lang.Integer" resultType="String">
         SELECT user_ids
         FROM sys_team
         WHERE id = 

+ 8 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/StatisticsService.java

@@ -12,6 +12,8 @@ import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBeanBO;
 import com.xintong.visualinspection.bean.StatisticsBo;
 import com.xintong.visualinspection.bean.StatisticsFsWork;
+import com.xintong.visualinspection.bean.WreckerGroup;
+import com.xintong.visualinspection.bean.WreckerStatisticsBO;
 import com.xintong.visualinspection.pojo.TaskAndScore;
 import com.xintong.visualinspection.pojo.UserRankingData;
 
@@ -107,5 +109,11 @@ public interface StatisticsService {
 	public List<StatisticsBo> getBusinessFeedbackInfo(StatisticsBean obj);
 
 	public void getBusinessFeedbackInfo(StatisticsBeanBO obj, HttpServletRequest req, HttpServletResponse resp);
+	
+	// 获取清障稽查的稽查信息
+	public List<StatisticsBean> getWreckerCheckInfo(StatisticsBean obj);
+	
+	// 获取清障稽查的信息
+	public List<WreckerStatisticsBO> getWreckerStaffInfo(WreckerStatisticsBO obj);
 
 }

+ 141 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/StatisticsServiceImpl.java

@@ -2201,4 +2201,145 @@ public class StatisticsServiceImpl extends BaseService implements StatisticsServ
 		map.put("list", listStatistic);
 		exportExcel("收费生产人员业务提升考核情况反馈表", "business_feedback", map, resp);
 	}
+
+	@Override
+	public List<StatisticsBean> getWreckerCheckInfo(StatisticsBean obj) {
+		List<StatisticsBean> wreckerInfo = statisticsDao.selectWreckerInfo(obj);
+		List<WreckerGroup> wreckers = statisticsDao.selectWreckerOrgan();
+		
+		Map<Long,StatisticsBean> wreckerStatistic = new HashMap<>();
+		for(int i=0 ; i<wreckers.size(); i++ ){
+			StatisticsBean tmp = new StatisticsBean();
+			tmp.setPeople_num(wreckers.get(i).getPeople_num());
+			tmp.setName(wreckers.get(i).getName());
+			wreckerStatistic.put(Long.parseLong(wreckers.get(i).getDeptid()) , tmp) ;
+		}
+		
+		for(int i=0;i<wreckerInfo.size();i++ ){
+			StatisticsBean tmp =  wreckerStatistic.get(wreckerInfo.get(i).getDept_id()) ;
+			// 受检人数
+			tmp.setChecked_people_num( tmp.getChecked_people_num() + wreckerInfo.get(i).getChecked_people_num() );
+			tmp.setCheck_all_score(tmp.getCheck_all_score() + wreckerInfo.get(i).getAll_check_score());
+			tmp.setChecked_num(tmp.getChecked_num() + wreckerInfo.get(i).getChecked_num() );
+			
+			if(wreckerInfo.get(i).getName().indexOf("中心实时")>-1){
+				tmp.setData_check_num(wreckerInfo.get(i).getChecked_num());
+				tmp.setData_total_score(wreckerInfo.get(i).getAll_check_score());
+				
+			}else if(wreckerInfo.get(i).getName().indexOf("视频")>-1){
+				tmp.setSpecial_check_num(wreckerInfo.get(i).getChecked_num());
+				tmp.setSpecial_total_score(wreckerInfo.get(i).getAll_check_score());
+				
+			}else if(wreckerInfo.get(i).getName().indexOf("第三方")>-1){
+				tmp.setThird_check_num(wreckerInfo.get(i).getChecked_num());
+				tmp.setThird_total_score(wreckerInfo.get(i).getAll_check_score());
+				
+			}else if(wreckerInfo.get(i).getName().indexOf("现场")>-1){
+				tmp.setOnsite_check_num(wreckerInfo.get(i).getChecked_num());
+				tmp.setOnsite_total_score(wreckerInfo.get(i).getAll_check_score());
+				
+			}else if(wreckerInfo.get(i).getName().indexOf("其他")>-1){
+				tmp.setOther_check_num(wreckerInfo.get(i).getChecked_num());
+				tmp.setOther_total_score(wreckerInfo.get(i).getAll_check_score());
+			}
+		}
+
+		return new ArrayList<>(wreckerStatistic.values());
+	}
+
+	@Override
+	public List<WreckerStatisticsBO> getWreckerStaffInfo(WreckerStatisticsBO obj) {
+		// 检索所有人员
+		List<WreckerStatisticsBO> list = statisticsDao.selectWreckerStaff(obj);
+		Map<Long,WreckerStatisticsBO> wreckerMap = new HashMap<>();
+		for(int i=0;i< list.size(); i++){
+			wreckerMap.put(list.get(i).getUser_id() , list.get(i));
+		}
+		// 检查详细扣分
+		List<WreckerStatisticsBO> detail_list = statisticsDao.selectWreckerStatisticDetail(obj);
+		for(int i=0; i< detail_list.size(); i++){
+			if(wreckerMap.containsKey(detail_list.get(i).getUser_id())){
+				WreckerStatisticsBO org_tmp = detail_list.get(i);
+				WreckerStatisticsBO tmp = wreckerMap.get(org_tmp.getUser_id());
+				// 中心稽查
+				if(org_tmp.getWrecker_check_type() == 1){
+					if(org_tmp.getItem_name().indexOf("出警及时性") >-1 ){
+						tmp.setChu_jing(tmp.getChu_jing()+ org_tmp.getScore() );
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("现场到达率") >-1 ){
+						tmp.setXian_chang(tmp.getXian_chang() + org_tmp.getScore() );
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("畅通率") >-1 ){
+						tmp.setChang_tong(tmp.getChang_tong() + org_tmp.getScore() );
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("作业现场") >-1 ){
+						tmp.setZuo_ye(tmp.getZuo_ye() + org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("信息上报") >-1 ){
+						tmp.setXin_xi(tmp.getXin_xi() + org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}
+				}else if(org_tmp.getWrecker_check_type() == 2){
+					if(org_tmp.getItem_name().indexOf("着装规范") >-1 ){
+						tmp.setZhuo_zhuang(tmp.getZhuo_zhuang() + org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("作业现场") >-1 ){
+						tmp.setZuo_ye_xian_chang(tmp.getZuo_ye_xian_chang()+org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("文明服务") >-1 ){
+						tmp.setWen_ming(tmp.getWen_ming()+org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("操作规范") >-1 ){
+						tmp.setCao_zuo(tmp.getCao_zuo()+ org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}else if(org_tmp.getItem_name().indexOf("工作纪律") >-1 ){
+						tmp.setGong_zuo(tmp.getGong_zuo() + org_tmp.getScore());
+						tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+						tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+					}
+				}
+			}
+		}
+		
+		// 设置其他3项扣分
+		List<WreckerStatisticsBO> other_list = statisticsDao.selectWreckerStatistic(obj);
+		for(int i=0; i< other_list.size() ; i++){
+			if(wreckerMap.containsKey(other_list.get(i).getUser_id())){
+				WreckerStatisticsBO org_tmp = other_list.get(i);
+				WreckerStatisticsBO tmp = wreckerMap.get(org_tmp.getUser_id());
+				if(org_tmp.getWrecker_check_type() == 3){
+					tmp.setPrivate_check(org_tmp.getScore());
+					tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+					tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+				}else if(org_tmp.getWrecker_check_type() == 4){
+					tmp.setIn_check(org_tmp.getScore());
+					tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+					tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+				}else if(org_tmp.getWrecker_check_type() == 5){
+					tmp.setOther_check(org_tmp.getScore());
+					tmp.setCheck_num(tmp.getCheck_num()+ org_tmp.getCheck_num() );
+					tmp.setAll_check_score(tmp.getAll_check_score() + org_tmp.getScore());
+				}
+			}
+		}
+		
+		//排序
+		List<WreckerStatisticsBO> tmpList = new ArrayList<>(wreckerMap.values()); 
+		tmpList.sort(new Comparator<WreckerStatisticsBO>() {
+			@Override
+			public int compare(WreckerStatisticsBO o1, WreckerStatisticsBO o2) {
+				return o1.compareTo(o2);
+			}
+		});
+		return tmpList;
+	}
 }

+ 309 - 133
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/UserClassServiceImpl.java

@@ -1,17 +1,16 @@
 package com.xintong.visualinspection.service.impl;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
+import com.alibaba.fastjson.JSON;
+import com.xintong.visualinspection.bean.*;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.mysql.jdbc.StringUtils;
-import com.xintong.visualinspection.bean.TeamClass;
-import com.xintong.visualinspection.bean.UnregularUserClass;
-import com.xintong.visualinspection.bean.User;
-import com.xintong.visualinspection.bean.UserClass;
 import com.xintong.visualinspection.dao.master.TeamClassDao;
 import com.xintong.visualinspection.dao.master.UserClassDao;
 import com.xintong.visualinspection.service.BaseService;
@@ -32,143 +31,320 @@ public class UserClassServiceImpl extends BaseService implements UserClassServic
     
     @Autowired
     TeamClassDao teamClassDao;
+
+
+    private void updateUserClass(List<UserClass> list){
+        if(list==null || list.size()<0){ return;}
+        //先找出当天该部门所有排班
+        List<UserClass> userClassList =  userClassDao.getUsersClassByDeptAndWorkDay(list.get(0));
+        List<UnregularUserClass> unregularUserClassList = userClassDao.getUnregularUsersClassByDeptAndWorkDay(list.get(0));
+
+        //组织hash
+        HashMap<String,UserClass> userClassHashMap = new HashMap<>();
+        HashMap<String,UnregularUserClass> unregularUserClassHashMap = new HashMap<>();
+        for (UserClass c:userClassList
+             ) {
+            String key = c.getDept_id()+""+c.getClass_type()+""+c.getLane()+"";
+            userClassHashMap.put(key,c);
+        }
+        for (UnregularUserClass c:unregularUserClassList
+                ) {
+            String key = c.getClass_id()+""+c.getStart_time().getTime()+""+c.getEnd_time().getTime()+"";
+            unregularUserClassHashMap.put(key,c);
+        }
+
+        StringBuffer nightClassStuff = new StringBuffer();
+        StringBuffer middleClassStuff = new StringBuffer();
+        StringBuffer mooringClassStuff = new StringBuffer();
+        Long mooringTeamId = 0L , middleTeamId =0L , nightTeamId =0L;
+
+
+        //循环判定
+        for(int i=0;i<list.size();i++) {
+            if (list.get(i).getList() != null && list.get(i).getList().size() > 0) {
+                list.get(i).setClass_flag(1);
+            }else{
+                list.get(i).setClass_flag(0);
+            }
+
+            UserClass objTemp = list.get(i);
+            if(objTemp.getClass_type() ==1){
+                mooringTeamId = objTemp.getTeam_id();
+                mooringClassStuff.append(objTemp.getUser_id()+",");
+            }else if(objTemp.getClass_type() ==2){
+                middleTeamId = objTemp.getTeam_id();
+                middleClassStuff.append(objTemp.getUser_id()+",");
+            }else if(objTemp.getClass_type() ==3){
+                nightTeamId = objTemp.getTeam_id();
+                nightClassStuff.append(objTemp.getUser_id()+",");
+            }
+
+
+            String key = objTemp.getDept_id()+""+objTemp.getClass_type()+""+objTemp.getLane()+"";
+            UserClass objTempDB =  userClassHashMap.get(key);
+            if(objTempDB!=null){
+                //跟新
+                objTemp.setId(objTempDB.getId());
+
+                userClassHashMap.remove(key);
+
+                //没换人员和班长 & 没全部删除临时排班人员 则不跟新
+                if(!(objTemp.getUser_id().equals(objTempDB.getUser_id())
+                        && objTemp.getMonitor_user_id().equals(objTempDB.getMonitor_user_id())
+                        && objTemp.getClass_flag().equals(objTempDB.getClass_flag()))){
+                    //有改变
+                    userClassDao.update(objTemp);
+                }
+
+                List<UnregularUserClass> obj = list.get(i).getList() ;
+                if(obj!=null && obj.size()>0) {
+                    for (int j = 0; j < obj.size(); j++) {
+                        obj.get(j).setClass_type(objTemp.getClass_type());
+                        obj.get(j).setDept_id(objTemp.getDept_id());
+                        obj.get(j).setWork_date(objTemp.getWork_date());
+                        obj.get(j).setLane(objTemp.getLane());
+                        obj.get(j).setUser_id(obj.get(j).getId());
+                        obj.get(j).setTeam_id(objTemp.getTeam_id());
+                        obj.get(j).setClass_id(objTemp.getId());
+                        obj.get(j).setMonitor_user_id(objTemp.getMonitor_user_id());
+
+                        //判断
+                        String key1 = obj.get(j).getClass_id()+""+obj.get(j).getStart_time().getTime()+""+obj.get(j).getEnd_time().getTime()+"";
+                        UnregularUserClass unregularUserClass = unregularUserClassHashMap.get(key1);
+
+                        if(unregularUserClass!=null){
+                            obj.get(j).setId(unregularUserClass.getId());
+
+                            unregularUserClassHashMap.remove(key1);
+                            if(!(unregularUserClass.getUser_id().equals(obj.get(j).getUser_id())
+                                    && unregularUserClass.getMonitor_user_id().equals(obj.get(j).getMonitor_user_id()))) {
+                                //有改变
+                                userClassDao.update_detail(obj.get(j));
+                            }
+                        }else{
+                            //插入
+                            userClassDao.insert_detail2(obj.get(j));
+                        }
+                    }
+                }
+
+            }else{
+                //插入
+                userClassDao.insert(list.get(i));
+
+                List<UnregularUserClass> obj = list.get(i).getList() ;
+                if(obj!=null && obj.size()>0) {
+                    for (int j = 0; j < obj.size(); j++) {
+                        obj.get(j).setClass_type(list.get(i).getClass_type());
+                        obj.get(j).setDept_id(list.get(i).getDept_id());
+                        obj.get(j).setWork_date(list.get(i).getWork_date());
+                        obj.get(j).setLane(list.get(i).getLane());
+                        obj.get(j).setUser_id(obj.get(j).getId());
+                        obj.get(j).setTeam_id(list.get(i).getTeam_id());
+                        obj.get(j).setClass_id(list.get(i).getId());
+                        obj.get(j).setMonitor_user_id(list.get(i).getMonitor_user_id());
+                    }
+                    userClassDao.insert_detail(obj);
+                }
+            }
+        }
+
+
+        List<String> cids = new ArrayList<>();
+        List<String> ucids = new ArrayList<>();
+        //删除无效的排班
+        for (UserClass c:userClassHashMap.values()
+             ) {
+            cids.add(c.getId()+"");
+        }
+        for (UnregularUserClass c:unregularUserClassHashMap.values()
+                ) {
+            ucids.add(c.getId()+"");
+        }
+        if(cids.size()>0){ userClassDao.deleteById(cids);
+            UserClassRemove r = new UserClassRemove();
+            r.setData(JSON.toJSONString(userClassHashMap));
+            r.setType(1);
+            userClassDao.insertremove(r);
+
+        }
+        if(ucids.size()>0){userClassDao.deleteDetailById(ucids);
+            UserClassRemove r = new UserClassRemove();
+            r.setData(JSON.toJSONString(unregularUserClassHashMap));
+            r.setType(2);
+            userClassDao.insertremove(r);
+        }
+
+
+        if(nightClassStuff.toString()!=""){
+            // 更新晚班人员
+            TeamClass teamClass = new TeamClass();
+            teamClass.setTeam_id(nightTeamId);
+            teamClass.setWork_date(list.get(0).getWork_date());
+            teamClass.setUser_ids(nightClassStuff.toString());
+            teamClassDao.updateUserIds(teamClass);
+        }
+        if(middleClassStuff.toString()!=""){
+            TeamClass teamClass = new TeamClass();
+            teamClass.setTeam_id(middleTeamId);
+            teamClass.setWork_date(list.get(0).getWork_date());
+            teamClass.setUser_ids(middleClassStuff.toString());
+            teamClassDao.updateUserIds(teamClass);
+        }
+        if(mooringClassStuff.toString()!=""){
+            TeamClass teamClass = new TeamClass();
+            teamClass.setTeam_id(mooringTeamId);
+            teamClass.setWork_date(list.get(0).getWork_date());
+            teamClass.setUser_ids(mooringClassStuff.toString());
+            teamClassDao.updateUserIds(teamClass);
+        }
+
+
+
+
+
+
+
+    }
     
 	@Override
 	public void insertList(List<UserClass> list) {
 		// TODO Auto-generated method stub
-		if(list.size() >0 ){
-			userClassDao.delete(list.get(0));
-			userClassDao.deleteDetail(list.get(0));			
-		}else{
-			return ;
-		}
-		StringBuffer nightClassStuff = new StringBuffer();
-		StringBuffer middleClassStuff = new StringBuffer();
-		StringBuffer mooringClassStuff = new StringBuffer();
-		Long mooringTeamId = 0L , middleTeamId =0L , nightTeamId =0L;
-		for(int i=0;i<list.size();i++){
-			if(list.get(i).getList()!=null && list.get(i).getList().size()>0 ){
-				list.get(i).setClass_flag(1);				
-			}
-			UserClass objTemp = list.get(i);
-			if(objTemp.getClass_type() ==1){
-				mooringTeamId = objTemp.getTeam_id();
-				mooringClassStuff.append(objTemp.getUser_id()+",");
-			}else if(objTemp.getClass_type() ==2){
-				middleTeamId = objTemp.getTeam_id();
-				middleClassStuff.append(objTemp.getUser_id()+",");
-			}else if(objTemp.getClass_type() ==3){
-				nightTeamId = objTemp.getTeam_id();
-				nightClassStuff.append(objTemp.getUser_id()+",");
-			}
-			userClassDao.insert(list.get(i));
-			List<UnregularUserClass> obj = list.get(i).getList() ;
-			if(obj!=null && obj.size()>0){
-				for(int j=0;j<obj.size();j++){
-					obj.get(j).setClass_type(list.get(i).getClass_type());
-					obj.get(j).setDept_id(list.get(i).getDept_id());
-					obj.get(j).setWork_date(list.get(i).getWork_date());
-					obj.get(j).setLane(list.get(i).getLane());
-					obj.get(j).setUser_id(obj.get(j).getId());
-					obj.get(j).setTeam_id(list.get(i).getTeam_id());
-					obj.get(j).setClass_id(list.get(i).getId());
-				}
-				userClassDao.insert_detail(obj);
-			}
-		}
-		if(nightClassStuff.toString()!=""){
-			// 更新晚班人员
-			TeamClass teamClass = new TeamClass();
-			teamClass.setTeam_id(nightTeamId);
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setUser_ids(nightClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
-		if(middleClassStuff.toString()!=""){
-			TeamClass teamClass = new TeamClass();
-			teamClass.setTeam_id(middleTeamId);
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setUser_ids(middleClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
-		if(mooringClassStuff.toString()!=""){
-			TeamClass teamClass = new TeamClass();
-			teamClass.setTeam_id(mooringTeamId);
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setUser_ids(mooringClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
+        updateUserClass(list);
+//		if(list.size() >0 ){
+//			userClassDao.delete(list.get(0));
+//			userClassDao.deleteDetail(list.get(0));
+//		}else{
+//			return ;
+//		}
+//		StringBuffer nightClassStuff = new StringBuffer();
+//		StringBuffer middleClassStuff = new StringBuffer();
+//		StringBuffer mooringClassStuff = new StringBuffer();
+//		Long mooringTeamId = 0L , middleTeamId =0L , nightTeamId =0L;
+//		for(int i=0;i<list.size();i++){
+//			if(list.get(i).getList()!=null && list.get(i).getList().size()>0 ){
+//				list.get(i).setClass_flag(1);
+//			}
+//			UserClass objTemp = list.get(i);
+//			if(objTemp.getClass_type() ==1){
+//				mooringTeamId = objTemp.getTeam_id();
+//				mooringClassStuff.append(objTemp.getUser_id()+",");
+//			}else if(objTemp.getClass_type() ==2){
+//				middleTeamId = objTemp.getTeam_id();
+//				middleClassStuff.append(objTemp.getUser_id()+",");
+//			}else if(objTemp.getClass_type() ==3){
+//				nightTeamId = objTemp.getTeam_id();
+//				nightClassStuff.append(objTemp.getUser_id()+",");
+//			}
+//			userClassDao.insert(list.get(i));
+//			List<UnregularUserClass> obj = list.get(i).getList() ;
+//			if(obj!=null && obj.size()>0){
+//				for(int j=0;j<obj.size();j++){
+//					obj.get(j).setClass_type(list.get(i).getClass_type());
+//					obj.get(j).setDept_id(list.get(i).getDept_id());
+//					obj.get(j).setWork_date(list.get(i).getWork_date());
+//					obj.get(j).setLane(list.get(i).getLane());
+//					obj.get(j).setUser_id(obj.get(j).getId());
+//					obj.get(j).setTeam_id(list.get(i).getTeam_id());
+//					obj.get(j).setClass_id(list.get(i).getId());
+//				}
+//				userClassDao.insert_detail(obj);
+//			}
+//		}
+//		if(nightClassStuff.toString()!=""){
+//			// 更新晚班人员
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setTeam_id(nightTeamId);
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setUser_ids(nightClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
+//		if(middleClassStuff.toString()!=""){
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setTeam_id(middleTeamId);
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setUser_ids(middleClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
+//		if(mooringClassStuff.toString()!=""){
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setTeam_id(mooringTeamId);
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setUser_ids(mooringClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
 	}
 	
 	@Override
 	public void updateList(List<UserClass> list) {
-		if(list.size() >0 ){
-			userClassDao.delete(list.get(0));
-			userClassDao.deleteDetail(list.get(0));
-		}else{
-			return ;
-		}
-		StringBuffer nightClassStuff = new StringBuffer();
-		StringBuffer middleClassStuff = new StringBuffer();
-		StringBuffer mooringClassStuff = new StringBuffer();
-		Long mooringTeamId = 0L , middleTeamId =0L , nightTeamId =0L;
-		
-		for(int i=0;i<list.size();i++){
-			if(list.get(i).getList()!=null && list.get(i).getList().size() >0 ){
-				list.get(i).setClass_flag(1);				
-			}
-			else{
-				list.get(i).setClass_flag(0);				
-			}
-			UserClass objTemp = list.get(i);
-			if(objTemp.getClass_type() ==1){
-				mooringTeamId = objTemp.getTeam_id();
-				mooringClassStuff.append(objTemp.getUser_id()+",");
-			}else if(objTemp.getClass_type() ==2){
-				middleTeamId = objTemp.getTeam_id();
-				middleClassStuff.append(objTemp.getUser_id()+",");
-			}else if(objTemp.getClass_type() ==3){
-				nightTeamId = objTemp.getTeam_id();
-				nightClassStuff.append(objTemp.getUser_id()+",");
-			}
-			userClassDao.insert(list.get(i));
-			List<UnregularUserClass> obj = list.get(i).getList() ;
-			if(obj!=null && obj.size() > 0){
-				for(int j=0;j<obj.size();j++){
-					obj.get(j).setClass_type(list.get(i).getClass_type());
-					obj.get(j).setDept_id(list.get(i).getDept_id());
-					obj.get(j).setWork_date(list.get(i).getWork_date());
-					obj.get(j).setLane(list.get(i).getLane());
-					obj.get(j).setUser_id(obj.get(j).getId());
-					obj.get(j).setTeam_id(list.get(i).getTeam_id());
-					obj.get(j).setClass_id(list.get(i).getId());
-					obj.get(j).setMonitor_user_id(list.get(i).getMonitor_user_id());
-				}
-				userClassDao.insert_detail(obj);
-			}
-		}
-		if(nightClassStuff.toString()!=""){
-			// 更新晚班人员
-			TeamClass teamClass = new TeamClass();
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setTeam_id(nightTeamId);
-			teamClass.setUser_ids(nightClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
-		if(middleClassStuff.toString()!=""){
-			TeamClass teamClass = new TeamClass();
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setTeam_id(middleTeamId);
-			teamClass.setUser_ids(middleClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
-		if(mooringClassStuff.toString()!=""){
-			TeamClass teamClass = new TeamClass();
-			teamClass.setWork_date(list.get(0).getWork_date());
-			teamClass.setTeam_id(mooringTeamId);
-			teamClass.setUser_ids(mooringClassStuff.toString());
-			teamClassDao.updateUserIds(teamClass);
-		}
+        updateUserClass(list);
+//		if(list.size() >0 ){
+//			userClassDao.delete(list.get(0));
+//			userClassDao.deleteDetail(list.get(0));
+//		}else{
+//			return ;
+//		}
+//		StringBuffer nightClassStuff = new StringBuffer();
+//		StringBuffer middleClassStuff = new StringBuffer();
+//		StringBuffer mooringClassStuff = new StringBuffer();
+//		Long mooringTeamId = 0L , middleTeamId =0L , nightTeamId =0L;
+//
+//		for(int i=0;i<list.size();i++){
+//			if(list.get(i).getList()!=null && list.get(i).getList().size() >0 ){
+//				list.get(i).setClass_flag(1);
+//			}
+//			else{
+//				list.get(i).setClass_flag(0);
+//			}
+//			UserClass objTemp = list.get(i);
+//			if(objTemp.getClass_type() ==1){
+//				mooringTeamId = objTemp.getTeam_id();
+//				mooringClassStuff.append(objTemp.getUser_id()+",");
+//			}else if(objTemp.getClass_type() ==2){
+//				middleTeamId = objTemp.getTeam_id();
+//				middleClassStuff.append(objTemp.getUser_id()+",");
+//			}else if(objTemp.getClass_type() ==3){
+//				nightTeamId = objTemp.getTeam_id();
+//				nightClassStuff.append(objTemp.getUser_id()+",");
+//			}
+//			userClassDao.insert(list.get(i));
+//			List<UnregularUserClass> obj = list.get(i).getList() ;
+//			if(obj!=null && obj.size() > 0){
+//				for(int j=0;j<obj.size();j++){
+//					obj.get(j).setClass_type(list.get(i).getClass_type());
+//					obj.get(j).setDept_id(list.get(i).getDept_id());
+//					obj.get(j).setWork_date(list.get(i).getWork_date());
+//					obj.get(j).setLane(list.get(i).getLane());
+//					obj.get(j).setUser_id(obj.get(j).getId());
+//					obj.get(j).setTeam_id(list.get(i).getTeam_id());
+//					obj.get(j).setClass_id(list.get(i).getId());
+//					obj.get(j).setMonitor_user_id(list.get(i).getMonitor_user_id());
+//				}
+//				userClassDao.insert_detail(obj);
+//			}
+//		}
+//		if(nightClassStuff.toString()!=""){
+//			// 更新晚班人员
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setTeam_id(nightTeamId);
+//			teamClass.setUser_ids(nightClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
+//		if(middleClassStuff.toString()!=""){
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setTeam_id(middleTeamId);
+//			teamClass.setUser_ids(middleClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
+//		if(mooringClassStuff.toString()!=""){
+//			TeamClass teamClass = new TeamClass();
+//			teamClass.setWork_date(list.get(0).getWork_date());
+//			teamClass.setTeam_id(mooringTeamId);
+//			teamClass.setUser_ids(mooringClassStuff.toString());
+//			teamClassDao.updateUserIds(teamClass);
+//		}
 	}
 
 	@Override