hz-zhhq-app-service/greenH5modul/.svn/pristine/85/8583de4a6ef740ef628965908eb...

452 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
/**
* <b>概述</b><br>
* <p>
* <b>功能</b><br>
*
* @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<String, Object> content = new HashMap<String, Object>();
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<HashMap<String, Object>> visitlist = hibernateDao.queryForListWithSql(visitorSql,
new Object[] { startTime, endTime });
List<HashMap<String, Object>> retinuelist = hibernateDao.queryForListWithSql(retinuevisitorSql,
new Object[] { startTime, endTime });
List<HashMap<String, Object>> userlist = hibernateDao.queryForListWithSql(nbuserSql,
new Object[] { startTime, endTime });
ArrayList<String> depList = new ArrayList<String>();
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<String, Object> usermap = new HashMap<String, Object>();
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<Map<String,Object>> queryAllDeptList = hibernateDao.queryForListWithSql(queryAllDeptSql);
for(int i=0; i<queryAllDeptList.size(); i++){
depList.add(queryAllDeptList.get(i).get("name").toString());
}
} else{
depList.add(userInfo.getDepartmentName());
}
// [{name=互联网部, total=5, ty=0}, {name=发展策划部, total=1, ty=0}, {name=后勤工作部, total=2, ty=2}]
Map<String, Object> rMap = new HashMap<String, Object>();
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<String, Object> totalmap = new HashMap<String, Object>();
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<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
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<Object> params = new ArrayList<Object>();
// 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<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
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<Object> params = new ArrayList<Object>();
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<String> getBetweenDays(String stime, String etime) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date sdate = null;
Date eDate = null;
List<String> list = null;
try {
sdate = df.parse(stime);
eDate = df.parse(etime);
Calendar c = Calendar.getInstance();
list = new ArrayList<String>();
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;
}
}