chenrj-PC\chenrj 8 лет назад
Родитель
Сommit
eaf323148f

+ 69 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/bean/StatisticsFsWork.java

@@ -0,0 +1,69 @@
+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;
+
+/**
+ * 文件名:Job
+ * 版本信息:日期:2017/4/18 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有.
+ */
+@Data
+public class StatisticsFsWork {
+    //编号
+    private Integer id;
+ 
+    // 部门id
+    private Long dept_id;
+    
+    // 收费站名字
+    private String feeStationName ;
+    
+    // 用户名字
+    private String userName ;
+    
+    // 岗位名字
+    private String positionName ;
+    
+    // 父部门id
+    private Long parent_dept_id ;
+    
+    //开始日期
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date start_time ;
+    
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date end_time ;
+    
+    private Long user_id ;
+    
+    private List<Organ> dept_list  ;
+    
+    // work_date 时间
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")  
+    private Date work_date ;
+    
+    // 班次类型(早、中、晚、全天)
+    private Integer class_type ;
+    
+    // 工作天数
+    private Integer work_days ; 
+    
+    // 工作时间(分钟)
+    private Integer work_minutes;
+    
+    // 稽查id
+    private Integer check_id;
+    
+    List<StatisticsFsWork> subStatisticsFsWork;
+    
+}

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

@@ -14,6 +14,7 @@ import com.github.pagehelper.PageInfo;
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBo;
 import com.xintong.visualinspection.bean.StatisticsBo;
+import com.xintong.visualinspection.bean.StatisticsFsWork;
 import com.xintong.visualinspection.bean.Team;
 import com.xintong.visualinspection.bean.Team;
 import com.xintong.visualinspection.service.StatisticsService;
 import com.xintong.visualinspection.service.StatisticsService;
 
 
@@ -181,4 +182,40 @@ public class StatisticsController extends BaseController {
     	CheckmanStatisticsBean returnObj=  statisticsService.getCheckmanStatisticInfo(obj);
     	CheckmanStatisticsBean returnObj=  statisticsService.getCheckmanStatisticInfo(obj);
     	return super.returnSuccessResult(returnObj);
     	return super.returnSuccessResult(returnObj);
     }
     }
+    
+    /**
+     * 获取考勤列表情况
+     */
+    @RequestMapping(value = "/fs/work/info")
+    public String getFsworkInfo(@RequestBody StatisticsFsWork obj){
+    	List<StatisticsFsWork> returnObj=  statisticsService.getFsWorkStatisticInfo(obj);
+    	return super.returnSuccessResultTime(returnObj);
+    }
+    
+    /**
+     * 获取顶岗考勤列表情况
+     */
+    @RequestMapping(value = "/fs/unregular/work/info")
+    public String getFsUnregularworkInfo(@RequestBody StatisticsFsWork obj){
+    	List<StatisticsFsWork> returnObj=  statisticsService.getUnregularFsWorkStatisticInfo(obj);
+    	return super.returnSuccessResultTime(returnObj);
+    }
+    
+    /**
+     * 正常在岗人数
+     */
+    @RequestMapping(value = "/fs/work/person")
+    public String getFsworkInfoPersonNumber(@RequestBody StatisticsFsWork obj){
+    	List<StatisticsFsWork> returnObj=  statisticsService.getFsWorkPerson(obj);
+    	return super.returnSuccessResultTime(returnObj);
+    }
+    
+    /**
+     * 顶岗人数统计
+     */
+    @RequestMapping(value = "/fs/unregular/work/person")
+    public String getFsUnregularworkInfoPersonNumber(@RequestBody StatisticsFsWork obj){
+    	List<StatisticsFsWork> returnObj=  statisticsService.getFsWorkUnregularWorkPerson(obj);
+    	return super.returnSuccessResultTime(returnObj);
+    }
 }
 }

+ 1 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/dao/cluster/UserInfoDao.java

