浏览代码

Merge branch 'master' of http://47.100.37.243:10080/ZHOU/yunsu

sunyadv 6 年之前
父节点
当前提交
3a503c10b1

+ 1 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/constant/Constant.java

@@ -32,6 +32,7 @@ public class Constant {
     public static final String PROJECT_PREFIX = "YMXM";//项目编号
     public static final String UPLOAD = "上传";//上传
     public static final String DOWNLOAD = "下载";//下载
+    public static final String APPROVAL = "审批";//审批
     public static final Integer UPDATE_AUTHORITY = 0;//修改权限
     public static final Integer DOWNLOAD_AUTHORITY = 1;//下载权限
     public static final Integer VIEW_AUTHORITY = 2;//浏览权限

+ 0 - 13
cloud-model/src/main/java/com/hssx/cloudmodel/controller/CompanyController.java

@@ -153,18 +153,5 @@ public class CompanyController {
         msg = companyService.getCoutomCompanyAndMouldsByUser(userVO);
         return msg;
     }
-    /**
-     * 公司详情
-     * 参数 token 用户身份凭证 companyId 公司id
-     * @return
-     */
-    @ApiOperation(value = "公司详情")
-    @RequestMapping("/detail")
-    @ResponseBody
-    public HttpRespMsg detail(UserVO userVO){
-        HttpRespMsg msg = new HttpRespMsg();
-        msg = companyService.detail(userVO);
-        return msg;
-    }
 }
 

+ 21 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/MouldFileController.java

@@ -183,5 +183,26 @@ public class MouldFileController {
         }
         return msg;
     }
+
+    /**
+     * 文档下载日志的excel导出
+     * 参数:startTime 开始时间,endTime 结束时间,mouldId 模具id
+     *
+     * @return
+     */
+    @ApiOperation("文档下载日志的excel导出")
+    @RequestMapping(value = "/downloadFileListExcel",method = RequestMethod.POST)
+    @ResponseBody
+    public HttpRespMsg downloadFileListExcel(UserVO userVO, HttpServletResponse response){
+        HttpRespMsg msg = new HttpRespMsg();
+        try {
+            msg = mouldFileService.downloadFileListExcel(userVO,response);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return msg;
+    }
+
+
 }
 

+ 3 - 3
cloud-model/src/main/java/com/hssx/cloudmodel/controller/UserController.java

