ArrangeDutyOperateController.java 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175
  1. package cn.com.lzt.arrangedutyoperate.controller;
  2. import cn.com.lzt.arrangeduty.dto.ArrangeDutyDto;
  3. import cn.com.lzt.arrangeduty.dto.MealsSubsidyDto;
  4. import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI;
  5. import cn.com.lzt.arrangedutyoperate.dto.ArrangeDutyOperateDto;
  6. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  7. import cn.com.lzt.arrangedutyoperate.entity.ArrangeDutyOperateEntity;
  8. import cn.com.lzt.arrangedutyoperate.service.ArrangeDutyOperateServiceI;
  9. import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI;
  10. import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI;
  11. import cn.com.lzt.projarrangedetail.service.ProjarrangeDetailServiceI;
  12. import cn.com.lzt.projectpostdetail.entity.ProjectPostDetailEntity;
  13. import org.apache.log4j.Logger;
  14. import org.hibernate.Query;
  15. import org.jeecgframework.core.beanvalidator.BeanValidators;
  16. import org.jeecgframework.core.common.controller.BaseController;
  17. import org.jeecgframework.core.common.exception.BusinessException;
  18. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  19. import org.jeecgframework.core.common.model.json.AjaxJson;
  20. import org.jeecgframework.core.common.model.json.DataGrid;
  21. import org.jeecgframework.core.common.service.CommonService;
  22. import org.jeecgframework.core.constant.Globals;
  23. import org.jeecgframework.core.util.*;
  24. import org.jeecgframework.poi.excel.ExcelImportUtil;
  25. import org.jeecgframework.poi.excel.entity.ExportParams;
  26. import org.jeecgframework.poi.excel.entity.ImportParams;
  27. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  28. import org.jeecgframework.tag.core.easyui.TagUtil;
  29. import org.jeecgframework.web.system.pojo.base.DictEntity;
  30. import org.jeecgframework.web.system.service.SystemService;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.http.HttpHeaders;
  33. import org.springframework.http.HttpStatus;
  34. import org.springframework.http.MediaType;
  35. import org.springframework.http.ResponseEntity;
  36. import org.springframework.stereotype.Controller;
  37. import org.springframework.ui.ModelMap;
  38. import org.springframework.web.bind.annotation.*;
  39. import org.springframework.web.multipart.MultipartFile;
  40. import org.springframework.web.multipart.MultipartHttpServletRequest;
  41. import org.springframework.web.servlet.ModelAndView;
  42. import org.springframework.web.util.UriComponentsBuilder;
  43. import javax.servlet.http.HttpServletRequest;
  44. import javax.servlet.http.HttpServletResponse;
  45. import javax.validation.ConstraintViolation;
  46. import javax.validation.Validator;
  47. import java.io.IOException;
  48. import java.io.UnsupportedEncodingException;
  49. import java.net.URI;
  50. import java.util.*;
  51. /**
  52. * @Title: Controller
  53. * @Description: 排班操作表
  54. * @author onlineGenerator
  55. * @date 2017-10-31 09:07:35
  56. * @version V1.0
  57. *
  58. */
  59. @Controller
  60. @RequestMapping("/arrangeDutyOperateController")
  61. public class ArrangeDutyOperateController extends BaseController {
  62. /**
  63. * Logger for this class
  64. */
  65. private static final Logger logger = Logger.getLogger(ArrangeDutyOperateController.class);
  66. @Autowired
  67. private ArrangeDutyOperateServiceI arrangeDutyOperateService;
  68. @Autowired
  69. private SystemService systemService;
  70. @Autowired
  71. private Validator validator;
  72. //班次表
  73. @Autowired
  74. private ArrangeDutyServiceI arrangeDutyService;
  75. //员工基本档案管理
  76. @Autowired
  77. private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService;
  78. //公共方法类
  79. @Autowired
  80. private CommonService commonService;
  81. //项目排班详细表
  82. @Autowired
  83. private ProjarrangeDetailServiceI projarrangeDetailService;
  84. // 用户和项目关系处理
  85. @Autowired
  86. UserDepartOrgDealServiceI userDepartOrgDealServiceI;
  87. /**
  88. * 排班操作表列表 页面跳转
  89. *
  90. * @return
  91. */
  92. @RequestMapping(params = "list")
  93. public ModelAndView list(HttpServletRequest request) {
  94. request.setAttribute("yearmonth", request.getParameter("yearmonth"));
  95. request.setAttribute("pid", request.getParameter("pid"));
  96. return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperateList");
  97. }
  98. /**
  99. * 月度排班弹窗
  100. * 排班操作表列表查询页面数据
  101. * easyui AJAX请求数据
  102. *
  103. * @param request
  104. * @param response
  105. * @param dataGrid
  106. * @param user
  107. */
  108. @RequestMapping(params = "datagrid")
  109. public void datagrid(ArrangeDutyOperateDto arrangeDutyOperateDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  110. String pid=request.getParameter("pid");
  111. if(pid!=null&&pid.length()!=0){
  112. pid=pid.split(",")[0];
  113. }
  114. String yearmonth=request.getParameter("yearmonth");
  115. /*//根据项目pid获取所有的userid;--
  116. //根据项目id查询所有子节点id
  117. List<String> ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid);
  118. UserAndUserPersonnelDto userAndUserPersonnelDto=new UserAndUserPersonnelDto();
  119. userAndUserPersonnelDto.setChildDepartIdList(ChildIdList);
  120. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  121. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = arrangeDutyOperateService.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql);
  122. List<String> userIdList=new ArrayList<String>();
  123. for (int i = 0; i < listUserAndUserPersonnelDto.size(); i++) {
  124. userIdList.add(listUserAndUserPersonnelDto.get(i).getUserid());
  125. }
  126. //根据项目pid获取所有的userid;--
  127. //查询排班操作表所有数据,根据项目pid匹配userid,然后获取排班操作表id==
  128. StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity where yearmonth=? ");
  129. List<ArrangeDutyOperateEntity> arrangeDutyOperateEntityList = commonService.findHql(hql.toString(),yearmonth);
  130. List<String> arrangeDutyOperateIdList=new ArrayList<String>();
  131. for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) {
  132. List<String> tempUserIDList=extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid());
  133. for (int j = 0; j < tempUserIDList.size(); j++) {
  134. if(userIdList.contains(tempUserIDList.get(j))){
  135. arrangeDutyOperateIdList.add(arrangeDutyOperateEntityList.get(i).getId());
  136. break;
  137. }
  138. }
  139. }
  140. //查询排班操作表所有数据,根据项目pid匹配userid,然后获取排班操作表id==
  141. //再匹配月度字段查出数据
  142. arrangeDutyOperateDto.setArrangeDutyOperateIdList(arrangeDutyOperateIdList);*/
  143. arrangeDutyOperateDto.setYearmonth(yearmonth);
  144. arrangeDutyOperateDto.setPid(pid);
  145. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  146. List<ArrangeDutyOperateDto> arrangeDutyOperateDtoList = arrangeDutyOperateService.getArrangeDutyOperateDtoByPIdYearMonthNoPage(arrangeDutyOperateDto, authSql);
  147. dataGrid.setResults(arrangeDutyOperateDtoList);
  148. TagUtil.datagrid(response, dataGrid);
  149. }
  150. /**
  151. *
  152. * 删除排班操作表
  153. *
  154. * @return
  155. */
  156. @RequestMapping(params = "doDel")
  157. @ResponseBody
  158. public AjaxJson doDel(ArrangeDutyOperateEntity arrangeDutyOperate,String pid, HttpServletRequest request) {
  159. String message = null;
  160. AjaxJson j = new AjaxJson();
  161. arrangeDutyOperate = systemService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  162. message = "排班操作删除成功";
  163. try{
  164. if(pid!=null&&pid.length()>0){
  165. pid=pid.split(",")[0];
  166. }
  167. j=arrangeDutyOperateService.deleteOperateAndGeneralDetail(arrangeDutyOperate,pid);
  168. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  169. }catch(Exception e){
  170. j.setSuccess(false);
  171. e.printStackTrace();
  172. message = "排班操作删除失败";
  173. }
  174. j.setMsg(message);
  175. return j;
  176. }
  177. /**
  178. * 批量删除排班操作表
  179. *
  180. * @return
  181. */
  182. @RequestMapping(params = "doBatchDel")
  183. @ResponseBody
  184. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  185. String message = null;
  186. AjaxJson j = new AjaxJson();
  187. message = "排班操作删除成功";
  188. try{
  189. for(String id:ids.split(",")){
  190. ArrangeDutyOperateEntity arrangeDutyOperate = systemService.getEntity(ArrangeDutyOperateEntity.class,
  191. id
  192. );
  193. arrangeDutyOperateService.delete(arrangeDutyOperate);
  194. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  195. }
  196. }catch(Exception e){
  197. e.printStackTrace();
  198. message = "排班操作删除失败";
  199. throw new BusinessException(e.getMessage());
  200. }
  201. j.setMsg(message);
  202. return j;
  203. }
  204. /**
  205. * 添加排班操作表
  206. *
  207. * @param ids
  208. * @return
  209. */
  210. @RequestMapping(params = "doAdd")
  211. @ResponseBody
  212. public AjaxJson doAdd(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest request) {
  213. String message = null;
  214. AjaxJson j = new AjaxJson();
  215. message = "排班操作添加成功";
  216. try{
  217. arrangeDutyOperateService.save(arrangeDutyOperate);
  218. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  219. }catch(Exception e){
  220. j.setSuccess(false);
  221. e.printStackTrace();
  222. message = "排班操作添加失败";
  223. }
  224. j.setMsg(message);
  225. return j;
  226. }
  227. /**
  228. * 更新排班操作表
  229. *
  230. * @param ids
  231. * @return
  232. */
  233. @RequestMapping(params = "doUpdate")
  234. @ResponseBody
  235. public AjaxJson doUpdate(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest request) {
  236. String message = null;
  237. AjaxJson j = new AjaxJson();
  238. message = "排班操作更新成功";
  239. ArrangeDutyOperateEntity t = arrangeDutyOperateService.get(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  240. try {
  241. MyBeanUtils.copyBeanNotNull2Bean(arrangeDutyOperate, t);
  242. arrangeDutyOperateService.saveOrUpdate(t);
  243. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  244. } catch (Exception e) {
  245. j.setSuccess(false);
  246. e.printStackTrace();
  247. message = "排班操作更新失败";
  248. }
  249. j.setMsg(message);
  250. return j;
  251. }
  252. /**
  253. * 排班操作表新增页面跳转
  254. *
  255. * @return
  256. */
  257. @RequestMapping(params = "goAdd")
  258. public ModelAndView goAdd(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest req) {
  259. if (StringUtil.isNotEmpty(arrangeDutyOperate.getId())) {
  260. arrangeDutyOperate = arrangeDutyOperateService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  261. req.setAttribute("arrangeDutyOperatePage", arrangeDutyOperate);
  262. }
  263. return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperate-add");
  264. }
  265. /**
  266. * 排班操作表编辑页面跳转
  267. *
  268. * @return
  269. */
  270. @RequestMapping(params = "goUpdate")
  271. public ModelAndView goUpdate(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest req) {
  272. if (StringUtil.isNotEmpty(arrangeDutyOperate.getId())) {
  273. arrangeDutyOperate = arrangeDutyOperateService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  274. req.setAttribute("arrangeDutyOperatePage", arrangeDutyOperate);
  275. }
  276. return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperate-update");
  277. }
  278. /**
  279. * 导入功能跳转
  280. *
  281. * @return
  282. */
  283. @RequestMapping(params = "upload")
  284. public ModelAndView upload(HttpServletRequest req) {
  285. req.setAttribute("controller_name","arrangeDutyOperateController");
  286. return new ModelAndView("common/upload/pub_excel_upload");
  287. }
  288. /**
  289. * 导出excel
  290. *
  291. * @param request
  292. * @param response
  293. */
  294. @RequestMapping(params = "exportXls")
  295. public String exportXls(ArrangeDutyOperateEntity arrangeDutyOperate,HttpServletRequest request,HttpServletResponse response
  296. , DataGrid dataGrid,ModelMap modelMap) {
  297. CriteriaQuery cq = new CriteriaQuery(ArrangeDutyOperateEntity.class, dataGrid);
  298. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, arrangeDutyOperate, request.getParameterMap());
  299. List<ArrangeDutyOperateEntity> arrangeDutyOperates = this.arrangeDutyOperateService.getListByCriteriaQuery(cq,false);
  300. modelMap.put(NormalExcelConstants.FILE_NAME,"排班操作");
  301. modelMap.put(NormalExcelConstants.CLASS,ArrangeDutyOperateEntity.class);
  302. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("排班操作列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  303. "导出信息"));
  304. modelMap.put(NormalExcelConstants.DATA_LIST,arrangeDutyOperates);
  305. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  306. }
  307. /**
  308. * 导出excel 使模板
  309. *
  310. * @param request
  311. * @param response
  312. */
  313. @RequestMapping(params = "exportXlsByT")
  314. public String exportXlsByT(ArrangeDutyOperateEntity arrangeDutyOperate,HttpServletRequest request,HttpServletResponse response
  315. , DataGrid dataGrid,ModelMap modelMap) {
  316. modelMap.put(NormalExcelConstants.FILE_NAME,"排班操作");
  317. modelMap.put(NormalExcelConstants.CLASS,ArrangeDutyOperateEntity.class);
  318. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("排班操作列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  319. "导出信息"));
  320. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  321. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  322. }
  323. @SuppressWarnings("unchecked")
  324. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  325. @ResponseBody
  326. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  327. AjaxJson j = new AjaxJson();
  328. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  329. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  330. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  331. MultipartFile file = entity.getValue();// 获取上传文件对象
  332. ImportParams params = new ImportParams();
  333. params.setTitleRows(2);
  334. params.setHeadRows(1);
  335. params.setNeedSave(true);
  336. try {
  337. List<ArrangeDutyOperateEntity> listArrangeDutyOperateEntitys = ExcelImportUtil.importExcel(file.getInputStream(),ArrangeDutyOperateEntity.class,params);
  338. for (ArrangeDutyOperateEntity arrangeDutyOperate : listArrangeDutyOperateEntitys) {
  339. arrangeDutyOperateService.save(arrangeDutyOperate);
  340. }
  341. j.setMsg("文件导入成功!");
  342. } catch (Exception e) {
  343. j.setMsg("文件导入失败!");
  344. logger.error(ExceptionUtil.getExceptionMessage(e));
  345. }finally{
  346. try {
  347. file.getInputStream().close();
  348. } catch (IOException e) {
  349. e.printStackTrace();
  350. }
  351. }
  352. }
  353. return j;
  354. }
  355. @RequestMapping(method = RequestMethod.GET)
  356. @ResponseBody
  357. public List<ArrangeDutyOperateEntity> list() {
  358. List<ArrangeDutyOperateEntity> listArrangeDutyOperates=arrangeDutyOperateService.getList(ArrangeDutyOperateEntity.class);
  359. return listArrangeDutyOperates;
  360. }
  361. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  362. @ResponseBody
  363. public ResponseEntity<?> get(@PathVariable("id") String id) {
  364. ArrangeDutyOperateEntity task = arrangeDutyOperateService.get(ArrangeDutyOperateEntity.class, id);
  365. if (task == null) {
  366. return new ResponseEntity(HttpStatus.NOT_FOUND);
  367. }
  368. return new ResponseEntity(task, HttpStatus.OK);
  369. }
  370. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  371. @ResponseBody
  372. public ResponseEntity<?> create(@RequestBody ArrangeDutyOperateEntity arrangeDutyOperate, UriComponentsBuilder uriBuilder) {
  373. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  374. Set<ConstraintViolation<ArrangeDutyOperateEntity>> failures = validator.validate(arrangeDutyOperate);
  375. if (!failures.isEmpty()) {
  376. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  377. }
  378. //保存
  379. try{
  380. arrangeDutyOperateService.save(arrangeDutyOperate);
  381. } catch (Exception e) {
  382. e.printStackTrace();
  383. return new ResponseEntity(HttpStatus.NO_CONTENT);
  384. }
  385. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  386. String id = arrangeDutyOperate.getId();
  387. URI uri = uriBuilder.path("/rest/arrangeDutyOperateController/" + id).build().toUri();
  388. HttpHeaders headers = new HttpHeaders();
  389. headers.setLocation(uri);
  390. return new ResponseEntity(headers, HttpStatus.CREATED);
  391. }
  392. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  393. public ResponseEntity<?> update(@RequestBody ArrangeDutyOperateEntity arrangeDutyOperate) {
  394. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  395. Set<ConstraintViolation<ArrangeDutyOperateEntity>> failures = validator.validate(arrangeDutyOperate);
  396. if (!failures.isEmpty()) {
  397. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  398. }
  399. //保存
  400. try{
  401. arrangeDutyOperateService.saveOrUpdate(arrangeDutyOperate);
  402. } catch (Exception e) {
  403. e.printStackTrace();
  404. return new ResponseEntity(HttpStatus.NO_CONTENT);
  405. }
  406. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  407. return new ResponseEntity(HttpStatus.NO_CONTENT);
  408. }
  409. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  410. @ResponseStatus(HttpStatus.NO_CONTENT)
  411. public void delete(@PathVariable("id") String id) {
  412. arrangeDutyOperateService.deleteEntityById(ArrangeDutyOperateEntity.class, id);
  413. }
  414. /**
  415. * 班次选择
  416. * 月度排班
  417. * 班次表列表 页面跳转
  418. *
  419. * @return
  420. */
  421. @RequestMapping(params = "arrangeDutySelectList")
  422. public ModelAndView arrangeDutySelectList(HttpServletRequest request) {
  423. request.setAttribute("ids", request.getParameter("ids"));
  424. request.setAttribute("pid", request.getParameter("pid"));
  425. return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutySelectList");
  426. }
  427. /**
  428. * 班次选择页面
  429. * 月度排班
  430. * easyui AJAX请求数据
  431. *
  432. * @param request
  433. * @param response
  434. * @param dataGrid
  435. * @param user
  436. */
  437. @RequestMapping(params = "arrangeDutyDatagrid")
  438. public void arrangeDutyDatagrid(ArrangeDutyDto arrangeDutyDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  439. /*CriteriaQuery cq = new CriteriaQuery(ArrangeDutyEntity.class, dataGrid);
  440. //查询条件组装器
  441. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, arrangeDuty, request.getParameterMap());
  442. try{
  443. //自定义追加查询条件
  444. }catch (Exception e) {
  445. throw new BusinessException(e.getMessage());
  446. }
  447. cq.add();
  448. this.arrangeDutyService.getDataGridReturn(cq, true);
  449. TagUtil.datagrid(response, dataGrid);*/
  450. /*String myPId=arrangeDutyDto.getPid();
  451. if(myPId!=null&&myPId.length()>0&&myPId.indexOf(",")!=-1){
  452. String[] pIdList=myPId.split(",");
  453. //arrangeDutyDto.setPid(myPId.substring(0, myPId.indexOf(",")));
  454. arrangeDutyDto.setPid(pIdList[0]);
  455. }
  456. String orgIds = request.getParameter("orgIds");
  457. List<String> orgIdList = extractIdListByComma(orgIds);
  458. // 获取 当前组织机构的用户信息
  459. if (!CollectionUtils.isEmpty(orgIdList)) {
  460. arrangeDutyDto.setOrgIdList(orgIdList);
  461. }*/
  462. if(arrangeDutyDto.getPid()!=null&&arrangeDutyDto.getPid().length()>0){
  463. arrangeDutyDto.setPid(arrangeDutyDto.getPid().split(",")[0]);
  464. }
  465. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  466. List<ArrangeDutyDto> arrangeDutyMinidaoDtoList = arrangeDutyService.getArrangeDutyMonthNoPage(arrangeDutyDto,authSql);
  467. for (int i = 0; i < arrangeDutyMinidaoDtoList.size(); i++) {
  468. if(arrangeDutyMinidaoDtoList.get(i)!=null){
  469. if(arrangeDutyMinidaoDtoList.get(i).getNormalworkStime()!=null
  470. &&arrangeDutyMinidaoDtoList.get(i).getNormalworkStime().length()!=0
  471. &&arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime()!=null
  472. &&arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime().length()!=0){
  473. //正常工作时间
  474. String normalworkStime=arrangeDutyMinidaoDtoList.get(i).getNormalworkStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime();
  475. arrangeDutyMinidaoDtoList.get(i).setNormalworkStime(normalworkStime);
  476. }
  477. if(arrangeDutyMinidaoDtoList.get(i).getOndutyStime()!=null
  478. &&arrangeDutyMinidaoDtoList.get(i).getOndutyStime().length()!=0
  479. &&arrangeDutyMinidaoDtoList.get(i).getOndutyEtime()!=null
  480. &&arrangeDutyMinidaoDtoList.get(i).getOndutyEtime().length()!=0){
  481. //值班时间
  482. String ondutyStime=arrangeDutyMinidaoDtoList.get(i).getOndutyStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getOndutyEtime();
  483. arrangeDutyMinidaoDtoList.get(i).setOndutyStime(ondutyStime);
  484. }
  485. if(arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime()!=null
  486. &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime().length()!=0
  487. &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime()!=null
  488. &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime().length()!=0){
  489. //超时加班时间
  490. String Overtime=arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime();
  491. arrangeDutyMinidaoDtoList.get(i).setTimeOutOvertimeStime(Overtime);
  492. }
  493. //手动拼接班次餐补
  494. if(arrangeDutyMinidaoDtoList.get(i).getDutyMealid()!=null&&arrangeDutyMinidaoDtoList.get(i).getDutyMealid().length()!=0){
  495. String dutyMealid = arrangeDutyMinidaoDtoList.get(i).getDutyMealid();
  496. List<MealsSubsidyDto> mealsSubsidyDtolist=getSubsidyInfo(dutyMealid);
  497. if(mealsSubsidyDtolist.size()>0){
  498. String subsidyMoneyAndUnit="";
  499. for (int j = 0; j < mealsSubsidyDtolist.size(); j++) {
  500. String strUnit="";
  501. if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_dun)){
  502. strUnit="元/顿";
  503. }else if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_yue)){
  504. strUnit="元/月";
  505. }else if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_ci)){
  506. strUnit="元/次";
  507. }
  508. if(subsidyMoneyAndUnit.length()>0){
  509. if(!arrangeDutyMinidaoDtoList.get(i).getDutyType().equals(Globals.DUTYTYPE_riban11h)){
  510. subsidyMoneyAndUnit+=","+mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit;
  511. }else{
  512. subsidyMoneyAndUnit+=","+mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit+" x 2";
  513. }
  514. }else{
  515. if(!arrangeDutyMinidaoDtoList.get(i).getDutyType().equals(Globals.DUTYTYPE_riban11h)){
  516. subsidyMoneyAndUnit=mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit;
  517. }else{
  518. subsidyMoneyAndUnit=mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit+" x 2";
  519. }
  520. }
  521. }
  522. arrangeDutyMinidaoDtoList.get(i).setSubsidyMoneyAndUnit(subsidyMoneyAndUnit);
  523. }
  524. }
  525. }
  526. }
  527. //dataGrid.setTotal(list.getTotal());
  528. dataGrid.setResults(arrangeDutyMinidaoDtoList);
  529. TagUtil.datagrid(response, dataGrid);
  530. }
  531. /**
  532. * 根据id查询餐费补贴表信息
  533. * @author zbw
  534. * 2017-11-1
  535. * @param request
  536. * @param response
  537. * @return
  538. */
  539. @RequestMapping(params = "getSubsidyInfo")
  540. @ResponseBody
  541. public List<MealsSubsidyDto> getSubsidyInfo(String dutyMealid) {
  542. List<MealsSubsidyDto> mealsSubsidyDtolist=new ArrayList<MealsSubsidyDto>();
  543. //String dutyMealid = request.getParameter("id");
  544. if(dutyMealid.length()==0){
  545. return mealsSubsidyDtolist;
  546. }
  547. MealsSubsidyDto mealsSubsidyDto=new MealsSubsidyDto();
  548. String[] dutyMealIdArr=dutyMealid.split(",");
  549. //班次餐补id
  550. List<String> mealsSubsidyIdList=new ArrayList<String>();
  551. for (int i = 0; i < dutyMealIdArr.length; i++) {
  552. mealsSubsidyIdList.add(dutyMealIdArr[i]);
  553. }
  554. if(mealsSubsidyIdList.size()>0){
  555. mealsSubsidyDto.setMealsSubsidyIdList(mealsSubsidyIdList);
  556. }
  557. //DataGrid dataGrid=new DataGrid();
  558. //dataGrid.setField("id,subsidyName,subsidyMoney,calcuUnit,deleteFlag,status");
  559. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  560. //查询项目排班详细表数据
  561. List<MealsSubsidyDto> MealsSubsidyDtolist = arrangeDutyService.getMealsSubsidyByIdList(
  562. mealsSubsidyDto,authSql);
  563. return MealsSubsidyDtolist;
  564. }
  565. /**
  566. * 班次员工选择
  567. * 员工表列表 页面跳转
  568. *
  569. * @return
  570. */
  571. @RequestMapping(params = "personnelBaseArchivesManageSelectList")
  572. public ModelAndView personnelBaseArchivesManageSelectList(HttpServletRequest request) {
  573. request.setAttribute("userid", request.getParameter("userid"));
  574. request.setAttribute("pid", request.getParameter("pid"));
  575. request.setAttribute("yearmonth", request.getParameter("yearmonth"));
  576. request.setAttribute("pjtPostId", request.getParameter("pjtPostId"));
  577. return new ModelAndView("cn/com/lzt/arrangedutyoperate/personnelBaseArchivesManageSelectList");
  578. }
  579. /**
  580. * 查询班次人员弹窗
  581. * @author zbw
  582. * 2017-11-5
  583. * @param userAndUserPersonnelDto
  584. * @param request
  585. * @param response
  586. * @param dataGrid
  587. */
  588. @RequestMapping(params = "getPersonnelBaseArchivesManageInfo")
  589. public void getPersonnelBaseArchivesManageInfo(UserAndUserPersonnelDto userAndUserPersonnelDto,String yearmonth,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  590. //extractIdListByComma
  591. String pid=request.getParameter("pid");
  592. String userid=request.getParameter("userid");
  593. String pjtPostId = request.getParameter("pjtPostId");
  594. //获取当前选中的userid--
  595. List<String> useridListPart=new ArrayList<String>();
  596. if(userid!=null&&userid.length()!=0){
  597. useridListPart=extractIdListByComma(userid);
  598. }
  599. //获取当前选中的userid--
  600. //查询排班操作表所有数据,并获取所有的userid==
  601. StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity adoe where adoe.yearmonth=? ");
  602. List<ArrangeDutyOperateEntity> arrangeDutyOperateEntityList = commonService.findHql(hql.toString(),yearmonth);
  603. List<String> useridListAll=new ArrayList<String>();
  604. for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) {
  605. if(arrangeDutyOperateEntityList.get(i).getUserid()!=null&&arrangeDutyOperateEntityList.get(i).getUserid().length()!=0){
  606. useridListAll.addAll(extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid()));
  607. }
  608. }
  609. //查询排班操作表所有数据,并获取所有的userid==
  610. //获取当前要排除的userid
  611. useridListAll.removeAll(useridListPart);
  612. //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
  613. if(pid!=null&&pid.length()!=0){
  614. pid=pid.split(",")[0];
  615. userAndUserPersonnelDto.setPid(pid);
  616. }
  617. //包括该项目id
  618. //根据项目id查询所有子节点id
  619. List<String> ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid);
  620. /******************************************************************/
  621. /*
  622. * 找到整个项目的工资策略,删除那些没有工资策略的员工
  623. */
  624. // CriteriaQuery cq = new CriteriaQuery(UserWagestrategyEntity.class);
  625. // cq.in("belongUnitid", ChildIdList.toArray(new String[0]));
  626. // cq.add();
  627. // cq.eq("deleteFlag", "0");
  628. // cq.add();
  629. // List<UserWagestrategyEntity> wageStraEntities = systemService.getListByCriteriaQuery(cq, false);
  630. // HashMap<String, UserWagestrategyEntity> hm_userid2wageStragegy = new HashMap<>();
  631. // for(UserWagestrategyEntity wagtstr : wageStraEntities) {
  632. // hm_userid2wageStragegy.put(wagtstr.getUserid(), wagtstr);
  633. // }
  634. userAndUserPersonnelDto.setChildDepartIdList(ChildIdList);
  635. userAndUserPersonnelDto.setUserIdList(useridListAll);
  636. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  637. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = arrangeDutyOperateService.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql);
  638. // if(listUserAndUserPersonnelDto != null) {
  639. // for(int i=listUserAndUserPersonnelDto.size()-1 ; i>=0 ; i--) {
  640. // String uid =listUserAndUserPersonnelDto.get(i).getUserid();
  641. // if(!hm_userid2wageStragegy.containsKey(uid)) {
  642. // listUserAndUserPersonnelDto.remove(i);
  643. // }
  644. // }
  645. // }
  646. /******************************************************************/
  647. if(pjtPostId != null && pjtPostId.length()>0) {
  648. //通过项目岗位id 查询通用岗位ID
  649. StringBuffer sbhql = new StringBuffer(" FROM ProjectPostDetailEntity ppde where ppde.id=? ");
  650. List<ProjectPostDetailEntity> projectPostDetailEntityList = commonService.findHql(sbhql.toString(),pjtPostId);
  651. // 通用的岗位id,用来过滤前台选择对话框
  652. String postId = null;
  653. if(projectPostDetailEntityList.size() == 1) {
  654. postId = projectPostDetailEntityList.get(0).getPostid();
  655. }
  656. if(postId != null) {
  657. List<UserAndUserPersonnelDto> filterList = new ArrayList<UserAndUserPersonnelDto>();
  658. for(UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) {
  659. if(postId.equals(dto.getInPostid())) {
  660. filterList.add(dto);
  661. }
  662. }
  663. Collections.sort(filterList);
  664. dataGrid.setResults(filterList);
  665. TagUtil.datagrid(response, dataGrid);
  666. return;
  667. }
  668. }
  669. Collections.sort(listUserAndUserPersonnelDto);
  670. //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
  671. //dataGrid.setTotal(listUserAndUserPersonnelDto.getTotal());
  672. dataGrid.setResults(listUserAndUserPersonnelDto);
  673. TagUtil.datagrid(response, dataGrid);
  674. }
  675. /**
  676. * 班次操作表
  677. * 保存新增/更新的行数据
  678. * @author zbw
  679. * 2017-11-1
  680. * @param arrangeDutyOperate
  681. * @param request
  682. * @return
  683. */
  684. @RequestMapping(params = "saveArrangeDutyOperate")
  685. @ResponseBody
  686. public AjaxJson saveArrangeDutyOperate(ArrangeDutyOperateEntity arrangeDutyOperate,String sign,String arrangeDutyOperateId){
  687. AjaxJson j = new AjaxJson();
  688. if(arrangeDutyOperate.getPid()!=null&&arrangeDutyOperate.getPid().length()>0){
  689. arrangeDutyOperate.setPid(arrangeDutyOperate.getPid().split(",")[0]);
  690. }
  691. j=arrangeDutyOperateService.saveArrangeDutyOperate(arrangeDutyOperate,sign,arrangeDutyOperateId);
  692. return j;
  693. }
  694. /**
  695. * 根据员工id异步获取中文名称realname
  696. * 根据班次shiftid异步获取中文名称dutyName
  697. * @author zbw
  698. * 2017-11-2
  699. * @param userid
  700. * @return
  701. */
  702. @RequestMapping(params = "getRealName")
  703. @ResponseBody
  704. public AjaxJson getRealName(String shiftid,String shiftidDictionary,String userid) {
  705. AjaxJson j = new AjaxJson();
  706. try {
  707. //获取班次名称
  708. List<DictEntity> dictList=systemService.queryDict(shiftidDictionary.split(",")[0], shiftidDictionary.split(",")[1], shiftidDictionary.split(",")[2]);
  709. String dutyName="";
  710. for (int i = 0; i < shiftid.split(",").length; i++) {
  711. for (int k = 0; k < dictList.size(); k++) {
  712. if(shiftid.split(",")[i].equals(dictList.get(k).getTypecode())){
  713. if(dutyName.length()!=0){
  714. dutyName+=","+dictList.get(k).getTypename();
  715. }else{
  716. dutyName=dictList.get(k).getTypename();
  717. }
  718. }
  719. }
  720. }
  721. //获取用户名称
  722. List<DictEntity> baseUserList=systemService.queryDict("t_s_base_user", "id", "realname");
  723. String realName="";
  724. for (int i = 0; i < userid.split(",").length; i++) {
  725. for (int k = 0; k < baseUserList.size(); k++) {
  726. if(userid.split(",")[i].equals(baseUserList.get(k).getTypecode())){
  727. if(realName.length()!=0){
  728. realName+=","+baseUserList.get(k).getTypename();
  729. }else{
  730. realName=baseUserList.get(k).getTypename();
  731. }
  732. }
  733. }
  734. }
  735. Map<String, Object> map=new HashMap<String, Object>();
  736. map.put("dutyName", dutyName);
  737. map.put("realName", realName);
  738. j.setAttributes(map);
  739. } catch (Exception e) {
  740. j.setSuccess(false);
  741. e.printStackTrace();
  742. }
  743. return j;
  744. }
  745. /**
  746. * 月度排班页面获取项目岗位信息;
  747. * @author zbw
  748. * 2017-11-17
  749. * @param pid
  750. * @return
  751. */
  752. @RequestMapping(params = "getProjectPostDetail")
  753. @ResponseBody
  754. public AjaxJson getProjectPostDetail(String pid){
  755. AjaxJson j = new AjaxJson();
  756. if(pid!=null&&pid.length()>0){
  757. pid=pid.split(",")[0];
  758. }
  759. StringBuffer hql = new StringBuffer(" from ProjectPostDetailEntity t where delete_flag = '0' ");
  760. hql.append(" and t.pid =? ");
  761. List<ProjectPostDetailEntity> projectPostDetailEntityList = arrangeDutyOperateService
  762. .findHql(hql.toString(),pid);
  763. Map<String, Object> myMap=new HashMap<String, Object>();
  764. myMap.put("0", projectPostDetailEntityList);
  765. j.setAttributes(myMap);
  766. return j;
  767. }
  768. @RequestMapping(params = "getDeployPeopleNumLeft")
  769. @ResponseBody
  770. public AjaxJson getDeployPeopleNumLeft(String pid, String pjtPostId,String yearmonth) {
  771. AjaxJson j = new AjaxJson();
  772. StringBuffer hql = new StringBuffer(" from ProjectPostDetailEntity t where delete_flag = '0' ");
  773. hql.append(" and t.pid =? and t.id=? ");
  774. List<ProjectPostDetailEntity> projectPostDetailEntityList = arrangeDutyOperateService
  775. .findHql(hql.toString(),pid,pjtPostId);
  776. if(projectPostDetailEntityList.size()>0) {
  777. ProjectPostDetailEntity postDetail = projectPostDetailEntityList.get(0);
  778. hql = new StringBuffer(" from ArrangeDutyOperateEntity t ");
  779. hql.append(" where t.pjtPostId =? and t.yearmonth=? ");
  780. List<ArrangeDutyOperateEntity> operaterList = arrangeDutyOperateService
  781. .findHql(hql.toString(),pjtPostId,yearmonth);
  782. int totalNum = postDetail.getNeedNumber();
  783. int deployNum = getDeployNum(operaterList);
  784. int leavePeople = getLeavePeople(operaterList);
  785. Map<String, Object> myMap=new HashMap<String, Object>();
  786. if(totalNum >= deployNum-leavePeople) {
  787. myMap.put("0", totalNum-deployNum+leavePeople);
  788. }else {
  789. myMap.put("0", 0);
  790. }
  791. j.setAttributes(myMap);
  792. }
  793. return j;
  794. }
  795. /**
  796. * @param operaterList
  797. * @return
  798. */
  799. private int getLeavePeople(List<ArrangeDutyOperateEntity> operaterList) {
  800. List<String> userIdLeave = new ArrayList<String>();
  801. if(operaterList != null && operaterList.size()>0) {
  802. for(ArrangeDutyOperateEntity entity : operaterList) {
  803. String userid = entity.getUserid();
  804. String[] split = userid.split(",");
  805. if(split != null) {
  806. for(int i=0 ; i<split.length ; i++) {
  807. if(split[i] != null && split[i].length()>0) {
  808. userIdLeave.add(split[i]);
  809. }
  810. }
  811. }
  812. }
  813. }
  814. if(userIdLeave.size()>0) {
  815. StringBuffer hqls = new StringBuffer("select count(*) from PersonnelBaseArchivesManageEntity where userid in (:userid) and (positionStatus='3' or positionStatus = '4')");
  816. Query query = systemService.getSession().createQuery(hqls.toString());
  817. query.setParameterList("userid", userIdLeave).list();
  818. int count = ((Number)query.uniqueResult()).intValue();
  819. return count;
  820. }
  821. return 0;
  822. }
  823. /**
  824. * @param operaterList
  825. * @return
  826. */
  827. private int getDeployNum(List<ArrangeDutyOperateEntity> operaterList) {
  828. if(operaterList != null && operaterList.size()>0) {
  829. int num = 0;
  830. for(ArrangeDutyOperateEntity entity : operaterList) {
  831. String userid = entity.getUserid();
  832. String[] split = userid.split(",");
  833. if(split != null) {
  834. num += split.length;
  835. }
  836. }
  837. return num;
  838. }
  839. return 0;
  840. }
  841. /**
  842. * 月度排班页面获取班次类型进行验证;
  843. * @author zbw
  844. * 2017-11-17
  845. * @param pid
  846. * @return
  847. */
  848. @RequestMapping(params = "getCheckShiftType")
  849. @ResponseBody
  850. public AjaxJson getCheckShiftType(String shiftid){
  851. AjaxJson j = new AjaxJson();
  852. ArrangeDutyDto arrangeDutyDto=new ArrangeDutyDto();
  853. arrangeDutyDto.getArrangeDutyIdList().addAll(extractIdListByComma(shiftid));
  854. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  855. List<ArrangeDutyDto> arrangeDutyDtoList = arrangeDutyService.getArrangeDutyByIdList(arrangeDutyDto, authSql);
  856. List<String> shiftTypeList=new ArrayList<String>();
  857. for (int i = 0; i < arrangeDutyDtoList.size(); i++) {
  858. if(!shiftTypeList.contains(arrangeDutyDtoList.get(i).getDutyType())){
  859. shiftTypeList.add(arrangeDutyDtoList.get(i).getDutyType());
  860. }
  861. }
  862. if(shiftTypeList.size()==1){
  863. j.setMsg("false");
  864. }else{
  865. String yeban="false";
  866. String riban="false";
  867. for(int i=0;i<shiftTypeList.size();i++){
  868. if(shiftTypeList.get(i).equals(Globals.DUTYTYPE_yeban115)){
  869. yeban="true";
  870. }else if(shiftTypeList.get(i).equals(Globals.DUTYTYPE_riban11h)){
  871. riban="true";
  872. }
  873. }
  874. if(yeban.equals("false")||riban.equals("false")){
  875. j.setMsg("false");
  876. }
  877. }
  878. return j;
  879. }
  880. @RequestMapping(params = "personSelected")
  881. public ModelAndView personSelected(UserAndUserPersonnelDto userAndUserPersonnelDto,String yearmonth,HttpServletRequest request, HttpServletResponse response) {
  882. // extractIdListByComma
  883. String pid = request.getParameter("pid");
  884. String userid = request.getParameter("userid");
  885. String pjtPostId = request.getParameter("pjtPostId");
  886. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDtoSelected = new ArrayList<UserAndUserPersonnelDto>();
  887. // 获取当前选中的userid--
  888. List<String> useridListPart = new ArrayList<String>();
  889. if (userid != null && userid.length() != 0) {
  890. useridListPart = extractIdListByComma(userid);
  891. }
  892. // 获取当前选中的userid--
  893. // 查询排班操作表所有数据,并获取所有的userid==
  894. StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity adoe where adoe.yearmonth=? ");
  895. List<ArrangeDutyOperateEntity> arrangeDutyOperateEntityList = commonService.findHql(hql.toString(), yearmonth);
  896. List<String> useridListAll = new ArrayList<String>();
  897. for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) {
  898. if (arrangeDutyOperateEntityList.get(i).getUserid() != null
  899. && arrangeDutyOperateEntityList.get(i).getUserid().length() != 0) {
  900. useridListAll.addAll(extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid()));
  901. }
  902. }
  903. // 查询排班操作表所有数据,并获取所有的userid==
  904. // 获取当前要排除的userid
  905. useridListAll.removeAll(useridListPart);
  906. // 根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
  907. if (pid != null && pid.length() != 0) {
  908. pid = pid.split(",")[0];
  909. userAndUserPersonnelDto.setPid(pid);
  910. }
  911. // 包括该项目id
  912. // 根据项目id查询所有子节点id
  913. List<String> ChildIdList = userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid);
  914. userAndUserPersonnelDto.setChildDepartIdList(ChildIdList);
  915. userAndUserPersonnelDto.setUserIdList(useridListAll);
  916. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  917. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = arrangeDutyOperateService
  918. .getUserAndUserPersonnelNoPage(userAndUserPersonnelDto, authSql);
  919. if (pjtPostId != null && pjtPostId.length() > 0) {
  920. // 通过项目岗位id 查询通用岗位ID
  921. StringBuffer sbhql = new StringBuffer(" FROM ProjectPostDetailEntity ppde where ppde.id=? ");
  922. List<ProjectPostDetailEntity> projectPostDetailEntityList = commonService.findHql(sbhql.toString(),
  923. pjtPostId);
  924. // 通用的岗位id,用来过滤前台选择对话框
  925. String postId = null;
  926. if (projectPostDetailEntityList.size() == 1) {
  927. postId = projectPostDetailEntityList.get(0).getPostid();
  928. }
  929. if (postId != null) {
  930. List<UserAndUserPersonnelDto> filterList = new ArrayList<UserAndUserPersonnelDto>();
  931. for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) {
  932. if (postId.equals(dto.getInPostid())) {
  933. filterList.add(dto);
  934. }
  935. }
  936. Collections.sort(filterList);
  937. listUserAndUserPersonnelDto = filterList;
  938. }
  939. }
  940. Collections.sort(listUserAndUserPersonnelDto);
  941. for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) {
  942. if (userid.indexOf(dto.getId()) >= 0) {
  943. listUserAndUserPersonnelDtoSelected.add(dto);
  944. }
  945. }
  946. for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDtoSelected) {
  947. listUserAndUserPersonnelDto.remove(dto);
  948. }
  949. request.setAttribute("persons", listUserAndUserPersonnelDto);
  950. request.setAttribute("personsSelected", listUserAndUserPersonnelDtoSelected);
  951. // request.setAttribute("pid", request.getParameter("pid"));
  952. return new ModelAndView("cn/com/lzt/arrangedutyoperate/personSelectedDoubleList");
  953. }
  954. /**
  955. * 班次员工选择
  956. * 员工表列表 页面跳转
  957. *
  958. * @return
  959. */
  960. @RequestMapping(params = "personSortList")
  961. public ModelAndView personnelSortList(HttpServletRequest request) {
  962. String userids = request.getParameter("userid");
  963. String usernames = request.getParameter("username");
  964. try {
  965. usernames = java.net.URLDecoder.decode(usernames , "UTF-8");
  966. } catch (UnsupportedEncodingException e) {
  967. // TODO Auto-generated catch block
  968. e.printStackTrace();
  969. return null;
  970. }
  971. List<String> useridListPart = new ArrayList<String>();
  972. List<String> usernameListPart = new ArrayList<String>();
  973. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDtoSelected = new ArrayList<UserAndUserPersonnelDto>();
  974. if (userids != null && userids.length() != 0) {
  975. useridListPart = extractIdListByComma(userids);
  976. }
  977. if (usernames != null && usernames.length() != 0) {
  978. usernameListPart = extractIdListByComma(usernames);
  979. }
  980. if(useridListPart.size() > 0 )
  981. for (int i = 0 ; i < useridListPart.size(); i++) {
  982. UserAndUserPersonnelDto dto = new UserAndUserPersonnelDto();
  983. dto.setId(useridListPart.get(i));
  984. dto.setRealname(usernameListPart.get(i));
  985. listUserAndUserPersonnelDtoSelected.add(dto);
  986. }
  987. request.setAttribute("personsSelected", listUserAndUserPersonnelDtoSelected);
  988. return new ModelAndView("cn/com/lzt/arrangedutyoperate/personSortList");
  989. }
  990. /**
  991. * 班次员工选择
  992. * 员工表列表 页面跳转
  993. *
  994. * @return
  995. */
  996. @RequestMapping(params = "getPersonSortSwapList")
  997. public ModelAndView getPersonSortSwapList(HttpServletRequest request) {
  998. String userids = request.getParameter("userid");
  999. String usernames = request.getParameter("username");
  1000. String runway = request.getParameter("runway");
  1001. request.setAttribute("userid", userids);
  1002. request.setAttribute("username", usernames);
  1003. request.setAttribute("runway", runway);
  1004. return new ModelAndView("cn/com/lzt/arrangedutyoperate/personnelSortSwapList");
  1005. }
  1006. /**
  1007. * 班次员工选择
  1008. * 员工表列表 页面跳转
  1009. *
  1010. * @return
  1011. */
  1012. @RequestMapping(params = "getPersonSortSwapDateGrid")
  1013. public void getPersonSortSwapDateGrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  1014. String userids = request.getParameter("userid");
  1015. String usernames = request.getParameter("username");
  1016. String runway = request.getParameter("runway");
  1017. try {
  1018. usernames = java.net.URLDecoder.decode(usernames , "UTF-8");
  1019. } catch (UnsupportedEncodingException e) {
  1020. e.printStackTrace();
  1021. }
  1022. List<String> useridListPart = new ArrayList<String>();
  1023. List<String> usernameListPart = new ArrayList<String>();
  1024. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDtoSelected = new ArrayList<UserAndUserPersonnelDto>();
  1025. if (userids != null && userids.length() != 0) {
  1026. useridListPart = extractIdListByComma(userids);
  1027. }
  1028. if (usernames != null && usernames.length() != 0) {
  1029. usernameListPart = extractIdListByComma(usernames);
  1030. }
  1031. if(useridListPart.size() > 0 ) {
  1032. for (int i = 0 ; i < useridListPart.size(); i++) {
  1033. UserAndUserPersonnelDto dto = new UserAndUserPersonnelDto();
  1034. dto.setId(useridListPart.get(i));
  1035. dto.setUserid(useridListPart.get(i));
  1036. dto.setRealname(usernameListPart.get(i));
  1037. setDerfaultArrangeDuty(dto, useridListPart, i,runway);
  1038. listUserAndUserPersonnelDtoSelected.add(dto);
  1039. }
  1040. }
  1041. dataGrid.setResults(listUserAndUserPersonnelDtoSelected);
  1042. TagUtil.datagrid(response, dataGrid);
  1043. }
  1044. /**
  1045. * @param dto
  1046. * @param useridListPart
  1047. * @param i
  1048. */
  1049. private void setDerfaultArrangeDuty(UserAndUserPersonnelDto dto, List<String> useridListPart, int i,String runway) {
  1050. if(runway.indexOf("2bandao") == 0) {
  1051. String[] dutys = { "上班", "休息" };
  1052. dto.setDefaultSort(dutys[i % 2]);
  1053. }else if(useridListPart.size() % 3 == 0){
  1054. String[] dutys = {"日班", "夜班", "休息"};
  1055. int m = useridListPart.size() / 3;
  1056. dto.setDefaultSort(dutys[i/m]);
  1057. }else if(useridListPart.size() % 4 == 0){
  1058. String[] dutys = {"日班", "夜班", "休息", "休息"};
  1059. int m = useridListPart.size() / 4;
  1060. dto.setDefaultSort(dutys[i/m]);
  1061. }
  1062. }
  1063. }