| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- package cn.com.lzt.overtimestats.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.overtimestats.dao.OvertimeStatsMinidaoDao;
- import cn.com.lzt.overtimestats.dto.OvertimeDto;
- import cn.com.lzt.overtimestats.service.OvertimeStatsServiceI;
- 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("/overtimeStatsController")
- public class OvertimeStatsController extends BaseController {
- /**
- * Logger for this class
- */
- private static final Logger logger = Logger.getLogger(OvertimeStatsController.class);
- //用户浏览器统计分析的国际化KEY
- private static final String USER_BROWSER_ANALYSIS = "user.browser.analysis";
-
-
- @Autowired
- private OvertimeStatsServiceI statsService;
- @Autowired
- DialogDealServiceI dialogDealServiceI;
- @Autowired
- private SystemService systemService;
- @Autowired
- private Validator validator;
-
- @Autowired
- private OvertimeStatsMinidaoDao overtimeStatsMinidaoDao;
- @Autowired
- private AttendanceStatsMinidaoDao statsMinidaoDao;
- /**
- * 加班统计页面
- *
- * @return
- */
- @RequestMapping(params = "overtimeStats")
- 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<UserRoleDto> 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<ProjectDepartDto> projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId();
- mav.addObject("departList", projectDepartDtoList);
- }
- mav.addObject("roleFlag", rolefalg);
- mav.setViewName("cn/com/lzt/overtimestats/overtimeStats");
- return mav;
- }
-
-
- /**
- * 加班统计数据json
- * @param request
- * @param statasEntity
- * @return
- */
- @RequestMapping(params="overtimeStatsData")
- @ResponseBody
- public Map<String,Object> overtimeStatsData(HttpServletRequest request,OvertimeDto overtimeEntity) {
- Map<String,Object> result = new HashMap<String,Object>();
- List<String> xAxisData = new ArrayList<String>();
- List<String> yearMonths = new ArrayList<String>();
- List<OvertimeDto> statsList = new ArrayList<OvertimeDto>();
- //如果是月频,需要查询某年某月
- if(overtimeEntity.getAttType() == 0){
- yearMonths.add(overtimeEntity.getAttYear()+"-"+overtimeEntity.getAttMonth());
- }else if(overtimeEntity.getAttType() == 1){
- yearMonths = DataUtil.getYearMonthList(overtimeEntity.getAttYear(), overtimeEntity.getAttQuarters());
- }
- overtimeEntity.setYearMonthList(yearMonths);
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- MiniDaoPage<OvertimeDto> list = new MiniDaoPage<OvertimeDto>();
- if(!StringUtil.isEmpty(overtimeEntity.getPid())){
- list = overtimeStatsMinidaoDao.overtimeStatsPdData(overtimeEntity, authSql);
- statsList = list.getResults();
- for(OvertimeDto stats : statsList){
- xAxisData.add(stats.getPidName());
- }
-
- }else{
- list = overtimeStatsMinidaoDao.overtimeStatsData(overtimeEntity, authSql);
- statsList = list.getResults();
- for(OvertimeDto stats : statsList){
- xAxisData.add(stats.getpName());
- }
-
- }
- ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
- ChartSeriesDto csdto = new ChartSeriesDto();
- csdto.setName("加班工时(H)");
- csdto.setType("bar");
- csdto.setBarMaxWidth(30);
- ChartSeriesDto csdto1 = new ChartSeriesDto();
- csdto1.setName("加班费用(元)");
- csdto1.setType("line");
- csdto1.setyAxisIndex(1);
- List<DataDto> datalist = new ArrayList<DataDto>();
- List<String> datalist1 = new ArrayList<String>();
- for(int i= 0 ; i < statsList.size() ; i++){
- DataDto dd = new DataDto();
- if(!StringUtil.isEmpty(overtimeEntity.getPid())){
- dd.setId(statsList.get(i).getDeptId());
- }else{
- dd.setId(statsList.get(i).getPid());
- }
- dd.setValue(DataUtil.getFormatDecimailTwo(statsList.get(i).getOvertimeDuration()));
- datalist.add(dd);
- datalist1.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getOvertimeFee()));
- }
- csdto.setData(datalist.toArray());
- csdto1.setData(datalist1.toArray());
- series.add(csdto);
- series.add(csdto1);
- 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("overtimeStats", statsList);
- return result;
- }
- /**
- * 加班统计年度下钻
- * @param request
- * @param statasEntity
- * @return
- */
- @RequestMapping(params="overtimeYearInto")
- @ResponseBody
- public Map<String,Object> overtimeYearInto(HttpServletRequest request,OvertimeDto overtimeEntity) {
- Map<String,Object> result = new HashMap<String,Object>();
-
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- MiniDaoPage<OvertimeDto> list = overtimeStatsMinidaoDao.overtimeYearInfo(overtimeEntity, authSql);
- List<OvertimeDto> statsList = list.getResults();
-
- List<String> xAxisData = DataUtil.getMonList();
-
- ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
- ChartSeriesDto csdto = new ChartSeriesDto();
- csdto.setName("加班工时(H)");
- csdto.setType("line");
- ChartSeriesDto csdto1 = new ChartSeriesDto();
- csdto1.setName("加班费用(元)");
- csdto1.setType("line");
- csdto1.setyAxisIndex(1);
- List<String> datalist = new ArrayList<String>();
- List<String> datalist1 = new ArrayList<String>();
- 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).getOvertimeDuration()));
- datalist1.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getOvertimeFee()));
- flag = true;
- }
- }
- if(!flag){
- datalist.add(null);
- datalist1.add(null);
- }
- }
- csdto.setData(datalist.toArray());
- csdto1.setData(datalist1.toArray());
- series.add(csdto);
- series.add(csdto1);
- ChartMultLineDto cmlDto = new ChartMultLineDto();
- cmlDto.setxAxisData(xAxisData.toArray());
- cmlDto.setSeries(series);
- result.put("cdata", cmlDto);
- result.put("tdata", statsList);
- request.getSession().setAttribute("overtimeStatsDown", statsList);
- return result;
- }
- /**
- * 加班统计月度下钻
- * @param request
- * @param statasEntity
- * @return
- */
- @RequestMapping(params="overtimeMonthInto")
- @ResponseBody
- public Map<String,Object> wageMonthInto(HttpServletRequest request,OvertimeDto overtimeEntity) {
- Map<String,Object> result = new HashMap<String,Object>();
- List<String> yearMonths = new ArrayList<String>();
- yearMonths.add(overtimeEntity.getAttYear()+"-"+overtimeEntity.getAttMonth());
- overtimeEntity.setYearMonthList(yearMonths);
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- MiniDaoPage<OvertimeDto> list = overtimeStatsMinidaoDao.overtimeMonthInfo(overtimeEntity, authSql);
- List<OvertimeDto> statsList = list.getResults();
-
- List<String> xAxisData = new ArrayList<String>();
- for(OvertimeDto stats : statsList){
- xAxisData.add(stats.getUserName());
- }
-
- ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
- ChartSeriesDto csdto = new ChartSeriesDto();
- csdto.setName("加班工时(H)");
- csdto.setType("bar");
- csdto.setBarWidth(30);
- ChartSeriesDto csdto1 = new ChartSeriesDto();
- csdto1.setName("加班费用(元)");
- csdto1.setType("line");
- csdto1.setyAxisIndex(1);
- List<String> datalist = new ArrayList<String>();
- List<String> datalist1 = new ArrayList<String>();
- for(int i= 0 ; i < statsList.size() ; i++){
- datalist.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getOvertimeDuration()));
- datalist1.add(DataUtil.getFormatDecimailTwo(statsList.get(i).getOvertimeFee()));
- }
- csdto.setData(datalist.toArray());
- csdto1.setData(datalist1.toArray());
- series.add(csdto);
- series.add(csdto1);
- ChartMultLineDto cmlDto = new ChartMultLineDto();
- cmlDto.setxAxisData(xAxisData.toArray());
- cmlDto.setSeries(series);
- result.put("cdata", cmlDto);
- result.put("tdata", statsList);
- request.getSession().setAttribute("overtimeStatsDown", statsList);
- return result;
- }
-
- /**
- * 加班统计
- * @param request
- * @param statasEntity
- * @return
- */
- @RequestMapping(params="overtimeStatsTaskData")
- @ResponseBody
- public void overtimeStatsTaskData(HttpServletRequest request) {
- String attmonth = request.getParameter("attMonth");
- statsService.overtimeStatsTaskData(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<Object> dataList = (List<Object>)request.getSession().getAttribute("overtimeStats");
- ExportExcel ex = new ExportExcel("加班统计", exceltitles.split(","), "加班统计", dataList,exceltitleIds.split(","));
- ex.export(response);
- }else{
- @SuppressWarnings("unchecked")
- List<Object> dataList = (List<Object>)request.getSession().getAttribute("overtimeStatsDown");
- ExportExcel ex = new ExportExcel("加班统计", exceltitles.split(","), "加班统计", dataList,exceltitleIds.split(","));
- ex.export(response);
- }
-
- }
-
- }
|