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