@@ -22,4 +22,5 @@ public interface UserInfoDao {
     public List<User> getAllCheckmans();
     public List<User> getAllCheckmans();
     public List<StatisticsBean> getUsersCountList();
     public List<StatisticsBean> getUsersCountList();
     public Integer getUsersCenterManageCount(StatisticsBean obj);
     public Integer getUsersCenterManageCount(StatisticsBean obj);
+    public User getOneDetail(Integer id);
 }
 }

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

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
+import com.xintong.visualinspection.bean.StatisticsFsWork;
 
 
 /**
 /**
  * 文件名:StatisticsDao
  * 文件名:StatisticsDao
@@ -39,4 +40,17 @@ public interface StatisticsDao  {
 	public List<StatisticsBean> selectOneCheckedDetailInfo(StatisticsBean obj);
 	public List<StatisticsBean> selectOneCheckedDetailInfo(StatisticsBean obj);
 	
 	
 	public CheckmanStatisticsBean selectCheckManInfo(CheckmanStatisticsBean obj);
 	public CheckmanStatisticsBean selectCheckManInfo(CheckmanStatisticsBean obj);
+	
+	
+	public List<StatisticsFsWork> selectFsWork(StatisticsFsWork obj);
+	
+	public List<StatisticsFsWork> selectFsWorkGather(StatisticsFsWork obj);
+	
+	public List<StatisticsFsWork> selectFsUnregularWork(StatisticsFsWork obj);
+	
+	public List<StatisticsFsWork> selectFsUnregularWorkGather(StatisticsFsWork obj);
+	
+	public List<StatisticsFsWork> selectFsWorkGatherGroupByWorkType(StatisticsFsWork obj);
+	
+	public List<StatisticsFsWork> selectFsUnregularWorkGatherGroupByWorkType(StatisticsFsWork obj);
 }
 }

+ 8 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/cluster/UserInfoMapper.xml

@@ -43,6 +43,14 @@
         WHERE id = #{id}
         WHERE id = #{id}
     </select>
     </select>
 
 
+	<select id="getOneDetail" parameterType="java.lang.Integer" resultMap="BaseResultMap" >
+        SELECT
+        t.* ,  fs.name AS fee_station_name
+        FROM t_sys_users t
+        LEFT JOIN t_br_layer_fee_station fs ON t.organid = fs.organ_id
+        WHERE t.id = #{id} 
+    </select>
+
     <insert id="insert" parameterType="com.xintong.visualinspection.bean.User" >
     <insert id="insert" parameterType="com.xintong.visualinspection.bean.User" >
         INSERT INTO
         INSERT INTO
         t_sys_users
         t_sys_users

+ 85 - 2
VisualInspection_server/src/main/java/com/xintong/visualinspection/mapper/master/StatisticsMapper.xml

@@ -308,6 +308,89 @@
 					AND t.end_time &lt;= #{end_date}
 					AND t.end_time &lt;= #{end_date}
 				</if>
 				</if>
     </select>
     </select>
-     
-     
+    
+    <sql id="select_Fswork_condition">
+    	AND t.user_id IS NOT NULL
+    	<if test="start_time!=null and start_time!=''">
+   			AND t.start_time >= #{start_time}
+   		</if>
+   		<if test="end_time!=null and end_time!=''">
+   			AND t.end_time &lt;= #{end_time}
+   		</if>
+   		<if test="dept_list!=null and dept_list.size()>0 ">
+    		AND	t.dept_id IN
+		    	<foreach item="obj"  collection="dept_list" open="("
+		            separator="," close=")">
+		            #{obj.id}  
+		         </foreach>
+	    </if>
+   		<if test="dept_id!=null">
+   			AND t.dept_id=#{dept_id}
+   		</if>
+   		<if test="user_id!=null">
+    		AND t.user_id =#{user_id}     		
+   		</if>
+    </sql>
+    
+    
+    <resultMap id="statisticsFsWork" type="com.xintong.visualinspection.bean.StatisticsFsWork">
+        <id property="user_id" column="user_id"/>
+        <collection property="subStatisticsFsWork" ofType="com.xintong.visualinspection.bean.StatisticsFsWork">
+            <result column="work_date" property="work_date"/>
+            <result property="dept_id" column="dept_id"/>
+            <result property="class_type" column="class_type"/>
+            <result property="check_id" column="check_id"/>
+            <result property="work_days" column="work_days" />
+            <result property="work_minutes" column="work_minutes"/>
+        </collection>
+    </resultMap>
+    
+    <select id="selectFsWork" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultMap="statisticsFsWork">
+    	SELECT t.* , ct.id AS check_id  FROM sys_user_class t 
+    		LEFT JOIN check_task ct ON t.id = ct.user_class_id AND ct.check_status != 22
+    		WHERE 1=1
+    		<include refid="select_Fswork_condition" />
+    		ORDER BY t.work_date , t.user_id
+    </select>
+    
+    <select id="selectFsWorkGather" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultType="com.xintong.visualinspection.bean.StatisticsFsWork">
+    	SELECT COUNT(DISTINCT(work_date)) AS work_days , SUM( TIMESTAMPDIFF(MINUTE, t.start_time,t.end_time)) AS work_minutes , t.* 
+    	FROM sys_user_class t 
+    	WHERE 1=1 
+    	<include refid="select_Fswork_condition"/>
+    	GROUP BY t.user_id
+    </select>
+    
+    <select id="selectFsUnregularWork" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultMap="statisticsFsWork">
+    	SELECT t.* , ct.id AS check_id  FROM sys_user_class_unregular t 
+    		LEFT JOIN check_task ct ON t.id = ct.user_class_unregular_id  AND ct.check_status != 22
+    		WHERE 1=1   
+    		<include refid="select_Fswork_condition" />
+    		ORDER BY t.work_date
+    </select>
+    
+    <select id="selectFsUnregularWorkGather" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultType="com.xintong.visualinspection.bean.StatisticsFsWork">
+    	SELECT COUNT(DISTINCT(work_date)) AS work_days , SUM( TIMESTAMPDIFF(MINUTE, t.start_time,t.end_time)) AS work_minutes , t.* 
+    	FROM sys_user_class_unregular t 
+    	WHERE 1=1 
+    	<include refid="select_Fswork_condition"/>
+    	GROUP BY t.user_id
+    </select>
+    
+    <select id="selectFsWorkGatherGroupByWorkType" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultMap="statisticsFsWork" >
+    	SELECT COUNT(DISTINCT(work_date)) AS work_days , t.* 
+    	FROM sys_user_class t 
+    	WHERE 1=1 
+    	<include refid="select_Fswork_condition"/>
+    	GROUP BY t.user_id , t.class_type
+    </select>
+    
+    <select id="selectFsUnregularWorkGatherGroupByWorkType" parameterType="com.xintong.visualinspection.bean.StatisticsFsWork" resultMap="statisticsFsWork">
+    	SELECT COUNT(DISTINCT(work_date)) AS work_days , t.* 
+    	FROM sys_user_class_unregular t 
+    	WHERE 1=1 
+    	<include refid="select_Fswork_condition"/>
+    	GROUP BY t.user_id , t.class_type
+    </select>
+
 </mapper>
 </mapper>

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

@@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.CheckmanStatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBo;
 import com.xintong.visualinspection.bean.StatisticsBo;
+import com.xintong.visualinspection.bean.StatisticsFsWork;
 
 
 /**
 /**
  * 
  * 
@@ -69,4 +70,18 @@ public interface StatisticsService {
 	public List<StatisticsBean> getOneCheckedDetailInfo(StatisticsBean obj);
 	public List<StatisticsBean> getOneCheckedDetailInfo(StatisticsBean obj);
 	
 	
 	public CheckmanStatisticsBean getCheckmanStatisticInfo(CheckmanStatisticsBean obj);
 	public CheckmanStatisticsBean getCheckmanStatisticInfo(CheckmanStatisticsBean obj);
+	
+	// 出勤明细统计
+	public List<StatisticsFsWork> getFsWorkStatisticInfo(StatisticsFsWork obj);
+	
+	// 顶岗出勤明细统计
+	public List<StatisticsFsWork> getUnregularFsWorkStatisticInfo(StatisticsFsWork obj);
+	
+	// 正常在岗人数统计
+	public List<StatisticsFsWork> getFsWorkPerson(StatisticsFsWork obj);
+	
+	// 顶岗人数统计
+	public List<StatisticsFsWork> getFsWorkUnregularWorkPerson(StatisticsFsWork obj);
+	
+	
 }
 }

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

@@ -31,6 +31,7 @@ import com.xintong.visualinspection.bean.FeeStation;
 import com.xintong.visualinspection.bean.Organ;
 import com.xintong.visualinspection.bean.Organ;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBean;
 import com.xintong.visualinspection.bean.StatisticsBo;
 import com.xintong.visualinspection.bean.StatisticsBo;
+import com.xintong.visualinspection.bean.StatisticsFsWork;
 import com.xintong.visualinspection.bean.User;
 import com.xintong.visualinspection.bean.User;
 import com.xintong.visualinspection.dao.cluster.DepartmentDao;
 import com.xintong.visualinspection.dao.cluster.DepartmentDao;
 import com.xintong.visualinspection.dao.cluster.UserInfoDao;
 import com.xintong.visualinspection.dao.cluster.UserInfoDao;
@@ -947,9 +948,189 @@ public class StatisticsServiceImpl extends BaseService implements StatisticsServ
 		return list;
 		return list;
 	}
 	}
 
 
+	
 	@Override
 	@Override
 	public CheckmanStatisticsBean getCheckmanStatisticInfo(CheckmanStatisticsBean obj) {
 	public CheckmanStatisticsBean getCheckmanStatisticInfo(CheckmanStatisticsBean obj) {
 		return statisticsDao.selectCheckManInfo(obj);
 		return statisticsDao.selectCheckManInfo(obj);
 	}
 	}
+
+	// 根据调剂获取用户列表
+	private List<User> getUsers(User user){
+		// 检索收费站的人员
+		Constant t =  CodeUtil.getCodeByFlagAndValue("feestation_check_jobs", "1");
+		String[] postions = t.getCode_name().split(",");
+		List<Integer> positionList = new ArrayList<Integer>();
+		for(int i =0 ;i<postions.length;i++){
+			positionList.add(Integer.parseInt(postions[i]));
+		}
+		user.setPosition_ids(positionList);
+		return userInfoDao.getUsers(user);
+	}
+	
+	/**
+	 * 根据parant_organ_id 查询该下面的收费站列表
+	 * @param id organ_id
+	 * @return
+	 */
+	private List<Organ> getFsStationList(Integer id){
+		// 道管中心
+		Organ organ =new Organ();
+		organ.setParentid(id);
+		return  departmentDao.getOrgan(organ);
+	}
+	
+	@Override
+	public List<StatisticsFsWork> getFsWorkStatisticInfo(StatisticsFsWork obj) {
+
+		List<User> userList =new ArrayList<>();
+		if(obj.getUser_id()!=null){
+			userList.add(userInfoDao.getOneDetail(obj.getUser_id().intValue()));
+		}else{
+			User user = new User();
+			if(obj.getDept_id()!=null){
+				user.setOrganid(obj.getDept_id().intValue());
+			}
+			if(obj.getParent_dept_id()!=null){
+				user.setParent_organid(obj.getParent_dept_id().intValue());
+				obj.setDept_list(getFsStationList(obj.getParent_dept_id().intValue()));
+			}			
+			userList = getUsers(user);
+		}
+		
+		//
+		Map<Integer,StatisticsFsWork> map = new HashMap<>();
+		List<StatisticsFsWork> sFsList = statisticsDao.selectFsWork(obj);
+		for(int i=0;i<sFsList.size();i++){
+			map.put(sFsList.get(i).getUser_id().intValue(), sFsList.get(i));
+		}
+		//
+		Map<Integer,StatisticsFsWork> mapSta = new HashMap<>();
+		List<StatisticsFsWork> sfswList = statisticsDao.selectFsWorkGather(obj);
+		for(int i=0;i<sfswList.size();i++){
+			mapSta.put(sfswList.get(i).getUser_id().intValue(), sfswList.get(i));
+		}
+		
+		for(User userObj:userList){
+			if(mapSta.containsKey(userObj.getId())){
+				StatisticsFsWork staobj = map.get(userObj.getId());
+				staobj.setFeeStationName(userObj.getFee_station_name());
+				staobj.setPositionName(CacheUtil.getJobnameFromMap(new Long(userObj.getPositionid())));
+				staobj.setUserName(userObj.getTruename());
+				staobj.setWork_days( mapSta.get(userObj.getId()).getWork_days() );
+				staobj.setWork_minutes( mapSta.get(userObj.getId()).getWork_minutes() );
+			}
+		}
+		
+		return sFsList;
+	}
+
+	@Override
+	public List<StatisticsFsWork> getUnregularFsWorkStatisticInfo(StatisticsFsWork obj) {
+		List<User> userList =new ArrayList<>();
+		if(obj.getUser_id()!=null){
+			userList.add(userInfoDao.getOneDetail(obj.getUser_id().intValue()));
+		}else{
+			User user = new User();
+			if(obj.getDept_id()!=null){
+				user.setOrganid(obj.getDept_id().intValue());
+			}
+			if(obj.getParent_dept_id()!=null){
+				user.setParent_organid(obj.getParent_dept_id().intValue());
+				obj.setDept_list(getFsStationList(obj.getParent_dept_id().intValue()));
+			}			
+			userList = getUsers(user);
+		}
+		
+		//
+		Map<Integer,StatisticsFsWork> map = new HashMap<>();
+		List<StatisticsFsWork> sFsList = statisticsDao.selectFsUnregularWork(obj);
+		for(int i=0;i<sFsList.size();i++){
+			map.put(sFsList.get(i).getUser_id().intValue(), sFsList.get(i));
+		}
+		//
+		Map<Integer,StatisticsFsWork> mapSta = new HashMap<>();
+		List<StatisticsFsWork> sfswList = statisticsDao.selectFsUnregularWorkGather(obj);
+		for(int i=0;i<sfswList.size();i++){
+			mapSta.put(sfswList.get(i).getUser_id().intValue(), sfswList.get(i));
+		}
+		for(User userObj:userList){
+			if(mapSta.containsKey(userObj.getId())){
+				StatisticsFsWork staobj = map.get(userObj.getId());
+				staobj.setFeeStationName(userObj.getFee_station_name());
+				staobj.setPositionName(CacheUtil.getJobnameFromMap(new Long(userObj.getPositionid())));
+				staobj.setUserName(userObj.getTruename());
+				staobj.setWork_days( mapSta.get(userObj.getId()).getWork_days() );
+				staobj.setWork_minutes( mapSta.get(userObj.getId()).getWork_minutes() );
+			}
+		}
+		return sFsList;
+	}
+
+	@Override
+	public List<StatisticsFsWork> getFsWorkPerson(StatisticsFsWork obj) {
+		
+		List<User> userList =new ArrayList<>();
+		if(obj.getUser_id()!=null){
+			userList.add(userInfoDao.getOneDetail(obj.getUser_id().intValue()));
+		}else{
+			User user = new User();
+			if(obj.getDept_id()!=null){
+				user.setOrganid(obj.getDept_id().intValue());
+			}
+			if(obj.getParent_dept_id()!=null){
+				user.setParent_organid(obj.getParent_dept_id().intValue());
+				obj.setDept_list(getFsStationList(obj.getParent_dept_id().intValue()));
+			}			
+			userList = getUsers(user);
+		}
+		Map<Integer,StatisticsFsWork> map = new HashMap<>();
+		List<StatisticsFsWork> sFsList = statisticsDao.selectFsWorkGatherGroupByWorkType(obj);
+		for(int i=0;i<sFsList.size();i++){
+			map.put(sFsList.get(i).getUser_id().intValue(), sFsList.get(i));
+		}
+		
+		for(User userObj:userList){
+			if(map.containsKey(userObj.getId())){
+				StatisticsFsWork staobj = map.get(userObj.getId());
+				staobj.setFeeStationName(userObj.getFee_station_name());
+				staobj.setPositionName(CacheUtil.getJobnameFromMap(new Long(userObj.getPositionid())));
+				staobj.setUserName(userObj.getTruename());
+			}
+		}
+		return sFsList;
+	}
+
+	@Override
+	public List<StatisticsFsWork> getFsWorkUnregularWorkPerson(StatisticsFsWork obj) {
+		List<User> userList =new ArrayList<>();
+		if(obj.getUser_id()!=null){
+			userList.add(userInfoDao.getOneDetail(obj.getUser_id().intValue()));
+		}else{
+			User user = new User();
+			if(obj.getDept_id()!=null){
+				user.setOrganid(obj.getDept_id().intValue());
+			}
+			if(obj.getParent_dept_id()!=null){
+				user.setParent_organid(obj.getParent_dept_id().intValue());
+				obj.setDept_list(getFsStationList(obj.getParent_dept_id().intValue()));
+			}			
+			userList = getUsers(user);
+		}
+		Map<Integer,StatisticsFsWork> map = new HashMap<>();
+		List<StatisticsFsWork> sFsList = statisticsDao.selectFsUnregularWorkGatherGroupByWorkType(obj);
+		for(int i=0;i<sFsList.size();i++){
+			map.put(sFsList.get(i).getUser_id().intValue(), sFsList.get(i));
+		}
+		
+		for(User userObj:userList){
+			if(map.containsKey(userObj.getId())){
+				StatisticsFsWork staobj = map.get(userObj.getId());
+				staobj.setFeeStationName(userObj.getFee_station_name());
+				staobj.setPositionName(CacheUtil.getJobnameFromMap(new Long(userObj.getPositionid())));
+				staobj.setUserName(userObj.getTruename());
+			}
+		}
+		return sFsList;
+	}
 	
 	
 }
 }