浏览代码

Merge branch 'feature-bieao' of lift-manager/lift-server into develop

bieao 5 年之前
父节点
当前提交
3309c3bfdc

+ 4 - 6
lift-business-service/src/main/java/cn/com/ty/lift/business/project/controller/ProjectController.java

@@ -16,12 +16,10 @@ import cn.com.ty.lift.common.verify.Validator;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -194,7 +192,7 @@ public class ProjectController {
      * @date 2019/11/28 4:19 PM
      */
     @PostMapping("export")
-    public void export(@RequestBody ExportRequest request) {
-        projectService.export(request);
+    public void export(@RequestBody ExportRequest request, HttpServletResponse response) {
+        projectService.export(request, response);
     }
 }

+ 3 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/mapper/ProjectMapper.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author bieao
@@ -63,4 +64,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
      */
     MaintenancePlanPrintResponse findProjectByIdAndCompanyId(@Param("request") ProjectRequest request);
 
+    List<Map<String, String>> exportList(@Param("exportList") List<String> ids);
+
 }

+ 27 - 6
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectService.java

@@ -18,7 +18,6 @@ import cn.com.ty.lift.common.base.ExportRequest;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.constants.CommonEnum.ProjectStatus;
 import cn.com.ty.lift.common.constants.WebSocketConstants;
-import cn.com.ty.lift.common.export.ExportUtils;
 import cn.com.ty.lift.common.model.PushMessage;
 import cn.com.ty.lift.common.model.PushUserInfo;
 import cn.com.ty.lift.common.utils.DateUtils;
@@ -29,6 +28,8 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.ExcelWriter;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -41,6 +42,9 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -80,7 +84,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper,Project> {
     @Resource
     private PushUserService pushUserService;
 
-    private Map<String, String> paramMap = new HashMap<String, String>() {{
+    private Map<String, String> headsMap = new LinkedHashMap<String, String>() {{
         put("projectCode", "项目编号");
         put("projectName", "项目名称");
         put("province", "省份");
@@ -372,16 +376,33 @@ public class ProjectService extends ServiceImpl<ProjectMapper,Project> {
         return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
     }
 
+    public List<Map<String,String>> exportList(List<String> ids){
+        return baseMapper.exportList(ids);
+    }
+
     /**
      * @param request 导出项目数据列表
      * @return RestResponse 状态码和返回消息
      * @description 导出项目
      * @date 2019/11/27 2:22 PM
      */
-    public void export(ExportRequest request) {
-        List<Project> projectList = baseMapper.selectBatchIds(request.getIds());
-        ExportUtils utils = new ExportUtils();
-        utils.export(projectList, paramMap, request.getExportPath());
+    public void export(ExportRequest request, HttpServletResponse response) {
+        List<String> ids = request.getIds();
+        List<Map<String, String>> projectList = exportList(ids);
+        ExcelWriter writer = ExcelUtil.getWriter(true);
+        //设置列别名
+        headsMap.forEach(writer::addHeaderAlias);
+        String fileName = DateUtils.generateCode() + ".xlsx";
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
+        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+        try (ServletOutputStream out = response.getOutputStream()) {
+            writer.write(projectList, true);
+            writer.autoSizeColumnAll();
+            writer.flush(out, true);
+            writer.close();
+        } catch (IOException e) {
+            log.error("项目数据导出失败", e);
+        }
     }
     /**
      * @param request projectId 项目id

+ 22 - 0
lift-business-service/src/main/resources/mapper/project/ProjectMapper.xml

@@ -240,4 +240,26 @@
         AND p.id = #{request.id,jdbcType=BIGINT}
 	</select>
 
+	<select id="exportList" resultType="java.util.Map" parameterType="java.util.List">
+		SELECT 	project_code AS projectCode,
+				project_name AS projectName,
+				province     AS province,
+				city         AS city,
+				district     AS district,
+				num          AS num,
+				actual_num   AS actualNum,
+				address      AS address,
+				DATE_FORMAT(start_date,'%Y-%m-%d') AS startDate,
+				DATE_FORMAT(end_date,'%Y-%m-%d') AS endDate
+		FROM project
+		<where>
+			<if test="exportList != null and exportList.size > 0">
+				id IN
+				<foreach collection="exportList" item="id" open="(" separator="," close=")">
+					#{id}
+				</foreach>
+			</if>
+		</where>
+	</select>
+
 </mapper>