ky hai 1 semana
pai
achega
6b26f89ef5

+ 28 - 1
src/main/java/com/youlai/boot/system/controller/MineDemandController.java

@@ -1,6 +1,9 @@
 package com.youlai.boot.system.controller;
 
+import com.alibaba.excel.EasyExcel;
+import com.youlai.boot.system.model.dto.UserExportDTO;
 import com.youlai.boot.system.service.MineDemandService;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -18,6 +21,11 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import jakarta.validation.Valid;
 
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
 /**
  * 煤矿需求管理前端控制层
  *
@@ -35,11 +43,30 @@ public class MineDemandController  {
     @Operation(summary = "煤矿需求管理分页列表")
     @GetMapping("/page")
     @PreAuthorize("@ss.hasPerm('system:mineDemand:query')")
-    public PageResult<MineDemandVO> getMineDemandPage(MineDemandQuery queryParams ) {
+    public PageResult<MineDemandVO> getMineDemandPage(MineDemandQuery queryParams) {
+
         IPage<MineDemandVO> result = mineDemandService.getMineDemandPage(queryParams);
         return PageResult.success(result);
     }
 
+
+    @GetMapping("/export")
+    public void exportMineDemand(MineDemandQuery queryParams, HttpServletResponse response) throws IOException {
+        IPage<MineDemandVO> result = mineDemandService.getMineDemandPage(queryParams);
+
+        for (MineDemandVO record : result.getRecords()) {
+
+        }
+
+        String fileName = "需求列表.xlsx";
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
+
+        EasyExcel.write(response.getOutputStream(), MineDemandVO.class).sheet("用户列表")
+                .doWrite(result.getRecords());
+
+    }
+
     @Operation(summary = "新增煤矿需求管理")
     @PostMapping
     @PreAuthorize("@ss.hasPerm('system:mineDemand:add')")

+ 21 - 1
src/main/java/com/youlai/boot/system/model/entity/MineDemand.java

@@ -1,5 +1,7 @@
 package com.youlai.boot.system.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Getter;
 import lombok.Setter;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -51,21 +53,30 @@ public class MineDemand extends BaseEntity {
      * 需求说明
      */
     private String demandDescription;