@@ -58,7 +58,7 @@ public class UserController {
      * 添加/修改用户
      *
      * 参数:account 账号 username 用户名(账号使用者的名字)parentId 创建此用户的创建者id
-     * password 密码 ,mobile 手机号 ,roleName 角色名称, companyId 所属公司id,
+     * password 密码 ,mobile 手机号 ,roleName 角色名称, companyId 所属公司id,projectId 项目id
      * flag 0-添加,1-修改
      * 注意:创建公司管理员的时候 ,addType 0
      * @return
@@ -66,9 +66,9 @@ public class UserController {
     @ApiOperation("添加/修改用户")
     @RequestMapping("/add")
     @ResponseBody
-    public HttpRespMsg addAndUpdateUser(User user, HttpServletRequest request, Integer flag,
+    public HttpRespMsg addAndUpdateUser(User user, HttpServletRequest request, Integer flag,@RequestParam(required = false) Integer projectId,
                                         HttpServletResponse response,@RequestParam(required = false)Integer addType) {
-        HttpRespMsg msg = userService.addAndUpdateUser(user, flag,addType);
+        HttpRespMsg msg = userService.addAndUpdateUser(user, flag,addType,projectId);
         return msg;
     }
 

+ 2 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/entity/vo/UserVO.java

@@ -29,6 +29,8 @@ public class UserVO extends User {
     private String ids;//模具ids
     private Integer partId;//零件id
     private List<Project> projects;
+    private String startTime;
+    private String endTime;
     /**
      * 图档类型0-2D,1-3D
      */

+ 1 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/MouldFileService.java

@@ -30,4 +30,5 @@ public interface MouldFileService extends IService<MouldFile> {
     HttpRespMsg getListByUserAndProjectId(UserVO userVO, PageUtil page);
     HttpRespMsg dowloadFileList(UserVO userVO, HttpServletRequest request, HttpServletResponse response,String downloadPath,String path) throws IOException;
     HttpRespMsg addPartFile(UserVO userVO, String path, MultipartFile[] files);
+    HttpRespMsg downloadFileListExcel(UserVO userVO, HttpServletResponse response);
 }

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/service/UserService.java

@@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletRequest;
  */
 public interface UserService extends IService<User> {
 
-    HttpRespMsg addAndUpdateUser(User user, Integer flag,Integer addType);
+    HttpRespMsg addAndUpdateUser(User user, Integer flag,Integer addType,Integer projectId);
 
     HttpRespMsg login(UserVO userVO, HttpServletRequest request);
 

+ 15 - 4
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/CompanyServiceImpl.java

@@ -69,7 +69,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
                     //资产方直接添加
                     BeanUtils.copyProperties(companyVO, company);
                     companyMapper.insert(company);
-                    if (companyIds != null) {
+                    if (companyIds != null && !"".equals(companyIds)) {
                         List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(companyIds);
                         for (Integer ide : ides) {
                             if (assetCustomCompanyMapper.selectCount(new QueryWrapper<AssetCustomCompany>().eq("assert_id", company.getId()).eq("custom_id", ide)) == 0) {
@@ -84,7 +84,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
                     //生产方
                     BeanUtils.copyProperties(companyVO, company);
                     companyMapper.insert(company);
-                    if (companyIds != null) {
+                    if (companyIds != null && !"".equals(companyIds)) {
                         List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(companyIds);
                         for (Integer ide : ides) {
                             if (assetCustomCompanyMapper.selectCount(new QueryWrapper<AssetCustomCompany>().eq("assert_id", ide).eq("custom_id", company.getId())) == 0) {
@@ -121,7 +121,9 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
                     msg.setError("当前公司所生产方公司已被用用到项目,不可执行修改操作。");
                     return msg;
                 }
-                if (companyIds != null) {
+                //删除之前的关联公司
+                assetCustomCompanyMapper.delete(new QueryWrapper<AssetCustomCompany>().eq("assert_id",companyVO.getId()));
+                if (companyIds != null && !"".equals(companyIds)) {
                     List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(companyIds);
                     for (Integer ide : ides) {
                         if (assetCustomCompanyMapper.selectCount(new QueryWrapper<AssetCustomCompany>().eq("assert_id", company.getId()).eq("custom_id", ide)) == 0) {
@@ -158,7 +160,9 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
                     msg.setError("当前公司已和所关联的资产方合作相关项目,不可执行修改操作。");
                     return msg;
                 }
-                if (companyIds != null) {
+                //删除之前的关联公司
+                assetCustomCompanyMapper.delete(new QueryWrapper<AssetCustomCompany>().eq("custom_id",companyVO.getId()));
+                if (companyIds != null && !"".equals(companyIds)) {
                     List<Integer> ides = ListUtil.convertIntegerIdsArrayToList(companyIds);
                     for (Integer ide : ides) {
                         if (assetCustomCompanyMapper.selectCount(new QueryWrapper<AssetCustomCompany>().eq("assert_id", company.getId()).eq("custom_id", ide)) == 0) {
@@ -301,7 +305,14 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
             msg.setError("该公司已被应用到用户中,暂不提供删除操作");
             return msg;
         } else {
+            Company company = companyMapper.selectById(id);
             companyMapper.deleteById(id);
+            if(company.getCompanyType()==0){
+                //删除资产方关联的生产方公司
+                assetCustomCompanyMapper.delete(new QueryWrapper<AssetCustomCompany>().eq("assert_id",id));
+            }else if(company.getCompanyType()==1){
+                assetCustomCompanyMapper.delete(new QueryWrapper<AssetCustomCompany>().eq("custom_id",id));
+            }
         }
         return msg;
     }

+ 78 - 8
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/MouldFileServiceImpl.java

@@ -10,10 +10,7 @@ import com.hssx.cloudmodel.entity.vo.UserVO;
 import com.hssx.cloudmodel.mapper.*;
 import com.hssx.cloudmodel.service.MouldFileService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.hssx.cloudmodel.util.FileUtil;
-import com.hssx.cloudmodel.util.HttpRespMsg;
-import com.hssx.cloudmodel.util.ListUtil;
-import com.hssx.cloudmodel.util.PageUtil;
+import com.hssx.cloudmodel.util.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -25,6 +22,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -221,8 +219,6 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
                             mould.setState(4+"");//4已报废状态
                             mouldMapper.updateById(mould);
                         }
-
-
                     } else {
                         mf.setState(1);
                     }
@@ -230,6 +226,20 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
                     mf.setState(-1);
                 }
                 mouldFileMapper.updateById(mf);
+                //添加审批记录
+                MouldOperationDynamics dynamics = new MouldOperationDynamics();
+                dynamics.setMouldId(oldData.getId());
+                dynamics.setBelongType(oldData.getBlongType());
+                dynamics.setFileId(oldData.getId());
+                if(null != oldData.getFileName2()){
+                    dynamics.setFileName(oldData.getFileName()+","+oldData.getFileName2());
+                }else{
+                    dynamics.setFileName(oldData.getFileName());
+                }
+                dynamics.setOperatorId(user.getId());
+                dynamics.setOperatorName(user.getUsername());
+                dynamics.setContent(Constant.APPROVAL);
+                mouldOperationDynamicsMapper.insert(dynamics);
             } else if (user.getSubordinateType() == 1) {
                 //生产方
                 if (isPass == 1) {
@@ -249,11 +259,23 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
                     mf.setState(-2);
                 }
                 mouldFileMapper.updateById(mf);
+                //添加审批记录
+                MouldOperationDynamics dynamics = new MouldOperationDynamics();
+                dynamics.setMouldId(oldData.getId());
+                dynamics.setBelongType(oldData.getBlongType());
+                dynamics.setFileId(oldData.getId());
+                if(null != oldData.getFileName2()){
+                    dynamics.setFileName(oldData.getFileName()+","+oldData.getFileName2());
+                }else{
+                    dynamics.setFileName(oldData.getFileName());
+                }
+                dynamics.setOperatorId(user.getId());
+                dynamics.setOperatorName(user.getUsername());
+                dynamics.setContent(Constant.APPROVAL);
+                mouldOperationDynamicsMapper.insert(dynamics);
             } else {
                 msg.setError("只有生产方和资产方才能审核, subordinteType = " + user.getSubordinateType() + ", 无效!");
             }
-
-
         }
         return msg;
     }
@@ -461,6 +483,54 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
         return msg;
     }
 
+    @Override
+    public HttpRespMsg downloadFileListExcel(UserVO userVO, HttpServletResponse response) {
+        HttpRespMsg msg = new HttpRespMsg();
+        List<List<String>> list = new ArrayList<List<String>>();
+        //标题
+        List<String> titleList = new ArrayList<String>();
+        titleList.add("文件名");
+        titleList.add("下载者姓名");
+        titleList.add("文件类型");
+        titleList.add("下载时间");
+        list.add(titleList);
+        QueryWrapper<MouldOperationDynamics> qw = new QueryWrapper<MouldOperationDynamics>();
+        qw.eq("content",Constant.DOWNLOAD);
+        SimpleDateFormat dateSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if(userVO.getStartTime() != null && userVO.getEndTime() != null){
+            qw.le("indate",userVO.getStartTime());
+            qw.ge("indate",userVO.getEndTime());
+        }
+        List<MouldOperationDynamics> mouldOperationDynamics = mouldOperationDynamicsMapper.selectList(qw);
+        for (MouldOperationDynamics dynamic : mouldOperationDynamics) {
+            List<String> rowList = new ArrayList<String>();
+            //文件名
+            rowList.add(dynamic.getFileName());
+            //操作者名字
+            rowList.add(dynamic.getOperatorName());
+            //文件类型
+            if(dynamic.getBelongType()==0){
+                rowList.add("模具文档");
+            }else if(dynamic.getBelongType()==1){
+                rowList.add("零件文档");
+            }else if(dynamic.getBelongType()==2){
+                rowList.add("试模验收");
+            }else if(dynamic.getBelongType()==3){
+                rowList.add("保养方案");
+            }else if(dynamic.getBelongType()==4){
+                rowList.add("模具更新");
+            }else if(dynamic.getBelongType()==5){
+                rowList.add("模具报废");
+            }
+            //下载时间
+            rowList.add(dateSdf.format(dynamic.getIndate()));
+        }
+        Mould mould = mouldMapper.selectById(userVO.getMouldId());
+        ExcelUtil.exportGeneralExcelByTitleAndList(response, mould.getModelNo()+mould.getModelName()+"-"+ dateSdf.format(new Date()), list);
+        msg.data = mould;
+        return msg;
+    }
+
 
     public Map<String, Object> feedBackDirectMultiDownload(HttpServletRequest request, HttpServletResponse response, String downloadPath, Mould vo, List<MouldFile> mouldFiles,String oldFilePath) throws IOException {
         //压缩文件初始设置

+ 65 - 23
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/UserServiceImpl.java

@@ -14,7 +14,6 @@ import com.hssx.cloudmodel.util.HttpRespMsg;
 import com.hssx.cloudmodel.util.MD5Util;
 import com.hssx.cloudmodel.util.PageUtil;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -24,10 +23,6 @@ import java.util.List;
 import java.util.UUID;
 
 /**
- * <p>
- * 服务实现类
- * </p>
- *
  * @author 吴涛涛
  * @since 2019-07-26
  */
@@ -155,12 +150,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     }
 
     @Override
-    public HttpRespMsg addAndUpdateUser(User user, Integer flag, Integer addType) {
+    public HttpRespMsg addAndUpdateUser(User user, Integer flag, Integer addType, Integer projectId) {
         //获取该账号的创建者
         User parentUser = userMapper.selectById(user.getParentId());
         HttpRespMsg msg = new HttpRespMsg();
         if (Constant.SYS_PARENT_ID == parentUser.getParentId()) {
-            //此时是创建admind,当前创建人是超级管理员
+            //此时是创建admind,当前创建人是超级管理员,此时没有项目id
             int count = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", user.getCompanyId()).eq("parent_id", parentUser.getId()));
             if (flag == 0) {
                 if (count > 0) {
@@ -190,7 +185,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         user.setTeamName("生产方");
                     }
                     userMapper.insert(user);
-                    if(addType != null){
+                    if (addType != null) {
                         if (addType == 0) {
                             Company com = new Company();
                             com.setId(user.getCompanyId());
@@ -235,6 +230,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         if (userCompanyCount == 0) {
                             userCompanyMapper.insert(userCompany);
                         }
+                        //添加一条项目参与人记录
+                        if (projectId != null) {
+                            ProjectUser projectUser = new ProjectUser();
+                            projectUser.setProjectId(projectId);
+                            projectUser.setSubordinate(existingUser.getCompanyId());
+                            projectUser.setUserId(existingUser.getId());
+                            projectUser.setSubordinateType(existingUser.getSubordinateType());
+                            projectUserMapper.insert(projectUser);
+                        }
                     }
                 } else {
                     //创建账号默认密码"000000"
@@ -259,6 +263,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     if (userCompanyCount == 0) {
                         userCompanyMapper.insert(userCompany);
                     }
+                    //添加一条项目参与人记录
+                    if (projectId != null) {
+                        ProjectUser projectUser = new ProjectUser();
+                        projectUser.setProjectId(projectId);
+                        projectUser.setSubordinate(user.getCompanyId());
+                        projectUser.setUserId(user.getId());
+                        projectUser.setSubordinateType(user.getSubordinateType());
+                        projectUserMapper.insert(projectUser);
+                    }
                 }
             } else if (flag == 1) {
                 //更新角色信息
@@ -284,21 +297,42 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 if (count > 0) {
                     //当前账号已被创建
                     User existingUser = userMapper.selectOne(qw);
-                    //判断创建该账号的是admin或者是项目经理自己创建的账号,如果再次创建直接提示创建重复
-                    if (existingUser.getParentId() == managerParent.getId() || existingUser.getParentId() == parentUser.getId()) {
-                        msg.setError("该账号已存在,请勿重新创建");
+                    //查询该账号是否已参与创建项目经理的admin公司下的项目
+                    //得到admin公司下的所有项目
+                    List<Project> projects = projectMapper.selectList(new QueryWrapper<Project>().eq("owner_company", managerParent.getCompanyId()));
+                    List<Integer> ids = new ArrayList<>();
+                    ids.add(-1);
+                    for (Project project : projects) {
+                        ids.add(project.getId());
+                    }
+                    List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().in("project_id", ids).eq("user_id", existingUser.getId()));
+                    if (projectUsers.size() > 0) {
+                        msg.setError("该账号已参与本资产方公司下的其他项目,请前往本项目详情添加即可");
+                        return msg;
+                    }
+                    List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", existingUser.getId()).in("project_id", ids));
+                    if (projectApproves.size() > 0) {
+                        msg.setError("该账号已参与本资产方公司下的其他项目,请前往本项目详情添加即可");
                         return msg;
-                    } else {
-                        //此时用户已经有了,则建立一条合作公司的关系
-                        UserCompany userCompany = new UserCompany();
-                        userCompany.setUserId(existingUser.getId());
-                        userCompany.setBelongCompanyId(existingUser.getCompanyId());
-                        userCompany.setCooperationCompanyId(managerParent.getCompanyId());
-                        QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
-                        int userCompanyCount = userCompanyMapper.selectCount(qWra);
-                        if (userCompanyCount == 0) {
-                            userCompanyMapper.insert(userCompany);
-                        }
+                    }
+                    //此时用户已经有了,创建人不是该忍之前参与过的项目的公司下的项目经理创建,则建立一条合作公司的关系
+                    UserCompany userCompany = new UserCompany();
+                    userCompany.setUserId(existingUser.getId());
+                    userCompany.setBelongCompanyId(existingUser.getCompanyId());
+                    userCompany.setCooperationCompanyId(managerParent.getCompanyId());
+                    QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
+                    int userCompanyCount = userCompanyMapper.selectCount(qWra);
+                    if (userCompanyCount == 0) {
+                        userCompanyMapper.insert(userCompany);
+                    }
+                    //添加一条项目参与人记录
+                    if (projectId != null) {
+                        ProjectUser projectUser = new ProjectUser();
+                        projectUser.setProjectId(projectId);
+                        projectUser.setSubordinate(existingUser.getCompanyId());
+                        projectUser.setUserId(existingUser.getId());
+                        projectUser.setSubordinateType(existingUser.getSubordinateType());
+                        projectUserMapper.insert(projectUser);
                     }
                 } else {
                     //创建账号默认密码"000000"
@@ -323,6 +357,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     if (userCompanyCount == 0) {
                         userCompanyMapper.insert(userCompany);
                     }
+                    //添加一条项目参与人记录
+                    if (projectId != null) {
+                        ProjectUser projectUser = new ProjectUser();
+                        projectUser.setProjectId(projectId);
+                        projectUser.setSubordinate(user.getCompanyId());
+                        projectUser.setUserId(user.getId());
+                        projectUser.setSubordinateType(user.getSubordinateType());
+                        projectUserMapper.insert(projectUser);
+                    }
                 }
             } else if (flag == 1) {
                 //更新角色信息
@@ -337,7 +380,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 userMapper.updateById(user);
             }
         }
-
         return msg;
     }
 

+ 143 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/util/ExcelUtil.java

@@ -0,0 +1,143 @@
+package com.hssx.cloudmodel.util;
+
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.List;
+
+public class ExcelUtil {
+    /**
+     * 简单Excel导出
+     * @param response
+     * @param title     标题
+     * @param list      数据
+     * @return
+     */
+    public static String exportGeneralExcelByTitleAndList(HttpServletResponse response, String title, List<List<String>> list) {
+        String result="系统提示:Excel文件导出成功!";
+        String fileName= title+".xls";
+        try {
+            response.reset();
+            response.setHeader("Content-disposition",
+                "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
+            //设置文件头编码格式
+            response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");//设置类型
+            response.setHeader("Cache-Control","no-cache");//设置头
+            response.setDateHeader("Expires", 0);//设置日期头
+            // 创建工作簿
+            HSSFWorkbook workBook = new HSSFWorkbook();
+            // 创建工作类
+            HSSFSheet sheet = workBook.createSheet();
+            sheet.setDefaultColumnWidth(16);
+            //设置字体样式
+            HSSFFont headFont = workBook.createFont();
+            headFont.setBold(true);
+            headFont.setFontHeightInPoints((short) 10);
+            headFont.setFontName("黑体");
+
+            HSSFFont titleFont = workBook.createFont();
+            titleFont.setBold(true);
+            titleFont.setFontHeightInPoints((short) 10);
+            titleFont.setFontName("黑体");
+
+            HSSFFont font = workBook.createFont();
+            font.setFontHeightInPoints((short) 10);
+            font.setFontName("宋体");
+
+            //设置单元格样式
+            CellStyle headStyle = workBook.createCellStyle();
+            headStyle.setFont(headFont);
+            headStyle.setAlignment(HorizontalAlignment.CENTER);
+            headStyle.setVerticalAlignment(org.apache.poi.ss.usermodel.VerticalAlignment.CENTER);
+            headStyle.setWrapText(true);
+            headStyle.setBorderBottom(BorderStyle.THIN); //下边框
+            headStyle.setBorderLeft(BorderStyle.THIN);//左边框
+            headStyle.setBorderTop(BorderStyle.THIN);//上边框
+            headStyle.setBorderRight(BorderStyle.THIN);//右边框
+
+            String color = "c0c0c0";    //此处得到的color为16进制的字符串
+            //转为RGB码
+            int r = Integer.parseInt((color.substring(0,2)),16);   //转为16进制
+            int g = Integer.parseInt((color.substring(2,4)),16);
+            int b = Integer.parseInt((color.substring(4,6)),16);
+
+            //自定义cell颜色
+            HSSFPalette palette = workBook.getCustomPalette();
+            //这里的9是索引
+            palette.setColorAtIndex((short)9, (byte) r, (byte) g, (byte) b);
+
+            CellStyle titleStyle = workBook.createCellStyle();
+            titleStyle.setFont(titleFont);
+            titleStyle.setAlignment(HorizontalAlignment.CENTER);
+            titleStyle.setVerticalAlignment(org.apache.poi.ss.usermodel.VerticalAlignment.CENTER);
+            titleStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);  //填充单元格
+            titleStyle.setFillForegroundColor((short)9);    //填色
+            titleStyle.setWrapText(true);
+            titleStyle.setBorderBottom(BorderStyle.THIN); //下边框
+            titleStyle.setBorderLeft(BorderStyle.THIN);//左边框
+            titleStyle.setBorderTop(BorderStyle.THIN);//上边框
+            titleStyle.setBorderRight(BorderStyle.THIN);//右边框
+
+            CellStyle cellStyle = workBook.createCellStyle();
+            cellStyle.setFont(font);
+            cellStyle.setAlignment(HorizontalAlignment.CENTER);
+            cellStyle.setVerticalAlignment(org.apache.poi.ss.usermodel.VerticalAlignment.CENTER);
+            cellStyle.setWrapText(true);
+            cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
+            cellStyle.setBorderLeft(BorderStyle.THIN);//左边框
+            cellStyle.setBorderTop(BorderStyle.THIN);//上边框
+            cellStyle.setBorderRight(BorderStyle.THIN);//右边框
+
+            if(list.size() > 0) {
+                //标题(如果需要在EXCEL内容最上面加标题,请打开下面的注释,修改start)
+                /*
+                HSSFRow titleRow = sheet.createRow(0);
+                titleRow.setHeightInPoints(30);
+                HSSFCell titleCell = titleRow.createCell(0);
+                titleCell.setCellStyle(headStyle);
+                titleCell.setCellValue(title);
+                //合并单元格
+                CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0, list.get(0).size() - 1);
+                //加入合并单元格对象
+                sheet.addMergedRegion(cellRangeAddress);
+                //使用RegionUtil类为合并后的单元格添加边框
+			    RegionUtil.setBorderBottom(BorderStyle.THIN, cellRangeAddress, sheet); // 下边框
+                RegionUtil.setBorderLeft(BorderStyle.THIN, cellRangeAddress, sheet); // 左边框
+                RegionUtil.setBorderRight(BorderStyle.THIN, cellRangeAddress, sheet); // 有边框
+                RegionUtil.setBorderTop(BorderStyle.THIN, cellRangeAddress, sheet); // 上边框
+                */
+                int start = 0;
+                for(List<String> rowList : list) {
+                    HSSFRow row = sheet.createRow(start);
+                    row.setHeightInPoints(24);
+                    for(int i = 0; i < rowList.size(); i++) {
+                        HSSFCell cell = row.createCell(i);
+                        if(start == 0) {
+                            cell.setCellStyle(titleStyle);
+                        }else {
+                            cell.setCellStyle(cellStyle);
+                        }
+                        cell.setCellValue(rowList.get(i));
+                    }
+                    start++;
+                }
+            }
+            OutputStream os = response.getOutputStream();
+            workBook.write(os);
+            os.flush();
+            os.close();
+        }catch(Exception e) {
+            System.out.println(result);
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+
+}