Procházet zdrojové kódy

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

bieao před 5 roky
rodič
revize
bf3a23dd14

+ 0 - 5
lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/SystemConfiguration.java

@@ -2,7 +2,6 @@ package cn.com.ty.lift.business.framework.conf;
 
 import cn.com.ty.lift.business.framework.aspect.ValidateMethodInterceptor;
 import cn.com.ty.lift.common.aliservice.aliyunoss.AliyunOSS;
-import cn.com.ty.lift.common.export.ExportUtils;
 import cn.com.ty.lift.common.sql.SqlAnalysisInterceptor;
 import cn.com.ty.lift.common.sql.SqlIllegalInterceptor;
 import cn.com.ty.lift.common.verify.Validation;
@@ -137,10 +136,6 @@ public class SystemConfiguration {
         return sqlExplainInterceptor;
     }
 
-    @Bean
-    public ExportUtils exportUtils(){
-        return new ExportUtils();
-    }
     /**
      * 方法参数校验拦截器,标注了@Verifier的方法,会检查参数,如果参数不满足条件,直接抛出异常
      */

+ 4 - 6
lift-business-service/src/main/java/cn/com/ty/lift/business/library/controller/LiftController.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.Map;
 
 /**
@@ -252,7 +250,7 @@ public class LiftController {
      * @date 2019/11/28 2:19 PM
      */
     @PostMapping("export")
-    public void export(@RequestBody ExportRequest request) {
-        liftService.export(request);
+    public void export(@RequestBody ExportRequest request, HttpServletResponse response) {
+        liftService.export(request, response);
     }
 }

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

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -45,4 +46,6 @@ public interface LiftMapper extends BaseMapper<Lift> {
     IPage<LiftAnnualInspectionResponse> toConfirmAnnualInspection(IPage<LiftAnnualInspectionResponse> page, @Param("mtCompanyId") Long mtCompanyId, @Param("days") int days);
 
     List<Lift> groupByRegistrationCode();
+
+    List<Map<String, String>> exportList(@Param("exportList") List<String> ids);
 }

+ 28 - 7
lift-business-service/src/main/java/cn/com/ty/lift/business/library/service/LiftService.java

@@ -25,7 +25,6 @@ import cn.com.ty.lift.common.base.ExportRequest;
 import cn.com.ty.lift.common.constants.ApiConstants;
 import cn.com.ty.lift.common.constants.CommonEnum;
 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;