+
+//1、新功能需求
+//2、设备接入或页面升级
+//3、功能优化或问题整改
+    private int type;
     /**
      * 提交时间
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private LocalDate submitTime;
     /**
      * 计划完成时间
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private LocalDate plannedCompleteTime;
     /**
      * 实际开始时间
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private LocalDate actualStartTime;
     /**
      * 实际完成时间
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private LocalDate actualCompleteTime;
     /**
      * 前端人员
@@ -87,12 +98,21 @@ public class MineDemand extends BaseEntity {
 
     private int folderId;
 
-
     private String frontendProgress;
 
     private String backendProgress;
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate frontendStartTime;
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate backendStartTime;
 
     private String operationProgress;
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Float frontendComplex;
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Float backendComplex;
 
+    private LocalDate frontendCompleteTime;
 
+    private LocalDate backendCompleteTime;
 }

+ 18 - 0
src/main/java/com/youlai/boot/system/model/form/MineDemandForm.java

@@ -34,6 +34,11 @@ public class MineDemandForm implements Serializable {
     @Schema(description = "需求名称")
     private String demandName;
 
+    //1、新功能需求
+//2、设备接入或页面升级
+//3、功能优化或问题整改
+    private int type;
+
     @Schema(description = "需求提交人")
     private String submitter;
 
@@ -73,9 +78,22 @@ public class MineDemandForm implements Serializable {
     private int folderId;
 
     private String frontendProgress;
+
     private String backendProgress;
+
     private String operationProgress;
 
+    private Float frontendComplex;
+
+    private Float backendComplex;
+
+    private LocalDate frontendStartTime;
+
+    private LocalDate backendStartTime;
+
+    private LocalDate frontendCompleteTime;
+
+    private LocalDate backendCompleteTime;
 
 
 

+ 9 - 0
src/main/java/com/youlai/boot/system/model/query/MineDemandQuery.java

@@ -66,5 +66,14 @@ public class MineDemandQuery extends BasePageQuery {
 
     private int completeStatus;
 
+    private int onlyViewMe;
+
+    private String curUserName;
+
+    //1、新功能需求
+//2、设备接入或页面升级
+//3、功能优化或问题整改
+    private int type;
+
 
 }

+ 4 - 0
src/main/java/com/youlai/boot/system/model/query/OMRecordQuery.java

@@ -30,4 +30,8 @@ public class OMRecordQuery extends BasePageQuery {
 
     List<Integer> subIds;
 
+    private String curUserName;
+
+    private int onlyViewMe;
+
 }

+ 51 - 5
src/main/java/com/youlai/boot/system/model/vo/MineDemandVO.java

@@ -4,6 +4,11 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
@@ -17,50 +22,91 @@ import lombok.Setter;
 @Getter
 @Setter
 @Schema( description = "煤矿需求管理视图对象")
+@ColumnWidth(20)
 public class MineDemandVO implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
-
+    @ExcelProperty()
+    @ExcelIgnore
     private Long id;
 
     @Schema(description = "所属片区")
+    @ExcelProperty(value = "所属片区")
     private String area;
     @Schema(description = "矿名")
+    @ExcelProperty(value = "矿名")
     private String mineName;
     @Schema(description = "需求名称")
+    @ExcelProperty(value = "需求名称")
     private String demandName;
+
+
+    //1、新功能需求
+//2、设备接入或页面升级
+//3、功能优化或问题整改
+    private int type;
+    @Schema(description = "需求类型")
+    @ExcelProperty(value = "需求类型")
+    private String typeName;
     @Schema(description = "需求提交人")
+    @ExcelProperty(value = "需求提交人")
     private String submitter;
     @Schema(description = "运维人员")
+    @ExcelProperty(value = "运维人员")
     private String operationStaff;
     @Schema(description = "通防技术人员")
+    @ExcelProperty(value = "通防技术人员")
     private String ventilationTechStaff;
     @Schema(description = "需求说明")
+    @ExcelProperty(value = "需求说明")
     private String demandDescription;
     @Schema(description = "提交时间")
+    @ExcelProperty(value = "提交时间")
     private LocalDate submitTime;
     @Schema(description = "计划完成时间")
+    @ExcelProperty(value = "计划完成时间")
     private LocalDate plannedCompleteTime;
     @Schema(description = "实际开始时间")
+    @ExcelProperty(value = "实际开始时间")
     private LocalDate actualStartTime;
     @Schema(description = "实际完成时间")
+    @ExcelProperty(value = "实际完成时间")
     private LocalDate actualCompleteTime;
     @Schema(description = "前端人员")
+    @ExcelProperty(value = "前端人员")
     private String frontendStaff;
     @Schema(description = "前端版本号")
+    @ExcelProperty(value = "前端版本号")
     private String frontendVersion;
     @Schema(description = "后端人员")
+    @ExcelProperty(value = "后端人员")
     private String backendStaff;
+    @ExcelProperty(value = "后端版本号")
     @Schema(description = "后端版本号")
     private String backendVersion;
-
+    @ExcelIgnore
     private int folderId;
 
+    @ExcelProperty(value = "前端进度")
     private String frontendProgress;
-
+    @ExcelProperty(value = "后端进度")
     private String backendProgress;
-
+    @ExcelProperty(value = "运维进度")
     private String operationProgress;
-
+    @ExcelProperty(value = "前端复杂度")
+    private Float frontendComplex;
+    @ExcelProperty(value = "后端复杂度")
+    private Float backendComplex;
+    @ExcelProperty(value = "前端开始时间")
+    private LocalDate frontendStartTime;
+    @ExcelProperty(value = "后端开始时间")
+    @DateTimeFormat("yyyy/MM/dd")
+    private LocalDate backendStartTime;
+    @ExcelProperty(value = "前端完成时间")
+    @DateTimeFormat("yyyy/MM/dd")
+    private LocalDate frontendCompleteTime;
+    @ExcelProperty(value = "后端完成时间")
+    @DateTimeFormat("yyyy/MM/dd")
+    private LocalDate backendCompleteTime;
 }

+ 23 - 0
src/main/java/com/youlai/boot/system/service/impl/MineDemandServiceImpl.java

@@ -1,7 +1,10 @@
 package com.youlai.boot.system.service.impl;
 
+import com.youlai.boot.core.security.util.SecurityUtils;
 import com.youlai.boot.system.model.entity.SysFolder;
+import com.youlai.boot.system.model.vo.UserInfoVO;
 import com.youlai.boot.system.service.SysFolderService;
+import com.youlai.boot.system.service.UserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -38,6 +41,8 @@ public class MineDemandServiceImpl extends ServiceImpl<MineDemandMapper, MineDem
 
     private final SysFolderService sysFolderService;
 
+    private final UserService userService;
+
     /**
     * 获取煤矿需求管理分页列表
     *
@@ -51,10 +56,28 @@ public class MineDemandServiceImpl extends ServiceImpl<MineDemandMapper, MineDem
         List<Integer> subIds = sysFolderService.getSubFolderIdsRecursively(queryParams.getFolderId());
         queryParams.setSubIds(subIds);
 
+        UserInfoVO userInfo = userService.getCurrentUserInfo();
+
+        String nickname = userInfo.getNickname();
+
+        queryParams.setCurUserName(nickname);
+
         Page<MineDemandVO> pageVO = this.baseMapper.getMineDemandPage(
                 new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
                 queryParams
         );
+        pageVO.getRecords().forEach(mineDemandVO -> {
+            int type = mineDemandVO.getType();
+            if (type == 1) {
+                mineDemandVO.setTypeName("新功能需求");
+            }
+            if (type == 2) {
+                mineDemandVO.setTypeName("设备接入或页面升级");
+            }
+            if (type == 3) {
+                mineDemandVO.setTypeName("功能优化或问题整改");
+            }
+        });
         return pageVO;
     }
     

+ 7 - 5
src/main/java/com/youlai/boot/system/service/impl/OMRecordServiceImpl.java

@@ -1,6 +1,7 @@
 package com.youlai.boot.system.service.impl;
 
 import com.youlai.boot.system.service.SysFolderService;
+import com.youlai.boot.system.service.UserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -37,6 +38,8 @@ public class OMRecordServiceImpl extends ServiceImpl<OMRecordMapper, OMRecord> i
 
     private final SysFolderService sysFolderService;
 
+    private final UserService userService;
+
     /**
     * 获取运维管理分页列表
     *
@@ -45,19 +48,18 @@ public class OMRecordServiceImpl extends ServiceImpl<OMRecordMapper, OMRecord> i
     */
     @Override
     public IPage<OMRecordVO> getOMRecordPage(OMRecordQuery queryParams) {
-        long time1 = new Date().getTime();
         List<Integer> subIds = sysFolderService.getSubFolderIdsRecursively(queryParams.getFolderId());
-        long time2 = new Date().getTime();
 
-        System.out.println(time2-time1);
         queryParams.setSubIds(subIds);
 
+        String nickname = userService.getCurrentUserInfo().getNickname();
+
+        queryParams.setCurUserName(nickname);
+
         Page<OMRecordVO> pageVO = this.baseMapper.getOMRecordPage(
                 new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
                 queryParams
         );
-        long time3 = new Date().getTime();
-        System.out.println(time3-time2);
         return pageVO;
     }
     

