UserAttendanceTotalController.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. package cn.com.lzt.userattendancetotal.controller;
  2. import java.io.IOException;
  3. import java.math.BigDecimal;
  4. import java.net.URI;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7. import java.util.Collections;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Set;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import javax.servlet.http.HttpSession;
  15. import javax.validation.ConstraintViolation;
  16. import javax.validation.Validator;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.apache.log4j.Logger;
  19. import org.jeecgframework.core.beanvalidator.BeanValidators;
  20. import org.jeecgframework.core.common.controller.BaseController;
  21. import org.jeecgframework.core.common.exception.BusinessException;
  22. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  23. import org.jeecgframework.core.common.model.json.AjaxJson;
  24. import org.jeecgframework.core.common.model.json.DataGrid;
  25. import org.jeecgframework.core.common.service.CommonService;
  26. import org.jeecgframework.core.constant.Globals;
  27. import org.jeecgframework.core.util.ContextHolderUtils;
  28. import org.jeecgframework.core.util.DataUtils;
  29. import org.jeecgframework.core.util.ExceptionUtil;
  30. import org.jeecgframework.core.util.JeecgDataAutorUtils;
  31. import org.jeecgframework.core.util.MyBeanUtils;
  32. import org.jeecgframework.core.util.ResourceUtil;
  33. import org.jeecgframework.core.util.StringUtil;
  34. import org.jeecgframework.core.util.oConvertUtils;
  35. import org.jeecgframework.poi.excel.ExcelImportUtil;
  36. import org.jeecgframework.poi.excel.entity.ExportParams;
  37. import org.jeecgframework.poi.excel.entity.ImportParams;
  38. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  39. import org.jeecgframework.tag.core.easyui.TagUtil;
  40. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  41. import org.jeecgframework.web.system.pojo.base.TSDepart;
  42. import org.jeecgframework.web.system.pojo.base.TSUser;
  43. import org.jeecgframework.web.system.service.DepartServiceI;
  44. import org.jeecgframework.web.system.service.SystemService;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.http.HttpHeaders;
  47. import org.springframework.http.HttpStatus;
  48. import org.springframework.http.MediaType;
  49. import org.springframework.http.ResponseEntity;
  50. import org.springframework.stereotype.Controller;
  51. import org.springframework.ui.ModelMap;
  52. import org.springframework.web.bind.annotation.PathVariable;
  53. import org.springframework.web.bind.annotation.RequestBody;
  54. import org.springframework.web.bind.annotation.RequestMapping;
  55. import org.springframework.web.bind.annotation.RequestMethod;
  56. import org.springframework.web.bind.annotation.ResponseBody;
  57. import org.springframework.web.bind.annotation.ResponseStatus;
  58. import org.springframework.web.multipart.MultipartFile;
  59. import org.springframework.web.multipart.MultipartHttpServletRequest;
  60. import org.springframework.web.servlet.ModelAndView;
  61. import org.springframework.web.util.UriComponentsBuilder;
  62. import com.alibaba.fastjson.JSONObject;
  63. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  64. import cn.com.lzt.arrangedutyoperate.service.ArrangeDutyOperateServiceI;
  65. import cn.com.lzt.attendancewarnmsg.service.AttendanceWarnMsgServiceI;
  66. import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI;
  67. import cn.com.lzt.userattendancedetail.service.UserAttendanceDetailServiceI;
  68. import cn.com.lzt.userattendancetotal.dto.UserAttendanceTotalExcelEntity;
  69. import cn.com.lzt.userattendancetotal.entity.UserAttendanceTotalEntity;
  70. import cn.com.lzt.userattendancetotal.service.UserAttendanceTotalServiceI;
  71. import cn.com.lzt.useroptions.entity.TBusUserOptionsEntity;
  72. import cn.com.lzt.useroptions.service.TBusUserOptionsServiceI;
  73. import cn.com.lzt.userwage.dao.UserWageMinidaoDao;
  74. import cn.com.lzt.userwagestrategy.entity.UserWagestrategyEntity;
  75. /**
  76. * @Title: Controller
  77. * @Description: 员工考勤合计表
  78. * @author onlineGenerator
  79. * @date 2017-11-11 14:37:39
  80. * @version V1.0
  81. *
  82. */
  83. @Controller
  84. @RequestMapping("/userAttendanceTotalController")
  85. public class UserAttendanceTotalController extends BaseController {
  86. /**
  87. * Logger for this class
  88. */
  89. private static final Logger logger = Logger.getLogger(UserAttendanceTotalController.class);
  90. @Autowired
  91. private UserAttendanceTotalServiceI userAttendanceTotalService;
  92. @Autowired
  93. private AttendanceWarnMsgServiceI attendanceWarnMsgService;
  94. @Autowired
  95. private UserAttendanceDetailServiceI userAttendanceDetailService;
  96. @Autowired
  97. private SystemService systemService;
  98. @Autowired
  99. private Validator validator;
  100. @Autowired
  101. private TBusUserOptionsServiceI userOptionsService;
  102. //排班操作表
  103. @Autowired
  104. UserDepartOrgDealServiceI userDepartOrgDealServiceI;
  105. @Autowired
  106. UserWageMinidaoDao userWageMinidaoDao;
  107. /**
  108. * 班次员工选择
  109. * 轮流值班
  110. * 员工表列表 页面跳转
  111. *
  112. * @return
  113. */
  114. @RequestMapping(params = "personnelBaseArchivesManageSelectList")
  115. public ModelAndView personnelBaseArchivesManageSelectList(HttpServletRequest request) {
  116. request.setAttribute("pid", request.getParameter("pid"));
  117. request.setAttribute("yearmonth", request.getParameter("yearmonth"));
  118. return new ModelAndView("cn/com/lzt/userattendancetotal/personnelBaseArchivesManageSelectList");
  119. }
  120. /**
  121. * 查询班次人员弹窗
  122. * 轮流值班
  123. * @author zbw
  124. * 2017-11-5
  125. * @param userAndUserPersonnelDto
  126. * @param request
  127. * @param response
  128. * @param dataGrid
  129. */
  130. @RequestMapping(params = "getPersonnelBaseArchivesManageInfo")
  131. public void getPersonnelBaseArchivesManageInfo(UserAndUserPersonnelDto userAndUserPersonnelDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  132. //extractIdListByComma
  133. String pid=request.getParameter("pid");
  134. List<String> useridListAll=new ArrayList<String>();
  135. //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
  136. if(pid!=null&&pid.length()!=0){
  137. pid=pid.split(",")[0];
  138. userAndUserPersonnelDto.setPid(pid);
  139. }
  140. //包括该项目id
  141. //根据项目id查询所有子节点id
  142. List<String> ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid);
  143. /******************************************************************/
  144. userAndUserPersonnelDto.setChildDepartIdList(ChildIdList);
  145. userAndUserPersonnelDto.setUserIdList(useridListAll);
  146. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  147. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = userWageMinidaoDao.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql);
  148. // Collections.sort(listUserAndUserPersonnelDto);
  149. //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
  150. //dataGrid.setTotal(listUserAndUserPersonnelDto.getTotal());
  151. dataGrid.setResults(listUserAndUserPersonnelDto);
  152. TagUtil.datagrid(response, dataGrid);
  153. }
  154. /**
  155. * 员工考勤合计表列表 页面跳转
  156. *
  157. * @return
  158. */
  159. @RequestMapping(params = "auditlist")
  160. public ModelAndView auditlist(HttpServletRequest request) {
  161. Calendar calendar = DataUtils.getCalendar();
  162. calendar.add(Calendar.MONTH, -1);
  163. String yearmonth = DataUtils.formatDate(calendar, "yyyy-MM-dd");
  164. request.setAttribute("maxdate", yearmonth);
  165. String queryParams = oConvertUtils.getString(request.getParameter("queryParams"));
  166. if (oConvertUtils.isNotEmpty(queryParams)) {
  167. JSONObject jsonObject =JSONObject.parseObject(queryParams);
  168. request.setAttribute("queryParams",jsonObject);
  169. }else {
  170. JSONObject jsonObject = new JSONObject();
  171. jsonObject.put("adjustRecord", "");
  172. jsonObject.put("confirmStatus", "");
  173. jsonObject.put("departid", "");
  174. jsonObject.put("departname", "");
  175. jsonObject.put("inPostid", "");
  176. jsonObject.put("userId", "");
  177. jsonObject.put("yearmonth", "");
  178. request.setAttribute("queryParams",jsonObject);
  179. }
  180. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotalauditlist");
  181. }
  182. /**
  183. * 员工考勤合计表列表 页面跳转
  184. *
  185. * @return
  186. */
  187. @RequestMapping(params = "list")
  188. public ModelAndView list(HttpServletRequest request) {
  189. HttpSession session = ContextHolderUtils.getSession();
  190. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  191. String queryParams = oConvertUtils.getString(request.getParameter("queryParams"));
  192. JSONObject jsonObject =JSONObject.parseObject(queryParams);
  193. String departid = "";
  194. String departname = "";
  195. if(jsonObject != null && jsonObject.getString("departid")!=null) {
  196. departid = jsonObject.getString("departid");
  197. }
  198. if(jsonObject != null && jsonObject.getString("departname")!=null) {
  199. departname = jsonObject.getString("departname");
  200. }
  201. try {
  202. TBusUserOptionsEntity options = userOptionsService.getOptionsByUserID(tuser.getId(), Globals.USER_OPTIONS_TYPE_PROJECT, false);
  203. if(StringUtils.isEmpty(departid)) {
  204. if(options != null) {
  205. departid = options.getOptionId();
  206. departname = options.getOptionName();
  207. }
  208. }
  209. } catch (Exception e) {
  210. e.printStackTrace();
  211. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  212. }
  213. Calendar calendar = DataUtils.getCalendar();
  214. // calendar.add(Calendar.MONTH, -1);
  215. String yearmonth = DataUtils.formatDate(calendar, "yyyy-MM-dd");
  216. request.setAttribute("maxdate", yearmonth);
  217. if (oConvertUtils.isNotEmpty(queryParams)) {
  218. request.setAttribute("queryParams",jsonObject);
  219. }else {
  220. jsonObject = new JSONObject();
  221. jsonObject.put("adjustRecord", "");
  222. jsonObject.put("confirmStatus", "");
  223. jsonObject.put("departid", departid);
  224. jsonObject.put("departname", departname);
  225. jsonObject.put("inPostid", "");
  226. jsonObject.put("userId", "");
  227. jsonObject.put("yearmonth", "");
  228. request.setAttribute("queryParams",jsonObject);
  229. }
  230. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotalList");
  231. }
  232. /**
  233. * easyui AJAX请求数据
  234. *
  235. * @param request
  236. * @param response
  237. * @param dataGrid
  238. * @param user
  239. */
  240. @RequestMapping(params = "auditdatagrid")
  241. public void auditdatagrid(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  242. try {
  243. // 临时借用该字段, 用于在审核页面筛选不显示未上报的数据
  244. userAttendanceTotal.setConfirmor("auditdatagrid");
  245. userAttendanceTotalService.getAttendanceTotalDtos(userAttendanceTotal, dataGrid);
  246. } catch (Exception e) {
  247. dataGrid.setResults(new ArrayList<>());
  248. }
  249. TagUtil.datagrid(response, dataGrid);
  250. }
  251. /**
  252. * easyui AJAX请求数据
  253. *
  254. * @param request
  255. * @param response
  256. * @param dataGrid
  257. * @param user
  258. */
  259. @RequestMapping(params = "datagrid")
  260. public void datagrid(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  261. if(userAttendanceTotal != null
  262. && userAttendanceTotal.getYearmonth() != null
  263. && userAttendanceTotal.getYearmonth().length() == 0) {
  264. dataGrid.setResults(new ArrayList<>());
  265. TagUtil.datagrid(response, dataGrid);
  266. return;
  267. }
  268. HttpSession session = ContextHolderUtils.getSession();
  269. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  270. String departid = "";
  271. String departname = "";
  272. if(userAttendanceTotal != null && userAttendanceTotal.getDepartid()!=null) {
  273. departid = userAttendanceTotal.getDepartid();
  274. TSDepart depart = systemService.get(TSDepart.class, departid);
  275. if(depart != null) {
  276. departname = depart.getDepartname();
  277. }
  278. }
  279. try {
  280. TBusUserOptionsEntity options = userOptionsService.getOptionsByUserID(tuser.getId(), Globals.USER_OPTIONS_TYPE_PROJECT, true);
  281. if(StringUtils.isEmpty(departid)) {
  282. if(options != null) {
  283. departid = options.getOptionId();
  284. departname = options.getOptionName();
  285. }
  286. }else {
  287. userOptionsService.saveUserOptions(tuser.getId(), departid, departname, Globals.USER_OPTIONS_TYPE_PROJECT);
  288. }
  289. } catch (Exception e) {
  290. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  291. }
  292. try {
  293. userAttendanceTotalService.getAttendanceTotalDtos(userAttendanceTotal, dataGrid);
  294. } catch (Exception e) {
  295. dataGrid.setResults(new ArrayList<>());
  296. }
  297. TagUtil.datagrid(response, dataGrid);
  298. }
  299. /**
  300. * 员工考勤合计表列表 页面跳转
  301. *
  302. * @return
  303. */
  304. @RequestMapping(params = "listAll")
  305. public ModelAndView listAll(HttpServletRequest request) {
  306. String queryParams = oConvertUtils.getString(request.getParameter("queryParams"));
  307. JSONObject jsonObject =JSONObject.parseObject(queryParams);
  308. String departid = "";
  309. String departname = "";
  310. if(jsonObject != null && jsonObject.getString("departid")!=null) {
  311. departid = jsonObject.getString("departid");
  312. }
  313. if(jsonObject != null && jsonObject.getString("departname")!=null) {
  314. departname = jsonObject.getString("departname");
  315. }
  316. Calendar calendar = DataUtils.getCalendar();
  317. // calendar.add(Calendar.MONTH, -1);
  318. String yearmonth = DataUtils.formatDate(calendar, "yyyy-MM-dd");
  319. request.setAttribute("maxdate", yearmonth);
  320. if (oConvertUtils.isNotEmpty(queryParams)) {
  321. request.setAttribute("queryParams",jsonObject);
  322. }else {
  323. jsonObject = new JSONObject();
  324. jsonObject.put("adjustRecord", "");
  325. jsonObject.put("confirmStatus", "");
  326. jsonObject.put("departid", departid);
  327. jsonObject.put("departname", departname);
  328. jsonObject.put("inPostid", "");
  329. jsonObject.put("userId", "");
  330. jsonObject.put("yearmonth", "");
  331. request.setAttribute("queryParams",jsonObject);
  332. }
  333. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotalAllList");
  334. }
  335. /**
  336. * easyui AJAX请求数据
  337. *
  338. * @param request
  339. * @param response
  340. * @param dataGrid
  341. * @param user
  342. */
  343. @RequestMapping(params = "datagridAll")
  344. public void datagridAll(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  345. if(userAttendanceTotal != null
  346. && userAttendanceTotal.getYearmonth() != null
  347. && userAttendanceTotal.getYearmonth().length() == 0) {
  348. dataGrid.setResults(new ArrayList<>());
  349. TagUtil.datagrid(response, dataGrid);
  350. return;
  351. }
  352. try {
  353. userAttendanceTotalService.getAttendanceTotalDtos(userAttendanceTotal, dataGrid);
  354. } catch (Exception e) {
  355. dataGrid.setResults(new ArrayList<>());
  356. }
  357. TagUtil.datagrid(response, dataGrid);
  358. }
  359. /**
  360. * 删除员工考勤合计表
  361. *
  362. * @return
  363. */
  364. @RequestMapping(params = "doDel")
  365. @ResponseBody
  366. public AjaxJson doDel(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest request) {
  367. String message = null;
  368. AjaxJson j = new AjaxJson();
  369. userAttendanceTotal = systemService.getEntity(UserAttendanceTotalEntity.class, userAttendanceTotal.getId());
  370. message = "员工考勤合计表删除成功";
  371. try{
  372. userAttendanceTotalService.delete(userAttendanceTotal);
  373. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  374. }catch(Exception e){
  375. e.printStackTrace();
  376. message = "员工考勤合计表删除失败";
  377. throw new BusinessException(e.getMessage());
  378. }
  379. j.setMsg(message);
  380. return j;
  381. }
  382. /**
  383. * 批量删除员工考勤合计表
  384. *
  385. * @return
  386. */
  387. @RequestMapping(params = "doBatchDel")
  388. @ResponseBody
  389. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  390. String message = null;
  391. AjaxJson j = new AjaxJson();
  392. message = "员工考勤合计表删除成功";
  393. try{
  394. for(String id:ids.split(",")){
  395. UserAttendanceTotalEntity userAttendanceTotal = systemService.getEntity(UserAttendanceTotalEntity.class,
  396. id
  397. );
  398. userAttendanceTotalService.delete(userAttendanceTotal);
  399. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  400. }
  401. }catch(Exception e){
  402. e.printStackTrace();
  403. message = "员工考勤合计表删除失败";
  404. throw new BusinessException(e.getMessage());
  405. }
  406. j.setMsg(message);
  407. return j;
  408. }
  409. /**
  410. * 批量审核员工考勤合计表
  411. *
  412. * @return
  413. */
  414. @RequestMapping(params = "doBatchAudit")
  415. @ResponseBody
  416. public AjaxJson doBatchAudit(String ids,HttpServletRequest request){
  417. String message = null;
  418. AjaxJson j = new AjaxJson();
  419. message = "操作成功";
  420. String confirmStatus = oConvertUtils.getString(request.getParameter("confirmStatus"));
  421. if (Globals.ARRANGESTATUS_2.equals(confirmStatus)) {
  422. confirmStatus = Globals.ARRANGESTATUS_2;
  423. }else {
  424. confirmStatus = Globals.ARRANGESTATUS_0;
  425. }
  426. try{
  427. userAttendanceTotalService.doBatchAudit(oConvertUtils.getString(ids),confirmStatus);
  428. j.setSuccess(true);
  429. }catch(Exception e){
  430. e.printStackTrace();
  431. j.setSuccess(false);
  432. message = "操作失败";
  433. }
  434. j.setMsg(message);
  435. return j;
  436. }
  437. /**
  438. * 批量上报员工考勤
  439. *
  440. * @return
  441. */
  442. @RequestMapping(params = "doBatchReport")
  443. @ResponseBody
  444. public AjaxJson doBatchReport(String ids,HttpServletRequest request){
  445. String message = null;
  446. AjaxJson j = new AjaxJson();
  447. message = "上报成功";
  448. try{
  449. userAttendanceTotalService.doBatchReport(oConvertUtils.getString(ids));
  450. j.setSuccess(true);
  451. }catch(Exception e){
  452. e.printStackTrace();
  453. j.setSuccess(false);
  454. message = "上报失败";
  455. }
  456. j.setMsg(message);
  457. return j;
  458. }
  459. /**
  460. * 添加员工考勤合计表
  461. *
  462. * @param ids
  463. * @return
  464. */
  465. @RequestMapping(params = "doAdd")
  466. @ResponseBody
  467. public AjaxJson doAdd(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest request) {
  468. String message = null;
  469. AjaxJson j = new AjaxJson();
  470. message = "员工考勤合计表添加成功";
  471. try{
  472. userAttendanceTotalService.save(userAttendanceTotal);
  473. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  474. }catch(Exception e){
  475. e.printStackTrace();
  476. message = "员工考勤合计表添加失败";
  477. throw new BusinessException(e.getMessage());
  478. }
  479. j.setMsg(message);
  480. return j;
  481. }
  482. /**
  483. * 更新员工考勤合计表
  484. *
  485. * @param ids
  486. * @return
  487. */
  488. @RequestMapping(params = "doUpdate")
  489. @ResponseBody
  490. public AjaxJson doUpdate(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest request) {
  491. String message = null;
  492. AjaxJson j = new AjaxJson();
  493. message = "员工考勤合计表更新成功";
  494. UserAttendanceTotalEntity t = userAttendanceTotalService.get(UserAttendanceTotalEntity.class, userAttendanceTotal.getId());
  495. try {
  496. MyBeanUtils.copyBeanNotNull2Bean(userAttendanceTotal, t);
  497. userAttendanceTotalService.saveOrUpdate(t);
  498. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  499. } catch (Exception e) {
  500. e.printStackTrace();
  501. message = "员工考勤合计表更新失败";
  502. throw new BusinessException(e.getMessage());
  503. }
  504. j.setMsg(message);
  505. return j;
  506. }
  507. /**
  508. * 员工考勤合计表新增页面跳转
  509. *
  510. * @return
  511. */
  512. @RequestMapping(params = "goAdd")
  513. public ModelAndView goAdd(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest req,String yearmonth) {
  514. try {
  515. userAttendanceTotalService.insertUserAttendanceTotalByyearmonth(yearmonth);
  516. // userAttendanceTotalService.insertUserAttendanceTotalByyearmonth("2017-09");
  517. // userAttendanceTotalService.insertUserAttendanceTotalByyearmonth("2017-10");
  518. // attendanceWarnMsgService.updateAttendanceWarnMsgBytasker("2017-10-19");
  519. // userAttendanceTotalService.insertUserAttendanceTotalByyearmonth("2017-08");
  520. // userAttendanceTotalService.insertUserAttendanceTotalByyearmonth("2017-09");
  521. // userAttendanceTotalService.insertUserAttendanceTotalByyearmonth("2017-10");
  522. } catch (Exception e) {
  523. e.printStackTrace();
  524. }
  525. if (StringUtil.isNotEmpty(userAttendanceTotal.getId())) {
  526. userAttendanceTotal = userAttendanceTotalService.getEntity(UserAttendanceTotalEntity.class, userAttendanceTotal.getId());
  527. req.setAttribute("userAttendanceTotalPage", userAttendanceTotal);
  528. }
  529. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotal-add");
  530. }
  531. /**
  532. * 员工考勤合计表编辑页面跳转
  533. *
  534. * @return
  535. */
  536. @RequestMapping(params = "goUpdate")
  537. public ModelAndView goUpdate(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest req) {
  538. if (StringUtil.isNotEmpty(userAttendanceTotal.getId())) {
  539. userAttendanceTotal = userAttendanceTotalService.getEntity(UserAttendanceTotalEntity.class, userAttendanceTotal.getId());
  540. JSONObject object =(JSONObject) JSONObject.toJSON(userAttendanceTotal);
  541. if (oConvertUtils.isNotEmpty(userAttendanceTotal)&&oConvertUtils.isNotEmpty(userAttendanceTotal.getUserId())) {
  542. TSBaseUser user = userAttendanceTotalService.findUniqueByProperty(TSBaseUser.class, "id",userAttendanceTotal.getUserId());
  543. if (oConvertUtils.isNotEmpty(user)) {
  544. object.put("userrealName", user.getRealName());
  545. }
  546. }
  547. if(userAttendanceTotal.getAbsenteeismAmount_orig() == null) {
  548. userAttendanceTotal.setAbsenteeismAmount_orig(BigDecimal.ZERO);
  549. }
  550. if(userAttendanceTotal.getTimeoutOvertimeDuration_orig() == null) {
  551. userAttendanceTotal.setTimeoutOvertimeDuration_orig(BigDecimal.ZERO);
  552. }
  553. req.setAttribute("userAttendanceTotalPage",object);
  554. }
  555. String queryParams = oConvertUtils.getString(req.getParameter("queryParams"));
  556. if (oConvertUtils.isNotEmpty(queryParams)) {
  557. req.setAttribute("queryParams",queryParams);
  558. }
  559. String conform = oConvertUtils.getString(req.getParameter("conform"));
  560. if ("auditlist".equals(conform)||"list".equals(conform)) {
  561. req.setAttribute("backurl",conform);
  562. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotal-conform");
  563. }else {
  564. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotal-update");
  565. }
  566. }
  567. /**
  568. * 员工考勤合计表编辑页面跳转
  569. *
  570. * @return
  571. */
  572. @RequestMapping(params = "goUpdateAll")
  573. public ModelAndView goUpdateAll(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest req) {
  574. if (StringUtil.isNotEmpty(userAttendanceTotal.getId())) {
  575. userAttendanceTotal = userAttendanceTotalService.getEntity(UserAttendanceTotalEntity.class, userAttendanceTotal.getId());
  576. JSONObject object =(JSONObject) JSONObject.toJSON(userAttendanceTotal);
  577. if (oConvertUtils.isNotEmpty(userAttendanceTotal)&&oConvertUtils.isNotEmpty(userAttendanceTotal.getUserId())) {
  578. TSBaseUser user = userAttendanceTotalService.findUniqueByProperty(TSBaseUser.class, "id",userAttendanceTotal.getUserId());
  579. if (oConvertUtils.isNotEmpty(user)) {
  580. object.put("userrealName", user.getRealName());
  581. }
  582. }
  583. if(userAttendanceTotal.getAbsenteeismAmount_orig() == null) {
  584. userAttendanceTotal.setAbsenteeismAmount_orig(BigDecimal.ZERO);
  585. }
  586. if(userAttendanceTotal.getTimeoutOvertimeDuration_orig() == null) {
  587. userAttendanceTotal.setTimeoutOvertimeDuration_orig(BigDecimal.ZERO);
  588. }
  589. req.setAttribute("userAttendanceTotalPage",object);
  590. }
  591. String queryParams = oConvertUtils.getString(req.getParameter("queryParams"));
  592. if (oConvertUtils.isNotEmpty(queryParams)) {
  593. req.setAttribute("queryParams",queryParams);
  594. }
  595. String conform = oConvertUtils.getString(req.getParameter("conform"));
  596. if ("auditlist".equals(conform)||"listAll".equals(conform)) {
  597. req.setAttribute("backurl",conform);
  598. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotal-conformAll");
  599. }else {
  600. return new ModelAndView("cn/com/lzt/userattendancetotal/userAttendanceTotal-updateAll");
  601. }
  602. }
  603. /**
  604. * 重新核算考勤
  605. *
  606. * @return
  607. */
  608. @RequestMapping(params = "calcuUserAttendance")
  609. @ResponseBody
  610. public AjaxJson calcuUserAttendance(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest request) {
  611. AjaxJson j = new AjaxJson();
  612. j.setMsg("员工考勤核算完成");
  613. String id = oConvertUtils.getString(request.getParameter("id"));
  614. if (StringUtil.isNotEmpty(id)) {
  615. userAttendanceTotal = userAttendanceTotalService.getEntity(UserAttendanceTotalEntity.class, id);
  616. try {
  617. userAttendanceTotalService.insertUserAttendanceTotalByyearmonth(userAttendanceTotal.getUserId(), userAttendanceTotal.getYearmonth());
  618. } catch (Exception e) {
  619. j.setSuccess(false);
  620. j.setMsg("考勤核算失败,请联系信息部");
  621. return j;
  622. }
  623. }
  624. return j;
  625. }
  626. /**
  627. * 重新核算考勤
  628. *
  629. * @return
  630. */
  631. @RequestMapping(params = "createUserAttendance")
  632. @ResponseBody
  633. public AjaxJson createUserAttendance(UserAttendanceTotalEntity userAttendanceTotal, HttpServletRequest request) {
  634. AjaxJson j = new AjaxJson();
  635. j.setMsg("成功生成员工考勤");
  636. String userid = oConvertUtils.getString(request.getParameter("userid"));
  637. String yearmonth = oConvertUtils.getString(request.getParameter("yearmonth"));
  638. if (StringUtil.isNotEmpty(userid) && StringUtil.isNotEmpty(yearmonth)) {
  639. try {
  640. userAttendanceTotalService.insertUserAttendanceTotalByyearmonth(userid, yearmonth);
  641. } catch (Exception e) {
  642. j.setSuccess(false);
  643. j.setMsg("考勤核算失败["+e.getMessage()+"]");
  644. return j;
  645. }
  646. }
  647. return j;
  648. }
  649. /**
  650. * 导入功能跳转
  651. *
  652. * @return
  653. */
  654. @RequestMapping(params = "upload")
  655. public ModelAndView upload(HttpServletRequest req) {
  656. req.setAttribute("controller_name","userAttendanceTotalController");
  657. return new ModelAndView("common/upload/pub_excel_upload");
  658. }
  659. /**
  660. * 导出excel
  661. *
  662. * @param request
  663. * @param response
  664. */
  665. @RequestMapping(params = "auditexportXls")
  666. public String auditexportXls(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request,HttpServletResponse response
  667. , DataGrid dataGrid,ModelMap modelMap) {
  668. try {
  669. dataGrid.setObj("exportXls");
  670. // 临时借用该字段, 用于在审核页面筛选不显示未上报的数据
  671. userAttendanceTotal.setConfirmor("auditdatagrid");
  672. userAttendanceTotalService.getAttendanceTotalDtos(userAttendanceTotal, dataGrid);
  673. } catch (Exception e) {
  674. dataGrid.setResults(new ArrayList<>());
  675. }
  676. List<UserAttendanceTotalEntity> userAttendanceTotalEntities =dataGrid.getResults();
  677. List<UserAttendanceTotalExcelEntity> userAttendanceTotalexcelEntities =new ArrayList<>();
  678. try {
  679. for (UserAttendanceTotalEntity entry : userAttendanceTotalEntities) {
  680. UserAttendanceTotalExcelEntity excelEntity = new UserAttendanceTotalExcelEntity();
  681. MyBeanUtils.copyBeanNotNull2Bean(entry, excelEntity);
  682. excelEntity.setDatumAttendanceDateStr(getStrFromBigdecimal(excelEntity.getDatumAttendanceDate()));
  683. excelEntity.setActualAttendanceDateStr(getStrFromBigdecimal(excelEntity.getActualAttendanceDate()));
  684. excelEntity.setTimeDifferenceTotalstr(getStrFromBigdecimal(excelEntity.getTimeDifferenceTotal()));
  685. excelEntity.setOvertimeTotalTimestr(getStrFromBigdecimal(excelEntity.getOvertimeTotalTime()));
  686. excelEntity.setLeaveTotalTimestr(getStrFromBigdecimal(excelEntity.getLeaveTotalTime()));
  687. userAttendanceTotalexcelEntities.add(excelEntity);
  688. }
  689. } catch (Exception e) {
  690. e.printStackTrace();
  691. }
  692. modelMap.put(NormalExcelConstants.FILE_NAME,"考勤审核信息");
  693. modelMap.put(NormalExcelConstants.CLASS,UserAttendanceTotalExcelEntity.class);
  694. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("考勤审核信息", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  695. "考勤审核信息"));
  696. modelMap.put(NormalExcelConstants.DATA_LIST,userAttendanceTotalexcelEntities);
  697. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  698. }
  699. /**
  700. * 导出excel
  701. *
  702. * @param request
  703. * @param response
  704. */
  705. @RequestMapping(params = "exportXls")
  706. public String exportXls(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request,HttpServletResponse response
  707. , DataGrid dataGrid,ModelMap modelMap) {
  708. try {
  709. dataGrid.setObj("exportXls");
  710. userAttendanceTotalService.getAttendanceTotalDtos(userAttendanceTotal, dataGrid);
  711. } catch (Exception e) {
  712. dataGrid.setResults(new ArrayList<>());
  713. }
  714. List<UserAttendanceTotalEntity> userAttendanceTotalEntities =dataGrid.getResults();
  715. List<UserAttendanceTotalExcelEntity> userAttendanceTotalexcelEntities =new ArrayList<>();
  716. try {
  717. for (UserAttendanceTotalEntity entry : userAttendanceTotalEntities) {
  718. UserAttendanceTotalExcelEntity excelEntity = new UserAttendanceTotalExcelEntity();
  719. MyBeanUtils.copyBeanNotNull2Bean(entry, excelEntity);
  720. excelEntity.setDatumAttendanceDateStr(getStrFromBigdecimal(excelEntity.getDatumAttendanceDate()));
  721. excelEntity.setActualAttendanceDateStr(getStrFromBigdecimal(excelEntity.getActualAttendanceDate()));
  722. excelEntity.setTimeDifferenceTotalstr(getStrFromBigdecimal(excelEntity.getTimeDifferenceTotal()));
  723. excelEntity.setOvertimeTotalTimestr(getStrFromBigdecimal(excelEntity.getOvertimeTotalTime()));
  724. excelEntity.setLeaveTotalTimestr(getStrFromBigdecimal(excelEntity.getLeaveTotalTime()));
  725. userAttendanceTotalexcelEntities.add(excelEntity);
  726. }
  727. } catch (Exception e) {
  728. e.printStackTrace();
  729. }
  730. modelMap.put(NormalExcelConstants.FILE_NAME,"考勤上报信息");
  731. modelMap.put(NormalExcelConstants.CLASS,UserAttendanceTotalExcelEntity.class);
  732. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("考勤上报信息", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  733. "考勤上报信息"));
  734. modelMap.put(NormalExcelConstants.DATA_LIST,userAttendanceTotalexcelEntities);
  735. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  736. }
  737. public String getStrFromBigdecimal( BigDecimal incomBigDecimal ) {
  738. String result = "";
  739. if (null!=incomBigDecimal) {
  740. int temp = incomBigDecimal.intValue();
  741. int mins = temp % 60;
  742. int hour = (temp - mins) / 60;
  743. if (0 == hour) {
  744. result = mins + "分";
  745. } else {
  746. if( mins<0){
  747. mins = 0-mins;
  748. }
  749. result = hour + "小时" + mins + "分";
  750. }
  751. }
  752. return result;
  753. }
  754. /**
  755. * 导出excel 使模板
  756. *
  757. * @param request
  758. * @param response
  759. */
  760. @RequestMapping(params = "exportXlsByT")
  761. public String exportXlsByT(UserAttendanceTotalEntity userAttendanceTotal,HttpServletRequest request,HttpServletResponse response
  762. , DataGrid dataGrid,ModelMap modelMap) {
  763. modelMap.put(NormalExcelConstants.FILE_NAME,"员工考勤合计表");
  764. modelMap.put(NormalExcelConstants.CLASS,UserAttendanceTotalEntity.class);
  765. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工考勤合计表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  766. "导出信息"));
  767. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  768. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  769. }
  770. @SuppressWarnings("unchecked")
  771. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  772. @ResponseBody
  773. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  774. AjaxJson j = new AjaxJson();
  775. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  776. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  777. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  778. MultipartFile file = entity.getValue();// 获取上传文件对象
  779. ImportParams params = new ImportParams();
  780. params.setTitleRows(2);
  781. params.setHeadRows(1);
  782. params.setNeedSave(true);
  783. try {
  784. List<UserAttendanceTotalEntity> listUserAttendanceTotalEntitys = ExcelImportUtil.importExcel(file.getInputStream(),UserAttendanceTotalEntity.class,params);
  785. for (UserAttendanceTotalEntity userAttendanceTotal : listUserAttendanceTotalEntitys) {
  786. userAttendanceTotalService.save(userAttendanceTotal);
  787. }
  788. j.setMsg("文件导入成功!");
  789. } catch (Exception e) {
  790. j.setMsg("文件导入失败!");
  791. logger.error(ExceptionUtil.getExceptionMessage(e));
  792. }finally{
  793. try {
  794. file.getInputStream().close();
  795. } catch (IOException e) {
  796. e.printStackTrace();
  797. }
  798. }
  799. }
  800. return j;
  801. }
  802. @RequestMapping(method = RequestMethod.GET)
  803. @ResponseBody
  804. public List<UserAttendanceTotalEntity> list() {
  805. List<UserAttendanceTotalEntity> listUserAttendanceTotals=userAttendanceTotalService.getList(UserAttendanceTotalEntity.class);
  806. return listUserAttendanceTotals;
  807. }
  808. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  809. @ResponseBody
  810. public ResponseEntity<?> get(@PathVariable("id") String id) {
  811. UserAttendanceTotalEntity task = userAttendanceTotalService.get(UserAttendanceTotalEntity.class, id);
  812. if (task == null) {
  813. return new ResponseEntity(HttpStatus.NOT_FOUND);
  814. }
  815. return new ResponseEntity(task, HttpStatus.OK);
  816. }
  817. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  818. @ResponseBody
  819. public ResponseEntity<?> create(@RequestBody UserAttendanceTotalEntity userAttendanceTotal, UriComponentsBuilder uriBuilder) {
  820. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  821. Set<ConstraintViolation<UserAttendanceTotalEntity>> failures = validator.validate(userAttendanceTotal);
  822. if (!failures.isEmpty()) {
  823. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  824. }
  825. //保存
  826. try{
  827. userAttendanceTotalService.save(userAttendanceTotal);
  828. } catch (Exception e) {
  829. e.printStackTrace();
  830. return new ResponseEntity(HttpStatus.NO_CONTENT);
  831. }
  832. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  833. String id = userAttendanceTotal.getId();
  834. URI uri = uriBuilder.path("/rest/userAttendanceTotalController/" + id).build().toUri();
  835. HttpHeaders headers = new HttpHeaders();
  836. headers.setLocation(uri);
  837. return new ResponseEntity(headers, HttpStatus.CREATED);
  838. }
  839. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  840. public ResponseEntity<?> update(@RequestBody UserAttendanceTotalEntity userAttendanceTotal) {
  841. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  842. Set<ConstraintViolation<UserAttendanceTotalEntity>> failures = validator.validate(userAttendanceTotal);
  843. if (!failures.isEmpty()) {
  844. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  845. }
  846. //保存
  847. try{
  848. userAttendanceTotalService.saveOrUpdate(userAttendanceTotal);
  849. } catch (Exception e) {
  850. e.printStackTrace();
  851. return new ResponseEntity(HttpStatus.NO_CONTENT);
  852. }
  853. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  854. return new ResponseEntity(HttpStatus.NO_CONTENT);
  855. }
  856. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  857. @ResponseStatus(HttpStatus.NO_CONTENT)
  858. public void delete(@PathVariable("id") String id) {
  859. userAttendanceTotalService.deleteEntityById(UserAttendanceTotalEntity.class, id);
  860. }
  861. }