qa-prevention-gwj/src/main/java/com/zcloud/controller/app/AppImgFilesController.java

383 lines
15 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.app;
import cn.hutool.core.io.FileUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.zcloud.controller.base.BaseController;
import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.service.bus.ImgFilesService;
import com.zcloud.util.*;
import org.apache.commons.io.FileUtils;
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 java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 说明:图片管理
* 作者luoxiaobao
* 时间2020-12-24
* 官网www.zcloudchina.com
*/
@Controller
@RequestMapping("/app/imgfiles")
public class AppImgFilesController extends BaseController {
@Autowired
private ImgFilesService imgfilesService;
/**
* 完成
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/add", headers = "content-type=multipart/form-data")
@ResponseBody
@Transactional
public Object finish(
@RequestParam(value = "FFILE", required = false) MultipartFile[] files,
@RequestParam(value = "TYPE", required = false) String TYPE,
@RequestParam(value = "FOREIGN_KEY", required = false) String FOREIGN_KEY
) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
String suffixName = files[i].getOriginalFilename().substring(files[i].getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if (!"json".equals(suffixName) && !"pdf".equals(suffixName) && !"jpg".equals(suffixName) && !"jpeg".equals(suffixName) && !"png".equals(suffixName) && !"mp4".equals(suffixName)) {
errInfo = "fail";
map.put("result", errInfo);
map.put("msg", "文件格式不正确!");
return map;
}
}
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
// 保存文件
File tempFile = new File(file.getOriginalFilename());
FileUtils.copyInputStreamToFile(file.getInputStream(), tempFile);
String md5 = FileUtil.isEmpty(tempFile) ? "" : DigestUtil.md5Hex(tempFile);
if (!FileUpload.isImage(tempFile) && !TYPE.equals("2") && !TYPE.equals("102")) {//四色图改为json文件,不用判断类型
tempFile.delete();
map.put("result", "failed");
map.put("exception", "上传图片格式不正确,请重新上传");
return map;
}
if (tempFile.exists()) {
tempFile.delete();
}
if (TYPE.equals("2") || TYPE.equals("102")) {//先删除原四色图
PageData pd2 = new PageData();
pd2.put("FOREIGN_KEY", FOREIGN_KEY);
pd2.put("TYPE", TYPE);
List<PageData> four = imgfilesService.listAll(pd2);
for (PageData pageData : four) {
File old = new File(PathUtil.getProjectpath() + pageData.getString("FILEPATH"));
old.delete();
imgfilesService.delete(pageData);
}
}
PageData pd = new PageData();
pd = this.getPageData();
String ffile = DateUtil.getDays();
// String filePath = PathUtil.getProjectpath() + Const.FILEPATHFILE + ffile; //文件上传路径
// String fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传
String fileName = this.get32UUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
Smb.sshSftp(file, fileName, Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile);
pd.put("IMGFILES_ID", this.get32UUID());
pd.put("FILEPATH", Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile + "/" + fileName);
pd.put("TYPE", TYPE);
pd.put("MD5", md5);
pd.put("FOREIGN_KEY", FOREIGN_KEY);
imgfilesService.save(pd);
}
}
map.put("result", errInfo);
return map;
}
/**
* 新增
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/add64")
@ResponseBody
public Object add64() throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
MultipartFile img = BASE64DecodedMultipartFile.base64ToMultipart(pd.getString("FILEPATH"));
String suffixName = img.getOriginalFilename().substring(img.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if (!"pdf".equals(suffixName) && !"jpg".equals(suffixName) && !"jpeg".equals(suffixName) && !"png".equals(suffixName) && !"mp4".equals(suffixName)) {
errInfo = "fail";
map.put("result", errInfo);
map.put("msg", "文件格式不正确!");
return map;
}
String ffile = DateUtil.getDays();
String fileName = this.get32UUID() + img.getOriginalFilename().substring(img.getOriginalFilename().lastIndexOf("."));
Smb.sshSftp(img, fileName, Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile);
pd.put("FILEPATH", Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile + "/" + fileName);
pd.put("IMGFILES_ID", this.get32UUID());
pd.put("TYPE", pd.getString("TYPE"));
pd.put("FOREIGN_KEY", pd.getString("FOREIGN_KEY"));
imgfilesService.save(pd);
map.put("pd", pd);
map.put("result", errInfo);
return map;
}
/**
* 完成
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/edit", headers = "content-type=multipart/form-data")
@ResponseBody
@Transactional
public Object edit(
@RequestParam(value = "FFILE", required = false) MultipartFile[] files,
@RequestParam(value = "TYPE", required = false) String TYPE,
@RequestParam(value = "FOREIGN_KEY", required = false) String FOREIGN_KEY
) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
String suffixName = files[i].getOriginalFilename().substring(files[i].getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if (!"json".equals(suffixName) && !"pdf".equals(suffixName) && !"jpg".equals(suffixName) && !"jpeg".equals(suffixName) && !"png".equals(suffixName) && !"mp4".equals(suffixName)) {
errInfo = "fail";
map.put("result", errInfo);
map.put("msg", "文件格式不正确!");
return map;
}
}
PageData pd2 = new PageData();
pd2.put("FOREIGN_KEY", FOREIGN_KEY);
pd2.put("TYPE", TYPE);
List<PageData> four = imgfilesService.listAll(pd2);
for (PageData pageData : four) {
File old = new File(PathUtil.getProjectpath() + pageData.getString("FILEPATH"));
old.delete();
imgfilesService.delete(pageData);
}
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
// 保存文件
File tempFile = new File(file.getOriginalFilename());
FileUtils.copyInputStreamToFile(file.getInputStream(), tempFile);
if (!FileUpload.isImage(tempFile) && !TYPE.equals("2")) {//四色图改为json文件,不用判断类型
tempFile.delete();
map.put("result", "failed");
map.put("exception", "上传图片格式不正确,请重新上传");
return map;
}
if (tempFile.exists()) {
tempFile.delete();
}
PageData pd = new PageData();
pd = this.getPageData();
String ffile = DateUtil.getDays();
// String filePath = PathUtil.getProjectpath() + Const.FILEPATHFILE + ffile; //文件上传路径
// String fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传
String fileName = this.get32UUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
Smb.sshSftp(file, fileName, Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile);
pd.put("IMGFILES_ID", this.get32UUID());
pd.put("FILEPATH", Const.FILEPATHFILE + pd.getString("CORPINFO_ID") + "/" + ffile + "/" + fileName);
pd.put("TYPE", TYPE);
pd.put("FOREIGN_KEY", FOREIGN_KEY);
imgfilesService.save(pd);
}
}
map.put("result", errInfo);
return map;
}
/**
* 删除
*
* @param out
* @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();
pd = imgfilesService.findById(pd); //根据ID读取
File file = new File(PathUtil.getProjectpath() + pd.getString("FILEPATH"));
file.delete();
imgfilesService.delete(pd);
map.put("result", errInfo); //返回结果
return map;
}
/**
* 修改
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/edit")
@RequiresPermissions("imgfiles:edit")
@ResponseBody
public Object edit() throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
imgfilesService.edit(pd);
map.put("result", errInfo);
return map;
}
/**
* 列表
*
* @param page
* @throws Exception
*/
@RequestMapping(value = "/list")
@RequiresPermissions("imgfiles: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();
String KEYWORDS = pd.getString("KEYWORDS"); //关键词检索条件
if (Tools.notEmpty(KEYWORDS)) pd.put("KEYWORDS", KEYWORDS.trim());
page.setPd(pd);
List<PageData> varList = imgfilesService.list(page); //列出ImgFiles列表
map.put("varList", varList);
map.put("page", page);
map.put("result", errInfo);
return map;
}
/**
* 去修改页面获取数据
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/goEdit")
@RequiresPermissions("imgfiles:edit")
@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 = imgfilesService.findById(pd); //根据ID读取
map.put("pd", pd);
map.put("result", errInfo);
return map;
}
/**
* 批量删除
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/deleteAll")
@RequiresPermissions("imgfiles:del")
@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(",");
imgfilesService.deleteAll(ArrayDATA_IDS);
errInfo = "success";
} else {
errInfo = "fail";
}
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
dataMap.put("titles", titles);
List<PageData> varOList = imgfilesService.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("FILEPATH")); //1
vpd.put("var2", varOList.get(i).get("TYPE").toString()); //2
vpd.put("var3", varOList.get(i).getString("FOREIGN_KEY")); //3
varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv, dataMap);
return mv;
}
/**
* 查询图片集合
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/listImgs")
@ResponseBody
public Object listImgs() throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
List<PageData> imgs = imgfilesService.listAll(pd); //根据ID读取
map.put("imgs", imgs);
map.put("result", errInfo);
return map;
}
}