TBusActivitiOvertimeController.java 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186
  1. package cn.com.lzt.useractiviti.overtime.controller;
  2. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  3. import cn.com.lzt.common.service.TSysFileServiceI;
  4. import cn.com.lzt.common.util.DictUtil;
  5. import cn.com.lzt.common.view.JsonDataModelAndView;
  6. import cn.com.lzt.cost.activiti.tmpcompany.entity.TBActivitiCostPayTmpCompanyEntity;
  7. import cn.com.lzt.exchangeaccount.service.TBExchangeAccountServiceI;
  8. import cn.com.lzt.message.data.dao.MessageDataDao;
  9. import cn.com.lzt.overtimebudget.service.TBOvertimeBudgetServiceI;
  10. import cn.com.lzt.sign.entity.TBRequestEntity;
  11. import cn.com.lzt.sign.entity.TBRequestFeedbackEntity;
  12. import cn.com.lzt.useractiviti.data.controller.ActivitiToolsController;
  13. import cn.com.lzt.useractiviti.data.util.ActivitiPdfExport;
  14. import cn.com.lzt.useractiviti.data.util.ActivitiTools;
  15. import cn.com.lzt.useractiviti.overtime.entity.TBusActivitiOvertimeAuditEntity;
  16. import cn.com.lzt.useractiviti.overtime.entity.TBusActivitiOvertimeEntity;
  17. import cn.com.lzt.useractiviti.overtime.entity.TBusActivitiOvertimeVacationEntity;
  18. import cn.com.lzt.useractiviti.overtime.service.TBusActivitiOvertimeServiceI;
  19. import cn.com.lzt.useractiviti.overtime.page.TBusActivitiOvertimePage;
  20. import cn.com.lzt.useractiviti.overtime.entity.TBusActivitiOvertimeDetailEntity;
  21. import java.math.BigDecimal;
  22. import java.text.ParseException;
  23. import java.util.*;
  24. import java.text.SimpleDateFormat;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import cn.com.lzt.userwagestrategy.service.UserWagestrategyServiceI;
  28. import com.alibaba.fastjson.JSONObject;
  29. import com.lowagie.text.pdf.PdfPTable;
  30. import com.jeecg.qianbao.util.FormProcUtil;
  31. import com.xcgl.weixin.entity.WXAjaxJson;
  32. import org.apache.commons.lang.xwork.StringUtils;
  33. import org.apache.log4j.Logger;
  34. import org.hibernate.Session;
  35. import org.jeecgframework.core.util.*;
  36. import org.jeecgframework.tag.vo.datatable.SortDirection;
  37. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  38. import org.jeecgframework.web.system.pojo.base.TSUser;
  39. import org.jeecgframework.web.system.pojo.base.TSUserOrg;
  40. import org.jeecgframework.web.system.util.Tool;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.stereotype.Controller;
  43. import org.springframework.web.bind.annotation.*;
  44. import org.springframework.web.servlet.ModelAndView;
  45. import org.jeecgframework.core.common.exception.BusinessException;
  46. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  47. import org.jeecgframework.core.common.model.json.AjaxJson;
  48. import org.jeecgframework.core.common.model.json.DataGrid;
  49. import org.jeecgframework.core.constant.Globals;
  50. import org.jeecgframework.tag.core.easyui.TagUtil;
  51. import org.jeecgframework.web.system.service.SystemService;
  52. import org.jeecgframework.poi.excel.ExcelImportUtil;
  53. import org.jeecgframework.poi.excel.entity.ExportParams;
  54. import org.jeecgframework.poi.excel.entity.ImportParams;
  55. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  56. import org.springframework.ui.ModelMap;
  57. import org.springframework.web.multipart.MultipartFile;
  58. import org.springframework.web.multipart.MultipartHttpServletRequest;
  59. import java.io.IOException;
  60. import org.springframework.http.ResponseEntity;
  61. import org.springframework.web.bind.annotation.RequestMapping;
  62. import org.springframework.web.bind.annotation.RequestMethod;
  63. import org.springframework.web.bind.annotation.ResponseBody;
  64. import org.springframework.http.HttpHeaders;
  65. import org.springframework.http.HttpStatus;
  66. import org.jeecgframework.core.beanvalidator.BeanValidators;
  67. import javax.servlet.http.HttpSession;
  68. import javax.validation.ConstraintViolation;
  69. import javax.validation.Validator;
  70. import java.net.URI;
  71. import org.springframework.http.MediaType;
  72. import org.springframework.web.util.UriComponentsBuilder;
  73. /**
  74. * @author onlineGenerator
  75. * @version V1.0
  76. * @Title: Controller
  77. * @Description: 加班申请
  78. * @date 2019-10-13 12:00:22
  79. */
  80. @Controller
  81. @RequestMapping("/tBusActivitiOvertimeController")
  82. public class TBusActivitiOvertimeController extends ActivitiToolsController {
  83. /**
  84. * Logger for this class
  85. */
  86. private static final Logger logger = Logger.getLogger(TBusActivitiOvertimeController.class);
  87. @Autowired
  88. private TBusActivitiOvertimeServiceI tBusActivitiOvertimeService;
  89. @Autowired
  90. private SystemService systemService;
  91. @Autowired
  92. private Validator validator;
  93. @Autowired
  94. private UserWagestrategyServiceI userWageStrategyService;
  95. @Autowired
  96. private TBExchangeAccountServiceI tbExchangeAccountService;
  97. private static final Integer[] ruleList = new Integer[]{1, 2, 3, 5, 6, 7};
  98. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  99. SimpleDateFormat simpleDateFormatYMDHM = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  100. SimpleDateFormat simpleDateFormatYMD = new SimpleDateFormat("yyyy-MM-dd");
  101. /**
  102. * 加班申请列表 页面跳转
  103. *
  104. * @return
  105. */
  106. @RequestMapping(params = "list")
  107. public ModelAndView list(HttpServletRequest request) {
  108. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeList");
  109. }
  110. /**
  111. * @return
  112. * @Author刘梦祥
  113. * @Date 2021年11月30日11:01:14
  114. * 加班审核列表 页面跳转
  115. * @version 1.0 (初始化)
  116. */
  117. @RequestMapping(params = "auditList")
  118. public ModelAndView auditList(HttpServletRequest request) {
  119. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeAuditList");
  120. }
  121. /**
  122. * @return
  123. * @Author刘梦祥
  124. * @Date 2021年12月7日16:47:25
  125. * 休假审核列表 页面跳转
  126. * @version 1.0 (初始化)
  127. */
  128. @RequestMapping(params = "vacationList")
  129. public ModelAndView vacationList(HttpServletRequest request) {
  130. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeVacationList");
  131. }
  132. /**
  133. * 获取当前登录人的审批权限集合
  134. *
  135. * @return
  136. * @author刘梦祥
  137. * @Date 2021年11月29日00:42:57
  138. */
  139. public Map<String, List<String>> getUserRuleMap() {
  140. // 获取当前操作人的信息
  141. TSUser user = ResourceUtil.getSessionUser();
  142. CriteriaQuery criteriaQuery = new CriteriaQuery(TSUserOrg.class, new DataGrid());
  143. criteriaQuery.eq("tsUser.id", user.getId());
  144. criteriaQuery.add();
  145. List<TSUserOrg> tsUserOrgList = this.systemService.getListByCriteriaQuery(criteriaQuery, true);
  146. DataGrid dataGrid1 = new DataGrid();
  147. CriteriaQuery criteriaQuery1 = new CriteriaQuery(UserAndUserPersonnelDto.class, dataGrid1);
  148. criteriaQuery1.eq("userid", user.getId());
  149. criteriaQuery1.add();
  150. List<UserAndUserPersonnelDto> userAndUserPersonnelDtoList = this.systemService.getListByCriteriaQuery(criteriaQuery1, true);
  151. Map<String, List<String>> ruleMap = new HashMap<>();
  152. // 得到登录人的职位
  153. List<String> departidList = new ArrayList<>();
  154. if (tsUserOrgList != null && tsUserOrgList.size() > 0) {
  155. for (TSUserOrg tsUserOrg : tsUserOrgList) {
  156. departidList.add(tsUserOrg.getTsDepart().getId());
  157. }
  158. }
  159. // 得到操作人的岗位
  160. List<String> inPostidList = new ArrayList<>();
  161. if (userAndUserPersonnelDtoList != null && userAndUserPersonnelDtoList.size() > 0) {
  162. for (UserAndUserPersonnelDto userInfoDto : userAndUserPersonnelDtoList) {
  163. if (StringUtil.isNotEmpty(userInfoDto.getInPostid())) {
  164. if (!inPostidList.contains(userInfoDto.getInPostid())) {
  165. inPostidList.add(userInfoDto.getInPostid());
  166. }
  167. }
  168. }
  169. }
  170. ruleMap.put("departId", departidList);
  171. ruleMap.put("inPostid", inPostidList);
  172. return ruleMap;
  173. }
  174. /**
  175. * 加班申请初始化请求
  176. *
  177. * @param response
  178. * @param dataGrid
  179. * @author刘梦祥
  180. * @Date 2021年11月25日16:05:09
  181. */
  182. @RequestMapping(params = "datagrid")
  183. public void datagrid(HttpServletResponse response, HttpServletRequest request, DataGrid dataGrid) {
  184. try {
  185. Map<String, String> queryMap = new HashMap<>();
  186. String queryStr = " where 1 = 1 ";
  187. if (StringUtil.isNotEmpty(request.getParameter("departId"))) {
  188. queryMap.put("depart_id", request.getParameter("departId"));
  189. }
  190. if (StringUtil.isNotEmpty(request.getParameter("requestStatus"))) {
  191. queryMap.put("request_status", request.getParameter("requestStatus"));
  192. }
  193. for (String queryKey : queryMap.keySet()) {
  194. queryStr += " and " + queryKey + " = \"" + queryMap.get(queryKey) + "\" ";
  195. }
  196. List<Map<String, Object>> dataGridList = this.systemService.toDataGridByDataGrid("t_bus_activiti_overtime", "agent_user_id", "request_id", "create_date", dataGrid, queryStr);
  197. dataGrid.setResults(dataGridList);
  198. TagUtil.datagrid(response, dataGrid);
  199. } catch (Exception e) {
  200. throw new BusinessException(e.getMessage());
  201. }
  202. }
  203. /**
  204. * 休假申请初始化请求
  205. *
  206. * @param response
  207. * @param dataGrid
  208. * @author刘梦祥
  209. * @Date 2021年11月25日16:05:09
  210. */
  211. @RequestMapping(params = "vacationDatagrid")
  212. public void vacationDatagrid(HttpServletResponse response, HttpServletRequest request, DataGrid dataGrid) {
  213. try {
  214. StringBuffer queryStr = new StringBuffer();
  215. queryStr.append(" where 1 = 1 ");
  216. // 根据条件处理userid(既有用户名称又有科室id)
  217. if (StringUtil.isNotEmpty(request.getParameter("userRealName")) && StringUtil.isNotEmpty(request.getParameter("departId"))) {
  218. queryStr.append(" and user_id in (select tsbu.id as userIds from t_s_base_user tsbu LEFT JOIN t_s_user_org tsuo on tsuo.user_id = tsbu.ID where tsbu.realname like \"%" + request.getParameter("userRealName") + "%\" and tsuo.org_id = \"" + request.getParameter("departId") + "\") group by tsbu.id ");
  219. // 只有用户名称
  220. } else if (StringUtil.isNotEmpty(request.getParameter("userRealName"))) {
  221. queryStr.append(" and user_id in (select tsbu.id as userIds from t_s_base_user tsbu where tsbu.realname like \"%" + request.getParameter("userRealName") + "%\" group by tsbu.id ) ");
  222. // 只有科室id
  223. } else if (StringUtil.isNotEmpty(request.getParameter("departId"))) {
  224. queryStr.append(" and user_id in (select tsuo.user_id as userIds from t_s_user_org tsuo where tsuo.org_id = \"" + request.getParameter("departId") + "\" group by tsuo.user_id ) ");
  225. }
  226. // 封装审批状态查询条件
  227. if (StringUtil.isNotEmpty(request.getParameter("requestStatus"))) {
  228. queryStr.append(" and request_status = \"" + request.getParameter("requestStatus") + "\"");
  229. }
  230. // 封装休假类型查询条件
  231. if (StringUtil.isNotEmpty(request.getParameter("vacationType"))) {
  232. queryStr.append(" and vacation_type = " + request.getParameter("vacationType"));
  233. }
  234. // 封装休假期间查询条件
  235. if (StringUtil.isNotEmpty(request.getParameter("vacationDate_begin")) && StringUtil.isNotEmpty(request.getParameter("vacationDate_end"))) {
  236. queryStr.append(" and vacation_start_date >= \"" + request.getParameter("vacationDate_begin") + "\"");
  237. queryStr.append(" and vacation_end_date >= \"" + request.getParameter("vacationDate_end") + "\"");
  238. }
  239. // 封装申请日期查询条件
  240. if (StringUtil.isNotEmpty(request.getParameter("createTime_begin")) && StringUtil.isNotEmpty(request.getParameter("createTime_end"))) {
  241. queryStr.append(" and create_time between \"" + request.getParameter("createTime_begin") + "\" and \"" + request.getParameter("createTime_end") + "\" ");
  242. }
  243. List<Map<String, Object>> dataGridList = this.systemService.toDataGridByDataGrid("t_bus_activiti_overtime_vacation", "create_user", "request_id", "create_time", dataGrid, queryStr.toString());
  244. // 自定义时间字段赋值,根据UserId得到科室信息
  245. if (dataGridList != null && dataGridList.size() > 0) {
  246. for (Map<String, Object> dataGridItem : dataGridList) {
  247. if (dataGridItem.containsKey("vacationStartDate")) {
  248. dataGridItem.put("vacationStartDateStr", simpleDateFormatYMDHM.format(dataGridItem.get("vacationStartDate")));
  249. }
  250. if (dataGridItem.containsKey("vacationEndDate")) {
  251. dataGridItem.put("vacationEndDateStr", simpleDateFormatYMDHM.format(dataGridItem.get("vacationEndDate")));
  252. }
  253. if (dataGridItem.containsKey("userId")) {
  254. String getOrgIdByUserIdSqlStr = "select org_id from t_s_user_org where user_id = \"" + dataGridItem.get("userId") + "\" limit 1;";
  255. Map<String, Object> getOrgIdByUserIdSqlData = systemService.findOneForJdbc(getOrgIdByUserIdSqlStr);
  256. if (getOrgIdByUserIdSqlData.containsKey("org_id")) {
  257. dataGridItem.put("departId", getOrgIdByUserIdSqlData.get("org_id"));
  258. }
  259. }
  260. }
  261. }
  262. dataGrid.setResults(dataGridList);
  263. TagUtil.datagrid(response, dataGrid);
  264. } catch (Exception e) {
  265. throw new BusinessException(e.getMessage());
  266. }
  267. }
  268. /**
  269. * 根据流程id返回按钮权限
  270. *
  271. * @param requestId
  272. * @param btuRule
  273. * @return
  274. * @author 刘梦祥
  275. * @Date 2021年12月1日14:58:22
  276. */
  277. public Integer getRequestBtuNumber(String requestId, Integer btuRule) {
  278. if (requestId != null) {
  279. // 获取当前操作人的信息
  280. Map<String, List<String>> ruleMap = this.getUserRuleMap();
  281. // 获取审批流id查询审批人信息
  282. TBRequestEntity tbRequestEntity = this.systemService.getEntity(TBRequestEntity.class, requestId);
  283. if (tbRequestEntity != null && tbRequestEntity.getCurrentRulerId() != null && !"".equals(tbRequestEntity.getCurrentRulerId())) {
  284. JSONObject currentRulerMap = JSONObject.parseObject(tbRequestEntity.getCurrentRulerId());
  285. if (currentRulerMap.containsKey("userId")) {
  286. if (currentRulerMap.get("userId").equals(ResourceUtil.getSessionUser().getId())) {
  287. btuRule += 2;
  288. }
  289. } else {
  290. if (ruleMap != null) {
  291. if (currentRulerMap.containsKey("departId") && ruleMap.get("departId").contains(currentRulerMap.get("departId").toString()) && currentRulerMap.containsKey("inPostid") && ruleMap.get("inPostid").contains(currentRulerMap.get("inPostid").toString())) {
  292. btuRule += 2;
  293. }
  294. }
  295. }
  296. }
  297. // 获取撤回流程权限,权限标识为4(根据流程id查询一下t_b_request_feedback:流程进度反馈表中的记录,没有数据或者最后一条状态是已驳回就可以撤回)也就是说前端只有按钮权限为5、7
  298. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  299. criteriaQuery.eq("requestId", requestId);
  300. criteriaQuery.addOrder("createdAt", SortDirection.desc);
  301. criteriaQuery.add();
  302. List<TBRequestFeedbackEntity> tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(criteriaQuery, true);
  303. if (tbRequestFeedbackEntityList != null && tbRequestFeedbackEntityList.size() > 0) {
  304. // 存在审批数据,且最后的审批结果为“已驳回”的话就可以撤回流程
  305. if (tbRequestFeedbackEntityList.get(tbRequestFeedbackEntityList.size() - 1).getFeedbackStatus().contains("驳回")) {
  306. btuRule += 4;
  307. }
  308. } else {
  309. // 不存在审批数据
  310. btuRule += 4;
  311. }
  312. }
  313. return btuRule;
  314. }
  315. /**
  316. * 加班申请初始化请求
  317. *
  318. * @param response
  319. * @param dataGrid
  320. * @author刘梦祥
  321. * @Date 2021年11月25日16:05:09
  322. */
  323. @RequestMapping(params = "AutidDatagrid")
  324. public void AutidDatagrid(HttpServletResponse response, DataGrid dataGrid) {
  325. try {
  326. List<TBusActivitiOvertimeAuditEntity> tbas = this.systemService.getListByCriteriaQuery(new CriteriaQuery(TBusActivitiOvertimeAuditEntity.class, new DataGrid()), true);
  327. List<String> noIds = new ArrayList<>();
  328. for (TBusActivitiOvertimeAuditEntity tbasiTem : tbas) {
  329. noIds.add(tbasiTem.getOvertimeIds());
  330. }
  331. CriteriaQuery cq = new CriteriaQuery(TBusActivitiOvertimeEntity.class, dataGrid);
  332. cq.eq("requestStatus", "已通过");
  333. cq.notin("id", noIds.toArray());
  334. cq.add();
  335. // 获取表中所有的加班申请数据
  336. List<TBusActivitiOvertimeEntity> TBusActivitiOvertimeEntityList = this.tBusActivitiOvertimeService.getListByCriteriaQuery(cq, true);
  337. HttpSession session = ContextHolderUtils.getSession();
  338. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  339. for (TBusActivitiOvertimeEntity tboe : TBusActivitiOvertimeEntityList) {
  340. tboe.setVoucherUserId(tuser.getId());
  341. }
  342. dataGrid.setTotal(TBusActivitiOvertimeEntityList.size());
  343. dataGrid.setResults(TBusActivitiOvertimeEntityList);
  344. TagUtil.datagrid(response, dataGrid);
  345. } catch (Exception e) {
  346. throw new BusinessException(e.getMessage());
  347. }
  348. }
  349. /**
  350. * 加班审核初始化请求
  351. *
  352. * @param response
  353. * @param dataGrid
  354. * @author刘梦祥
  355. * @Date 2021年11月25日16:05:09
  356. */
  357. @RequestMapping(params = "auditDatagrid")
  358. public void auditDatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  359. try {
  360. Map<String, String> queryMap = new HashMap<>();
  361. String queryStr = " where 1 = 1 ";
  362. if (StringUtil.isNotEmpty(request.getParameter("departId"))) {
  363. queryMap.put("depart_id", request.getParameter("departId"));
  364. }
  365. if (StringUtil.isNotEmpty(request.getParameter("requestStatus"))) {
  366. queryMap.put("request_status", request.getParameter("requestStatus"));
  367. }
  368. for (String queryKey : queryMap.keySet()) {
  369. queryStr += " and " + queryKey + " = \"" + queryMap.get(queryKey) + "\" ";
  370. }
  371. if (StringUtil.isNotEmpty(request.getParameter("createTime_begin")) && StringUtil.isNotEmpty(request.getParameter("createTime_end"))) {
  372. queryStr += " and create_time between \"" + request.getParameter("createTime_begin") + "\" and \"" + request.getParameter("createTime_end") + "\" ";
  373. }
  374. List<Map<String, Object>> dataGridList = this.systemService.toDataGridByDataGrid("t_bus_activiti_overtime_audit", "create_user", "request_id", "create_time", dataGrid, queryStr);
  375. if (dataGridList != null && dataGridList.size() > 0) {
  376. for (Map<String, Object> dataGridItem : dataGridList) {
  377. // 根据id获取对应的加班详情数据
  378. if (dataGridItem.containsKey("overtimeIds")) {
  379. String overTimeId = String.valueOf(dataGridItem.get("overtimeIds"));
  380. TBusActivitiOvertimeEntity tBusActivitiOvertime = this.systemService.getEntity(TBusActivitiOvertimeEntity.class, overTimeId);
  381. TBusActivitiOvertimeAuditEntity tbao = new TBusActivitiOvertimeAuditEntity();
  382. // 科室
  383. dataGridItem.put("departId", tBusActivitiOvertime.getDepartId());
  384. // 加班人数
  385. dataGridItem.put("overTimeNumber", tBusActivitiOvertime.getUserCount());
  386. // 备注
  387. dataGridItem.put("remake", tBusActivitiOvertime.getReason());
  388. // 总加班费
  389. dataGridItem.put("overTimeTotalAmount", tBusActivitiOvertime.getTotalMoney());
  390. // 加班类型
  391. dataGridItem.put("overTimeType", tBusActivitiOvertime.getOvertimeSettlementType());
  392. }
  393. }
  394. }
  395. dataGrid.setResults(dataGridList);
  396. TagUtil.datagrid(response, dataGrid);
  397. } catch (Exception e) {
  398. throw new BusinessException(e.getMessage());
  399. }
  400. }
  401. /**
  402. * 删除加班申请
  403. *
  404. * @return
  405. */
  406. @RequestMapping(params = "doDel")
  407. @ResponseBody
  408. public AjaxJson doDel(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest request) {
  409. AjaxJson j = new AjaxJson();
  410. tBusActivitiOvertime = systemService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  411. String message = "加班申请删除成功";
  412. try {
  413. tBusActivitiOvertimeService.delMain(tBusActivitiOvertime);
  414. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  415. } catch (Exception e) {
  416. e.printStackTrace();
  417. message = "加班申请删除失败";
  418. throw new BusinessException(e.getMessage());
  419. }
  420. j.setMsg(message);
  421. return j;
  422. }
  423. /**
  424. * 删除加班审核
  425. *
  426. * @return AjaxJson
  427. * @Author 刘梦祥
  428. * @Date 2021年11月30日16:39:54
  429. */
  430. @RequestMapping(params = "doAuditDel")
  431. @ResponseBody
  432. public AjaxJson doAuditDel(TBusActivitiOvertimeAuditEntity tBusAudit, HttpServletRequest request) {
  433. AjaxJson j = new AjaxJson();
  434. try {
  435. this.systemService.deleteEntityById(TBusActivitiOvertimeAuditEntity.class, tBusAudit.getId());
  436. systemService.addLog("加班审核记录删除成功!", Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  437. j.setMsg("加班审核记录删除成功!");
  438. } catch (Exception e) {
  439. e.printStackTrace();
  440. j.setSuccess(false);
  441. j.setMsg("加班审核记录删除失败!");
  442. throw new BusinessException(e.getMessage());
  443. }
  444. return j;
  445. }
  446. /**
  447. * 删除休假审核
  448. *
  449. * @return AjaxJson
  450. * @Author 刘梦祥
  451. * @Date 2021年12月9日19:07:09
  452. */
  453. @RequestMapping(params = "doVacationDel")
  454. @ResponseBody
  455. public AjaxJson doVacationDel(TBusActivitiOvertimeVacationEntity tBusAudit, HttpServletRequest request) {
  456. AjaxJson j = new AjaxJson();
  457. try {
  458. this.systemService.deleteEntityById(TBusActivitiOvertimeVacationEntity.class, tBusAudit.getId());
  459. systemService.addLog("休假申请记录删除成功!", Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  460. j.setMsg("休假申请记录删除成功!");
  461. } catch (Exception e) {
  462. e.printStackTrace();
  463. j.setSuccess(false);
  464. j.setMsg("休假申请记录删除失败!");
  465. throw new BusinessException(e.getMessage());
  466. }
  467. return j;
  468. }
  469. /**
  470. * 批量删除加班申请
  471. *
  472. * @return
  473. */
  474. @RequestMapping(params = "doBatchDel")
  475. @ResponseBody
  476. public AjaxJson doBatchDel(String ids, HttpServletRequest request) {
  477. AjaxJson j = new AjaxJson();
  478. String message = "加班申请删除成功";
  479. try {
  480. for (String id : ids.split(",")) {
  481. TBusActivitiOvertimeEntity tBusActivitiOvertime = systemService.getEntity(TBusActivitiOvertimeEntity.class,
  482. id
  483. );
  484. tBusActivitiOvertimeService.delMain(tBusActivitiOvertime);
  485. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  486. }
  487. } catch (Exception e) {
  488. e.printStackTrace();
  489. message = "加班申请删除失败";
  490. throw new BusinessException(e.getMessage());
  491. }
  492. j.setMsg(message);
  493. return j;
  494. }
  495. /**
  496. * 添加加班申请
  497. *
  498. * @return
  499. */
  500. @RequestMapping(params = "doAdd")
  501. @ResponseBody
  502. public AjaxJson doAdd(TBusActivitiOvertimeEntity tBusActivitiOvertime, TBusActivitiOvertimePage tBusActivitiOvertimePage, HttpServletRequest request) {
  503. // update操作
  504. if (StringUtils.isNotBlank(tBusActivitiOvertime.getId())) {
  505. return doUpdate(tBusActivitiOvertime, tBusActivitiOvertimePage, request);
  506. }
  507. AjaxJson j = new AjaxJson();
  508. String message = "添加成功";
  509. try {
  510. // 审批状态初始化
  511. tBusActivitiOvertime.setRequestStatus("待提交");
  512. tBusActivitiOvertime.setAgentUserId(ResourceUtil.getSessionUser().getId());
  513. tBusActivitiOvertimeService.addMain(tBusActivitiOvertime, tBusActivitiOvertimePage.getTBusActivitiOvertimeDetailList());
  514. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  515. } catch (Exception e) {
  516. e.printStackTrace();
  517. message = "加班申请添加失败";
  518. throw new BusinessException(e.getMessage());
  519. }
  520. j.setMsg(message);
  521. return j;
  522. }
  523. /**
  524. * 添加休假申请
  525. *
  526. * @return AjaxJson
  527. * @Author 刘梦祥
  528. * @Date 2021年12月9日13:29:46
  529. */
  530. @RequestMapping(params = "doVacationAdd")
  531. @ResponseBody
  532. public AjaxJson doVacationAdd(TBusActivitiOvertimeVacationEntity tBVacationItem) {
  533. AjaxJson j = new AjaxJson();
  534. try {
  535. if (StringUtil.isNotEmpty(tBVacationItem.getId())) {
  536. // 更新操作
  537. tBVacationItem.setUpdateUser(ResourceUtil.getSessionUser().getId());
  538. tBVacationItem.setUpdateTime(new Date());
  539. j.setMsg("休假申请更新成功");
  540. } else {
  541. // 新增操作
  542. tBVacationItem.setId(UUID.randomUUID().toString());
  543. tBVacationItem.setRequestStatus("待提交");
  544. tBVacationItem.setCreateUser(ResourceUtil.getSessionUser().getId());
  545. tBVacationItem.setCreateTime(new Date());
  546. j.setMsg("休假申请新增成功");
  547. }
  548. this.systemService.saveOrUpdate(tBVacationItem);
  549. } catch (Exception e) {
  550. e.printStackTrace();
  551. j.setSuccess(false);
  552. j.setMsg("休假申请操作失败");
  553. throw new BusinessException(e.getMessage());
  554. }
  555. return j;
  556. }
  557. /**
  558. * 更新加班申请
  559. *
  560. * @return
  561. */
  562. @RequestMapping(params = "doUpdate")
  563. @ResponseBody
  564. public AjaxJson doUpdate(TBusActivitiOvertimeEntity tBusActivitiOvertime, TBusActivitiOvertimePage tBusActivitiOvertimePage, HttpServletRequest request) {
  565. List<TBusActivitiOvertimeDetailEntity> tBusActivitiOvertimeDetailList = tBusActivitiOvertimePage.getTBusActivitiOvertimeDetailList();
  566. AjaxJson j = new AjaxJson();
  567. String message = "更新成功";
  568. try {
  569. tBusActivitiOvertime.setUserCount(tBusActivitiOvertimeDetailList.size());
  570. tBusActivitiOvertimeService.updateMain(tBusActivitiOvertime, tBusActivitiOvertimeDetailList);
  571. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  572. if (StringUtil.isNotEmpty(request.getParameter("pagePath")) && "add".equals(request.getParameter("pagePath"))) {
  573. // 向加班审批表中插入数据
  574. TBusActivitiOvertimeAuditEntity tBusActivitiOvertimeAuditEntity = new TBusActivitiOvertimeAuditEntity();
  575. tBusActivitiOvertimeAuditEntity.setId(UUID.randomUUID().toString());
  576. tBusActivitiOvertimeAuditEntity.setOvertimeIds(tBusActivitiOvertime.getId());
  577. tBusActivitiOvertimeAuditEntity.setDepartId(tBusActivitiOvertime.getDepartId());
  578. tBusActivitiOvertimeAuditEntity.setRemake(tBusActivitiOvertime.getReason());
  579. tBusActivitiOvertimeAuditEntity.setRequestStatus("待提交");
  580. HttpSession session = ContextHolderUtils.getSession();
  581. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  582. tBusActivitiOvertimeAuditEntity.setCreateUser(tuser.getId());
  583. tBusActivitiOvertimeAuditEntity.setCreateTime(new Date());
  584. this.tBusActivitiOvertimeService.saveOrUpdate(tBusActivitiOvertimeAuditEntity);
  585. message = "添加成功";
  586. }
  587. } catch (Exception e) {
  588. e.printStackTrace();
  589. message = "更新加班申请失败";
  590. throw new BusinessException(e.getMessage());
  591. }
  592. j.setMsg(message);
  593. return j;
  594. }
  595. /**
  596. * 加班申请新增页面跳转
  597. *
  598. * @return
  599. */
  600. @RequestMapping(params = "goAdd")
  601. public ModelAndView goAdd(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  602. if (StringUtil.isNotEmpty(tBusActivitiOvertime.getId())) {
  603. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  604. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  605. }
  606. String userId = ResourceUtil.getSessionUser().getId();
  607. req.setAttribute("userId", userId);
  608. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  609. req.setAttribute("month", format.format(new Date()));
  610. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertime-add");
  611. }
  612. /**
  613. * @return ModelAndView
  614. * @Title: goVacationAdd
  615. * @Description: 休假申请录入以及编辑页面跳转
  616. * @author 刘梦祥
  617. * @date 2021年12月9日10:27:54
  618. */
  619. @RequestMapping(params = "goVacationAdd")
  620. public ModelAndView goVacationAdd(TBusActivitiOvertimeVacationEntity tbItem, HttpServletRequest req) {
  621. if (StringUtil.isNotEmpty(tbItem.getId())) {
  622. tbItem = this.systemService.getEntity(TBusActivitiOvertimeVacationEntity.class, tbItem.getId());
  623. if (tbItem != null && StringUtil.isNotEmpty(tbItem.getUserId())) {
  624. // 得到科室信息
  625. CriteriaQuery criteriaQuery = new CriteriaQuery(TSUserOrg.class, new DataGrid());
  626. criteriaQuery.eq("tsUser.id", tbItem.getUserId());
  627. criteriaQuery.add();
  628. List<TSUserOrg> tsUserOrgList = this.systemService.getListByCriteriaQuery(criteriaQuery, true);
  629. if (tsUserOrgList != null && tsUserOrgList.size() > 0) {
  630. tbItem.setDepartId(tsUserOrgList.get(0).getTsDepart().getId());
  631. } else {
  632. tbItem.setDepartId("科室信息获取异常");
  633. }
  634. // 得到工龄
  635. TSUser tsUser = this.systemService.getEntity(TSUser.class, tbItem.getUserId());
  636. if (tsUser.getEmploymentDate() != null) {
  637. long workTime = new Date().getTime() - tsUser.getEmploymentDate().getTime();
  638. tbItem.setWorkYear(String.valueOf(Math.floor(workTime / (365L * 24 * 60 * 60 * 1000))));
  639. } else {
  640. tbItem.setWorkYear("该员工入职日期获取失败");
  641. }
  642. TSBaseUser tsBaseUser = this.systemService.getEntity(TSBaseUser.class, tbItem.getUserId());
  643. // 得到真实姓名
  644. tbItem.setUserRealName(tsBaseUser.getRealName());
  645. }
  646. // 计算休假总天数(首先获取休假类型)
  647. // if (StringUtil.isNotEmpty(tbItem.getVacationType())) {
  648. // long vacationTime = tbItem.getVacationEndDate().getTime() - tbItem.getVacationStartDate().getTime();
  649. // if ("7".equals(tbItem.getVacationType())) {
  650. // tbItem.setVacationTotalDay(String.valueOf(Math.floor(vacationTime / (60 * 60 * 1000))));
  651. // } else {
  652. // tbItem.setVacationTotalDay(String.valueOf(Math.floor(vacationTime / (24 * 60 * 60 * 1000))));
  653. // }
  654. // } else {
  655. // tbItem.setVacationTotalDay("休假总天数计算异常");
  656. // }
  657. req.setAttribute("entity", tbItem);
  658. if (StringUtil.isNotEmpty(req.getParameter("pageType"))) {
  659. req.setAttribute("pageType", req.getParameter("pageType"));
  660. } else {
  661. req.setAttribute("pageType", "Detail");
  662. }
  663. }
  664. // 返回当前用户的科室id
  665. if (ResourceUtil.getSessionUser() != null) {
  666. if (StringUtil.isNotEmpty(ResourceUtil.getSessionUser().getDepartid())) {
  667. req.setAttribute("departid", ResourceUtil.getSessionUser().getDepartid());
  668. }
  669. }
  670. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeVacationList-AUD");
  671. }
  672. /**
  673. * 加班审核选取页面跳转
  674. *
  675. * @return
  676. */
  677. @RequestMapping(params = "goAuditAdd")
  678. public ModelAndView goAuditAdd(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  679. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertime_AutidAddWindow");
  680. }
  681. /**
  682. * @return ModelAndView
  683. * @Title: goWorkingHoursAdd
  684. * @Description: 按工时结算页面跳转
  685. * @author 刘梦祥
  686. * @date 2021年11月3日15:04:05
  687. */
  688. @RequestMapping(params = "goWorkingHoursAdd")
  689. public ModelAndView goWorkingHoursAdd(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  690. String userId = ResourceUtil.getSessionUser().getId();
  691. req.setAttribute("userId", userId);
  692. // 编辑或查看页面
  693. if (StringUtil.isNotEmpty(tBusActivitiOvertime.getId())) {
  694. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  695. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  696. } else {
  697. // 添加页面
  698. // 根据userid获取用户科室
  699. TSBaseUser tsBaseUser = this.systemService.getEntity(TSBaseUser.class, userId);
  700. tBusActivitiOvertime.setDepartId(tsBaseUser.getDepartid());
  701. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  702. }
  703. req.setAttribute("overtimeSettlementType", "1");
  704. req.setAttribute("pageType", "Add");
  705. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  706. req.setAttribute("month", format.format(new Date()));
  707. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeWorkingHours-add");
  708. }
  709. /**
  710. * @return ModelAndView
  711. * @Title: goTonnageAdd
  712. * @Description: 按吨数结算页面跳转
  713. * @author 刘梦祥
  714. * @date 2021年11月3日15:04:05
  715. */
  716. @RequestMapping(params = "goTonnageAdd")
  717. public ModelAndView goTonnageAdd(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  718. String userId = ResourceUtil.getSessionUser().getId();
  719. req.setAttribute("userId", userId);
  720. if (StringUtil.isNotEmpty(tBusActivitiOvertime.getId())) {
  721. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  722. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  723. } else {
  724. // 根据userid获取用户科室
  725. TSBaseUser tsBaseUser = this.systemService.getEntity(TSBaseUser.class, userId);
  726. tBusActivitiOvertime.setDepartId(tsBaseUser.getDepartid());
  727. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  728. }
  729. req.setAttribute("overtimeSettlementType", "2");
  730. req.setAttribute("pageType", "Add");
  731. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  732. req.setAttribute("month", format.format(new Date()));
  733. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeWorkingHours-add");
  734. }
  735. /**
  736. * 加班申请编辑页面跳转
  737. *
  738. * @return
  739. */
  740. @RequestMapping(params = "goUpdate")
  741. public ModelAndView goUpdate(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  742. if (StringUtil.isNotEmpty(tBusActivitiOvertime.getId())) {
  743. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  744. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  745. req.setAttribute("overtimeSettlementType", tBusActivitiOvertime.getOvertimeSettlementType());
  746. req.setAttribute("pageType", "Update");
  747. }
  748. String userId = ResourceUtil.getSessionUser().getId();
  749. if (StringUtil.isNotEmpty(req.getParameter("pagePath"))) {
  750. req.setAttribute("pagePath", req.getParameter("pagePath"));
  751. }
  752. req.setAttribute("userId", userId);
  753. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeWorkingHours-add");
  754. }
  755. /**
  756. * 加班申请编辑页面跳转
  757. *
  758. * @return
  759. */
  760. @RequestMapping(params = "goDetail")
  761. public ModelAndView goDetail(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  762. if (StringUtil.isNotEmpty(req.getParameter("pageTo")) && "Audit".equals(req.getParameter("pageTo"))) {
  763. TBusActivitiOvertimeAuditEntity tBusActivitiOvertimeAuditEntity = this.systemService.getEntity(TBusActivitiOvertimeAuditEntity.class, tBusActivitiOvertime.getId());
  764. if (tBusActivitiOvertimeAuditEntity != null) {
  765. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertimeAuditEntity.getOvertimeIds());
  766. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  767. req.setAttribute("overtimeSettlementType", tBusActivitiOvertime.getOvertimeSettlementType());
  768. req.setAttribute("pageType", "Detail");
  769. }
  770. } else if (StringUtil.isNotEmpty(tBusActivitiOvertime.getId())) {
  771. tBusActivitiOvertime = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, tBusActivitiOvertime.getId());
  772. req.setAttribute("tBusActivitiOvertimePage", tBusActivitiOvertime);
  773. req.setAttribute("overtimeSettlementType", tBusActivitiOvertime.getOvertimeSettlementType());
  774. req.setAttribute("pageType", "Detail");
  775. }
  776. String userId = ResourceUtil.getSessionUser().getId();
  777. req.setAttribute("userId", userId);
  778. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeWorkingHours-add");
  779. }
  780. /**
  781. * 加载明细列表[加班详情]
  782. *
  783. * @return
  784. */
  785. @RequestMapping(params = "tBusActivitiOvertimeDetailList")
  786. public ModelAndView tBusActivitiOvertimeDetailList(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest req) {
  787. //===================================================================================
  788. //获取参数
  789. Object id0 = tBusActivitiOvertime.getId();
  790. String overtimeSettlementType = tBusActivitiOvertime.getOvertimeSettlementType();
  791. TBusActivitiOvertimeEntity overtimeEntity = systemService.getEntity(TBusActivitiOvertimeEntity.class, id0.toString());
  792. //===================================================================================
  793. //查询-加班详情
  794. String hql0 = "from TBusActivitiOvertimeDetailEntity where 1 = 1 AND overtimeId =? ";
  795. try {
  796. List<TBusActivitiOvertimeDetailEntity> tBusActivitiOvertimeDetailEntityList = systemService.findHql(hql0, id0);
  797. for (TBusActivitiOvertimeDetailEntity t : tBusActivitiOvertimeDetailEntityList) {
  798. t.setDepartId(overtimeEntity.getDepartId());
  799. }
  800. req.setAttribute("tBusActivitiOvertimeDetailList", tBusActivitiOvertimeDetailEntityList);
  801. req.setAttribute("overtimeSettlementType", overtimeSettlementType);
  802. if (StringUtil.isNotEmpty(req.getParameter("pagePath"))) {
  803. req.setAttribute("pagePath", req.getParameter("pagePath"));
  804. }
  805. } catch (Exception e) {
  806. logger.info(e.getMessage());
  807. }
  808. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertimeDetailList");
  809. }
  810. /**
  811. * 导出excel
  812. *
  813. * @param request
  814. * @param response
  815. */
  816. @RequestMapping(params = "exportXls")
  817. public String exportXls(TBusActivitiOvertimeEntity tBusActivitiOvertime, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid, ModelMap map) {
  818. CriteriaQuery cq = new CriteriaQuery(TBusActivitiOvertimeEntity.class, dataGrid);
  819. //查询条件组装器
  820. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tBusActivitiOvertime);
  821. try {
  822. //自定义追加查询条件
  823. } catch (Exception e) {
  824. throw new BusinessException(e.getMessage());
  825. }
  826. cq.add();
  827. List<TBusActivitiOvertimeEntity> list = this.tBusActivitiOvertimeService.getListByCriteriaQuery(cq, false);
  828. List<TBusActivitiOvertimePage> pageList = new ArrayList<TBusActivitiOvertimePage>();
  829. if (list != null && list.size() > 0) {
  830. for (TBusActivitiOvertimeEntity entity : list) {
  831. try {
  832. TBusActivitiOvertimePage page = new TBusActivitiOvertimePage();
  833. MyBeanUtils.copyBeanNotNull2Bean(entity, page);
  834. Object id0 = entity.getId();
  835. String hql0 = "from TBusActivitiOvertimeDetailEntity where 1 = 1 AND oVERTIME_ID =? ";
  836. List<TBusActivitiOvertimeDetailEntity> tBusActivitiOvertimeDetailEntityList = systemService.findHql(hql0, id0);
  837. page.setTBusActivitiOvertimeDetailList(tBusActivitiOvertimeDetailEntityList);
  838. pageList.add(page);
  839. } catch (Exception e) {
  840. logger.info(e.getMessage());
  841. }
  842. }
  843. }
  844. map.put(NormalExcelConstants.FILE_NAME, "加班申请");
  845. map.put(NormalExcelConstants.CLASS, TBusActivitiOvertimePage.class);
  846. map.put(NormalExcelConstants.PARAMS, new ExportParams("加班申请列表", "导出人:Jeecg",
  847. "导出信息"));
  848. map.put(NormalExcelConstants.DATA_LIST, pageList);
  849. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  850. }
  851. /**
  852. * 通过excel导入数据
  853. *
  854. * @param request
  855. * @param
  856. * @return
  857. */
  858. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  859. @ResponseBody
  860. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  861. AjaxJson j = new AjaxJson();
  862. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  863. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  864. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  865. MultipartFile file = entity.getValue();// 获取上传文件对象
  866. ImportParams params = new ImportParams();
  867. params.setTitleRows(2);
  868. params.setHeadRows(2);
  869. params.setNeedSave(true);
  870. try {
  871. List<TBusActivitiOvertimePage> list = ExcelImportUtil.importExcel(file.getInputStream(), TBusActivitiOvertimePage.class, params);
  872. TBusActivitiOvertimeEntity entity1 = null;
  873. for (TBusActivitiOvertimePage page : list) {
  874. entity1 = new TBusActivitiOvertimeEntity();
  875. MyBeanUtils.copyBeanNotNull2Bean(page, entity1);
  876. tBusActivitiOvertimeService.addMain(entity1, page.getTBusActivitiOvertimeDetailList());
  877. }
  878. j.setMsg("文件导入成功!");
  879. } catch (Exception e) {
  880. j.setMsg("文件导入失败!");
  881. logger.error(ExceptionUtil.getExceptionMessage(e));
  882. } finally {
  883. try {
  884. file.getInputStream().close();
  885. } catch (IOException e) {
  886. e.printStackTrace();
  887. }
  888. }
  889. }
  890. return j;
  891. }
  892. /**
  893. * 导出excel 使模板
  894. */
  895. @RequestMapping(params = "exportXlsByT")
  896. public String exportXlsByT(ModelMap map) {
  897. map.put(NormalExcelConstants.FILE_NAME, "加班申请");
  898. map.put(NormalExcelConstants.CLASS, TBusActivitiOvertimePage.class);
  899. map.put(NormalExcelConstants.PARAMS, new ExportParams("加班申请列表", "导出人:" + ResourceUtil.getSessionUser().getRealName(),
  900. "导出信息"));
  901. map.put(NormalExcelConstants.DATA_LIST, new ArrayList());
  902. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  903. }
  904. /**
  905. * 导入功能跳转
  906. *
  907. * @return
  908. */
  909. @RequestMapping(params = "upload")
  910. public ModelAndView upload(HttpServletRequest req) {
  911. req.setAttribute("controller_name", "tBusActivitiOvertimeController");
  912. return new ModelAndView("common/upload/pub_excel_upload");
  913. }
  914. @RequestMapping(method = RequestMethod.GET)
  915. @ResponseBody
  916. public List<TBusActivitiOvertimeEntity> list() {
  917. List<TBusActivitiOvertimeEntity> listTBusActivitiOvertimes = tBusActivitiOvertimeService.getList(TBusActivitiOvertimeEntity.class);
  918. return listTBusActivitiOvertimes;
  919. }
  920. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  921. @ResponseBody
  922. public ResponseEntity<?> get(@PathVariable("id") String id) {
  923. TBusActivitiOvertimeEntity task = tBusActivitiOvertimeService.get(TBusActivitiOvertimeEntity.class, id);
  924. if (task == null) {
  925. return new ResponseEntity(HttpStatus.NOT_FOUND);
  926. }
  927. return new ResponseEntity(task, HttpStatus.OK);
  928. }
  929. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  930. @ResponseBody
  931. public ResponseEntity<?> create(@RequestBody TBusActivitiOvertimePage tBusActivitiOvertimePage, UriComponentsBuilder uriBuilder) {
  932. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  933. Set<ConstraintViolation<TBusActivitiOvertimePage>> failures = validator.validate(tBusActivitiOvertimePage);
  934. if (!failures.isEmpty()) {
  935. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  936. }
  937. //保存
  938. List<TBusActivitiOvertimeDetailEntity> tBusActivitiOvertimeDetailList = tBusActivitiOvertimePage.getTBusActivitiOvertimeDetailList();
  939. TBusActivitiOvertimeEntity tBusActivitiOvertime = new TBusActivitiOvertimeEntity();
  940. try {
  941. MyBeanUtils.copyBeanNotNull2Bean(tBusActivitiOvertime, tBusActivitiOvertimePage);
  942. } catch (Exception e) {
  943. logger.info(e.getMessage());
  944. }
  945. tBusActivitiOvertimeService.addMain(tBusActivitiOvertime, tBusActivitiOvertimeDetailList);
  946. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  947. String id = tBusActivitiOvertimePage.getId();
  948. URI uri = uriBuilder.path("/rest/tBusActivitiOvertimeController/" + id).build().toUri();
  949. HttpHeaders headers = new HttpHeaders();
  950. headers.setLocation(uri);
  951. return new ResponseEntity(headers, HttpStatus.CREATED);
  952. }
  953. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  954. public ResponseEntity<?> update(@RequestBody TBusActivitiOvertimePage tBusActivitiOvertimePage) {
  955. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  956. Set<ConstraintViolation<TBusActivitiOvertimePage>> failures = validator.validate(tBusActivitiOvertimePage);
  957. if (!failures.isEmpty()) {
  958. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  959. }
  960. //保存
  961. List<TBusActivitiOvertimeDetailEntity> tBusActivitiOvertimeDetailList = tBusActivitiOvertimePage.getTBusActivitiOvertimeDetailList();
  962. TBusActivitiOvertimeEntity tBusActivitiOvertime = new TBusActivitiOvertimeEntity();
  963. try {
  964. MyBeanUtils.copyBeanNotNull2Bean(tBusActivitiOvertime, tBusActivitiOvertimePage);
  965. } catch (Exception e) {
  966. logger.info(e.getMessage());
  967. }
  968. tBusActivitiOvertimeService.updateMain(tBusActivitiOvertime, tBusActivitiOvertimeDetailList);
  969. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  970. return new ResponseEntity(HttpStatus.NO_CONTENT);
  971. }
  972. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  973. @ResponseStatus(HttpStatus.NO_CONTENT)
  974. public void delete(@PathVariable("id") String id) {
  975. TBusActivitiOvertimeEntity tBusActivitiOvertime = tBusActivitiOvertimeService.get(TBusActivitiOvertimeEntity.class, id);
  976. tBusActivitiOvertimeService.delMain(tBusActivitiOvertime);
  977. }
  978. //审批
  979. @RequestMapping(params = "goView")
  980. public ModelAndView goView(TBusActivitiOvertimeEntity entity, HttpServletRequest req) {
  981. String userid = "";
  982. if (StringUtil.isNotEmpty(entity.getId())) {
  983. entity = tBusActivitiOvertimeService.getEntity(TBusActivitiOvertimeEntity.class, entity.getId());
  984. req.setAttribute("tBusActivitiOvertimePage", entity);
  985. }
  986. String taskId = oConvertUtils.getString(req.getParameter("taskId"));
  987. if (oConvertUtils.isNotEmpty(taskId)) {
  988. FormProcUtil.initWorkflowParam(req);
  989. req.setAttribute("taskId", taskId);
  990. }
  991. req.setAttribute("in_process", true);
  992. //加班预算
  993. /*String depId = entity.getDepartId();
  994. String month = entity.getMonth();
  995. double budget = tBOvertimeBudgetService.getMonthLeftBudget(depId, month);
  996. req.setAttribute("budget", budget);*/
  997. return new ModelAndView("cn/com/lzt/useractiviti/overtime/tBusActivitiOvertime-add");
  998. }
  999. //手机审批
  1000. @RequestMapping(params = "goViewMobile")
  1001. public ModelAndView goViewMobile(TBusActivitiOvertimeEntity entity, HttpServletRequest req) {
  1002. goView(entity, req);
  1003. Map<String, Object> data = new HashMap<>();
  1004. data.put("entity", req.getAttribute("tBusActivitiOvertimePage"));
  1005. return new JsonDataModelAndView(WXAjaxJson.success(data));
  1006. // return new ModelAndView("cn/com/lzt/useractiviti/overtime/overtime_view_mobile");
  1007. }
  1008. @RequestMapping(params = "getBaseHourWage")
  1009. @ResponseBody
  1010. public BigDecimal getBaseHourWage(@RequestParam("userId") String userId) {
  1011. try {
  1012. BigDecimal wage = userWageStrategyService.getBaseHourWage(userId);
  1013. return wage;
  1014. } catch (Exception e) {
  1015. e.printStackTrace();
  1016. }
  1017. return BigDecimal.ZERO;
  1018. }
  1019. @RequestMapping(params = "exportDetailPdf4Mobile")
  1020. public void exportDetailPdf4Mobile(@RequestParam("procInstId") String procInstId, HttpServletResponse response) {
  1021. ActivitiTools tools = ActivitiTools.getInstance(procInstId, true);
  1022. // ActivitiPdfExport pdfExport = tools.getPdfExport();
  1023. // exportPdf(pdfExport,tools.getBusId());
  1024. // pdfExport.procInstId(null);
  1025. tools.view(response);
  1026. }
  1027. private void exportPdf(ActivitiPdfExport pdfExport, String id) {
  1028. TBusActivitiOvertimeEntity entity = systemService.getEntity(TBusActivitiOvertimeEntity.class, id);
  1029. pdfExport
  1030. .table()
  1031. .cell("申请人", entity.getCreateName())
  1032. .cell("加班项目", entity.getDepName())
  1033. .cell("加班月份", entity.getMonth())
  1034. .cell("总时长", entity.getTotalHour().toString())
  1035. .cell("总金额", entity.getTotalMoney().toString())
  1036. .cell("加班原因", entity.getReason())
  1037. ;
  1038. List<TBusActivitiOvertimeDetailEntity> detailEntityList = systemService.findByProperty(TBusActivitiOvertimeDetailEntity.class, "overtimeId", id);
  1039. pdfExport.cell("");
  1040. PdfPTable detailTableHeader = pdfExport.createTable(7);
  1041. detailTableHeader.setWidthPercentage(100);
  1042. pdfExport.cell(detailTableHeader, "加班员工", true);
  1043. pdfExport.cell(detailTableHeader, "开始时间", true);
  1044. pdfExport.cell(detailTableHeader, "结束时间", true);
  1045. pdfExport.cell(detailTableHeader, "加班时长", true);
  1046. pdfExport.cell(detailTableHeader, "补偿方式", true);
  1047. pdfExport.cell(detailTableHeader, "加班费", true);
  1048. pdfExport.cell(detailTableHeader, "调休余额", true);
  1049. pdfExport.cell(detailTableHeader);
  1050. String yearMonth = entity.getMonth();
  1051. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  1052. String year = null;
  1053. try {
  1054. Date date = format.parse(yearMonth);
  1055. year = tbExchangeAccountService.getYear(date);
  1056. } catch (ParseException e) {
  1057. e.printStackTrace();
  1058. }
  1059. int i = 0;
  1060. for (TBusActivitiOvertimeDetailEntity detailEntity : detailEntityList) {
  1061. i++;
  1062. PdfPTable detailTable = pdfExport.createTable(7);
  1063. pdfExport.cell(detailTable, detailEntity.getRealName(), false);
  1064. pdfExport.cell(detailTable, DataUtils.formatDate(detailEntity.getStartTime(), "yyyy-MM-dd HH:mm:ss"), false);
  1065. pdfExport.cell(detailTable, DataUtils.formatDate(detailEntity.getEndTime(), "yyyy-MM-dd HH:mm:ss"), false);
  1066. pdfExport.cell(detailTable, detailEntity.getHour().toString(), false);
  1067. pdfExport.cell(detailTable, DictUtil.formatToTypeName(detailEntity.getCompensate(), "overtime_compensate"), false);
  1068. pdfExport.cell(detailTable, detailEntity.getMoney().toString(), false);
  1069. Double accountBalance = tbExchangeAccountService.getBalance(detailEntity.getUserid(), year, detailEntity.getCreateDate());
  1070. pdfExport.cell(detailTable, accountBalance.toString(), false);
  1071. pdfExport.cell("加班明细" + i, true);
  1072. pdfExport.cell(detailTable);
  1073. }
  1074. }
  1075. @RequestMapping(params = "list4all")
  1076. public ModelAndView list4all(HttpServletRequest request) {
  1077. return new ModelAndView("cn/com/lzt/useractiviti/overtime/overtime_list_all");
  1078. }
  1079. /**
  1080. * easyui AJAX请求数据
  1081. *
  1082. * @param request
  1083. * @param response
  1084. * @param dataGrid
  1085. */
  1086. @RequestMapping(params = "datagrid4all")
  1087. public void datagrid4all(TBusActivitiOvertimeEntity entity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  1088. CriteriaQuery cq = new CriteriaQuery(TBusActivitiOvertimeEntity.class, dataGrid);
  1089. if (StringUtils.isNotBlank(entity.getDepName())) {
  1090. cq.like("depName", "%" + entity.getDepName() + "%");
  1091. entity.setDepName(null);
  1092. }
  1093. if (StringUtils.isNotBlank(entity.getCreateName())) {
  1094. cq.like("createName", "%" + entity.getCreateName() + "%");
  1095. entity.setCreateName(null);
  1096. }
  1097. //查询条件组装器
  1098. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, entity, request.getParameterMap());
  1099. try {
  1100. //自定义追加查询条件
  1101. TSUser user = ResourceUtil.getSessionUser();
  1102. } catch (Exception e) {
  1103. throw new BusinessException(e.getMessage());
  1104. }
  1105. cq.add();
  1106. this.tBusActivitiOvertimeService.getDataGridReturn(cq, true);
  1107. TagUtil.datagrid(response, dataGrid);
  1108. }
  1109. }