Kaynağa Gözat

feat:导出设计师任务excel接口
新增vo
新增状态->任务的excel转换器

yangyi 5 ay önce
ebeveyn
işleme
74a4360922

+ 10 - 1
ruoyi-modules/ruoyi-developmentManagement/src/main/java/org/dromara/management/controller/DevelopmentOrderController.java

@@ -1,10 +1,13 @@
 package org.dromara.management.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.management.domain.bo.DevelopmentOrderBo;
 import org.dromara.management.domain.vo.DevelopmentOrderTableDataInfo;
 import org.dromara.management.domain.vo.DevelopmentOrderVo;
+import org.dromara.management.domain.vo.ExportDevelopmentOrderDesignerTaskVo;
 import org.dromara.management.service.DevelopmentOrderService;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.validate.AddGroup;
@@ -46,9 +49,15 @@ public class DevelopmentOrderController extends BaseController {
     public R<Void> delete(@PathVariable Long[] ids) {
         return toAjax(developmentOrderService.delete(ids));
     }
-
+    @SaCheckPermission("fa:development:list")
     @GetMapping("/getDesignerTaskList")
     public DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getDesignerTaskList(PageQuery pageQuery, DevelopmentOrderBo developmentOrderBo) {
         return developmentOrderService.getDesignerTaskList(developmentOrderBo, pageQuery);
     }
+    @SaCheckPermission("fa:development:export")
+    @GetMapping("/exportDesignerTaskList")
+    public void exportDesignerTaskList(PageQuery pageQuery, DevelopmentOrderBo developmentOrderBo, HttpServletResponse response){
+        List<ExportDevelopmentOrderDesignerTaskVo> listVo = developmentOrderService.getExportDesignerTaskList(pageQuery,developmentOrderBo);
+        ExcelUtil.exportExcel(listVo, "设计师任务列表", ExportDevelopmentOrderDesignerTaskVo.class, response);
+    }
 }

+ 54 - 0
ruoyi-modules/ruoyi-developmentManagement/src/main/java/org/dromara/management/domain/vo/ExportDevelopmentOrderDesignerTaskVo.java

@@ -0,0 +1,54 @@
+package org.dromara.management.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.management.handller.converter.DevelopmentOrderStatusConverter;
+
+import java.time.LocalDateTime;
+
+/**
+ * 到处设计师任务是要的VO
+ */
+@Data
+public class ExportDevelopmentOrderDesignerTaskVo {
+
+
+    /**
+     * 订单编号
+     */
+    @ExcelProperty(value = "订单号",order = 1)
+    private String orderNum;
+
+    /**
+     * 0待处理
+     * 1画图中
+     * 2确认中
+     * 3调色中
+     * 4排版中
+     * 5打版中
+     * 6已完成
+     * 99已取消
+     */
+    @ExcelProperty(value = "任务",order = 2,converter = DevelopmentOrderStatusConverter.class)
+    private Integer status;
+
+    @ExcelProperty(value = "任务状态",order = 3)
+    private String taskStatus;
+
+    @ExcelProperty(value = "开始时间",order = 4)
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ExcelProperty(value = "结束时间",order = 5)
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @ExcelProperty("耗时")
+    private String time;
+
+    @ExcelProperty("设计师")
+    private String designer;
+
+}

+ 66 - 0
ruoyi-modules/ruoyi-developmentManagement/src/main/java/org/dromara/management/handller/converter/DevelopmentOrderStatusConverter.java

@@ -0,0 +1,66 @@
+package org.dromara.management.handller.converter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.converters.ReadConverterContext;
+import com.alibaba.excel.converters.WriteConverterContext;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+/**
+ * 状态值转换到文本
+ * 0=待处理,1=画图,2=确认,3=调色,4=排版,5=打版,6=完成
+ */
+public class DevelopmentOrderStatusConverter implements Converter<Integer> {
+    @Override
+    public Class<Integer> supportJavaTypeKey() {
+        return Integer.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.NUMBER;
+    }
+
+    @Override
+    public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return Converter.super.convertToJavaData(cellData, contentProperty, globalConfiguration);
+    }
+
+    @Override
+    public Integer convertToJavaData(ReadConverterContext<?> context) throws Exception {
+        //excelFlied convert javaObject
+        String cellValue = context.getReadCellData().getStringValue();
+        int status = Integer.parseInt(cellValue);
+        return switch(cellValue){
+            case "画图"->1;
+            case "确认"->2;
+            case "调色"->3;
+            case "排版"->4;
+            case "打版"->5;
+            default -> -1;
+        };
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration);
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<Integer> context) throws Exception {
+        //javaObject Filed convert excelFlied
+        Integer status = context.getValue();
+        String mes = switch(status){
+            case 1->"画图";
+            case 2->"确认";
+            case 3->"调色";
+            case 4->"排版";
+            case 5->"打版";
+            default -> "非法状态";
+        };
+        return new WriteCellData<String>(mes);
+    }
+}

+ 3 - 0
ruoyi-modules/ruoyi-developmentManagement/src/main/java/org/dromara/management/service/DevelopmentOrderService.java