@@ -37,6 +36,8 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 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;
@@ -49,7 +50,10 @@ 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.File;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -91,7 +95,7 @@ public class LiftService extends ServiceImpl<LiftMapper, Lift> {
     @Resource
     private CommonMapper commonMapper;
 
-    private Map<String, String> paramMap = new HashMap<String, String>() {{
+    private Map<String, String> headsMap = new LinkedHashMap<String,String>() {{
         put("liftCode", "电梯号");
         put("registrationCode", "注册代码");
         put("liftBrand", "电梯品牌");
@@ -413,16 +417,33 @@ public class LiftService extends ServiceImpl<LiftMapper, Lift> {
         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
+     * @date 2020/5/9 9:08 下午
      */
-    public void export(ExportRequest request) {
-        List<Lift> liftList = baseMapper.selectBatchIds(request.getIds());
-        ExportUtils utils = new ExportUtils();
-        utils.export(liftList, paramMap, request.getExportPath());
+    public void export(ExportRequest request, HttpServletResponse response) {
+        List<String> ids = request.getIds();
+        List<Map<String, String>> liftList = 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(liftList, true);
+            writer.autoSizeColumnAll();
+            writer.flush(out, true);
+            writer.close();
+        } catch (IOException e) {
+            log.error("电梯数据导出失败", e);
+        }
     }
 
     /**

+ 5 - 7
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/controller/MaintenanceController.java

@@ -11,12 +11,10 @@ import cn.com.ty.lift.common.verify.Val;
 import cn.com.ty.lift.common.verify.Validation;
 import cn.com.xwy.boot.web.dto.RestResponse;
 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;
 
 /**
@@ -107,14 +105,14 @@ public class MaintenanceController {
     }
 
     /**
-     * @param request 导出项目数据列表
+     * @param request 导出维保计划数据列表
      * @return 1.成功, 0.失败, 消息描述
      * @description 导出维保计划
      * @date 2019/12/19 11:28 AM
      */
     @PostMapping("export/plan")
-    public void export(@RequestBody ExportRequest request) {
-        maintenancePlanService.export(request);
+    public void export(@RequestBody ExportRequest request, HttpServletResponse response) {
+        maintenancePlanService.export(request,response);
     }
 
     /**

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

@@ -48,4 +48,7 @@ public interface MaintenancePlanMapper extends BaseMapper<MaintenancePlan> {
     List<MaintenancePlan> queryPlanListByIds(@Param("paramMap") Map<String, Object> paramMap);
 
     List<MaintenanceTask> queryMaintenanceTask();
+
+    List<Map<String, String>> exportList(@Param("exportList") List<String> ids);
+
 }

+ 30 - 8
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenancePlanService.java

@@ -21,11 +21,13 @@ import cn.com.ty.lift.business.project.service.ProjectLiftRelevanceService;
 import cn.com.ty.lift.business.project.service.ProjectService;
 import cn.com.ty.lift.business.push.service.PushUserService;
 import cn.com.ty.lift.common.base.ExportRequest;
-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;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.util.ObjectUtil;
+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.conditions.update.LambdaUpdateWrapper;
@@ -38,6 +40,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
@@ -74,14 +79,14 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
     @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("regionName", "区域名称");
         put("registrationCode", "注册代码");
         put("devicePosition", "电梯位置");
         put("workerName", "维保工");
-        put("", "间隔");
+        put("planInterval", "间隔");
         put("liftStatus", "电梯维保状态");
         put("planDate", "计划时间");
     }};
@@ -99,6 +104,10 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
         return baseMapper.findByCondition(request.getPage(), request);
     }
 
+    public List<Map<String,String>> exportList(List<String> ids){
+        return baseMapper.exportList(ids);
+    }
+
     /**
      * @param request 公司id,项目id,电梯id
      * @return 1.成功, 0.失败, 消息描述
@@ -486,15 +495,28 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
     }
 
     /**
-     * @param request 导出项目数据列表
+     * @param request 导出维保计划数据列表
      * @return RestResponse 状态码和返回消息
      * @description 导出维保计划
      * @date 2019/12/19 11:27 AM
      */
-    public void export(ExportRequest request) {
-        List<MaintenancePlan> 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>> planList = 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(planList, true);
+            writer.autoSizeColumnAll();
+            writer.flush(out, true);
+            writer.close();
+        } catch (IOException e) {
+            log.error("维保计划导出失败", e);
+        }
     }
 
     /**

+ 18 - 0
lift-business-service/src/main/resources/mapper/lift/LiftMapper.xml

@@ -267,4 +267,22 @@
         ORDER BY
             registration_code
     </select>
+
+    <select id="exportList" resultType="java.util.Map" parameterType="java.util.List">
+        SELECT l.lift_code                     AS liftCode,
+               l.registration_code             AS registrationCode,
+               lb.name                         AS liftBrand,
+               if(l.lift_type = 1, '直梯', '扶梯') AS liftType,
+               l.device_position               AS devicePosition
+        FROM lift l
+                 LEFT JOIN lift_brand lb ON l.lift_brand = lb.code
+        <where>
+            <if test="exportList != null and exportList.size > 0">
+                 l.id IN
+                <foreach collection="exportList" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 36 - 0
lift-business-service/src/main/resources/mapper/maintenance/MaintenancePlanMapper.xml

@@ -241,4 +241,40 @@
               AND mp.mt_company_id = #{cond.mtCompanyId}
         </if>
     </select>
+
+	<select id="exportList" parameterType="java.util.List" resultType="java.util.Map">
+		SELECT DATE_FORMAT(mp.plan_date,'%Y-%m-%d')  AS planDate,
+			   l.registration_code AS registrationCode,
+			   l.device_position   AS devicePosition,
+			   plr.plan_interval   AS planInterval,
+			   p.project_name      AS projectName,
+			   p.project_code      AS projectCode,
+			   CASE pclr.lift_company_status
+				   WHEN '1' THEN '停保'
+				   WHEN '2' THEN '正常'
+				   WHEN '3' THEN '保养中'
+				   WHEN '4' THEN '维修中'
+				   WHEN '5' THEN '年检中'
+				   WHEN '6' THEN '大修中'
+				   END             AS liftStatus,
+			   r.area_name         AS regionName,
+			   ui.name             AS workerName
+		FROM project_lift_relevance plr
+				 LEFT JOIN platform_company_lift_relevance pclr
+						   ON plr.mt_company_id = pclr.mt_company_id AND plr.lift_id = pclr.lift_id
+				 LEFT JOIN lift l ON plr.lift_id = l.id
+				 LEFT JOIN project p ON plr.mt_company_id = p.mt_company_id AND plr.project_id = p.id
+				 LEFT JOIN maintenance_plan mp ON plr.mt_company_id = mp.mt_company_id AND plr.project_id = mp.project_id
+			AND plr.lift_id = mp.lift_id
+				 LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
+				 LEFT JOIN region r ON p.region_id = r.id
+		<where>
+			<if test="exportList != null and exportList.size > 0">
+				AND mp.id IN
+				<foreach collection="exportList" item="id" open="(" separator="," close=")">
+					#{id}
+				</foreach>
+			</if>
+		</where>
+	</select>
 </mapper>

+ 0 - 4
lift-common/src/main/java/cn.com.ty.lift.common/base/ExportRequest.java

@@ -15,8 +15,4 @@ public class ExportRequest {
      * 导出id列表
      */
     private List<String> ids;
-    /**
-     * 导出地址
-     */
-    private String exportPath;
 }

+ 0 - 33
lift-common/src/main/java/cn.com.ty.lift.common/export/ExportUtils.java

@@ -1,33 +0,0 @@
-package cn.com.ty.lift.common.export;
-
-
-import cn.hutool.poi.excel.ExcelUtil;
-import cn.hutool.poi.excel.ExcelWriter;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author bieao
- * @date 2019/11/27
- * @description 导出工具类
- */
-public class ExportUtils<T> {
-
-    /**
-     * @param dataList   需要导出的数据集
-     * @param heads      导出工作薄的列名
-     * @param exportPath 导出路径
-     * @return
-     * @description 导出excel
-     * @date 2019/11/28 2:25 PM
-     */
-    public void export(List<T> dataList, Map<String, String> heads, String exportPath) {
-        ExcelWriter writer = ExcelUtil.getWriter(exportPath);
-        //设置列别名
-        heads.forEach(writer::addHeaderAlias);
-        writer.write(dataList, true);
-        writer.autoSizeColumnAll();
-        writer.close();
-    }
-}

+ 0 - 10
lift-common/src/main/java/cn.com.ty.lift.common/utils/DateUtils.java

@@ -1,7 +1,6 @@
 package cn.com.ty.lift.common.utils;
 
 
-import cn.hutool.core.date.BetweenFormater;
 import cn.hutool.core.date.DateUtil;
 
 import java.time.LocalDate;
@@ -34,15 +33,6 @@ public class DateUtils {
         return DateUtil.format(new Date(), "yyyyMMddHHmmssSSS");
     }
 
-    public static void main(String[] args) {
-        System.out.println(DateUtil.formatBetween(86593 * 1000, BetweenFormater.Level.SECOND));
-
-        System.err.println( true ^ true);
-        System.err.println( true ^ false);
-        System.err.println( false ^ true);
-        System.err.println( false ^ false);
-    }
-
     public static int daysOfYear(){
         return LocalDate.now().isLeapYear() ? 366 : 365;
     }