wenhongquan 8 роки тому
батько
коміт
49291df9ea

+ 202 - 111
VisualInspection/js/statistics/assess_ranking.js

@@ -1,12 +1,12 @@
 
 
-$(function(){
+$(function () {
 
     // 道管中心选择变化
-    $("#center-manager").change(function(){
+    $("#center-manager").change(function () {
         $("#fsList").empty();
-        if(GV(this)!=''){
-            getFsStationList(GV(this),function(options){
+        if (GV(this) != '') {
+            getFsStationList(GV(this), function (options) {
                 $("#fsList").append(options);
             });
         }
@@ -14,21 +14,21 @@ $(function(){
     // end
 })
 
-function queryEmpClick(){
+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 flag = param_method(start_score,end_score);
-    if(flag==false){
+    var flag = param_method(start_score, end_score);
+    if (flag == false) {
         return;
     }
-    if( start_date=='' || end_date==''){
+    if (start_date == '' || end_date == '') {
         tip("请选择起止日期");
         return;
-    }else{
+    } else {
         start_date += " 23:00:00";
         end_date += " 23:00:00";
     }
@@ -36,125 +36,216 @@ function queryEmpClick(){
     var endStr = end_date.replace(/-/g, '/');
     var start = new Date(startStr);
     var end = new Date(endStr);
-    if(start>end){
+    if (start > end) {
         tip("开始时间不能比结束时间大");
         return;
     }
     var param = {
-        "parent_dept_id":GV("#center-manager"),
+        "parent_dept_id": GV("#center-manager"),
         "dept_id": GV("#fsList"),
         "start_date": start_date,
         "end_date": end_date,
     }
     var url = "statistics/employee/order";
-    getEmployeeInfosClick(url,param,start_score,end_score)
+    getEmployeeInfosClick(url, param, start_score, end_score)
 }
 
-function initQueryEmp(){
+function initQueryEmp() {
     //默认初始化前一周查所有
     var endD = new Date();
     var now = new Date();
     var startD = new Date(now.getTime() - 7 * 24 * 3600 * 1000);
-    var start_time = startD.getFullYear()+"-"+(startD.getMonth()+1)+"-"+startD.getDate(); 
-    var end_time = endD.getFullYear()+"-"+(endD.getMonth()+1)+"-"+endD.getDate(); 
+    var start_time = startD.getFullYear() + "-" + (startD.getMonth() + 1) + "-" + startD.getDate();
+    var end_time = endD.getFullYear() + "-" + (endD.getMonth() + 1) + "-" + endD.getDate();
     var start_score = $("#start-score").val();
     var end_score = $("#end-score").val();
     setJobSelect("#jobSelect");
     //默认初始化时间页面回显
     $("#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_date = start_time + " 23:00:00";
+    var end_date = end_time + " 23:00:00";
 
     var param = {
         "start_date": start_date,
         "end_date": end_date,
     }
     var url = "statistics/employee/order";
-    getEmployeeInfosClick(url,param,start_score,end_score);
+    getEmployeeInfosClick(url, param, start_score, end_score);
 }
 /**
  * click
  * @param {*} url 
  * @param {*} param 
  */
-function getEmployeeInfosClick(url,param,start_score,end_score){
-    post_common_service( url,param,function(data){
-        
-        var strTbody='';
-        var count=0;
-        for(var i=0;i<data.length;i++){
-            var score = 1000-filterByZeroHandle(average(data[i]).toFixed(2),'0');
-            var flag = judgeParamFilter(data, i,score, start_score,end_score)
-            if(flag){
-                strTbody+="<tr><td width='4%;'>"+(count+1)+"</td><td width='6%;'>"+data[i].user.fee_station_name+"</td>"
-                +"<td width='6%;'>"+data[i].user.truename+"</td><td width='6%;'>"+data[i].user.position_name+"</td>"
-                +"<td width='6%;'>"+data[i].user.workno+"</td><td width='4%;'>"+data[i].company_ranking+"</td>"
-                +"<td width='4%;'>"+data[i].center_ranking+"</td><td width='4%;'>"+data[i].fee_station_ranking
-                +"</td><td width='4%;'>"+ getItemScore(data[i], '环境') +"</td>"
-                +"<td width='4%;'>"+getItemScore(data[i], '仪容仪表')+"</td><td width='4%;'>"+getItemScore(data[i], '表情')+"</td>"
-                +"<td width='4%;'>"+getItemScore(data[i], '动作')+"</td><td width='4%;'>"+getItemScore(data[i], '文明用语')+"</td>"
-                +"<td width='4%;'>"+ getItemScore(data[i], '工作纪律') +"</td><td width='4%'>"+getItemScore(data[i], '便民服务')+"</td><td width='4%;'>"
-                +getItemScore(data[i], '安全管理')+"</td><td width='4%;'>"+data[i].check_all_score+"</td>"
-                +"<td width='4%;'>"+filter(data[i].checked_num,'0')+"</td><td width='4%;'>"+filterSlash(filterByZeroHandle(average(data[i]).toFixed(2),'0'),filter(data[i].checked_num,'0'))+"</td>"
-                +"<td width='4%;'>"+filterSlash(score,filter(data[i].checked_num,'0'))+"</td><td width='4%;'>"+"</td><td width='4%;'>"+"</td></tr>";
+function getEmployeeInfosClick(url, param, start_score, end_score) {
+    post_common_service(url, param, function (data) {
+
+        var strTbody = '';
+        var count = 0;
+        for (var i = 0; i < data.length; i++) {
+            var score = 1000 - filterByZeroHandle(average(data[i]).toFixed(2), '0');
+            var flag = judgeParamFilter(data, i, score, start_score, end_score)
+            if (flag) {
+
+                html = "<button id=\"user_" + data[i].user.id + "\" onClick='addTask(" + data[i].user.id + ",\"" + param.start_date + "\",\"" + param.end_date + "\")'  class=\"btn\" style='margin-left: 10px;padding: 0px;border: 0;background: none;' type=\"button\"><i class=\"icon icon-plus-sign\"></i></button>"
+
+                strTbody += "<tr><td width='4%;'>" + (count + 1) + "</td><td width='6%;'>" + data[i].user.fee_station_name + "</td>"
+                    + "<td width='6%;'>" + data[i].user.truename + "</td><td width='6%;'>" + data[i].user.position_name + "</td>"
+                    + "<td width='6%;'>" + data[i].user.workno + "</td><td width='4%;'>" + data[i].company_ranking + "</td>"
+                    + "<td width='4%;'>" + data[i].center_ranking + "</td><td width='4%;'>" + data[i].fee_station_ranking
+                    + "</td><td width='4%;'>" + getItemScore(data[i], '环境') + "</td>"
+                    + "<td width='4%;'>" + getItemScore(data[i], '仪容仪表') + "</td><td width='4%;'>" + getItemScore(data[i], '表情') + "</td>"
+                    + "<td width='4%;'>" + getItemScore(data[i], '动作') + "</td><td width='4%;'>" + getItemScore(data[i], '文明用语') + "</td>"
+                    + "<td width='4%;'>" + getItemScore(data[i], '工作纪律') + "</td><td width='4%'>" + getItemScore(data[i], '便民服务') + "</td><td width='4%;'>"
+                    + getItemScore(data[i], '安全管理') + "</td><td width='4%;'>" + data[i].check_all_score + "</td>"
+                    + "<td width='6%;'>" + filter(data[i].checked_num, '0') + (data[i].checked_num < 6 ? html : "") + "</td><td width='4%;'>" + filterSlash(filterByZeroHandle(average(data[i]).toFixed(2), '0'), filter(data[i].checked_num, '0')) + "</td>"
+                    + "<td width='4%;'>" + filterSlash(score, filter(data[i].checked_num, '0')) + "</td><td width='4%;'>" + "</td><td width='4%;'>" + "</td></tr>";
                 count++;
             }
         }
-       $(".table-tbody").append(strTbody);   
-    },function(error){
-        return "" ;
+        $(".table-tbody").append(strTbody);
+    }, function (error) {
+        return "";
+    });
+}
+
+function addTask(userid, start_date, end_date) {
+
+    //获取该人员排班
+
+
+    var allheight = 500;
+    var height = allheight - 150 - 50;
+    var allwidth = 820;
+
+
+    //计算日期
+    var satrtday = new Date(start_date);
+    var endday = new Date(end_date);
+
+
+    var days = (endday.valueOf()-satrtday.valueOf())/(1000*60*60*24);
+    
+    var header = "<td></td>"
+
+    for(var i=0;i<=days;i++){
+       var daytime =  new Date(satrtday.valueOf()+i*1000*60*60*24);
+       header+="<td>"+daytime.Format("dd")+"</td>"
+    }
+
+
+
+
+
+
+
+    var css = '<style lang="css">' +
+        '.row{' +
+        '     margin-right: 0px; ' +
+        '     margin-left: 0px;' +
+        '}' +
+        '.selecttag{' +
+        '     line-height:32px' +
+        '}' +
+        '.table td {' +
+        '     vertical-align: middle;' +
+        '     text-align: center;' +
+        '     border-left: 1px solid #ddd;'+
+        '     border-right: 1px solid #ddd;'+
+        '     border-top: 1px solid #ddd;'+
+        '}' +
+        '</style>';
+
+    var table1 = '<div class="row scrollbar" style="width:'+(allwidth-21)+'px;overflow:scroll;padding-top:10px;padding-bottom:10px"><table class="table"  style="height:' + height + 'px;margin:0px">' +
+        '  <tbody>' +
+        '    <tr style="height:10px" >' +
+        header +
+        '    </tr>' +
+        '    <tr class="danger">' +
+        '      <td>夜班</td>' +'      <td>夜班</td>' +
+        '    </tr>' +
+        '    <tr class="warning">' +
+        '      <td>早班</td>' +'      <td>夜班</td>' +
+        '    </tr>' +
+        '    <tr class="active">' +
+        '      <td>中班</td>' +'      <td>夜班</td>' +
+        '    </tr>' +
+        '  </tbody>' +
+        '</table></div>';
+
+    var html = css + '<div class="row row_alert" style="padding-left:10px;padding-right:10px;">' + table1 + '</div><div class="row row_alert" style="bottom: 0;position: absolute;width: 100%;text-align: right;}">' +
+        '<div class="col-xs-9"><span class="selecttag" style="text-align: right;">请分配对应的稽查人员:</span></div><div class="col-xs-3  class="selecttag""><select data-placeholder="选择一个宠物..." class="chosen-select form-control" tabindex="2">' +
+        '  <option value=""></option>' +
+        '  <option value="cat">小猫</option>' +
+        '  <option value="fish">金鱼</option>' +
+        '  <option value="dragon">龙</option>' +
+        '  <option value="mammoth">猛犸</option>' +
+        '  <option value="gollum">咕噜</option>' +
+        '</select></div><div class="row row_alert"><button class="btn btn-primary" style="margin:20px;margin-right:10px" type="button">生成任务</button></div></div>';
+
+
+
+    layer.open({
+        type: 1,
+        title: "生成稽查任务",
+        skin: 'layui-layer-rim', //加上边框
+        area: [allwidth+'px', allheight+'px'], //宽高
+        scrollbar: false,
+        content: html
     });
+
 }
 
+
 /**
  * 对于受检次数为0,扣分和得分都为 /
  * @param {*} value , check_num 受此次数
  * @return value or /
  */
-function filterSlash(value,check_num){
-    if(check_num == 0 ){
-        return '/' ;
-    }else{
-        return value ;
+function filterSlash(value, check_num) {
+    if (check_num == 0) {
+        return '/';
+    } else {
+        return value;
     }
 }
 
-function judgeParamFilter(data,i,score, start_score,end_score){
-    var flag1=false;
-    if(score>=parseFloat(start_score) && score<=parseFloat(end_score)){
-        flag1=true;
-    }else{
-        flag1=false; 
-    } 
-    var checkCount = $("#check_count").val();   
-    if(checkCount){
-        if(filter(data[i].checked_num,'0')==checkCount){
-            flag2=true;
-        }else{
-            flag2=false;
+function judgeParamFilter(data, i, score, start_score, end_score) {
+    var flag1 = false;
+    if (score >= parseFloat(start_score) && score <= parseFloat(end_score)) {
+        flag1 = true;
+    } else {
+        flag1 = false;
+    }
+    var checkCount = $("#check_count").val();
+    if (checkCount) {
+        if (filter(data[i].checked_num, '0') == checkCount) {
+            flag2 = true;
+        } else {
+            flag2 = false;
         }
-    }else{
-        flag2=true;
+    } else {
+        flag2 = true;
     }
     var jobSelect = $("#jobSelect").val();
-    if(jobSelect){
-        if(data[i].user.positionid==jobSelect){
-            flag3=true;
-        }else{
-            flag3=false;  
+    if (jobSelect) {
+        if (data[i].user.positionid == jobSelect) {
+            flag3 = true;
+        } else {
+            flag3 = false;
         }
-    }else{
-        flag3=true;
+    } else {
+        flag3 = true;
     }
-    return flag1&flag2&flag3;
+    return flag1 & flag2 & flag3;
 }
 
-function average(obj){
-    if(filter(obj.checked_num,'0') == 0){
-        return 0 ;
-    }else{
-        return obj.check_all_score / filter(obj.checked_num,'1')
+function average(obj) {
+    if (filter(obj.checked_num, '0') == 0) {
+        return 0;
+    } else {
+        return obj.check_all_score / filter(obj.checked_num, '1')
     }
 }
 
@@ -163,13 +254,13 @@ function average(obj){
  * @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 "" ;
+function filter(value, default_display_value) {
+    if (value != '' && value != undefined) {
+        return value;
+    } else if (default_display_value != undefined) {
+        return default_display_value;
+    } else {
+        return "";
     }
 }
 
@@ -178,16 +269,16 @@ function filter(value , default_display_value){
  * @param {*} obj 
  * @param {*} check_item_name 
  */
-function getItemScore(obj, check_item_name){
-    var names = obj.checked_socre_name ;
-    var scores = obj.checked_score ;
+function getItemScore(obj, check_item_name) {
+    var names = obj.checked_socre_name;
+    var scores = obj.checked_score;
 
-    for(var i=0;i<names.length ;i++){
-        if( names[i].indexOf(check_item_name) > -1){
-            return scores[i] ;
+    for (var i = 0; i < names.length; i++) {
+        if (names[i].indexOf(check_item_name) > -1) {
+            return scores[i];
         }
     }
-    return 0 ;
+    return 0;
 }
 
 /**
@@ -195,54 +286,54 @@ function getItemScore(obj, check_item_name){
  * @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 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 exportExcel(){
+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 flag = param_method(start_score,end_score);
-    if(flag==false){
+    var flag = param_method(start_score, end_score);
+    if (flag == false) {
         return;
     }
-    if( start_date=='' || end_date==''){
+    if (start_date == '' || end_date == '') {
         tip("请选择起止日期");
-        return ;
-    }else{
+        return;
+    } else {
         start_date += " 23:00:00";
         end_date += " 23:00:00";
     }
-    window.open( getserveraddr() + "/file/employee/order?dept_id="+dept_id+
-    "&start_date="+start_date+"&end_date="+end_date+"&start_score="+start_score+"&end_score="+end_score);
+    window.open(getserveraddr() + "/file/employee/order?dept_id=" + dept_id +
+        "&start_date=" + start_date + "&end_date=" + end_date + "&start_score=" + start_score + "&end_score=" + end_score);
 }
 
 
-function param_method(start_score,end_score){
-    
-    if(start_score==''||end_score==''){
+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)){
+    } else if (!(/^[0-9]*$/).test(start_score) || !(/^[0-9]*$/).test(end_score)) {
         tip("数字不合法!");
         return false;
-    }else if(parseInt(start_score)>parseInt(end_score)){
+    } 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){
+    } else if (start_score < 0 || start_score > 1000 || end_score < 0 || end_score > 1000) {
         tip("得分只能在0-1000之间");
         return false;
-    }else{
+    } else {
         return true;
     }
 }

+ 3 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/master/TeamClassDao.java

@@ -26,5 +26,8 @@ public interface TeamClassDao  {
     public List<TeamClass> getClassListForCharge(TeamClass teamClass);
     
     public List<TeamClass> getClassListForChargeUnRegular(TeamClass teamClass);
+    
+    public List<com.xintong.visualinspection.pojo.TeamClass> getLaneClassListByUserAndTime(com.xintong.visualinspection.pojo.TeamClass teamClass);
+    
    
 }

+ 27 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/TeamClassMapper.xml

@@ -13,6 +13,22 @@
         <result column="end_time" property="end_time" jdbcType="DATE" />
         <result column="class_id" property="class_id" jdbcType="INTEGER" />
     </resultMap>
+    
+     <resultMap id="TeamClassResultMap" type="com.xintong.visualinspection.pojo.TeamClass" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="work_date" property="work_date" jdbcType="TIMESTAMP" />
+        <result column="dept_id" property="dept_id" jdbcType="INTEGER" />
+        <result column="team_name" property="team_name" jdbcType="VARCHAR" />
+        <result column="user_ids" property="user_ids" jdbcType="VARCHAR" />
+        <result column="user_id" property="user_id" jdbcType="INTEGER" />
+        <result column="class_type" property="class_type" jdbcType="VARCHAR" />
+        <result column="team_id" property="team_id" jdbcType="INTEGER" />
+        <result column="start_time" property="start_time" jdbcType="TIMESTAMP" />
+        <result column="end_time" property="end_time" jdbcType="TIMESTAMP" />
+        <result column="lane" property="lane" jdbcType="INTEGER" />
+        <result column="class_flag" property="class_flag" jdbcType="INTEGER" />
+        <result column="class_id" property="class_id" jdbcType="INTEGER" />
+    </resultMap>
 
     <select id="getAll" resultMap="BaseResultMap"  >
         SELECT *
@@ -112,4 +128,15 @@
     	</if>
     </select>
     
+    
+    <select id="getLaneClassListByUserAndTime" parameterType="com.xintong.visualinspection.pojo.TeamClass" resultMap="TeamClassResultMap" >
+        SELECT t.*
+        FROM v_user_class t
+        WHERE 1=1
+        <if test="user_id != null">AND t.user_id = #{user_id}</if>
+        <if test="start_time != null">AND t.work_date &gt;= #{start_time}</if>
+        <if test="end_time != null">AND t.work_date &lt;= #{end_time}</if>
+        ORDER BY t.work_date ASC ,t.class_type ASC
+    </select>
+    
 </mapper>

+ 63 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/pojo/TeamClass.java

@@ -0,0 +1,63 @@
+package com.xintong.visualinspection.pojo;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import lombok.Data;
+
+/**
+ * 文件名:ScoreDeducting
+ * 版本信息:日期:2017/4/18 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有.
+ */
+@Data
+public class TeamClass {
+    //编号
+    private Long id;
+    //上班日期
+    @NotNull
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date work_date;
+    //上班时间
+    @NotNull
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date start_time;
+    //下班时间
+    @NotNull
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date end_time;
+    //班组id
+    private Long team_id;
+    //人员ids
+    private String user_ids;
+    //人员id
+    private Long user_id;
+    //部门id
+    private Long dept_id;
+    //班次类型(早、中、晚、全天)
+    private Integer class_type;
+    
+    private String team_name ;
+    private Integer lane ;
+
+    //有无顶班
+    private Integer class_flag ;
+    
+    //人员id
+    private List<String> user_arr;
+
+    private Long class_id;
+    private Long unregular_id;
+
+
+    //该人员被稽查的频度
+    private int checkcount;
+}

+ 3 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/TeamClassService.java

@@ -27,4 +27,7 @@ public interface TeamClassService {
     public void updateList(List<TeamClass> teamClasses);
     
     public List<TeamClass> getClassCode(ClassCode teamClass);
+    
+    public List<com.xintong.visualinspection.pojo.TeamClass> getLaneClassListByUserAndTime(com.xintong.visualinspection.pojo.TeamClass teamClass);
+
 }

+ 7 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/TeamClassServiceImpl.java

@@ -131,5 +131,12 @@ public class TeamClassServiceImpl extends BaseService implements TeamClassServic
 		// TODO Auto-generated method stub
 		return teamClassDao.getClassCode(teamClass);
 	}
+	
+	
+	@Override
+	public List<com.xintong.visualinspection.pojo.TeamClass> getLaneClassListByUserAndTime(com.xintong.visualinspection.pojo.TeamClass teamClass) {
+		// TODO Auto-generated method stub
+		return teamClassDao.getLaneClassListByUserAndTime(teamClass);
+	}
 
 }