AttendanceTempController_all.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. package cn.com.lzt.attendancetemp.controller;
  2. import cn.com.lzt.attendancetemp.dto.AttendanceTempInDto;
  3. import cn.com.lzt.attendancetemp.dto.AttendanceTempOutDto;
  4. import cn.com.lzt.attendancetemp.entity.AttendanceTempEntity;
  5. import cn.com.lzt.attendancetemp.service.AttendanceTempServiceI;
  6. import cn.com.lzt.attendancetemp.service.AttendanceTempTransactionalServiceI;
  7. import cn.com.lzt.attendancewarnmsg.service.AttendanceWarnMsgServiceI;
  8. import cn.com.lzt.dingattendanceinfo.service.dto.DingAttendanceinfoOutDto;
  9. import cn.com.lzt.leave.service.ModifyServiceI;
  10. import cn.com.lzt.personnelbasearchivesmanage.dto.DepartDto;
  11. import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI;
  12. import java.text.ParseException;
  13. import java.text.SimpleDateFormat;
  14. import java.util.ArrayList;
  15. import java.util.Arrays;
  16. import java.util.Date;
  17. import java.util.HashSet;
  18. import java.util.List;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import org.apache.log4j.Logger;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.ui.ModelMap;
  25. import org.springframework.web.bind.annotation.RequestMapping;
  26. import org.springframework.web.bind.annotation.ResponseBody;
  27. import org.springframework.web.servlet.ModelAndView;
  28. import org.jeecgframework.core.common.controller.BaseController;
  29. import org.jeecgframework.core.common.exception.BusinessException;
  30. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  31. import org.jeecgframework.core.common.model.json.AjaxJson;
  32. import org.jeecgframework.core.common.model.json.DataGrid;
  33. import org.jeecgframework.core.constant.Globals;
  34. import org.jeecgframework.core.util.JeecgDataAutorUtils;
  35. import org.jeecgframework.core.util.StringUtil;
  36. import org.jeecgframework.tag.core.easyui.TagUtil;
  37. import org.jeecgframework.web.system.service.SystemService;
  38. import org.jeecgframework.core.util.MyBeanUtils;
  39. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  40. import org.jeecgframework.poi.excel.ExcelImportUtil;
  41. import org.jeecgframework.poi.excel.entity.ExportParams;
  42. import org.jeecgframework.poi.excel.entity.ImportParams;
  43. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  44. import org.jeecgframework.core.util.ResourceUtil;
  45. import java.io.IOException;
  46. import org.springframework.web.bind.annotation.RequestMethod;
  47. import org.springframework.web.multipart.MultipartFile;
  48. import org.springframework.web.multipart.MultipartHttpServletRequest;
  49. import java.util.Map;
  50. import org.jeecgframework.core.util.ExceptionUtil;
  51. import org.springframework.http.ResponseEntity;
  52. import org.springframework.web.bind.annotation.PathVariable;
  53. import org.springframework.web.bind.annotation.RequestBody;
  54. import org.springframework.web.bind.annotation.ResponseStatus;
  55. import org.springframework.http.HttpHeaders;
  56. import org.springframework.http.HttpStatus;
  57. import org.jeecgframework.core.beanvalidator.BeanValidators;
  58. import java.util.Set;
  59. import java.util.regex.Matcher;
  60. import java.util.regex.Pattern;
  61. import javax.validation.ConstraintViolation;
  62. import javax.validation.Validator;
  63. import java.net.URI;
  64. import org.springframework.http.MediaType;
  65. import org.springframework.web.util.UriComponentsBuilder;
  66. /**
  67. * @Title: Controller
  68. * @Description: 公司考勤实时查看表
  69. * @author onlineGenerator
  70. * @date 2017-11-23 17:40:29
  71. * @version V1.0
  72. *
  73. */
  74. @Controller
  75. @RequestMapping("/attendanceTempAllController")
  76. public class AttendanceTempController_all extends BaseController {
  77. /**
  78. * Logger for this class
  79. */
  80. private static final Logger logger = Logger.getLogger(AttendanceTempController_all.class);
  81. @Autowired
  82. private AttendanceTempServiceI attendanceTempService;
  83. @Autowired
  84. private SystemService systemService;
  85. @Autowired
  86. private Validator validator;
  87. @Autowired
  88. private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService;
  89. @Autowired
  90. AttendanceTempTransactionalServiceI attendanceTempTransactionalService;
  91. @Autowired
  92. private AttendanceWarnMsgServiceI attendanceWarnMsgService;
  93. @Autowired
  94. private ModifyServiceI modifyService;
  95. /**
  96. * 考勤实时查看表列表 页面跳转
  97. *
  98. * @return
  99. */
  100. @RequestMapping(params = "list")
  101. public ModelAndView list(HttpServletRequest request) {
  102. return new ModelAndView("cn/com/lzt/attendancetemp/attendanceTempList_all");
  103. }
  104. /**
  105. * easyui AJAX请求数据
  106. *
  107. * @param request
  108. * @param response
  109. * @param dataGrid
  110. * @param user
  111. */
  112. @RequestMapping(params = "datagrid")
  113. public void datagrid(AttendanceTempInDto inDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  114. /**
  115. CriteriaQuery cq = new CriteriaQuery(AttendanceTempEntity.class, dataGrid);
  116. //查询条件组装器
  117. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, attendanceTemp, request.getParameterMap());
  118. try{
  119. //自定义追加查询条件
  120. }catch (Exception e) {
  121. throw new BusinessException(e.getMessage());
  122. }
  123. cq.add();
  124. this.attendanceTempService.getDataGridReturn(cq, true);
  125. TagUtil.datagrid(response, dataGrid);
  126. */
  127. String departIds = "";
  128. if (null != inDto.getOrgIds() && StringUtil.isNotEmpty(inDto.getOrgIds())) {
  129. departIds = inDto.getOrgIds();
  130. }
  131. // 页面的单位ID
  132. List<String> departIdByPageList = Arrays.asList(departIds.split(","));
  133. // 用于检索的单位ID
  134. List<String> departIdBySearchList = new ArrayList<String>();
  135. for(String str : departIdByPageList) {
  136. if(StringUtil.isNotEmpty(str)) {
  137. departIdBySearchList.add(str);
  138. List<DepartDto> departDtoList = personnelBaseArchivesManageService.getAllChildrenList(str, null, null);
  139. for(DepartDto departDto : departDtoList) {
  140. departIdBySearchList.add(departDto.getId());
  141. }
  142. }
  143. }
  144. // List去重复
  145. HashSet<String> h = new HashSet<String>(departIdBySearchList);
  146. departIdBySearchList.clear();
  147. departIdBySearchList.addAll(h);
  148. // 重新封装检索用的单位字符串
  149. departIds = "";
  150. for(String str : departIdBySearchList) {
  151. departIds += "'" + str + "',";
  152. }
  153. if(StringUtil.isNotEmpty(departIds)) {
  154. departIds = departIds.substring(0,departIds.length() - 1);
  155. }
  156. inDto.setOrgIds(departIds);
  157. // 获取请求对应的数据权限
  158. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  159. // 從SESSION中獲取用戶信息
  160. String sortorder = "";
  161. String sort = dataGrid.getSort(); // 排序对象
  162. String order = dataGrid.getOrder(); // 排序方式
  163. if (StringUtil.isEmpty(sort)) {
  164. sortorder = " user_code asc, attendance_date desc "; //默认userid排序
  165. } else {
  166. sortorder = humpToLine(sort) + " " + order; // 处理下划线,拼接排序
  167. }
  168. // MiniDao检索
  169. MiniDaoPage<AttendanceTempOutDto> list = attendanceTempService.getAttendanceTempList(inDto, dataGrid.getPage(), dataGrid.getRows(), authSql, sortorder);
  170. for(int i = 0; i < list.getResults().size(); i++) {
  171. // 处理日基准时间
  172. String datumStime = list.getResults().get(i).getDatumStime();
  173. String datumEtime = list.getResults().get(i).getDatumEtime();
  174. String datumTime = "";
  175. if(StringUtil.isNotEmpty(datumStime) && StringUtil.isNotEmpty(datumEtime)) {
  176. datumTime = datumStime.substring(11,16) + "~" + datumEtime.substring(11,16);
  177. }
  178. list.getResults().get(i).setDatumTime(datumTime);
  179. // 处理考勤日期
  180. list.getResults().get(i).setAttendanceDate(list.getResults().get(i).getAttendanceDate().substring(0, 10));
  181. // 处理签到时间
  182. if(StringUtil.isNotEmpty(list.getResults().get(i).getSignDate())) {
  183. list.getResults().get(i).setSignDate(list.getResults().get(i).getSignDate().substring(11, 16));
  184. }
  185. // 处理最新签到时间
  186. if(StringUtil.isNotEmpty(list.getResults().get(i).getNewestPunchcardDate())) {
  187. list.getResults().get(i).setNewestPunchcardDate(list.getResults().get(i).getNewestPunchcardDate().substring(11, 16));
  188. }
  189. // 处理考勤状态
  190. String attendanceStatus = list.getResults().get(i).getAttendanceStatus();
  191. if(StringUtil.isNotEmpty(attendanceStatus)) {
  192. List<String> attendanceStatusList = new ArrayList<String>();
  193. List<String> attendanceStatusTempList = Arrays.asList(attendanceStatus.split(","));
  194. for (String temp : attendanceStatusTempList) {
  195. if (temp.equals(Globals.ATTENDANCE_STATUS_0)) {
  196. attendanceStatusList.add("正常");
  197. }
  198. if (temp.equals(Globals.ATTENDANCE_STATUS_1)) {
  199. attendanceStatusList.add("迟到");
  200. }
  201. if (temp.equals(Globals.ATTENDANCE_STATUS_2)) {
  202. attendanceStatusList.add("早退");
  203. }
  204. if (temp.equals(Globals.ATTENDANCE_STATUS_3)) {
  205. attendanceStatusList.add("旷工");
  206. }
  207. if (temp.equals(Globals.ATTENDANCE_STATUS_4)) {
  208. attendanceStatusList.add("请假");
  209. }
  210. if (temp.equals(Globals.ATTENDANCE_STATUS_5)) {
  211. attendanceStatusList.add("漏打卡");
  212. }
  213. if (temp.equals(Globals.ATTENDANCE_STATUS_6)) {
  214. attendanceStatusList.add("未排班");
  215. }
  216. }
  217. attendanceStatus = "";
  218. for(String str : attendanceStatusList) {
  219. attendanceStatus += str + ",";
  220. }
  221. attendanceStatus = attendanceStatus.substring(0,attendanceStatus.length() - 1);
  222. list.getResults().get(i).setAttendanceStatus(attendanceStatus);
  223. } else {
  224. list.getResults().get(i).setAttendanceStatus("正常");
  225. }
  226. // 处理所属单位
  227. String orgId = list.getResults().get(i).getBelongUnitid();
  228. orgId = modifyService.getByorgId(orgId);
  229. list.getResults().get(i).setBelongUnitid(orgId);
  230. }
  231. dataGrid.setTotal(list.getTotal());
  232. dataGrid.setResults(list.getResults());
  233. TagUtil.datagrid(response, dataGrid);
  234. }
  235. @RequestMapping(params = "refresh")
  236. @ResponseBody
  237. public AjaxJson refresh(HttpServletRequest request) {
  238. String message = null;
  239. AjaxJson j = new AjaxJson();
  240. message = "刷新成功";
  241. j.setSuccess(true);
  242. // TODO 演示时暂时使用,以后要加到定时任务中后,该处要删除。
  243. attendanceTempTransactionalService.attendanceTempInit(new Date());
  244. boolean flg = attendanceTempTransactionalService.attendanceTempSynchronization(new Date());
  245. attendanceTempTransactionalService.SetAttendanceStatusAndWarning(new Date());
  246. if(!flg) {
  247. message = "刷新失败";
  248. j.setSuccess(true);
  249. }
  250. j.setMsg(message);
  251. return j;
  252. }
  253. // TODO 测试用,提交客户版本需要删除
  254. @RequestMapping(params = "refreshForTest")
  255. @ResponseBody
  256. public AjaxJson refreshForTest(AttendanceTempInDto inDto, HttpServletRequest request) {
  257. String message = null;
  258. AjaxJson j = new AjaxJson();
  259. message = "刷新成功";
  260. SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
  261. // 获取当前日期
  262. String nowDateString = inDto.getAttendanceSdate();
  263. Date nowDate = new Date();
  264. try {
  265. nowDate = dfYMD.parse(nowDateString);
  266. } catch (ParseException e) {
  267. e.printStackTrace();
  268. }
  269. attendanceTempTransactionalService.attendanceTempInit(nowDate);
  270. boolean flg = attendanceTempTransactionalService.attendanceTempSynchronization(nowDate);
  271. attendanceTempTransactionalService.SetAttendanceStatusAndWarning(nowDate);
  272. if(!flg) {
  273. message = "刷新失败";
  274. }
  275. j.setMsg(message);
  276. return j;
  277. }
  278. // TODO 测试用,提交客户版本需要删除
  279. @RequestMapping(params = "refreshwarnmsg")
  280. @ResponseBody
  281. public AjaxJson refreshwarnmsg(AttendanceTempInDto inDto, HttpServletRequest request) {
  282. String message = null;
  283. AjaxJson j = new AjaxJson();
  284. message = "刷新成功";
  285. // 获取当前日期
  286. String nowDateString = inDto.getAttendanceSdate();
  287. try {
  288. attendanceWarnMsgService.updateAttendanceWarnMsgBytasker(nowDateString);
  289. } catch (ParseException e) {
  290. e.printStackTrace();
  291. message = "刷新失败";
  292. } catch (Exception e) {
  293. // TODO Auto-generated catch block
  294. e.printStackTrace();
  295. message = "刷新失败";
  296. }
  297. j.setMsg(message);
  298. return j;
  299. }
  300. /**
  301. * 驼峰转下划线
  302. *
  303. * @param str需要转换的字符串
  304. * @return
  305. */
  306. private String humpToLine(String str) {
  307. Pattern humpPattern = Pattern.compile("[A-Z]");
  308. Matcher matcher = humpPattern.matcher(str);
  309. StringBuffer sb = new StringBuffer();
  310. while (matcher.find()) {
  311. matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
  312. }
  313. matcher.appendTail(sb);
  314. return sb.toString();
  315. }
  316. /**
  317. * 删除考勤实时查看表
  318. *
  319. * @return
  320. */
  321. @RequestMapping(params = "doDel")
  322. @ResponseBody
  323. public AjaxJson doDel(AttendanceTempEntity attendanceTemp, HttpServletRequest request) {
  324. String message = null;
  325. AjaxJson j = new AjaxJson();
  326. attendanceTemp = systemService.getEntity(AttendanceTempEntity.class, attendanceTemp.getId());
  327. message = "考勤实时查看表删除成功";
  328. try{
  329. attendanceTempService.delete(attendanceTemp);
  330. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  331. }catch(Exception e){
  332. e.printStackTrace();
  333. message = "考勤实时查看表删除失败";
  334. throw new BusinessException(e.getMessage());
  335. }
  336. j.setMsg(message);
  337. return j;
  338. }
  339. /**
  340. * 批量删除考勤实时查看表
  341. *
  342. * @return
  343. */
  344. @RequestMapping(params = "doBatchDel")
  345. @ResponseBody
  346. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  347. String message = null;
  348. AjaxJson j = new AjaxJson();
  349. message = "考勤实时查看表删除成功";
  350. try{
  351. for(String id:ids.split(",")){
  352. AttendanceTempEntity attendanceTemp = systemService.getEntity(AttendanceTempEntity.class,
  353. id
  354. );
  355. attendanceTempService.delete(attendanceTemp);
  356. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  357. }
  358. }catch(Exception e){
  359. e.printStackTrace();
  360. message = "考勤实时查看表删除失败";
  361. throw new BusinessException(e.getMessage());
  362. }
  363. j.setMsg(message);
  364. return j;
  365. }
  366. /**
  367. * 添加考勤实时查看表
  368. *
  369. * @param ids
  370. * @return
  371. */
  372. @RequestMapping(params = "doAdd")
  373. @ResponseBody
  374. public AjaxJson doAdd(AttendanceTempEntity attendanceTemp, HttpServletRequest request) {
  375. String message = null;
  376. AjaxJson j = new AjaxJson();
  377. message = "考勤实时查看表添加成功";
  378. try{
  379. attendanceTempService.save(attendanceTemp);
  380. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  381. }catch(Exception e){
  382. e.printStackTrace();
  383. message = "考勤实时查看表添加失败";
  384. throw new BusinessException(e.getMessage());
  385. }
  386. j.setMsg(message);
  387. return j;
  388. }
  389. /**
  390. * 更新考勤实时查看表
  391. *
  392. * @param ids
  393. * @return
  394. */
  395. @RequestMapping(params = "doUpdate")
  396. @ResponseBody
  397. public AjaxJson doUpdate(AttendanceTempEntity attendanceTemp, HttpServletRequest request) {
  398. String message = null;
  399. AjaxJson j = new AjaxJson();
  400. message = "考勤实时查看表更新成功";
  401. AttendanceTempEntity t = attendanceTempService.get(AttendanceTempEntity.class, attendanceTemp.getId());
  402. try {
  403. MyBeanUtils.copyBeanNotNull2Bean(attendanceTemp, t);
  404. attendanceTempService.saveOrUpdate(t);
  405. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  406. } catch (Exception e) {
  407. e.printStackTrace();
  408. message = "考勤实时查看表更新失败";
  409. throw new BusinessException(e.getMessage());
  410. }
  411. j.setMsg(message);
  412. return j;
  413. }
  414. /**
  415. * 考勤实时查看表新增页面跳转
  416. *
  417. * @return
  418. */
  419. @RequestMapping(params = "goAdd")
  420. public ModelAndView goAdd(AttendanceTempEntity attendanceTemp, HttpServletRequest req) {
  421. if (StringUtil.isNotEmpty(attendanceTemp.getId())) {
  422. attendanceTemp = attendanceTempService.getEntity(AttendanceTempEntity.class, attendanceTemp.getId());
  423. req.setAttribute("attendanceTempPage", attendanceTemp);
  424. }
  425. return new ModelAndView("cn/com/lzt/attendancetemp/attendanceTemp-add");
  426. }
  427. /**
  428. * 考勤实时查看表编辑页面跳转
  429. *
  430. * @return
  431. */
  432. @RequestMapping(params = "goUpdate")
  433. public ModelAndView goUpdate(AttendanceTempEntity attendanceTemp, HttpServletRequest req) {
  434. if (StringUtil.isNotEmpty(attendanceTemp.getId())) {
  435. attendanceTemp = attendanceTempService.getEntity(AttendanceTempEntity.class, attendanceTemp.getId());
  436. req.setAttribute("attendanceTempPage", attendanceTemp);
  437. }
  438. return new ModelAndView("cn/com/lzt/attendancetemp/attendanceTemp-update");
  439. }
  440. /**
  441. * 导入功能跳转
  442. *
  443. * @return
  444. */
  445. @RequestMapping(params = "upload")
  446. public ModelAndView upload(HttpServletRequest req) {
  447. req.setAttribute("controller_name","attendanceTempController");
  448. return new ModelAndView("common/upload/pub_excel_upload");
  449. }
  450. /**
  451. * 导出excel
  452. *
  453. * @param request
  454. * @param response
  455. */
  456. @RequestMapping(params = "exportXls")
  457. public String exportXls(AttendanceTempInDto inDto,HttpServletRequest request,HttpServletResponse response
  458. , DataGrid dataGrid,ModelMap modelMap) {
  459. /**
  460. CriteriaQuery cq = new CriteriaQuery(AttendanceTempEntity.class, dataGrid);
  461. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, attendanceTemp, request.getParameterMap());
  462. List<AttendanceTempEntity> attendanceTemps = this.attendanceTempService.getListByCriteriaQuery(cq,false);
  463. modelMap.put(NormalExcelConstants.FILE_NAME,"考勤实时查看表");
  464. modelMap.put(NormalExcelConstants.CLASS,AttendanceTempEntity.class);
  465. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("考勤实时查看表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  466. "导出信息"));
  467. modelMap.put(NormalExcelConstants.DATA_LIST,attendanceTemps);
  468. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  469. */
  470. String departIds = "";
  471. if (null != inDto.getOrgIds() && StringUtil.isNotEmpty(inDto.getOrgIds())) {
  472. departIds = inDto.getOrgIds();
  473. }
  474. // 页面的单位ID
  475. List<String> departIdByPageList = Arrays.asList(departIds.split(","));
  476. // 用于检索的单位ID
  477. List<String> departIdBySearchList = new ArrayList<String>();
  478. for(String str : departIdByPageList) {
  479. if(StringUtil.isNotEmpty(str)) {
  480. departIdBySearchList.add(str);
  481. List<DepartDto> departDtoList = personnelBaseArchivesManageService.getAllChildrenList(str, null, null);
  482. for(DepartDto departDto : departDtoList) {
  483. departIdBySearchList.add(departDto.getId());
  484. }
  485. }
  486. }
  487. // List去重复
  488. HashSet<String> h = new HashSet<String>(departIdBySearchList);
  489. departIdBySearchList.clear();
  490. departIdBySearchList.addAll(h);
  491. // 重新封装检索用的单位字符串
  492. departIds = "";
  493. for(String str : departIdBySearchList) {
  494. departIds += "'" + str + "',";
  495. }
  496. if(StringUtil.isNotEmpty(departIds)) {
  497. departIds = departIds.substring(0,departIds.length() - 1);
  498. }
  499. inDto.setOrgIds(departIds);
  500. // 获取请求对应的数据权限
  501. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  502. // 從SESSION中獲取用戶信息
  503. String sortorder = "";
  504. String sort = dataGrid.getSort(); // 排序对象
  505. String order = dataGrid.getOrder(); // 排序方式
  506. if (StringUtil.isEmpty(sort)) {
  507. sortorder = " user_code asc, attendance_date desc "; //默认userid排序
  508. } else {
  509. sortorder = humpToLine(sort) + " " + order; // 处理下划线,拼接排序
  510. }
  511. // MiniDao检索
  512. MiniDaoPage<AttendanceTempOutDto> list = attendanceTempService.getAttendanceTempList(inDto, dataGrid.getPage(), dataGrid.getRows(), authSql, sortorder);
  513. for(int i = 0; i < list.getResults().size(); i++) {
  514. // 处理日基准时间
  515. String datumStime = list.getResults().get(i).getDatumStime();
  516. String datumEtime = list.getResults().get(i).getDatumEtime();
  517. String datumTime = "";
  518. if(StringUtil.isNotEmpty(datumStime) && StringUtil.isNotEmpty(datumEtime)) {
  519. datumTime = datumStime.substring(11,16) + "~" + datumEtime.substring(11,16);
  520. }
  521. list.getResults().get(i).setDatumTime(datumTime);
  522. // 处理考勤日期
  523. list.getResults().get(i).setAttendanceDate(list.getResults().get(i).getAttendanceDate().substring(0, 10));
  524. // 处理签到时间
  525. if(StringUtil.isNotEmpty(list.getResults().get(i).getSignDate())) {
  526. list.getResults().get(i).setSignDate(list.getResults().get(i).getSignDate().substring(11, 16));
  527. }
  528. // 处理最新签到时间
  529. if(StringUtil.isNotEmpty(list.getResults().get(i).getNewestPunchcardDate())) {
  530. list.getResults().get(i).setNewestPunchcardDate(list.getResults().get(i).getNewestPunchcardDate().substring(11, 16));
  531. }
  532. // 处理考勤状态
  533. String attendanceStatus = list.getResults().get(i).getAttendanceStatus();
  534. if(StringUtil.isNotEmpty(attendanceStatus)) {
  535. List<String> attendanceStatusList = new ArrayList<String>();
  536. List<String> attendanceStatusTempList = Arrays.asList(attendanceStatus.split(","));
  537. for (String temp : attendanceStatusTempList) {
  538. if (temp.equals(Globals.ATTENDANCE_STATUS_0)) {
  539. attendanceStatusList.add("正常");
  540. }
  541. if (temp.equals(Globals.ATTENDANCE_STATUS_1)) {
  542. attendanceStatusList.add("迟到");
  543. }
  544. if (temp.equals(Globals.ATTENDANCE_STATUS_2)) {
  545. attendanceStatusList.add("早退");
  546. }
  547. if (temp.equals(Globals.ATTENDANCE_STATUS_3)) {
  548. attendanceStatusList.add("旷工");
  549. }
  550. if (temp.equals(Globals.ATTENDANCE_STATUS_4)) {
  551. attendanceStatusList.add("请假");
  552. }
  553. if (temp.equals(Globals.ATTENDANCE_STATUS_5)) {
  554. attendanceStatusList.add("漏打卡");
  555. }
  556. if (temp.equals(Globals.ATTENDANCE_STATUS_6)) {
  557. attendanceStatusList.add("未排班");
  558. }
  559. }
  560. attendanceStatus = "";
  561. for(String str : attendanceStatusList) {
  562. attendanceStatus += str + ",";
  563. }
  564. attendanceStatus = attendanceStatus.substring(0,attendanceStatus.length() - 1);
  565. list.getResults().get(i).setAttendanceStatus(attendanceStatus);
  566. } else {
  567. list.getResults().get(i).setAttendanceStatus("正常");
  568. }
  569. }
  570. List<AttendanceTempOutDto> attendanceTempInfos = list.getResults();
  571. modelMap.put(NormalExcelConstants.FILE_NAME,"考勤信息实时查看");
  572. modelMap.put(NormalExcelConstants.CLASS,AttendanceTempOutDto.class);
  573. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("考勤信息实时查看", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  574. "考勤信息实时查看"));
  575. modelMap.put(NormalExcelConstants.DATA_LIST,attendanceTempInfos);
  576. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  577. }
  578. /**
  579. * 导出excel 使模板
  580. *
  581. * @param request
  582. * @param response
  583. */
  584. @RequestMapping(params = "exportXlsByT")
  585. public String exportXlsByT(AttendanceTempEntity attendanceTemp,HttpServletRequest request,HttpServletResponse response
  586. , DataGrid dataGrid,ModelMap modelMap) {
  587. modelMap.put(NormalExcelConstants.FILE_NAME,"考勤实时查看表");
  588. modelMap.put(NormalExcelConstants.CLASS,AttendanceTempEntity.class);
  589. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("考勤实时查看表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  590. "导出信息"));
  591. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  592. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  593. }
  594. @SuppressWarnings("unchecked")
  595. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  596. @ResponseBody
  597. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  598. AjaxJson j = new AjaxJson();
  599. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  600. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  601. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  602. MultipartFile file = entity.getValue();// 获取上传文件对象
  603. ImportParams params = new ImportParams();
  604. params.setTitleRows(2);
  605. params.setHeadRows(1);
  606. params.setNeedSave(true);
  607. try {
  608. List<AttendanceTempEntity> listAttendanceTempEntitys = ExcelImportUtil.importExcel(file.getInputStream(),AttendanceTempEntity.class,params);
  609. for (AttendanceTempEntity attendanceTemp : listAttendanceTempEntitys) {
  610. attendanceTempService.save(attendanceTemp);
  611. }
  612. j.setMsg("文件导入成功!");
  613. } catch (Exception e) {
  614. j.setMsg("文件导入失败!");
  615. logger.error(ExceptionUtil.getExceptionMessage(e));
  616. }finally{
  617. try {
  618. file.getInputStream().close();
  619. } catch (IOException e) {
  620. e.printStackTrace();
  621. }
  622. }
  623. }
  624. return j;
  625. }
  626. @RequestMapping(method = RequestMethod.GET)
  627. @ResponseBody
  628. public List<AttendanceTempEntity> list() {
  629. List<AttendanceTempEntity> listAttendanceTemps=attendanceTempService.getList(AttendanceTempEntity.class);
  630. return listAttendanceTemps;
  631. }
  632. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  633. @ResponseBody
  634. public ResponseEntity<?> get(@PathVariable("id") String id) {
  635. AttendanceTempEntity task = attendanceTempService.get(AttendanceTempEntity.class, id);
  636. if (task == null) {
  637. return new ResponseEntity(HttpStatus.NOT_FOUND);
  638. }
  639. return new ResponseEntity(task, HttpStatus.OK);
  640. }
  641. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  642. @ResponseBody
  643. public ResponseEntity<?> create(@RequestBody AttendanceTempEntity attendanceTemp, UriComponentsBuilder uriBuilder) {
  644. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  645. Set<ConstraintViolation<AttendanceTempEntity>> failures = validator.validate(attendanceTemp);
  646. if (!failures.isEmpty()) {
  647. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  648. }
  649. //保存
  650. try{
  651. attendanceTempService.save(attendanceTemp);
  652. } catch (Exception e) {
  653. e.printStackTrace();
  654. return new ResponseEntity(HttpStatus.NO_CONTENT);
  655. }
  656. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  657. String id = attendanceTemp.getId();
  658. URI uri = uriBuilder.path("/rest/attendanceTempController/" + id).build().toUri();
  659. HttpHeaders headers = new HttpHeaders();
  660. headers.setLocation(uri);
  661. return new ResponseEntity(headers, HttpStatus.CREATED);
  662. }
  663. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  664. public ResponseEntity<?> update(@RequestBody AttendanceTempEntity attendanceTemp) {
  665. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  666. Set<ConstraintViolation<AttendanceTempEntity>> failures = validator.validate(attendanceTemp);
  667. if (!failures.isEmpty()) {
  668. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  669. }
  670. //保存
  671. try{
  672. attendanceTempService.saveOrUpdate(attendanceTemp);
  673. } catch (Exception e) {
  674. e.printStackTrace();
  675. return new ResponseEntity(HttpStatus.NO_CONTENT);
  676. }
  677. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  678. return new ResponseEntity(HttpStatus.NO_CONTENT);
  679. }
  680. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  681. @ResponseStatus(HttpStatus.NO_CONTENT)
  682. public void delete(@PathVariable("id") String id) {
  683. attendanceTempService.deleteEntityById(AttendanceTempEntity.class, id);
  684. }
  685. }