package cn.com.lzt.arrangedutyoperate.controller; import cn.com.lzt.arrangeduty.dto.ArrangeDutyDto; import cn.com.lzt.arrangeduty.dto.MealsSubsidyDto; import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI; import cn.com.lzt.arrangedutyoperate.dto.ArrangeDutyOperateDto; import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto; import cn.com.lzt.arrangedutyoperate.entity.ArrangeDutyOperateEntity; import cn.com.lzt.arrangedutyoperate.service.ArrangeDutyOperateServiceI; import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI; import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI; import cn.com.lzt.projarrangedetail.service.ProjarrangeDetailServiceI; import cn.com.lzt.projectpostdetail.entity.ProjectPostDetailEntity; import org.apache.log4j.Logger; import org.hibernate.Query; import org.jeecgframework.core.beanvalidator.BeanValidators; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.common.service.CommonService; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.*; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.web.system.pojo.base.DictEntity; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.UriComponentsBuilder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.Validator; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import java.util.*; /** * @Title: Controller * @Description: 排班操作表 * @author onlineGenerator * @date 2017-10-31 09:07:35 * @version V1.0 * */ @Controller @RequestMapping("/arrangeDutyOperateController") public class ArrangeDutyOperateController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(ArrangeDutyOperateController.class); @Autowired private ArrangeDutyOperateServiceI arrangeDutyOperateService; @Autowired private SystemService systemService; @Autowired private Validator validator; //班次表 @Autowired private ArrangeDutyServiceI arrangeDutyService; //员工基本档案管理 @Autowired private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService; //公共方法类 @Autowired private CommonService commonService; //项目排班详细表 @Autowired private ProjarrangeDetailServiceI projarrangeDetailService; // 用户和项目关系处理 @Autowired UserDepartOrgDealServiceI userDepartOrgDealServiceI; /** * 排班操作表列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { request.setAttribute("yearmonth", request.getParameter("yearmonth")); request.setAttribute("pid", request.getParameter("pid")); return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperateList"); } /** * 月度排班弹窗 * 排班操作表列表查询页面数据 * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid * @param user */ @RequestMapping(params = "datagrid") public void datagrid(ArrangeDutyOperateDto arrangeDutyOperateDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { String pid=request.getParameter("pid"); if(pid!=null&&pid.length()!=0){ pid=pid.split(",")[0]; } String yearmonth=request.getParameter("yearmonth"); /*//根据项目pid获取所有的userid;-- //根据项目id查询所有子节点id List ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid); UserAndUserPersonnelDto userAndUserPersonnelDto=new UserAndUserPersonnelDto(); userAndUserPersonnelDto.setChildDepartIdList(ChildIdList); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List listUserAndUserPersonnelDto = arrangeDutyOperateService.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql); List userIdList=new ArrayList(); for (int i = 0; i < listUserAndUserPersonnelDto.size(); i++) { userIdList.add(listUserAndUserPersonnelDto.get(i).getUserid()); } //根据项目pid获取所有的userid;-- //查询排班操作表所有数据,根据项目pid匹配userid,然后获取排班操作表id== StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity where yearmonth=? "); List arrangeDutyOperateEntityList = commonService.findHql(hql.toString(),yearmonth); List arrangeDutyOperateIdList=new ArrayList(); for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) { List tempUserIDList=extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid()); for (int j = 0; j < tempUserIDList.size(); j++) { if(userIdList.contains(tempUserIDList.get(j))){ arrangeDutyOperateIdList.add(arrangeDutyOperateEntityList.get(i).getId()); break; } } } //查询排班操作表所有数据,根据项目pid匹配userid,然后获取排班操作表id== //再匹配月度字段查出数据 arrangeDutyOperateDto.setArrangeDutyOperateIdList(arrangeDutyOperateIdList);*/ arrangeDutyOperateDto.setYearmonth(yearmonth); arrangeDutyOperateDto.setPid(pid); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List arrangeDutyOperateDtoList = arrangeDutyOperateService.getArrangeDutyOperateDtoByPIdYearMonthNoPage(arrangeDutyOperateDto, authSql); dataGrid.setResults(arrangeDutyOperateDtoList); TagUtil.datagrid(response, dataGrid); } /** * * 删除排班操作表 * * @return */ @RequestMapping(params = "doDel") @ResponseBody public AjaxJson doDel(ArrangeDutyOperateEntity arrangeDutyOperate,String pid, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); arrangeDutyOperate = systemService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId()); message = "排班操作删除成功"; try{ if(pid!=null&&pid.length()>0){ pid=pid.split(",")[0]; } j=arrangeDutyOperateService.deleteOperateAndGeneralDetail(arrangeDutyOperate,pid); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }catch(Exception e){ j.setSuccess(false); e.printStackTrace(); message = "排班操作删除失败"; } j.setMsg(message); return j; } /** * 批量删除排班操作表 * * @return */ @RequestMapping(params = "doBatchDel") @ResponseBody public AjaxJson doBatchDel(String ids,HttpServletRequest request){ String message = null; AjaxJson j = new AjaxJson(); message = "排班操作删除成功"; try{ for(String id:ids.split(",")){ ArrangeDutyOperateEntity arrangeDutyOperate = systemService.getEntity(ArrangeDutyOperateEntity.class, id ); arrangeDutyOperateService.delete(arrangeDutyOperate); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } }catch(Exception e){ e.printStackTrace(); message = "排班操作删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 添加排班操作表 * * @param ids * @return */ @RequestMapping(params = "doAdd") @ResponseBody public AjaxJson doAdd(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "排班操作添加成功"; try{ arrangeDutyOperateService.save(arrangeDutyOperate); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); }catch(Exception e){ j.setSuccess(false); e.printStackTrace(); message = "排班操作添加失败"; } j.setMsg(message); return j; } /** * 更新排班操作表 * * @param ids * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "排班操作更新成功"; ArrangeDutyOperateEntity t = arrangeDutyOperateService.get(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(arrangeDutyOperate, t); arrangeDutyOperateService.saveOrUpdate(t); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); } catch (Exception e) { j.setSuccess(false); e.printStackTrace(); message = "排班操作更新失败"; } j.setMsg(message); return j; } /** * 排班操作表新增页面跳转 * * @return */ @RequestMapping(params = "goAdd") public ModelAndView goAdd(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest req) { if (StringUtil.isNotEmpty(arrangeDutyOperate.getId())) { arrangeDutyOperate = arrangeDutyOperateService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId()); req.setAttribute("arrangeDutyOperatePage", arrangeDutyOperate); } return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperate-add"); } /** * 排班操作表编辑页面跳转 * * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(ArrangeDutyOperateEntity arrangeDutyOperate, HttpServletRequest req) { if (StringUtil.isNotEmpty(arrangeDutyOperate.getId())) { arrangeDutyOperate = arrangeDutyOperateService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId()); req.setAttribute("arrangeDutyOperatePage", arrangeDutyOperate); } return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutyOperate-update"); } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name","arrangeDutyOperateController"); return new ModelAndView("common/upload/pub_excel_upload"); } /** * 导出excel * * @param request * @param response */ @RequestMapping(params = "exportXls") public String exportXls(ArrangeDutyOperateEntity arrangeDutyOperate,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { CriteriaQuery cq = new CriteriaQuery(ArrangeDutyOperateEntity.class, dataGrid); org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, arrangeDutyOperate, request.getParameterMap()); List arrangeDutyOperates = this.arrangeDutyOperateService.getListByCriteriaQuery(cq,false); modelMap.put(NormalExcelConstants.FILE_NAME,"排班操作"); modelMap.put(NormalExcelConstants.CLASS,ArrangeDutyOperateEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("排班操作列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,arrangeDutyOperates); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导出excel 使模板 * * @param request * @param response */ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(ArrangeDutyOperateEntity arrangeDutyOperate,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { modelMap.put(NormalExcelConstants.FILE_NAME,"排班操作"); modelMap.put(NormalExcelConstants.CLASS,ArrangeDutyOperateEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("排班操作列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList()); return NormalExcelConstants.JEECG_EXCEL_VIEW; } @SuppressWarnings("unchecked") @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List listArrangeDutyOperateEntitys = ExcelImportUtil.importExcel(file.getInputStream(),ArrangeDutyOperateEntity.class,params); for (ArrangeDutyOperateEntity arrangeDutyOperate : listArrangeDutyOperateEntitys) { arrangeDutyOperateService.save(arrangeDutyOperate); } j.setMsg("文件导入成功!"); } catch (Exception e) { j.setMsg("文件导入失败!"); logger.error(ExceptionUtil.getExceptionMessage(e)); }finally{ try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j; } @RequestMapping(method = RequestMethod.GET) @ResponseBody public List list() { List listArrangeDutyOperates=arrangeDutyOperateService.getList(ArrangeDutyOperateEntity.class); return listArrangeDutyOperates; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public ResponseEntity get(@PathVariable("id") String id) { ArrangeDutyOperateEntity task = arrangeDutyOperateService.get(ArrangeDutyOperateEntity.class, id); if (task == null) { return new ResponseEntity(HttpStatus.NOT_FOUND); } return new ResponseEntity(task, HttpStatus.OK); } @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity create(@RequestBody ArrangeDutyOperateEntity arrangeDutyOperate, UriComponentsBuilder uriBuilder) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(arrangeDutyOperate); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ arrangeDutyOperateService.save(arrangeDutyOperate); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象. String id = arrangeDutyOperate.getId(); URI uri = uriBuilder.path("/rest/arrangeDutyOperateController/" + id).build().toUri(); HttpHeaders headers = new HttpHeaders(); headers.setLocation(uri); return new ResponseEntity(headers, HttpStatus.CREATED); } @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity update(@RequestBody ArrangeDutyOperateEntity arrangeDutyOperate) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(arrangeDutyOperate); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ arrangeDutyOperateService.saveOrUpdate(arrangeDutyOperate); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码. return new ResponseEntity(HttpStatus.NO_CONTENT); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) public void delete(@PathVariable("id") String id) { arrangeDutyOperateService.deleteEntityById(ArrangeDutyOperateEntity.class, id); } /** * 班次选择 * 月度排班 * 班次表列表 页面跳转 * * @return */ @RequestMapping(params = "arrangeDutySelectList") public ModelAndView arrangeDutySelectList(HttpServletRequest request) { request.setAttribute("ids", request.getParameter("ids")); request.setAttribute("pid", request.getParameter("pid")); return new ModelAndView("cn/com/lzt/arrangedutyoperate/arrangeDutySelectList"); } /** * 班次选择页面 * 月度排班 * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid * @param user */ @RequestMapping(params = "arrangeDutyDatagrid") public void arrangeDutyDatagrid(ArrangeDutyDto arrangeDutyDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { /*CriteriaQuery cq = new CriteriaQuery(ArrangeDutyEntity.class, dataGrid); //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, arrangeDuty, request.getParameterMap()); try{ //自定义追加查询条件 }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.arrangeDutyService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid);*/ /*String myPId=arrangeDutyDto.getPid(); if(myPId!=null&&myPId.length()>0&&myPId.indexOf(",")!=-1){ String[] pIdList=myPId.split(","); //arrangeDutyDto.setPid(myPId.substring(0, myPId.indexOf(","))); arrangeDutyDto.setPid(pIdList[0]); } String orgIds = request.getParameter("orgIds"); List orgIdList = extractIdListByComma(orgIds); // 获取 当前组织机构的用户信息 if (!CollectionUtils.isEmpty(orgIdList)) { arrangeDutyDto.setOrgIdList(orgIdList); }*/ if(arrangeDutyDto.getPid()!=null&&arrangeDutyDto.getPid().length()>0){ arrangeDutyDto.setPid(arrangeDutyDto.getPid().split(",")[0]); } String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List arrangeDutyMinidaoDtoList = arrangeDutyService.getArrangeDutyMonthNoPage(arrangeDutyDto,authSql); for (int i = 0; i < arrangeDutyMinidaoDtoList.size(); i++) { if(arrangeDutyMinidaoDtoList.get(i)!=null){ if(arrangeDutyMinidaoDtoList.get(i).getNormalworkStime()!=null &&arrangeDutyMinidaoDtoList.get(i).getNormalworkStime().length()!=0 &&arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime()!=null &&arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime().length()!=0){ //正常工作时间 String normalworkStime=arrangeDutyMinidaoDtoList.get(i).getNormalworkStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getNormalworkEtime(); arrangeDutyMinidaoDtoList.get(i).setNormalworkStime(normalworkStime); } if(arrangeDutyMinidaoDtoList.get(i).getOndutyStime()!=null &&arrangeDutyMinidaoDtoList.get(i).getOndutyStime().length()!=0 &&arrangeDutyMinidaoDtoList.get(i).getOndutyEtime()!=null &&arrangeDutyMinidaoDtoList.get(i).getOndutyEtime().length()!=0){ //值班时间 String ondutyStime=arrangeDutyMinidaoDtoList.get(i).getOndutyStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getOndutyEtime(); arrangeDutyMinidaoDtoList.get(i).setOndutyStime(ondutyStime); } if(arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime()!=null &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime().length()!=0 &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime()!=null &&arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime().length()!=0){ //超时加班时间 String Overtime=arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeStime()+"-"+arrangeDutyMinidaoDtoList.get(i).getTimeOutOvertimeEtime(); arrangeDutyMinidaoDtoList.get(i).setTimeOutOvertimeStime(Overtime); } //手动拼接班次餐补 if(arrangeDutyMinidaoDtoList.get(i).getDutyMealid()!=null&&arrangeDutyMinidaoDtoList.get(i).getDutyMealid().length()!=0){ String dutyMealid = arrangeDutyMinidaoDtoList.get(i).getDutyMealid(); List mealsSubsidyDtolist=getSubsidyInfo(dutyMealid); if(mealsSubsidyDtolist.size()>0){ String subsidyMoneyAndUnit=""; for (int j = 0; j < mealsSubsidyDtolist.size(); j++) { String strUnit=""; if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_dun)){ strUnit="元/顿"; }else if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_yue)){ strUnit="元/月"; }else if(mealsSubsidyDtolist.get(j).getCalcuUnit().equals(Globals.CALCU_UNIT_ci)){ strUnit="元/次"; } if(subsidyMoneyAndUnit.length()>0){ if(!arrangeDutyMinidaoDtoList.get(i).getDutyType().equals(Globals.DUTYTYPE_riban11h)){ subsidyMoneyAndUnit+=","+mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit; }else{ subsidyMoneyAndUnit+=","+mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit+" x 2"; } }else{ if(!arrangeDutyMinidaoDtoList.get(i).getDutyType().equals(Globals.DUTYTYPE_riban11h)){ subsidyMoneyAndUnit=mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit; }else{ subsidyMoneyAndUnit=mealsSubsidyDtolist.get(j).getSubsidyMoney()+strUnit+" x 2"; } } } arrangeDutyMinidaoDtoList.get(i).setSubsidyMoneyAndUnit(subsidyMoneyAndUnit); } } } } //dataGrid.setTotal(list.getTotal()); dataGrid.setResults(arrangeDutyMinidaoDtoList); TagUtil.datagrid(response, dataGrid); } /** * 根据id查询餐费补贴表信息 * @author zbw * 2017-11-1 * @param request * @param response * @return */ @RequestMapping(params = "getSubsidyInfo") @ResponseBody public List getSubsidyInfo(String dutyMealid) { List mealsSubsidyDtolist=new ArrayList(); //String dutyMealid = request.getParameter("id"); if(dutyMealid.length()==0){ return mealsSubsidyDtolist; } MealsSubsidyDto mealsSubsidyDto=new MealsSubsidyDto(); String[] dutyMealIdArr=dutyMealid.split(","); //班次餐补id List mealsSubsidyIdList=new ArrayList(); for (int i = 0; i < dutyMealIdArr.length; i++) { mealsSubsidyIdList.add(dutyMealIdArr[i]); } if(mealsSubsidyIdList.size()>0){ mealsSubsidyDto.setMealsSubsidyIdList(mealsSubsidyIdList); } //DataGrid dataGrid=new DataGrid(); //dataGrid.setField("id,subsidyName,subsidyMoney,calcuUnit,deleteFlag,status"); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); //查询项目排班详细表数据 List MealsSubsidyDtolist = arrangeDutyService.getMealsSubsidyByIdList( mealsSubsidyDto,authSql); return MealsSubsidyDtolist; } /** * 班次员工选择 * 员工表列表 页面跳转 * * @return */ @RequestMapping(params = "personnelBaseArchivesManageSelectList") public ModelAndView personnelBaseArchivesManageSelectList(HttpServletRequest request) { request.setAttribute("userid", request.getParameter("userid")); request.setAttribute("pid", request.getParameter("pid")); request.setAttribute("yearmonth", request.getParameter("yearmonth")); request.setAttribute("pjtPostId", request.getParameter("pjtPostId")); return new ModelAndView("cn/com/lzt/arrangedutyoperate/personnelBaseArchivesManageSelectList"); } /** * 查询班次人员弹窗 * @author zbw * 2017-11-5 * @param userAndUserPersonnelDto * @param request * @param response * @param dataGrid */ @RequestMapping(params = "getPersonnelBaseArchivesManageInfo") public void getPersonnelBaseArchivesManageInfo(UserAndUserPersonnelDto userAndUserPersonnelDto,String yearmonth,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { //extractIdListByComma String pid=request.getParameter("pid"); String userid=request.getParameter("userid"); String pjtPostId = request.getParameter("pjtPostId"); //获取当前选中的userid-- List useridListPart=new ArrayList(); if(userid!=null&&userid.length()!=0){ useridListPart=extractIdListByComma(userid); } //获取当前选中的userid-- //查询排班操作表所有数据,并获取所有的userid== StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity adoe where adoe.yearmonth=? "); List arrangeDutyOperateEntityList = commonService.findHql(hql.toString(),yearmonth); List useridListAll=new ArrayList(); for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) { if(arrangeDutyOperateEntityList.get(i).getUserid()!=null&&arrangeDutyOperateEntityList.get(i).getUserid().length()!=0){ useridListAll.addAll(extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid())); } } //查询排班操作表所有数据,并获取所有的userid== //获取当前要排除的userid useridListAll.removeAll(useridListPart); //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;== if(pid!=null&&pid.length()!=0){ pid=pid.split(",")[0]; userAndUserPersonnelDto.setPid(pid); } //包括该项目id //根据项目id查询所有子节点id List ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid); /******************************************************************/ /* * 找到整个项目的工资策略,删除那些没有工资策略的员工 */ // CriteriaQuery cq = new CriteriaQuery(UserWagestrategyEntity.class); // cq.in("belongUnitid", ChildIdList.toArray(new String[0])); // cq.add(); // cq.eq("deleteFlag", "0"); // cq.add(); // List wageStraEntities = systemService.getListByCriteriaQuery(cq, false); // HashMap hm_userid2wageStragegy = new HashMap<>(); // for(UserWagestrategyEntity wagtstr : wageStraEntities) { // hm_userid2wageStragegy.put(wagtstr.getUserid(), wagtstr); // } userAndUserPersonnelDto.setChildDepartIdList(ChildIdList); userAndUserPersonnelDto.setUserIdList(useridListAll); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List listUserAndUserPersonnelDto = arrangeDutyOperateService.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql); // if(listUserAndUserPersonnelDto != null) { // for(int i=listUserAndUserPersonnelDto.size()-1 ; i>=0 ; i--) { // String uid =listUserAndUserPersonnelDto.get(i).getUserid(); // if(!hm_userid2wageStragegy.containsKey(uid)) { // listUserAndUserPersonnelDto.remove(i); // } // } // } /******************************************************************/ if(pjtPostId != null && pjtPostId.length()>0) { //通过项目岗位id 查询通用岗位ID StringBuffer sbhql = new StringBuffer(" FROM ProjectPostDetailEntity ppde where ppde.id=? "); List projectPostDetailEntityList = commonService.findHql(sbhql.toString(),pjtPostId); // 通用的岗位id,用来过滤前台选择对话框 String postId = null; if(projectPostDetailEntityList.size() == 1) { postId = projectPostDetailEntityList.get(0).getPostid(); } if(postId != null) { List filterList = new ArrayList(); for(UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) { if(postId.equals(dto.getInPostid())) { filterList.add(dto); } } Collections.sort(filterList); dataGrid.setResults(filterList); TagUtil.datagrid(response, dataGrid); return; } } Collections.sort(listUserAndUserPersonnelDto); //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;== //dataGrid.setTotal(listUserAndUserPersonnelDto.getTotal()); dataGrid.setResults(listUserAndUserPersonnelDto); TagUtil.datagrid(response, dataGrid); } /** * 班次操作表 * 保存新增/更新的行数据 * @author zbw * 2017-11-1 * @param arrangeDutyOperate * @param request * @return */ @RequestMapping(params = "saveArrangeDutyOperate") @ResponseBody public AjaxJson saveArrangeDutyOperate(ArrangeDutyOperateEntity arrangeDutyOperate,String sign,String arrangeDutyOperateId){ AjaxJson j = new AjaxJson(); if(arrangeDutyOperate.getPid()!=null&&arrangeDutyOperate.getPid().length()>0){ arrangeDutyOperate.setPid(arrangeDutyOperate.getPid().split(",")[0]); } j=arrangeDutyOperateService.saveArrangeDutyOperate(arrangeDutyOperate,sign,arrangeDutyOperateId); return j; } /** * 根据员工id异步获取中文名称realname * 根据班次shiftid异步获取中文名称dutyName * @author zbw * 2017-11-2 * @param userid * @return */ @RequestMapping(params = "getRealName") @ResponseBody public AjaxJson getRealName(String shiftid,String shiftidDictionary,String userid) { AjaxJson j = new AjaxJson(); try { //获取班次名称 List dictList=systemService.queryDict(shiftidDictionary.split(",")[0], shiftidDictionary.split(",")[1], shiftidDictionary.split(",")[2]); String dutyName=""; for (int i = 0; i < shiftid.split(",").length; i++) { for (int k = 0; k < dictList.size(); k++) { if(shiftid.split(",")[i].equals(dictList.get(k).getTypecode())){ if(dutyName.length()!=0){ dutyName+=","+dictList.get(k).getTypename(); }else{ dutyName=dictList.get(k).getTypename(); } } } } //获取用户名称 List baseUserList=systemService.queryDict("t_s_base_user", "id", "realname"); String realName=""; for (int i = 0; i < userid.split(",").length; i++) { for (int k = 0; k < baseUserList.size(); k++) { if(userid.split(",")[i].equals(baseUserList.get(k).getTypecode())){ if(realName.length()!=0){ realName+=","+baseUserList.get(k).getTypename(); }else{ realName=baseUserList.get(k).getTypename(); } } } } Map map=new HashMap(); map.put("dutyName", dutyName); map.put("realName", realName); j.setAttributes(map); } catch (Exception e) { j.setSuccess(false); e.printStackTrace(); } return j; } /** * 月度排班页面获取项目岗位信息; * @author zbw * 2017-11-17 * @param pid * @return */ @RequestMapping(params = "getProjectPostDetail") @ResponseBody public AjaxJson getProjectPostDetail(String pid){ AjaxJson j = new AjaxJson(); if(pid!=null&&pid.length()>0){ pid=pid.split(",")[0]; } StringBuffer hql = new StringBuffer(" from ProjectPostDetailEntity t where delete_flag = '0' "); hql.append(" and t.pid =? "); List projectPostDetailEntityList = arrangeDutyOperateService .findHql(hql.toString(),pid); Map myMap=new HashMap(); myMap.put("0", projectPostDetailEntityList); j.setAttributes(myMap); return j; } @RequestMapping(params = "getDeployPeopleNumLeft") @ResponseBody public AjaxJson getDeployPeopleNumLeft(String pid, String pjtPostId,String yearmonth) { AjaxJson j = new AjaxJson(); StringBuffer hql = new StringBuffer(" from ProjectPostDetailEntity t where delete_flag = '0' "); hql.append(" and t.pid =? and t.id=? "); List projectPostDetailEntityList = arrangeDutyOperateService .findHql(hql.toString(),pid,pjtPostId); if(projectPostDetailEntityList.size()>0) { ProjectPostDetailEntity postDetail = projectPostDetailEntityList.get(0); hql = new StringBuffer(" from ArrangeDutyOperateEntity t "); hql.append(" where t.pjtPostId =? and t.yearmonth=? "); List operaterList = arrangeDutyOperateService .findHql(hql.toString(),pjtPostId,yearmonth); int totalNum = postDetail.getNeedNumber(); int deployNum = getDeployNum(operaterList); int leavePeople = getLeavePeople(operaterList); Map myMap=new HashMap(); if(totalNum >= deployNum-leavePeople) { myMap.put("0", totalNum-deployNum+leavePeople); }else { myMap.put("0", 0); } j.setAttributes(myMap); } return j; } /** * @param operaterList * @return */ private int getLeavePeople(List operaterList) { List userIdLeave = new ArrayList(); if(operaterList != null && operaterList.size()>0) { for(ArrangeDutyOperateEntity entity : operaterList) { String userid = entity.getUserid(); String[] split = userid.split(","); if(split != null) { for(int i=0 ; i0) { userIdLeave.add(split[i]); } } } } } if(userIdLeave.size()>0) { StringBuffer hqls = new StringBuffer("select count(*) from PersonnelBaseArchivesManageEntity where userid in (:userid) and (positionStatus='3' or positionStatus = '4')"); Query query = systemService.getSession().createQuery(hqls.toString()); query.setParameterList("userid", userIdLeave).list(); int count = ((Number)query.uniqueResult()).intValue(); return count; } return 0; } /** * @param operaterList * @return */ private int getDeployNum(List operaterList) { if(operaterList != null && operaterList.size()>0) { int num = 0; for(ArrangeDutyOperateEntity entity : operaterList) { String userid = entity.getUserid(); String[] split = userid.split(","); if(split != null) { num += split.length; } } return num; } return 0; } /** * 月度排班页面获取班次类型进行验证; * @author zbw * 2017-11-17 * @param pid * @return */ @RequestMapping(params = "getCheckShiftType") @ResponseBody public AjaxJson getCheckShiftType(String shiftid){ AjaxJson j = new AjaxJson(); ArrangeDutyDto arrangeDutyDto=new ArrangeDutyDto(); arrangeDutyDto.getArrangeDutyIdList().addAll(extractIdListByComma(shiftid)); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List arrangeDutyDtoList = arrangeDutyService.getArrangeDutyByIdList(arrangeDutyDto, authSql); List shiftTypeList=new ArrayList(); for (int i = 0; i < arrangeDutyDtoList.size(); i++) { if(!shiftTypeList.contains(arrangeDutyDtoList.get(i).getDutyType())){ shiftTypeList.add(arrangeDutyDtoList.get(i).getDutyType()); } } if(shiftTypeList.size()==1){ j.setMsg("false"); }else{ String yeban="false"; String riban="false"; for(int i=0;i listUserAndUserPersonnelDtoSelected = new ArrayList(); // 获取当前选中的userid-- List useridListPart = new ArrayList(); if (userid != null && userid.length() != 0) { useridListPart = extractIdListByComma(userid); } // 获取当前选中的userid-- // 查询排班操作表所有数据,并获取所有的userid== StringBuffer hql = new StringBuffer(" FROM ArrangeDutyOperateEntity adoe where adoe.yearmonth=? "); List arrangeDutyOperateEntityList = commonService.findHql(hql.toString(), yearmonth); List useridListAll = new ArrayList(); for (int i = 0; i < arrangeDutyOperateEntityList.size(); i++) { if (arrangeDutyOperateEntityList.get(i).getUserid() != null && arrangeDutyOperateEntityList.get(i).getUserid().length() != 0) { useridListAll.addAll(extractIdListByComma(arrangeDutyOperateEntityList.get(i).getUserid())); } } // 查询排班操作表所有数据,并获取所有的userid== // 获取当前要排除的userid useridListAll.removeAll(useridListPart); // 根据项目pid查询所有可选用户,包括当前已选择的方便编辑;== if (pid != null && pid.length() != 0) { pid = pid.split(",")[0]; userAndUserPersonnelDto.setPid(pid); } // 包括该项目id // 根据项目id查询所有子节点id List ChildIdList = userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid); userAndUserPersonnelDto.setChildDepartIdList(ChildIdList); userAndUserPersonnelDto.setUserIdList(useridListAll); String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); List listUserAndUserPersonnelDto = arrangeDutyOperateService .getUserAndUserPersonnelNoPage(userAndUserPersonnelDto, authSql); if (pjtPostId != null && pjtPostId.length() > 0) { // 通过项目岗位id 查询通用岗位ID StringBuffer sbhql = new StringBuffer(" FROM ProjectPostDetailEntity ppde where ppde.id=? "); List projectPostDetailEntityList = commonService.findHql(sbhql.toString(), pjtPostId); // 通用的岗位id,用来过滤前台选择对话框 String postId = null; if (projectPostDetailEntityList.size() == 1) { postId = projectPostDetailEntityList.get(0).getPostid(); } if (postId != null) { List filterList = new ArrayList(); for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) { if (postId.equals(dto.getInPostid())) { filterList.add(dto); } } Collections.sort(filterList); listUserAndUserPersonnelDto = filterList; } } Collections.sort(listUserAndUserPersonnelDto); for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDto) { if (userid.indexOf(dto.getId()) >= 0) { listUserAndUserPersonnelDtoSelected.add(dto); } } for (UserAndUserPersonnelDto dto : listUserAndUserPersonnelDtoSelected) { listUserAndUserPersonnelDto.remove(dto); } request.setAttribute("persons", listUserAndUserPersonnelDto); request.setAttribute("personsSelected", listUserAndUserPersonnelDtoSelected); // request.setAttribute("pid", request.getParameter("pid")); return new ModelAndView("cn/com/lzt/arrangedutyoperate/personSelectedDoubleList"); } /** * 班次员工选择 * 员工表列表 页面跳转 * * @return */ @RequestMapping(params = "personSortList") public ModelAndView personnelSortList(HttpServletRequest request) { String userids = request.getParameter("userid"); String usernames = request.getParameter("username"); try { usernames = java.net.URLDecoder.decode(usernames , "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } List useridListPart = new ArrayList(); List usernameListPart = new ArrayList(); List listUserAndUserPersonnelDtoSelected = new ArrayList(); if (userids != null && userids.length() != 0) { useridListPart = extractIdListByComma(userids); } if (usernames != null && usernames.length() != 0) { usernameListPart = extractIdListByComma(usernames); } if(useridListPart.size() > 0 ) for (int i = 0 ; i < useridListPart.size(); i++) { UserAndUserPersonnelDto dto = new UserAndUserPersonnelDto(); dto.setId(useridListPart.get(i)); dto.setRealname(usernameListPart.get(i)); listUserAndUserPersonnelDtoSelected.add(dto); } request.setAttribute("personsSelected", listUserAndUserPersonnelDtoSelected); return new ModelAndView("cn/com/lzt/arrangedutyoperate/personSortList"); } /** * 班次员工选择 * 员工表列表 页面跳转 * * @return */ @RequestMapping(params = "getPersonSortSwapList") public ModelAndView getPersonSortSwapList(HttpServletRequest request) { String userids = request.getParameter("userid"); String usernames = request.getParameter("username"); String runway = request.getParameter("runway"); request.setAttribute("userid", userids); request.setAttribute("username", usernames); request.setAttribute("runway", runway); return new ModelAndView("cn/com/lzt/arrangedutyoperate/personnelSortSwapList"); } /** * 班次员工选择 * 员工表列表 页面跳转 * * @return */ @RequestMapping(params = "getPersonSortSwapDateGrid") public void getPersonSortSwapDateGrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { String userids = request.getParameter("userid"); String usernames = request.getParameter("username"); String runway = request.getParameter("runway"); try { usernames = java.net.URLDecoder.decode(usernames , "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } List useridListPart = new ArrayList(); List usernameListPart = new ArrayList(); List listUserAndUserPersonnelDtoSelected = new ArrayList(); if (userids != null && userids.length() != 0) { useridListPart = extractIdListByComma(userids); } if (usernames != null && usernames.length() != 0) { usernameListPart = extractIdListByComma(usernames); } if(useridListPart.size() > 0 ) { for (int i = 0 ; i < useridListPart.size(); i++) { UserAndUserPersonnelDto dto = new UserAndUserPersonnelDto(); dto.setId(useridListPart.get(i)); dto.setUserid(useridListPart.get(i)); dto.setRealname(usernameListPart.get(i)); setDerfaultArrangeDuty(dto, useridListPart, i,runway); listUserAndUserPersonnelDtoSelected.add(dto); } } dataGrid.setResults(listUserAndUserPersonnelDtoSelected); TagUtil.datagrid(response, dataGrid); } /** * @param dto * @param useridListPart * @param i */ private void setDerfaultArrangeDuty(UserAndUserPersonnelDto dto, List useridListPart, int i,String runway) { if(runway.indexOf("2bandao") == 0) { String[] dutys = { "上班", "休息" }; dto.setDefaultSort(dutys[i % 2]); }else if(useridListPart.size() % 3 == 0){ String[] dutys = {"日班", "夜班", "休息"}; int m = useridListPart.size() / 3; dto.setDefaultSort(dutys[i/m]); }else if(useridListPart.size() % 4 == 0){ String[] dutys = {"日班", "夜班", "休息", "休息"}; int m = useridListPart.size() / 4; dto.setDefaultSort(dutys[i/m]); } } }