integrated_traffic/src/main/java/com/zcloud/controller/eduArchives/ArchivesPostManController.java

477 lines
20 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String, Object> map = new HashMap<String, Object>();
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<String, String> map = new HashMap<String, String>();
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<String, Object> map = new HashMap<String, Object>();
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<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
List<PageData> varList = archivespostmanService.listAll(pd); //列出ArchivesPostMan列表
String day = DateUtil.getDay();
// 当天时间
List<PageData> 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") + " 过期<br>");
});
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<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //机构
List<PageData> 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<String, Object> map = new HashMap<String, Object>();
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<String, Object> map = new HashMap<String, Object>();
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<String, Object> dataMap = new HashMap<String, Object>();
List<String> titles = new ArrayList<String>();
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<PageData> varOList = archivespostmanService.listAll(pd);
List<PageData> varList = new ArrayList<PageData>();
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<String, Object> map = new HashMap<String, Object>();
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<String, String> map = new HashMap<String, String>();
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<PageData> 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<String> 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;
}
}