@@ -7,6 +7,7 @@ import org.dromara.management.domain.bo.DevelopmentOrderRemarkBo;
 import org.dromara.management.domain.vo.DevelopmentOrderTableDataInfo;
 import org.dromara.management.domain.vo.DevelopmentOrderVo;
 import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.management.domain.vo.ExportDevelopmentOrderDesignerTaskVo;
 
 import java.util.List;
 import java.util.Map;
@@ -42,4 +43,6 @@ public interface DevelopmentOrderService extends IService<DevelopmentOrder> {
     void insertDevelopmentOrderLogs(int devOrderId, String content);
 
     DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getDesignerTaskList(DevelopmentOrderBo developmentOrderBo, PageQuery pageQuery);
+
+    List<ExportDevelopmentOrderDesignerTaskVo> getExportDesignerTaskList(PageQuery pageQuery, DevelopmentOrderBo developmentOrderBo);
 }

+ 76 - 4
ruoyi-modules/ruoyi-developmentManagement/src/main/java/org/dromara/management/service/impl/DevelopmentOrderServiceImpl.java

@@ -11,10 +11,7 @@ import org.dromara.management.domain.DevelopmentOrder;
 import org.dromara.management.domain.DevelopmentOrderRemark;
 import org.dromara.management.domain.bo.DevelopmentOrderBo;
 import org.dromara.management.domain.bo.DevelopmentOrderRemarkBo;
-import org.dromara.management.domain.vo.DevelopOrderLogsVo;
-import org.dromara.management.domain.vo.DevelopmentOrderRemarkVo;
-import org.dromara.management.domain.vo.DevelopmentOrderTableDataInfo;
-import org.dromara.management.domain.vo.DevelopmentOrderVo;
+import org.dromara.management.domain.vo.*;
 import org.dromara.management.mapper.DevelopOrderLogsMapper;
 import org.dromara.management.mapper.DevelopmentOrderMapper;
 import org.dromara.management.mapper.DevelopmentOrderRemarkMapper;
@@ -29,10 +26,14 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.management.service.developmentStateModeImpl.*;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.Duration;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.util.*;
@@ -301,6 +302,77 @@ public class DevelopmentOrderServiceImpl extends ServiceImpl<DevelopmentOrderMap
         }
     }
 
+    @Override
+    public List<ExportDevelopmentOrderDesignerTaskVo> getExportDesignerTaskList(PageQuery pageQuery, DevelopmentOrderBo developmentOrderBo) {
+        List<ExportDevelopmentOrderDesignerTaskVo> list = new ArrayList<>();
+        //获取数据
+        List<DevelopmentOrderVo> data = getDesignerTaskList(developmentOrderBo,pageQuery).getData().getList();
+        //转换vo
+        for (DevelopmentOrderVo row : data) {
+            ExportDevelopmentOrderDesignerTaskVo vo = new ExportDevelopmentOrderDesignerTaskVo();
+            BeanUtils.copyProperties(row,vo);
+            Integer status = row.getStatus();
+            //根据状态获取对应任务的时间
+            Date start = null;
+            Date end = null;
+            if (Objects.nonNull(status)) {
+                switch(status){
+                    //画图
+                    case 1:
+                        start = row.getStatus_1StartTime();
+                        end = row.getStatus_1EndTime();
+                        break;
+                    //确认
+                    case 2:
+                        start = row.getStatus_2StartTime();
+                        end = row.getStatus_2EndTime();
+                        break;
+                    //调色
+                    case 3:
+                        start = row.getStatus_3StartTime();
+                        end = row.getStatus_3EndTime();
+                        break;
+                    //排版
+                    case 4:
+                        start = row.getStatus_4StartTime();
+                        end = row.getStatus_4EndTime();
+                        break;
+                    //打版
+                    case 5:
+                        start = row.getStatus_5StartTime();
+                        end = row.getStatus_5EndTime();
+                        break;
+                }
+                LocalDateTime startTime = null;
+                LocalDateTime endTime = null;
+                if (Objects.nonNull(start)) {
+                    startTime = start.toInstant()
+                        .atZone(ZoneId.systemDefault())
+                        .toLocalDateTime();
+                }
+                if (Objects.nonNull(end)) {
+                    endTime = end.toInstant()
+                        .atZone(ZoneId.systemDefault())
+                        .toLocalDateTime();
+                }
+                if (Objects.nonNull(startTime)) {
+                    vo.setTaskStatus("进行中");
+                }
+                vo.setStartTime(startTime);
+                vo.setEndTime(endTime);
+                if (Objects.nonNull(startTime) && Objects.nonNull(endTime)) {
+                    Duration duration = Duration.between(startTime, endTime);
+                    long hours = duration.toHours();
+                    vo.setTime(hours + "H");
+                }
+            }else{
+                vo.setTaskStatus("未开始");
+            }
+            list.add(vo);
+        }
+        return list;
+    }
+
     @Override
     public DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getDesignerTaskList(DevelopmentOrderBo developmentOrderBo, PageQuery pageQuery) {
         // 构建动态查询条件