package com.zcloud.controller.eduArchives; import com.alibaba.fastjson.JSONObject; import com.zcloud.controller.base.BaseController; import com.zcloud.service.eduArchives.ArchivesPdfFileService; import com.zcloud.service.eduArchives.ArchivesPostManService; import com.zcloud.entity.Page; import com.zcloud.entity.PageData; import com.zcloud.entity.Response; import com.zcloud.util.*; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.*; /** * 说明:三岗人员管理台账 * 作者:luoxiaobao * 时间:2021-12-15 * 官网:www.zcloudchina.com */ @Controller @RequestMapping("/archivespostman") public class ArchivesPostManController extends BaseController { @Autowired private ArchivesPostManService archivespostmanService; @Autowired private ArchivesPdfFileService archivesPdfFileService; @Autowired private Smb smb; /** * 新增 * * @param * @throws Exception */ @RequestMapping(value = "/add", headers = "content-type=multipart/form-data") @ResponseBody public Object add(@RequestParam(value = "FFILE", required = false) MultipartFile[] files) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("ARCHIVES_POSTMAN_ID", this.get32UUID()); //主键 pd.put("CREATOR", Jurisdiction.getUsername()); //添加人 pd.put("CREATTIME", DateUtil.date2Str(new Date())); //添加时间 pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人 pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间 pd.put("ISDELETE", 0); //是否删除(0:有效 1:删除) pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //机构 for (MultipartFile file : files) { String ffile = DateUtil.getDays(); String fileName = this.get32UUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); smb.sshSftp(file, fileName, Const.FILEPATHUSERPHOTO + "/" + ffile); pd.put("FILEPATH", Const.FILEPATHUSERPHOTO + "/" + ffile + "/" + fileName); } archivespostmanService.save(pd); map.put("result", errInfo); return map; } /** * 删除 * * @throws Exception */ @RequestMapping(value = "/delete") @ResponseBody public Object delete() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); archivespostmanService.delete(pd); map.put("result", errInfo); //返回结果 return map; } /** * 修改 * * @param * @throws Exception */ @RequestMapping(value = "/edit") @ResponseBody public Object edit(@RequestParam(value = "FFILE", required = false) MultipartFile[] files) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人 pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间 if (files != null && files.length > 0) { if (pd.get("FILEPATH") != null && !pd.get("FILEPATH").equals("")) smb.deleteFile(pd.getString("FILEPATH")); for (MultipartFile file : files) { String ffile = DateUtil.getDays(); String fileName = this.get32UUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); smb.sshSftp(file, fileName, Const.FILEPATHUSERPHOTO + "/" + ffile); pd.put("FILEPATH", Const.FILEPATHUSERPHOTO + "/" + ffile + "/" + fileName); } } archivespostmanService.edit(pd); map.put("result", errInfo); return map; } /** * 距离三岗人员证书到期 3个月提醒一次 6个月提醒一次 * * @param page * @throws Exception */ @RequestMapping(value = "/notifyMessage") @ResponseBody public Object notifyMessage(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); List varList = archivespostmanService.listAll(pd); //列出ArchivesPostMan列表 String day = DateUtil.getDay(); // 当天时间 List collect = new LinkedList<>(); varList.forEach(x -> { if (DateUtil.daysBetween(day, x.getString("EFFECTIVE_DATE")) == 180) { x.put("endMouth", "6"); collect.add(x); } if (DateUtil.daysBetween(day, x.getString("EFFECTIVE_DATE")) == 90) { x.put("endMouth", "3"); collect.add(x); } }); StringBuffer stringBuffer = new StringBuffer(); collect.forEach(item -> { stringBuffer.append(item.get("NAME")).append("的证书编号").append(" ").append(item.getString("CARD_ID")).append(" 将于" + item.getString("endMouth") + "个月后 " + item.getString("EFFECTIVE_DATE") + " 过期
"); }); map.put("varList", collect); map.put("result", errInfo); map.put("message", stringBuffer.toString()); return map; } /** * 列表 * * @param page * @throws Exception */ @RequestMapping(value = "/list") @ResponseBody public Object list(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //机构 List varList = archivespostmanService.listAll(pd); //列出ArchivesPostMan列表 map.put("varList", varList); map.put("result", errInfo); return map; } /** * 去修改页面获取数据 * * @param * @throws Exception */ @RequestMapping(value = "/goEdit") @ResponseBody public Object goEdit() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd = archivespostmanService.findById(pd); //根据ID读取 map.put("pd", pd); map.put("result", errInfo); return map; } /** * 批量删除 * * @param * @throws Exception */ @RequestMapping(value = "/deleteAll") @ResponseBody public Object deleteAll() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); String DATA_IDS = pd.getString("DATA_IDS"); if (Tools.notEmpty(DATA_IDS)) { String ArrayDATA_IDS[] = DATA_IDS.split(","); archivespostmanService.deleteAll(ArrayDATA_IDS); errInfo = "success"; } else { errInfo = "error"; } map.put("result", errInfo); //返回结果 return map; } /** * 导出到excel * * @param * @throws Exception */ @RequestMapping(value = "/excel") @RequiresPermissions("toExcel") public ModelAndView exportExcel() throws Exception { ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map dataMap = new HashMap(); List titles = new ArrayList(); titles.add("姓名"); //1 titles.add("岗位/操作项目"); //2 titles.add("电话"); //3 titles.add("证书号"); //4 titles.add("证书有效期限"); //5 titles.add("复训日期"); //6 titles.add("企业"); //7 titles.add("年"); //8 titles.add("是否删除"); //9 titles.add("添加人"); //10 titles.add("添加时间"); //11 titles.add("修改人"); //12 titles.add("修改时间"); //13 dataMap.put("titles", titles); List varOList = archivespostmanService.listAll(pd); List varList = new ArrayList(); for (int i = 0; i < varOList.size(); i++) { PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1 vpd.put("var2", varOList.get(i).getString("POST")); //2 vpd.put("var3", varOList.get(i).getString("PHONE")); //3 vpd.put("var4", varOList.get(i).getString("CARD_ID")); //4 vpd.put("var5", varOList.get(i).getString("EFFECTIVE_DATE")); //5 vpd.put("var6", varOList.get(i).getString("RETRAINING")); //6 vpd.put("var7", varOList.get(i).getString("CORPINFO_ID")); //7 vpd.put("var8", varOList.get(i).getString("YEAR")); //8 vpd.put("var9", varOList.get(i).get("ISDELETE").toString()); //9 vpd.put("var10", varOList.get(i).getString("CREATOR")); //10 vpd.put("var11", varOList.get(i).getString("CREATTIME")); //11 vpd.put("var12", varOList.get(i).getString("OPERATOR")); //12 vpd.put("var13", varOList.get(i).getString("OPERATTIME")); //13 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv, dataMap); return mv; } @RequestMapping("analysisExcel") @ResponseBody public Response analysisExcel(@RequestParam(value = "excel") MultipartFile excel) throws Exception { Response response = Response.getResponse(); try { PageData request = this.getPageData(); archivespostmanService.analysisExcel(excel, request); return response.OK(); } catch (Exception e) { e.printStackTrace(); return response.errorMessage(e.getMessage()); } } @RequestMapping(value = "/downExcel") public void downExcel(HttpServletResponse response) throws Exception { FileDownload.fileDownload(response, PathUtil.getProjectpath() + Const.FILEPATHFILE + "post.xls", "三岗人员管理台账导入模板.xls"); } /** * 导出一企一档-三岗人员管理台账文档 * * @param * @throws Exception */ @RequestMapping(value = "/personmanage") @ResponseBody public Object personmanage() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = this.getPageData(); PageData apf = new PageData(); apf.put("ARCHIVES_PDF_FILE_ID", this.get32UUID()); apf.put("TABLE_NAME","bus_enterprise"); apf.put("TABLE_ID", pd.get("ID")); apf.put("TYPE", "3"); apf.put("STATUS", "0"); apf.put("CREATOR", Jurisdiction.getUsername()); apf.put("CREATTIME", DateUtil.date2Str(new Date())); apf.put("DESCR", pd.getString("NAME") + "-一企一档-" + pd.getString("YEAR") + "年度三岗人员管理台账"); apf.put("METHOD_NAME", "personmanage"); //方法名 apf.put("CLASS_NAME", PageData.class.getName()); //方法名中参数的类型 --如方法类型有多个,使类型用逗号连接,格式:xx,yyy pd.put("ARCHIVES_PDF_FILE_ID", apf.get("ARCHIVES_PDF_FILE_ID")); map.put("result", errInfo); pd.put("projectPath", PathUtil.getProjectpath()); pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //机构 apf.put("PARAM_NAME", JSONObject.toJSON(pd).toString());//方法名中参数的值 --如方法中参数有多个,使参数用逗号连接,格式:{"a":a},{"b":b} archivesPdfFileService.save(apf); //异步生成档案 archivesPdfFileService.personmanage(pd); return map; } /** * 从EXCEL导入 * * @param file * @return * @throws Exception */ @RequestMapping(value = "/readExcel") @SuppressWarnings("unchecked") @ResponseBody @Transactional public Object readExcel(@RequestParam(value = "FFILE", required = false) MultipartFile file) throws Exception { Map map = new HashMap(); String errInfo = "success"; StringBuffer errorStr = new StringBuffer(); PageData pd = new PageData(); pd = this.getPageData(); String filePath = PathUtil.getProjectpath() + Const.FILEPATHFILE + "student/"; String fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传 List listPd = (List) ObjectExcelRead.readExcel(filePath, fileName, 2, 0, 0); //执行读EXCEL操作,读出的数据导入List 2:从第3行开始;0:从第A列开始;0:第0个sheet /** * var0 :姓名 * var1 :岗位操作项目 * var2 :电话 * var3 :证书号 * var4 :证书有效期 * var5 :复训日期 */ List header = new ArrayList<>(); header.add("姓名"); header.add("岗位/操作项目"); header.add("电话"); header.add("证书号"); header.add("证书有效期"); header.add("复训日期"); if (listPd.size() > 0) { Integer number = 0;//行数,用于提示用户 Integer successNum = 0; // 成功数 int editNum = 0; for (PageData lpd : listPd) { try { number++; for (int i = 0; i < 6; i++) { if (!lpd.containsKey("var" + i) || Tools.isEmpty(lpd.get("var" + i))) { if ("姓名".equals(header.get(i))) { continue; } if ("岗位/操作项目".equals(header.get(i))) { continue; } if ("电话".equals(header.get(i))) { continue; } if ("证书号".equals(header.get(i))) { continue; } if ("证书有效期".equals(header.get(i))) { continue; } if ("复训日期".equals(header.get(i))) { continue; } errorStr.append("第" + number + "行的" + header.get(i) + "无数据;"); //姓名、岗位/操作项目、电话、证书号、证书有效期 复训日期 throw new RuntimeException("第" + number + "行的" + header.get(i) + "无数据;"); } } PageData pageData = new PageData(); String name = Tools.isEmpty(lpd.get("var0")) ? "" : Tools.excelHandle(lpd.get("var0")); //姓名 String post = Tools.isEmpty(lpd.get("var1")) ? "" : Tools.excelHandle(lpd.get("var1")); // 岗位 String phone = Tools.isEmpty(lpd.get("var2")) ? "" : Tools.excelHandle(lpd.get("var2")); // 手机号 String card_id = Tools.isEmpty(lpd.get("var3")) ? "" : Tools.excelHandle(lpd.get("var3")); // 证书号 String effective_date = Tools.isEmpty(lpd.get("var4")) ? "" : Tools.excelHandle(lpd.get("var4")); // 证书有效期 String retraining = Tools.isEmpty(lpd.get("var5")) ? "" : Tools.excelHandle(lpd.get("var5")); // 复训日期 // 验证姓名 if (StringUtils.isEmpty(name)) { errorStr.append("第" + number + "行的姓名不正确;"); } // 岗位 if (StringUtils.isEmpty(post)) { errorStr.append("第" + number + "行的岗位不正确;"); } // 验证手机号 if (!Tools.checkMobileNumber(phone)) { errorStr.append("第" + number + "行的手机号不正确;"); } // 证书号 if (StringUtils.isEmpty(card_id)) { errorStr.append("第" + number + "行的证书号不正确;"); } // 证书有效期 if (StringUtils.isEmpty(effective_date)) { errorStr.append("第" + number + "行的证书有效期不正确;"); } // 复训日期 if (StringUtils.isEmpty(retraining)) { errorStr.append("第" + number + "行的复选日期不正确;"); } pageData.put("ARCHIVES_POSTMAN_ID", this.get32UUID()); pageData.put("NAME", name); pageData.put("POST", post); pageData.put("PHONE", phone); pageData.put("CARD_ID", card_id); pageData.put("EFFECTIVE_DATE", effective_date); pageData.put("RETRAINING", retraining); pageData.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //机构 pageData.put("YEAR", pd.getString("year")); pageData.put("ISDELETE", "0"); pageData.put("CREATOR", Jurisdiction.getName());// 账号类型 pageData.put("CREATTIME", DateUtil.date2Str(new Date())); pageData.put("OPERATOR", Jurisdiction.getName()); pageData.put("OPERATTIME", DateUtil.date2Str(new Date())); pageData.put("FILEPATH", ""); if (errorStr.length() == 0) { archivespostmanService.save(pageData); } successNum++; } catch (Exception e) { e.printStackTrace(); errorStr.append("第" + number + "行数据出现错误;"); } } if (errorStr.length() == 0) { errorStr.append("成功导入").append(successNum).append("条数据!"); } File old = new File(filePath, fileName); old.delete(); } else { map.put("result", "error"); //返回结果 map.put("msg", "Excel数据为空,请检查数据后,重新上传!"); File old = new File(filePath, fileName); old.delete(); return map; } map.put("result", errInfo); //返回结果 map.put("msg", errorStr.toString()); //返回结果 map.put("resultStr", errorStr.toString()); return map; } }