| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509 |
- /**
- *
- */
- package cn.com.lzt.riskmanage.controller;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.log4j.Logger;
- import org.jeecgframework.core.common.controller.BaseController;
- import org.jeecgframework.core.common.model.json.DataGrid;
- import org.jeecgframework.core.constant.Globals;
- import org.jeecgframework.core.util.DataUtils;
- import org.jeecgframework.core.util.DateUtils;
- import org.jeecgframework.core.util.JeecgDataAutorUtils;
- import org.jeecgframework.core.util.ResourceUtil;
- import org.jeecgframework.core.util.StringUtil;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.jeecgframework.minidao.pojo.MiniDaoPage;
- import org.jeecgframework.poi.excel.entity.ExportParams;
- import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
- import org.jeecgframework.tag.core.easyui.TagUtil;
- import org.jeecgframework.web.system.service.SystemService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- import com.alibaba.fastjson.JSONObject;
- import com.xcgl.utils.XcglDateUtils;
- import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI;
- import cn.com.lzt.calendar.entity.CalendarEntity;
- import cn.com.lzt.leave.service.ModifyServiceI;
- import cn.com.lzt.personnelbasearchivesmanage.dto.DepartDto;
- import cn.com.lzt.personnelbasearchivesmanage.dto.PersonnelBaseArchivesManageInDto;
- import cn.com.lzt.personnelbasearchivesmanage.dto.PersonnelBaseArchivesManageOutDto;
- import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI;
- import cn.com.lzt.riskmanage.dao.RiskManageDao;
- import cn.com.lzt.riskmanage.dto.LeaveWarnDto;
- /**
- * @author xzx
- *
- * 2019年8月16日
- *
- */
- @Controller
- @RequestMapping("/riskManageController")
- public class RiskManageController extends BaseController {
- /**
- * Logger for this class
- */
- private static final Logger logger = Logger.getLogger(RiskManageController.class);
- @Autowired
- private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService;
- @Autowired
- private ModifyServiceI modifyService;
- @Autowired
- ArrangeDutyServiceI arrangeDutyService;
- @Autowired
- SystemService systemService ;
- @Autowired
- private RiskManageDao rptDao;
-
- /**
- * 新入职人员未缴金 页面跳转
- *
- * @return
- */
- @RequestMapping(params = "risk_jianjin_notstart")
- public ModelAndView risk_jianjin_notstart(HttpServletRequest request) {
- String queryParams = oConvertUtils.getString(request.getParameter("queryParams"));
-
- Calendar calendar = DataUtils.getCalendar();
- // calendar.add(Calendar.MONTH, -1);
- String yearmonth = DataUtils.formatDate(calendar, "yyyy-MM-dd");
- request.setAttribute("maxdate", yearmonth);
- if (oConvertUtils.isNotEmpty(queryParams)) {
- JSONObject jsonObject =JSONObject.parseObject(queryParams);
- request.setAttribute("queryParams",jsonObject);
- }else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("userName", "");
- jsonObject.put("departname", "");
- jsonObject.put("orgIds", "");
- jsonObject.put("telphone", "");
- jsonObject.put("idcard", "");
- jsonObject.put("positionStatus", "");
- jsonObject.put("certificateId", "");
- request.setAttribute("queryParams",jsonObject);
- }
- return new ModelAndView("cn/com/lzt/riskmanage/risk_jianjin_notstart");
- }
-
- /**
- * 新入职人员未缴金
- *
- * @param request
- * @param response
- * @param dataGrid
- * @param user
- */
- @RequestMapping(params = "datagrid_jianjin_notstart")
- public void datagrid_jianjin_notstart(PersonnelBaseArchivesManageInDto inDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
-
- String departIds = "";
- if (null != inDto.getOrgIds() && StringUtil.isNotEmpty(inDto.getOrgIds())) {
- departIds = inDto.getOrgIds();
- }
-
- if(StringUtil.isEmpty(inDto.getInMonth())) {
- dataGrid.setResults(new ArrayList<PersonnelBaseArchivesManageOutDto>());
- TagUtil.datagrid(response, dataGrid);
- return;
- }
-
- // 页面的单位ID
- List<String> departIdByPageList = Arrays.asList(departIds.split(","));
- // 用于检索的单位ID
- List<String> departIdBySearchList = new ArrayList<String>();
- for(String str : departIdByPageList) {
- if(StringUtil.isNotEmpty(str)) {
- departIdBySearchList.add(str);
- List<DepartDto> departDtoList = personnelBaseArchivesManageService.getAllChildrenList(str, null, null);
- for(DepartDto departDto : departDtoList) {
- departIdBySearchList.add(departDto.getId());
- }
- }
- }
-
- // List去重复
- HashSet<String> h = new HashSet<String>(departIdBySearchList);
- departIdBySearchList.clear();
- departIdBySearchList.addAll(h);
-
- // 重新封装检索用的单位字符串
- departIds = "";
- for(String str : departIdBySearchList) {
- departIds += "'" + str + "',";
- }
- if(StringUtil.isNotEmpty(departIds)) {
- departIds = departIds.substring(0,departIds.length() - 1);
- }
- inDto.setOrgIds(departIds);
-
- // 获取请求对应的数据权限
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- // 從SESSION中獲取用戶信息
- String sortorder = "";
- // String sort = dataGrid.getSort(); // 排序对象
- // String order = dataGrid.getOrder(); // 排序方式
- // if (StringUtil.isEmpty(sort)) {
- // sortorder = " orgId "; //默认userName,userId降序
- // } else {
- // sortorder = humpToLine(sort) + " " + order; // 处理下划线,拼接排序
- // }
- MiniDaoPage<PersonnelBaseArchivesManageOutDto> list = personnelBaseArchivesManageService.getPersonnelBaseArchivesManageList(inDto, dataGrid.getPage(), dataGrid.getRows(), authSql, sortorder);
- // list中去除null的废数据
- for(int i = list.getResults().size()-1; i >=0 ; i--) {
- PersonnelBaseArchivesManageOutDto personnelBaseArchivesManageOutDto = list.getResults().get(i);
-
- // 滤除重复的证书
- Map<String, String> certMap = new HashMap<String, String>();
- String certificateNames = personnelBaseArchivesManageOutDto.getCertificateName();
- if(certificateNames != null && !"".equals(certificateNames)){
- String[] certificateNameArr = certificateNames.split(",");
- for(String certName : certificateNameArr){
- certMap.put(certName, certName);
- }
- String certName_processed = "";
- for(String certName : certMap.values()){
- if("".equals(certName_processed)){
- certName_processed = certName;
- }else{
- certName_processed = certName_processed + "," + certName;
- }
- }
- list.getResults().get(i).setCertificateName(certName_processed);
- }
-
-
- // 设置组织机构
- String orgId = list.getResults().get(i).getOrgId();
- orgId = modifyService.getByorgId(orgId);
- list.getResults().get(i).setOrgId(orgId);
-
- if(StringUtil.isEmpty(personnelBaseArchivesManageOutDto.getId())) {
- list.getResults().remove(i);
- }
-
- String positionStatus =list.getResults().get(i).getPositionStatus();
- // 离职人员
- if(Globals.JOBSTATUS_3.equals(positionStatus) || Globals.JOBSTATUS_4.equals(positionStatus)) {
- list.getResults().remove(i);
- continue;
- }
- if(StringUtil.isNotEmpty(personnelBaseArchivesManageOutDto.getSocialSecurityUnit())){
- list.getResults().remove(i);
- continue;
- }
- }
-
- dataGrid.setTotal(list.getTotal());
- dataGrid.setResults(list.getResults());
- TagUtil.datagrid(response, dataGrid);
- }
-
- /**
- * 新入职人员未缴金 页面跳转
- *
- * @return
- */
- @RequestMapping(params = "risk_jianjin_notstop")
- public ModelAndView risk_jianjin_notstop(HttpServletRequest request) {
- String queryParams = oConvertUtils.getString(request.getParameter("queryParams"));
-
- Calendar calendar = DataUtils.getCalendar();
- // calendar.add(Calendar.MONTH, -1);
- String yearmonth = DataUtils.formatDate(calendar, "yyyy-MM-dd");
- request.setAttribute("maxdate", yearmonth);
- if (oConvertUtils.isNotEmpty(queryParams)) {
- JSONObject jsonObject =JSONObject.parseObject(queryParams);
- request.setAttribute("queryParams",jsonObject);
- }else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("userName", "");
- jsonObject.put("departname", "");
- jsonObject.put("orgIds", "");
- jsonObject.put("telphone", "");
- jsonObject.put("idcard", "");
- jsonObject.put("positionStatus", "");
- jsonObject.put("certificateId", "");
- request.setAttribute("queryParams",jsonObject);
- }
- return new ModelAndView("cn/com/lzt/riskmanage/risk_jianjin_notstop");
- }
-
- @RequestMapping(params = "datagrid_jianjin_notstop")
- public void datagrid_jianjin_notstop(PersonnelBaseArchivesManageInDto inDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
-
- String departIds = "";
- // 借用前台查询字段,但是后台查询数据的时候不应该用此字段过滤入职时间
- String stop_month = inDto.getInMonth();
-
- if (null != inDto.getOrgIds() && StringUtil.isNotEmpty(inDto.getOrgIds())) {
- departIds = inDto.getOrgIds();
- }
-
- if(StringUtil.isEmpty(stop_month)) {
- dataGrid.setResults(new ArrayList<PersonnelBaseArchivesManageOutDto>());
- TagUtil.datagrid(response, dataGrid);
- return;
- }
-
- // 页面的单位ID
- List<String> departIdByPageList = Arrays.asList(departIds.split(","));
- // 用于检索的单位ID
- List<String> departIdBySearchList = new ArrayList<String>();
- for(String str : departIdByPageList) {
- if(StringUtil.isNotEmpty(str)) {
- departIdBySearchList.add(str);
- List<DepartDto> departDtoList = personnelBaseArchivesManageService.getAllChildrenList(str, null, null);
- for(DepartDto departDto : departDtoList) {
- departIdBySearchList.add(departDto.getId());
- }
- }
- }
-
- // List去重复
- HashSet<String> h = new HashSet<String>(departIdBySearchList);
- departIdBySearchList.clear();
- departIdBySearchList.addAll(h);
-
- // 重新封装检索用的单位字符串
- departIds = "";
- for(String str : departIdBySearchList) {
- departIds += "'" + str + "',";
- }
- if(StringUtil.isNotEmpty(departIds)) {
- departIds = departIds.substring(0,departIds.length() - 1);
- }
- inDto.setOrgIds(departIds);
-
- // 获取请求对应的数据权限
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- // 從SESSION中獲取用戶信息
- String sortorder = "";
- // String sort = dataGrid.getSort(); // 排序对象
- // String order = dataGrid.getOrder(); // 排序方式
- // if (StringUtil.isEmpty(sort)) {
- // sortorder = " orgId "; //默认userName,userId降序
- // } else {
- // sortorder = humpToLine(sort) + " " + order; // 处理下划线,拼接排序
- // }
- inDto.setInMonth(""); // 不过滤,查询出来全部人员之后再过滤
- MiniDaoPage<PersonnelBaseArchivesManageOutDto> list = personnelBaseArchivesManageService.getPersonnelBaseArchivesManageList(inDto, dataGrid.getPage(), dataGrid.getRows(), authSql, sortorder);
- //某月15日作为标准
- stop_month = stop_month + "-15";
- DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");//定义一个时间转换格式“年-月-日”
- Date stop_date = null;
- try { //捕获类型转换(解析)异常
- stop_date = fmt.parse(stop_month);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- Calendar stop_cal = Calendar.getInstance();
- stop_cal.setTime(stop_date);
- //判断两种情况,显示: 1、截至本月底已离职而且未停缴金 2、在职状态、本月15日(含)达到退休年龄且未停缴缴金
- //除以上两种情况均去掉
- // list中去除null的废数据
- for(int i = list.getResults().size()-1; i >=0 ; i--) {
- PersonnelBaseArchivesManageOutDto personnelBaseArchivesManageOutDto = list.getResults().get(i);
-
- // 滤除重复的证书
- Map<String, String> certMap = new HashMap<String, String>();
- String certificateNames = personnelBaseArchivesManageOutDto.getCertificateName();
- if(certificateNames != null && !"".equals(certificateNames)){
- String[] certificateNameArr = certificateNames.split(",");
- for(String certName : certificateNameArr){
- certMap.put(certName, certName);
- }
- String certName_processed = "";
- for(String certName : certMap.values()){
- if("".equals(certName_processed)){
- certName_processed = certName;
- }else{
- certName_processed = certName_processed + "," + certName;
- }
- }
- list.getResults().get(i).setCertificateName(certName_processed);
- }
-
-
- // 设置组织机构
- String orgId = list.getResults().get(i).getOrgId();
- orgId = modifyService.getByorgId(orgId);
- list.getResults().get(i).setOrgId(orgId);
-
- if(StringUtil.isEmpty(personnelBaseArchivesManageOutDto.getId())) {
- list.getResults().remove(i);
- }
-
- Calendar last_stop_date = Calendar.getInstance();
- last_stop_date.setTime(stop_date);
- last_stop_date.add(Calendar.MONTH, -1);
-
- // 只有缴金人员才显示
- if(StringUtil.isNotEmpty(personnelBaseArchivesManageOutDto.getSocialSecurityUnit())) {
- // 离职人员: 15日含之前、上月16日之后离职的缴金人员,显示
- if(personnelBaseArchivesManageOutDto.getLeaveDate() != null) {
- Calendar leave_cal = Calendar.getInstance();
- leave_cal.setTime(personnelBaseArchivesManageOutDto.getLeaveDate());
- if(personnelBaseArchivesManageOutDto.getLeaveDate().compareTo(stop_date) <= 0
- && personnelBaseArchivesManageOutDto.getLeaveDate().compareTo(last_stop_date.getTime()) > 0) {
- personnelBaseArchivesManageOutDto.setDescription(fmt.format(personnelBaseArchivesManageOutDto.getLeaveDate()) + "离职");
- continue;
- }
- }
-
- // 退休:上月退休的缴金人员,显示
- if(isTiredLasMonth(personnelBaseArchivesManageOutDto, stop_date)) {
- personnelBaseArchivesManageOutDto.setDescription("上月退休");
- continue;
- }
- }
-
- // 除continue条件部分,均删除
- list.getResults().remove(i);
- }
-
- dataGrid.setTotal(list.getTotal());
- dataGrid.setResults(list.getResults());
- TagUtil.datagrid(response, dataGrid);
- }
- /**
- * @param personnelBaseArchivesManageOutDto
- * @param stop_date
- * @return
- */
- private boolean isTiredLasMonth(PersonnelBaseArchivesManageOutDto personnelBaseArchivesManageOutDto, Date stop_date) {
- Date birth = getBirth(personnelBaseArchivesManageOutDto);
- Calendar birth_cal = Calendar.getInstance();
- birth_cal.setTime(birth);
-
- Calendar last_month = Calendar.getInstance();
- last_month.setTime(stop_date);
- last_month.add(Calendar.MONTH, -1);
- // 设置上月最后一天
- last_month.set(Calendar.DAY_OF_MONTH, last_month.getLeastMaximum(Calendar.DAY_OF_MONTH));
- // 男性60
- if("0".equals(personnelBaseArchivesManageOutDto.getGender())) {
- birth_cal.add(Calendar.YEAR, 60);
- if(birth_cal.before(last_month)) {
- return true;
- }
- }
- //女性55
- if("1".equals(personnelBaseArchivesManageOutDto.getGender())) {
- birth_cal.add(Calendar.YEAR, 55);
- if(birth_cal.before(last_month)) {
- return true;
- }
- }
- return false;
- }
-
- private Date getBirth(PersonnelBaseArchivesManageOutDto personnelBaseArchivesManageOutDto) {
- String Id= personnelBaseArchivesManageOutDto.getIdcard();
- String year = Id.substring(6, 10);//调用substring方法返回相关字段,注意索引从0开始
- String month =Id.substring(10, 12);
- String day = Id.substring(12, 14);
- String birthday = year + "-" + month + "-" + day;
- DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");//定义一个时间转换格式“年-月-日”
- Date date = null;
- try { //捕获类型转换(解析)异常
- date = fmt.parse(birthday);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return date;
- }
-
- @RequestMapping(params = "risk_jianjin_unknownLeave")
- public ModelAndView risk_jianjin_unknownLeave(HttpServletRequest request) {
- return new ModelAndView("cn/com/lzt/riskmanage/risk_jianjin_unknownLeave");
- }
-
- @RequestMapping(params = "datagrid_jianjin_unknownLeave")
- public void datagrid_jianjin_unknownLeave(LeaveWarnDto leaveWarnDto ,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
- long start = System.currentTimeMillis();
- logger.error("===================【离职预警报表】开始"+DataUtils.datetimeFormat.format(new Date()));
- String xiuxi = arrangeDutyService.getDUTYTYPE_xiuxiId();
- int noDingDayCount = 10;
- int noArrangeDayCount = 10;
- String lastDingDate = XcglDateUtils.addDateDay(DateUtils.date_sdf.format(new Date()), 0-noDingDayCount, DateUtils.date_sdf);
- StringBuffer dayBuf = new StringBuffer();
- for(int i = 0 ; i < noArrangeDayCount ; i++) {
- String day = XcglDateUtils.addDateDay(DateUtils.date_sdf.format(new Date()), i+1, DateUtils.date_sdf);
- dayBuf.append(",'").append(day).append("'");
- }
- String hql = " from CalendarEntity where ymdDate in ("+dayBuf.substring(1)+")";
- List<CalendarEntity> day = systemService.findHql(hql);
- List<String> arrangeDateList = new ArrayList<String>();
- for(CalendarEntity cal:day) {
- arrangeDateList.add(cal.getId());
- }
- List<LeaveWarnDto> results = rptDao.getLeaveWarn(lastDingDate, xiuxi, noDingDayCount, arrangeDateList);
-
- dataGrid.setResults(results);
- logger.error("===================【离职预警报表】结束"+DataUtils.datetimeFormat.format(new Date()));
- long end = System.currentTimeMillis();
- long times = end - start;
- logger.error("总耗时"+times/1000+"秒");
- dataGrid.setFooter("realname:人数合计:,projectname:"+results.size()+"人");
- TagUtil.datagrid(response, dataGrid);
- }
-
- @RequestMapping(params = "exportXlsUnknownLeave")
- public String exportXls(LeaveWarnDto leaveWarnDt,HttpServletRequest request,HttpServletResponse response
- , DataGrid dataGrid,ModelMap modelMap) {
- logger.error("===================【离职预警报表】开始"+DataUtils.datetimeFormat.format(new Date()));
- String xiuxi = arrangeDutyService.getDUTYTYPE_xiuxiId();
- int noDingDayCount = 10;
- int noArrangeDayCount = 10;
- String lastDingDate = XcglDateUtils.addDateDay(DateUtils.date_sdf.format(new Date()), 0-noDingDayCount, DateUtils.date_sdf);
- StringBuffer dayBuf = new StringBuffer();
- for(int i = 0 ; i < noArrangeDayCount ; i++) {
- String day = XcglDateUtils.addDateDay(DateUtils.date_sdf.format(new Date()), i+1, DateUtils.date_sdf);
- dayBuf.append(",'").append(day).append("'");
- }
- String hql = " from CalendarEntity where ymdDate in ("+dayBuf.substring(1)+")";
- List<CalendarEntity> day = systemService.findHql(hql);
- List<String> arrangeDateList = new ArrayList<String>();
- for(CalendarEntity cal:day) {
- arrangeDateList.add(cal.getId());
- }
- List<LeaveWarnDto> results = rptDao.getLeaveWarn(lastDingDate, xiuxi, noDingDayCount, arrangeDateList);
-
- modelMap.put(NormalExcelConstants.FILE_NAME,"离职预警报表");
- modelMap.put(NormalExcelConstants.CLASS,LeaveWarnDto.class);
- modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("离职预警报表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
- "导出信息"));
- modelMap.put(NormalExcelConstants.DATA_LIST,results);
- return NormalExcelConstants.JEECG_EXCEL_VIEW;
- }
- }
|