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

452 lines
17 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
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;
}
}