package com.nationalelectric.greenH5; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.bizc.BaseServiceImpl; import com.nationalelectric.greenH5.bizc.IGreenApplyListBizc; import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc; import com.nationalelectric.greenH5.bizc.IGreenRetinueInfoBizc; import com.nationalelectric.greenH5.bizc.IGreenUserInfoBizc; import com.nationalelectric.greenH5.po.GreenUserInfo; import com.nationalelectric.greenH5.utils.DateTime; import com.nationalelectric.greenH5.utils.DateUtil; import com.sgcc.uap.persistence.IHibernateDao; /** * 概述
*

* 功能
* * @author chenweikang */ @Controller @RequestMapping("/greenVisitorStatistics") public class GreenVisitorStatisticsController extends GreenBaseController { /** * 我的申请service */ @Resource private IGreenApplyListBizc greenApplyListBizc; /** * 随行人员service */ @Resource private IGreenRetinueInfoBizc greenretinueinfoBizc; /** * 用户controller */ @Resource private GreenUserInfoController greenUserInfoController; /** * 用户service */ @Resource private IGreenUserInfoBizc greenuserinfoBizc; /** * 字典表controller */ @Resource private GreenDictionaryInfoController greenDictionaryInfoController; @Resource private IGreenOperateLogBizc greenOperateLogBizc; /** * HibernateDao逻辑构件 */ @Autowired IHibernateDao hibernateDao; @Autowired private BaseServiceImpl baseService; /** * 不可取消申请的状态集合 */ private static final String[] IS_CANCEL_ARR = { "1", "2", "3", "9", "11" }; /** * 获取访客统计 * * @param stime * @param etime * @return */ @SuppressWarnings({ "unchecked", "unused" }) @RequestMapping(value = "/getVisitorStatistics", method = RequestMethod.POST) public @ResponseBody RestResult getVisitorStatistics(String startDate,String endDate,String userId) { try { HashMap content = new HashMap(); GreenUserInfo userInfo = getUserInfo(userId); if (userInfo == null) { return new RestResult(Constant.FAILED, "非法用户"); } if(userInfo.getDepartmentName().equals("后勤工作部")){ }else{ } String now = DateUtil.dateToStr(new Date(), "yyyy-MM-dd"); String year = DateUtil.dateToStr(DateTime.strToDate(startDate, "yyyy-MM-dd"), "yyyy-MM-dd"); endDate = DateUtil.dateToStr(DateTime.strToDate(endDate, "yyyy-MM-dd"), "yyyy-MM-dd"); String startTime = year + " 00:00:01"; String endTime = endDate + " 23:59:59"; String visitorSql = "SELECT dp.name,COUNT(*) total,COUNT(if(apply.first_status=1, 1, null)) ty FROM green_apply_list apply " + " LEFT JOIN green_visitor_info vi ON apply.detail_id = vi.id AND vi.is_deleted = 'N' " + " LEFT JOIN green_user_info ui ON vi.visited_person_id = ui.id AND ui.is_deleted = 'N' " + " LEFT JOIN green_department dp ON dp.code = ui.department_id AND dp.is_deleted = 'N' WHERE " + " apply.apply_type = '02' AND apply.is_deleted = 'N' and dp.name is not null " + " AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') < ? "; if(!userInfo.getDepartmentName().equals("后勤工作部")){ visitorSql = visitorSql+ " AND dp.code = " +userInfo.getDepartmentId(); } visitorSql = visitorSql+ " GROUP BY ui.department_name"; String retinuevisitorSql = "SELECT dp.name,COUNT(*) total,COUNT(if(apply.first_status=1, 1, null)) ty FROM green_apply_list apply " + " LEFT JOIN green_visitor_info vi ON apply.detail_id = vi.id AND vi.is_deleted = 'N' " + " LEFT JOIN green_user_info ui ON vi.visited_person_id = ui.id AND ui.is_deleted = 'N' " + "LEFT JOIN green_department dp ON dp.code = ui.department_id AND dp.is_deleted = 'N' " + " ,green_retinue_info ri WHERE apply.apply_type = '02' AND apply.is_deleted = 'N' and dp.name is not null AND ri.visitor_id = vi.id " + " AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') < ? " ; if(!userInfo.getDepartmentName().equals("后勤工作部")){ retinuevisitorSql = retinuevisitorSql+ " AND dp.code = " +userInfo.getDepartmentId(); } retinuevisitorSql = retinuevisitorSql+ " GROUP BY ui.department_name "; // String nbuserSql = " SELECT count(t.name) total,t.name from (SELECT dp.name,cr.user_id,CR.capture_time " // + " FROM green_capture_record cr LEFT JOIN green_user_info ui on ui.id = cr.user_id AND ui.is_deleted = 'N' " // + " LEFT JOIN green_department dp on ui.department_id = dp.`code` AND dp.is_deleted='N' WHERE " // + " cr.is_deleted = 'N' AND cr.user_type = 1 AND DATE_FORMAT(cr.capture_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(cr.capture_time,'%Y-%m-%d %T') < ?" // + " GROUP BY dp.name,cr.user_id,DATE_FORMAT(cr.capture_time,'%Y-%m-%d') ) t GROUP BY t.NAME "; // String nbuserSql = " SELECT count(t.name) total,t.name from (SELECT dp.name,cr.user_id,CR.capture_time " + " FROM green_capture_record cr LEFT JOIN green_internal_user ui on ui.job_num = cr.user_id " + " ,green_department dp WHERE cr.is_deleted = 'N' AND cr.user_type = 1 and ui.department = dp.`name` AND dp.is_deleted='N' and " + " cr.is_deleted = 'N' AND cr.user_type = 1 AND DATE_FORMAT(cr.capture_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(cr.capture_time,'%Y-%m-%d %T') < ?"; if(!userInfo.getDepartmentName().equals("后勤工作部")){ nbuserSql = nbuserSql+ " AND dp.code = " +userInfo.getDepartmentId(); } nbuserSql = nbuserSql+ " GROUP BY dp.name,cr.user_id,DATE_FORMAT(cr.capture_time,'%Y-%m-%d') ) t GROUP BY t.NAME "; List> visitlist = hibernateDao.queryForListWithSql(visitorSql, new Object[] { startTime, endTime }); List> retinuelist = hibernateDao.queryForListWithSql(retinuevisitorSql, new Object[] { startTime, endTime }); List> userlist = hibernateDao.queryForListWithSql(nbuserSql, new Object[] { startTime, endTime }); ArrayList depList = new ArrayList(); for (int i = 0; i < visitlist.size(); i++) { depList.add(visitlist.get(i).get("name").toString()); visitlist.get(i).put("usertotal",0); } for (int j = 0; j < retinuelist.size(); j++) { for (int i = 0; i < visitlist.size(); i++) { if (visitlist.get(i).get("name").toString().equals(retinuelist.get(j).get("name").toString())) { Integer total = Integer.valueOf(visitlist.get(i).get("total").toString()); Integer retinuetotal = Integer.valueOf(retinuelist.get(j).get("total").toString()); visitlist.get(i).put("total", total + retinuetotal); Integer tytotal = Integer.valueOf(visitlist.get(i).get("ty").toString()); Integer tyretinuetotal = Integer.valueOf(retinuelist.get(j).get("ty").toString()); visitlist.get(i).put("ty", tytotal + tyretinuetotal); } } } for (int i = 0; i < visitlist.size(); i++) { for (int j = 0; j < userlist.size(); j++) { if (visitlist.get(i).get("name").toString().equals(userlist.get(j).get("name").toString())) { visitlist.get(i).put("usertotal", userlist.get(j).get("total").toString()); } } } for (int j = 0; j < userlist.size(); j++) { if(!depList.contains(userlist.get(j).get("name"))){ HashMap usermap = new HashMap(); usermap.put("name", userlist.get(j).get("name")); usermap.put("total", 0); usermap.put("ty", 0); usermap.put("usertotal", userlist.get(j).get("total")); visitlist.add(usermap); } } depList.clear(); depList.add("全部"); if(userInfo.getDepartmentName().equals("后勤工作部")){ String queryAllDeptSql = "SELECT gd.id,gd.name FROM GREEN_DEPARTMENT gd WHERE 1=1 AND gd.dp_sort!=0 and gd.parent_id = '1' and gd.is_deleted='N' ORDER BY gd.seq ASC"; List> queryAllDeptList = hibernateDao.queryForListWithSql(queryAllDeptSql); for(int i=0; i rMap = new HashMap(); int ty = 0; int total =0; int usertotal = 0; for (int i = 0; i < visitlist.size(); i++) { ty = ty+Integer.valueOf(visitlist.get(i).get("ty").toString()); total = total+Integer.valueOf(visitlist.get(i).get("total").toString()); usertotal = usertotal+Integer.valueOf(visitlist.get(i).get("usertotal").toString()); } HashMap totalmap = new HashMap(); totalmap.put("name", "合计"); totalmap.put("ty", ty); totalmap.put("total", total); totalmap.put("usertotal", usertotal); visitlist.add(0,totalmap); rMap.put("depList", depList); rMap.put("visitlist", visitlist); return new RestResult(Constant.SUCCESS, "请求成功", rMap); } catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED, "请求失败"); } } /** * 查询我的预约申请列表和我的邀约列表 * * @param result * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getVisitorStatisticsDetailed", method = RequestMethod.POST) public @ResponseBody RestResult getVisitorStatisticsDetailed(String startDate,String endDate,String depName,String type,String page,String userId) { try { // String userId = result.getUserId(); // GreenUserInfo info = getUserInfo(userId); // GreenGrantAuth gaInfo = getGaInfo(userId); startDate = DateUtil.dateToStr(DateTime.strToDate(startDate, "yyyy-MM-dd"), "yyyy-MM-dd"); endDate = DateUtil.dateToStr(DateTime.strToDate(endDate, "yyyy-MM-dd"), "yyyy-MM-dd"); String startTime = startDate + " 00:00:01"; String endTime = endDate + " 23:59:59"; GreenUserInfo userInfo = getUserInfo(userId); if (userInfo == null) { return new RestResult(Constant.FAILED, "非法用户"); } String pageSize = "20"; // if (info == null) { // return new RestResult(Constant.FAILED, "非法用户"); // } List> list = new ArrayList>(); StringBuffer myWaitHandleListSql = new StringBuffer(); myWaitHandleListSql.append("SELECT vi.push_state,apply.user_id,apply.detail_id, vi.visited_person_name,vi.visit_start_time, vi.visitor_name," + " apply.apply_time ,apply.first_status FROM green_apply_list apply LEFT JOIN green_visitor_info " + " vi ON apply.detail_id = vi.id " + " LEFT JOIN green_user_info ui ON vi.visited_person_id = ui.id LEFT JOIN green_department dp ON dp.code = ui.department_id " + " WHERE apply.apply_type = '02' and dp.name is not null "); ArrayList params = new ArrayList(); // if(!depName.equals("全部")){ // myWaitHandleListSql.append(" and dp.name= ? "); // params.add(depName); // } if(userInfo.getDepartmentName().equals("后勤工作部")){ if(!depName.equals("全部")){ myWaitHandleListSql.append(" and dp.name= ? "); params.add(depName); } }else{ // if(!depName.equals("全部")){ myWaitHandleListSql.append(" and dp.name= ? "); params.add(userInfo.getDepartmentName()); // } } myWaitHandleListSql.append(" AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(apply.apply_time,'%Y-%m-%d %T') < ? "); params.add(startTime); params.add(endTime); if(type.equals("1")){ myWaitHandleListSql.append("AND apply.first_status = 1"); }else if(type.equals("2")){ myWaitHandleListSql.append("AND apply.first_status <> 1"); }else if(type.equals("3")){ } // 排序 if(page.matches("\\d+") && pageSize.matches("\\d+")){ Integer x = Integer.valueOf(page); Integer y = Integer.valueOf(pageSize); params.add((x-1)*y); params.add(y); myWaitHandleListSql.append(" ORDER BY apply_time DESC LIMIT ?,?"); } // 执行sql list = hibernateDao.queryForListWithSql(myWaitHandleListSql.toString(), params.toArray()); return new RestResult(Constant.SUCCESS, "查询成功", list); }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED, "查询失败!"); } } /** * 查询我的预约申请列表和我的邀约列表 * * @param result * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getInsideList", method = RequestMethod.POST) public @ResponseBody RestResult getInsideList(String startDate,String endDate,String depName,String page,String userId) { try { // String userId = result.getUserId(); // GreenUserInfo info = getUserInfo(userId); // GreenGrantAuth gaInfo = getGaInfo(userId); GreenUserInfo userInfo = getUserInfo(userId); if (userInfo == null) { return new RestResult(Constant.FAILED, "非法用户"); } startDate = DateUtil.dateToStr(DateTime.strToDate(startDate, "yyyy-MM-dd"), "yyyy-MM-dd"); endDate = DateUtil.dateToStr(DateTime.strToDate(endDate, "yyyy-MM-dd"), "yyyy-MM-dd"); String startTime = startDate + " 00:00:01"; String endTime = endDate + " 23:59:59"; String pageSize = "20"; // if (info == null) { // return new RestResult(Constant.FAILED, "非法用户"); // } List> list = new ArrayList>(); StringBuffer myWaitHandleListSql = new StringBuffer(); // myWaitHandleListSql.append(" SELECT dp.name dpName,DATE_FORMAT(CR.capture_time,'%Y-%m-%d %T') time,cr.user_name userName" // + " FROM green_capture_record cr LEFT JOIN (SELECT ui.job_num ,ui.department FROM green_internal_user ui where 1=1 " // + " GROUP BY ui.job_num,ui.department,ui.phone,ui.`name` ) ui on ui.job_num = cr.user_id " // + " ,green_department dp WHERE cr.is_deleted = 'N' AND cr.user_type = 1 and ui.department = dp.`name` " // + " AND dp.is_deleted='N' and " // + " cr.is_deleted = 'N' AND cr.user_type = 1 "); ArrayList params = new ArrayList(); myWaitHandleListSql.append(" SELECT CASE cr.device_id WHEN 1 THEN '一楼大厅' ELSE '负一层' END address,dp.name dpName,ui.name userName,MIN(DATE_FORMAT(cr.capture_time,'%m-%d %H:%i')) time " + " FROM green_capture_record cr LEFT JOIN (SELECT ui.job_num ,ui.name,ui.department FROM green_internal_user ui where 1=1 " + " GROUP BY ui.job_num,ui.department,ui.phone,ui.`name` ) ui on ui.job_num = cr.user_id " + " ,green_department dp WHERE cr.is_deleted = 'N' AND cr.user_type = 1 and ui.department = dp.`name` " + " AND dp.is_deleted='N' and cr.is_deleted = 'N' AND cr.user_type = 1 "); if(userInfo.getDepartmentName().equals("后勤工作部")){ if(!depName.equals("全部")){ myWaitHandleListSql.append(" and dp.name= ? "); params.add(depName); } }else{ // if(!depName.equals("全部")){ myWaitHandleListSql.append(" and dp.name= ? "); params.add(userInfo.getDepartmentName()); // } } myWaitHandleListSql.append(" AND DATE_FORMAT(capture_time,'%Y-%m-%d %T') > ? AND DATE_FORMAT(capture_time,'%Y-%m-%d %T') < ? "); params.add(startTime); params.add(endTime); // 排序 if(page.matches("\\d+") && pageSize.matches("\\d+")){ Integer x = Integer.valueOf(page); Integer y = Integer.valueOf(pageSize); params.add((x-1)*y); params.add(y); myWaitHandleListSql.append(" GROUP BY dp.`name`,cr.user_name ,DATE_FORMAT(capture_time,'%Y-%m-%d')" + " order by MIN(DATE_FORMAT(cr.capture_time,'%Y-%m-%d %T')) DESC LIMIT ?,?"); } // 执行sql list = hibernateDao.queryForListWithSql(myWaitHandleListSql.toString(), params.toArray()); for (int i = 0; i < list.size(); i++) { list.get(i).put("userName", list.get(i).get("userName").toString().trim()); } return new RestResult(Constant.SUCCESS, "查询成功", list); }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED, "查询失败!"); } } public static List getBetweenDays(String stime, String etime) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date sdate = null; Date eDate = null; List list = null; try { sdate = df.parse(stime); eDate = df.parse(etime); Calendar c = Calendar.getInstance(); list = new ArrayList(); if (sdate != null & eDate != null) { while (sdate.getTime() <= eDate.getTime()) { list.add(df.format(sdate)); c.setTime(sdate); c.add(Calendar.DATE, 1); // 日期加1天 sdate = c.getTime(); } } } catch (ParseException e) { e.printStackTrace(); } return list; } }