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

479 lines
20 KiB
Java
Raw Normal View History

2024-03-06 16:25:53 +08:00
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
*/
2024-03-22 09:37:32 +08:00
@RequestMapping(value = "/add", headers = "content-type=multipart/form-data")
2024-03-06 16:25:53 +08:00
@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()); //机构
pd.put("ENTERPRISE_ID", pd.get("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 = "excel", 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("ENTERPRISE_ID", pd.get("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;
}
}