package cn.com.lzt.userclock.controller;
import cn.afterturn.easypoi.entity.vo.NormalExcelConstants;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.com.lzt.post.entity.PostEntity;
import cn.com.lzt.post.service.PostServiceI;
import cn.com.lzt.userclock.service.UserClockService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.daju.common.util.DataPage;
import com.daju.mix.dao.entity.TBusAttendanceTotal;
import com.daju.mix.dao.mapper.TBusAttendanceTotalMapper;
import com.daju.mix.dao.service.ITBusAttendanceTotalService;
import com.daju.mix.dto.TBUserClockDto;
import org.apache.commons.lang.xwork.StringUtils;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.service.DepartServiceI;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 考勤月统计 前端控制器
*
*
* @author rex
* @since 2021-08-23
*/
@Controller
@RequestMapping("/busAttendanceTotalController")
public class TBusAttendanceTotalController {
@Resource
private ITBusAttendanceTotalService itBusAttendanceTotalService;
@Resource
private PostServiceI postServiceI;
@Resource
private DepartServiceI departServiceI;
@Resource
private UserClockService userClockService;
@Resource
private TBusAttendanceTotalMapper tBusAttendanceTotalMapper;
@RequestMapping(params = "list")
public ModelAndView list() {
return new ModelAndView("cn/com/lzt/user/busAttendanceTotal/busAttendanceTotal-list");
}
@RequestMapping(params = "datagrid")
public void datagrid(TBusAttendanceTotal tBusAttendanceTotal,
HttpServletRequest request, HttpServletResponse response,
DataGrid dataGrid) {
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(tBusAttendanceTotal.getUserCode())){
lambdaQueryWrapper.like(TBusAttendanceTotal::getUserCode, tBusAttendanceTotal.getUserCode());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getRealname())){
lambdaQueryWrapper.like(TBusAttendanceTotal::getRealname, tBusAttendanceTotal.getRealname());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getTMonth())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getTMonth, tBusAttendanceTotal.getTMonth());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getDepart())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getDepart, tBusAttendanceTotal.getDepart());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getPost())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getPost, tBusAttendanceTotal.getPost());
}
Page result = itBusAttendanceTotalService.page(new Page<>(dataGrid.getPage(), dataGrid.getRows()), lambdaQueryWrapper);
TagUtil.datagrid(response, dataGrid, result);
}
@RequestMapping(params = "exportXls")
public String exportXlsByT(TBusAttendanceTotal tBusAttendanceTotal,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid, ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME, "考勤统计");
modelMap.put(NormalExcelConstants.CLASS, TBusAttendanceTotal.class);
modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("考勤统计", "导出人:" + ResourceUtil.getSessionUser().getRealName(),
"导出信息"));
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(tBusAttendanceTotal.getUserCode())){
lambdaQueryWrapper.like(TBusAttendanceTotal::getUserCode, tBusAttendanceTotal.getUserCode());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getRealname())){
lambdaQueryWrapper.like(TBusAttendanceTotal::getRealname, tBusAttendanceTotal.getRealname());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getTMonth())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getTMonth, tBusAttendanceTotal.getTMonth());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getDepart())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getDepart, tBusAttendanceTotal.getDepart());
}
if (StringUtils.isNotBlank(tBusAttendanceTotal.getPost())){
lambdaQueryWrapper.eq(TBusAttendanceTotal::getPost, tBusAttendanceTotal.getPost());
}
Page result = itBusAttendanceTotalService.page(new Page<>(dataGrid.getPage(), dataGrid.getRows()), lambdaQueryWrapper);
List list1 = result.getRecords();
List postEntities = postServiceI.loadAll(PostEntity.class);
Map postMap = postEntities.stream().collect(Collectors.toMap(PostEntity::getId, PostEntity::getPostName));
List tsDeparts = departServiceI.loadAll(TSDepart.class);
Map departMap = new HashMap<>();
if(tsDeparts != null && tsDeparts.size() > 0){
for (TSDepart item:tsDeparts){
departMap.put(item.getId(),item.getGlcName());
}
}
list1.forEach(item -> {
if(item.getTMonth() != null){
item.setTMonth(item.getTMonth());
}
if(item.getPost() != null){
item.setPost(postMap.get(item.getPost()));
}
if(item.getDepart() != null){
item.setDepart(departMap.get(item.getDepart()));
}
});
modelMap.put(NormalExcelConstants.DATA_LIST, list1);
return NormalExcelConstants.EASYPOI_EXCEL_VIEW;
}
@RequestMapping(params = "detail")
public ModelAndView detail() {
return new ModelAndView("cn/com/lzt/user/busAttendanceTotal/busAttendancetoal-detail");
}
@RequestMapping(params = "datagrid1")
public void datagrid1(TBusAttendanceTotal tBusAttendanceTotal,
HttpServletRequest request, HttpServletResponse response,
DataGrid dataGrid) throws Exception {
List tbUserClockDtos = userClockService.listOrderByUserIdAndTime(null, null);
DataPage dataPage=new DataPage();
dataPage.setList(null);
TagUtil.datagrid(response, dataGrid, dataPage);
}
}