+ 16 - 0
src/main/resources/mapper/system/MineDemandMapper.xml

@@ -7,6 +7,7 @@
         id,
         area,
         mine_name,
+        type,
         demand_name,
         submitter,
         operation_staff,
@@ -84,6 +85,10 @@
             <if test="queryParams.backendVersion != null and queryParams.backendVersion != ''">
                 AND backend_version LIKE CONCAT('%', #{queryParams.backendVersion}, '%')
             </if>
+
+            <if test="queryParams.type != null and queryParams.type != 0">
+                AND type = #{queryParams.type}
+            </if>
             <if test="queryParams.submitTime != null and queryParams.submitTime.size() >= 2">
                 AND submit_time >= #{queryParams.submitTime[0]}
                 AND submit_time &lt;= #{queryParams.submitTime[1]}
@@ -119,6 +124,17 @@
                 </if>
                 <!-- 0:默认不添加条件(筛选全部) -->
             </if>
+            <if test="queryParams.onlyViewMe == 1">
+                AND ( submitter LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR operation_staff  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR ventilation_tech_staff  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR demand_description  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR frontend_staff  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR backend_staff  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR frontend_progress  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR backend_progress  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+                OR operation_progress  LIKE CONCAT('%', #{queryParams.curUserName}, '%'))
+            </if>
         </where>
         ORDER BY
         -- id=1的放在最前面

+ 5 - 2
src/main/resources/mapper/system/OMRecordMapper.xml

@@ -41,13 +41,16 @@
                 and update_date &gt;= #{queryParams.updateDateRange[0]}
                 and update_date &lt;= #{queryParams.updateDateRange[1]}
             </if>
+            <if test="queryParams.onlyViewMe == 1">
+                and operation_staff  LIKE CONCAT('%', #{queryParams.curUserName}, '%')
+            </if>
         </where>
         ORDER BY
         -- 未填写项越多越靠前
-        empty_field_count DESC,
+--         empty_field_count DESC,
         -- 全部填写完成的按更新日期由近到远排列
         update_date DESC,
-        create_time DESC;
+        project_name DESC;
     </select>
 
 </mapper>