package cn.com.lzt.wageStats.controller; import cn.com.lzt.arrangeduty.dto.ProjectDepartDto; import cn.com.lzt.attendance.dao.AttendanceStatsMinidaoDao; import cn.com.lzt.common.entity.ChartMultLineDto; import cn.com.lzt.common.entity.ChartSeriesDto; import cn.com.lzt.common.entity.DataDto; import cn.com.lzt.common.entity.UserRoleDto; import cn.com.lzt.common.util.Constants; import cn.com.lzt.common.util.DataUtil; import cn.com.lzt.common.util.ExportExcel; import cn.com.lzt.dialogDeal.service.DialogDealServiceI; import cn.com.lzt.wageStats.dao.WageStatsMinidaoDao; import cn.com.lzt.wageStats.dto.WageDto; import cn.com.lzt.wageStats.service.WageStatsServiceI; import org.apache.log4j.Logger; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.util.JeecgDataAutorUtils; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.minidao.pojo.MiniDaoPage; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.SystemService; 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.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Validator; import java.util.*; /** * @Title: Controller * @Description: 工资统计 * @author onlineGenerator * @date 2017-10-24 16:38:50 * @version V1.0 * */ @Controller @RequestMapping("/wageStatsController") public class WageStatsController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(WageStatsController.class); //用户浏览器统计分析的国际化KEY private static final String USER_BROWSER_ANALYSIS = "user.browser.analysis"; @Autowired private WageStatsServiceI statsService; @Autowired DialogDealServiceI dialogDealServiceI; @Autowired private SystemService systemService; @Autowired private Validator validator; @Autowired private WageStatsMinidaoDao wageStatsMinidaoDao; @Autowired private AttendanceStatsMinidaoDao statsMinidaoDao; /** * 工资统计页面 * * @return */ @RequestMapping(params = "wageStats") public ModelAndView statisticTabs(HttpServletRequest request) { ModelAndView mav = new ModelAndView(); Calendar c = Calendar.getInstance(); mav.addObject("curYear",c.get(Calendar.YEAR)+""); int month = c.get(Calendar.MONTH); if(month > 9){ mav.addObject("curMonth", c.get(Calendar.MONTH)+""); }else if(month == 0){ mav.addObject("curYear",(c.get(Calendar.YEAR)-1)+""); mav.addObject("curMonth", "12"); }else{ mav.addObject("curMonth", "0"+c.get(Calendar.MONTH)); } TSUser user = (TSUser) request.getSession().getAttribute(ResourceUtil.LOCAL_CLINET_USER); //默认HR权限 String rolefalg ="1"; //查询用户角色 String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List userRolelist = statsMinidaoDao.getUserRoleList(user.getId(),authSql); for(UserRoleDto urdto : userRolelist){ if(Constants.USER_ROLE_HR.contains(urdto.getRolecode())){ rolefalg = "1"; break; } if(Constants.USER_ROLE_DEPT.contains(urdto.getRolecode())){ rolefalg = "2"; break; } } if(rolefalg.equals("2")){ List projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId(); mav.addObject("departList", projectDepartDtoList); } mav.addObject("roleFlag", rolefalg); mav.setViewName("cn/com/lzt/wagestats/wageStats"); return mav; } /** * 工资统计数据json * @param request * @param statasEntity * @return */ @RequestMapping(params="wageStatsData") @ResponseBody public Map wageStatsData(HttpServletRequest request,WageDto wageEntity) { Map result = new HashMap(); List xAxisData = new ArrayList(); List yearMonths = new ArrayList(); List statsList = new ArrayList(); //如果是月频,需要查询某年某月 if(wageEntity.getAttType() == 0){ yearMonths.add(wageEntity.getAttYear()+"-"+wageEntity.getAttMonth()); }else if(wageEntity.getAttType() == 1){ yearMonths = DataUtil.getYearMonthList(wageEntity.getAttYear(), wageEntity.getAttQuarters()); } wageEntity.setYearMonthList(yearMonths); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); MiniDaoPage list = new MiniDaoPage(); if(!StringUtil.isEmpty(wageEntity.getPid())){ list = wageStatsMinidaoDao.wageStatsPdData(wageEntity, authSql); statsList = list.getResults(); for(WageDto stats : statsList){ xAxisData.add(stats.getPidName()); } }else{ list = wageStatsMinidaoDao.wageStatsData(wageEntity, authSql); statsList = list.getResults(); for(WageDto stats : statsList){ xAxisData.add(stats.getpName()); } } ArrayList series = new ArrayList();//series值 ChartSeriesDto csdto = new ChartSeriesDto(); csdto.setName("工资支出总金额(元)"); csdto.setType("bar"); csdto.setBarMaxWidth(30); List datalist = new ArrayList(); for(int i= 0 ; i < statsList.size() ; i++){ DataDto dd = new DataDto(); if(!StringUtil.isEmpty(wageEntity.getPid())){ dd.setId(statsList.get(i).getDeptId()); }else{ dd.setId(statsList.get(i).getPid()); } dd.setValue(DataUtil.getFormatDecimailTwo(statsList.get(i).getWagePayTotal())); datalist.add(dd); } csdto.setData(datalist.toArray()); series.add(csdto); ChartMultLineDto cmlDto = new ChartMultLineDto(); cmlDto.setxAxisData(xAxisData.toArray()); cmlDto.setSeries(series); if( statsList== null || statsList.size() == 0){ cmlDto.setNoData(true); } result.put("cdata", cmlDto); result.put("tdata", statsList); request.getSession().setAttribute("wageStats", statsList); return result; } /** * 工资统计年度下钻 * @param request * @param statasEntity * @return */ @RequestMapping(params="wageYearInto") @ResponseBody public Map wageYearInto(HttpServletRequest request,WageDto wageEntity) { Map result = new HashMap(); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); MiniDaoPage list = wageStatsMinidaoDao.wageYearInfo(wageEntity, authSql); List statsList = list.getResults(); List xAxisData = DataUtil.getMonList(); ArrayList series = new ArrayList();//series值 ChartSeriesDto csdto = new ChartSeriesDto(); csdto.setName("工资支出总金额(元)"); csdto.setType("line"); csdto.setBarMaxWidth(30); List datalist = new ArrayList(); for(String s : xAxisData){ Boolean flag = false; for(int i= 0 ; i < statsList.size() ; i++){ if(statsList.get(i).getYearMonth().substring(5, 7).equals(s)){ datalist.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getWagePayTotal())); flag = true; } } if(!flag){ datalist.add(null); } } csdto.setData(datalist.toArray()); series.add(csdto); ChartMultLineDto cmlDto = new ChartMultLineDto(); cmlDto.setxAxisData(xAxisData.toArray()); cmlDto.setSeries(series); result.put("cdata", cmlDto); result.put("tdata", statsList); request.getSession().setAttribute("wageStatsDown", statsList); return result; } /** * 工资统计月度下钻 * @param request * @param statasEntity * @return */ @RequestMapping(params="wageMonthInto") @ResponseBody public Map wageMonthInto(HttpServletRequest request,WageDto wageEntity) { Map result = new HashMap(); List yearMonths = new ArrayList(); yearMonths.add(wageEntity.getAttYear()+"-"+wageEntity.getAttMonth()); wageEntity.setYearMonthList(yearMonths); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); MiniDaoPage list = wageStatsMinidaoDao.wageMonthInfo(wageEntity, authSql); List statsList = list.getResults(); List xAxisData = new ArrayList(); for(WageDto stats : statsList){ xAxisData.add(stats.getUserName()); } ArrayList series = new ArrayList();//series值 ChartSeriesDto csdto = new ChartSeriesDto(); csdto.setName("工资支出总金额(元)"); csdto.setType("bar"); csdto.setBarMaxWidth(30); List datalist = new ArrayList(); for(int i= 0 ; i < statsList.size() ; i++){ datalist.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getWagePayTotal())); } csdto.setData(datalist.toArray()); series.add(csdto); ChartMultLineDto cmlDto = new ChartMultLineDto(); cmlDto.setxAxisData(xAxisData.toArray()); cmlDto.setSeries(series); result.put("cdata", cmlDto); result.put("tdata", statsList); request.getSession().setAttribute("wageStatsDown", statsList); return result; } /** * 工资统计定时任务 * @param request * @param statasEntity * @return */ @RequestMapping(params="wageStatsTaskData") @ResponseBody public void wageStatsTaskData(HttpServletRequest request) { String attmonth = request.getParameter("attMonth"); statsService.wageStatsTaskData(attmonth); } /** * 导出 * @param exceltitles * @param request * @param response * @throws Exception */ @RequestMapping(params = "exportExcel") @ResponseBody public void exportExcel(String exceltitles,String exceltitleIds ,Integer flag,HttpServletRequest request, HttpServletResponse response) throws Exception{ if(flag == 1){ @SuppressWarnings("unchecked") List dataList = (List)request.getSession().getAttribute("wageStats"); ExportExcel ex = new ExportExcel("工资统计", exceltitles.split(","), "工资统计", dataList,exceltitleIds.split(",")); ex.export(response); }else{ @SuppressWarnings("unchecked") List dataList = (List)request.getSession().getAttribute("wageStatsDown"); ExportExcel ex = new ExportExcel("工资统计", exceltitles.split(","), "工资统计", dataList,exceltitleIds.split(",")); ex.export(response); } } }