Просмотр исходного кода

新增, 年-详情。 区分分公司

wuweihao 3 лет назад
Родитель
Сommit
ecee72ef89

+ 19 - 0
gis_common/src/main/java/com/gis/common/mapper/BaseProvider.java

@@ -0,0 +1,19 @@
+package com.gis.common.mapper;
+
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * Created by owen on 2022/2/9.
+ */
+@Slf4j
+public class BaseProvider {
+
+    public String selectSql(String sqlStr){
+        log.info("sqlStr: {}", sqlStr);
+        return sqlStr;
+    }
+
+
+
+}

+ 11 - 0
gis_common/src/main/java/com/gis/common/util/ExcelUtils.java

@@ -1,9 +1,11 @@
 package com.gis.common.util;
 
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -24,10 +26,19 @@ public class ExcelUtils {
 //        log.info("savePath: {}", savePath);
         ExcelWriter writer = ExcelUtil.getWriter(savePath);
 
+        // 特殊列宽
+        List<String> headerTitle = Arrays.asList("date", "projectName", "deptName", "taskName","code");
+
         //自定义标题别名
+        int i = 0;
         if (rowTitle != null) {
             for (Map.Entry<String, String> a : rowTitle.entrySet()) {
                 writer.addHeaderAlias(a.getKey(), a.getValue());
+                // 列宽-特殊处理
+                if (headerTitle.contains(a.getKey())){
+                    writer.setColumnWidth(i, 20);
+                }
+                i ++;
             }
         }
 

+ 4 - 0
gis_mapper/src/main/java/com/gis/mapper/TaskesTimateMapper.java

@@ -1,6 +1,7 @@
 package com.gis.mapper;
 
 
+import com.gis.common.mapper.BaseProvider;
 import com.gis.domain.dto.DeptDto;
 import com.gis.domain.dto.PersonalPageDateDto;
 import com.gis.domain.dto.WorkPageDto;
@@ -82,4 +83,7 @@ public interface TaskesTimateMapper extends ZtBaseMapper<TaskesTimateEntity, Lon
             " left join zt_user d  on d.account = a.account left join zt_dept e on d.dept = e.id " +
             " where b.deleted = '0' AND DATE_FORMAT( date, '%Y%m' ) = DATE_FORMAT(#{date} , '%Y%m' ) order by a.account asc")
     List<DetailVo> excelDetailByDay(DeptDto param);
+
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    List<DetailVo> excelByYearDetail(String sql);
 }

+ 2 - 0
gis_service/src/main/java/com/gis/service/TaskesTimateService.java

@@ -37,4 +37,6 @@ public interface TaskesTimateService extends IBaseService<TaskesTimateEntity, Lo
     Result<DetailVo> workByDayDetail(PersonalPageDateDto param);
 
     Result<DetailVo> excelDetailByDay(DeptDto param);
+
+    Result<DetailVo> excelByYearDetail(Integer year, String type);
 }

+ 60 - 0
gis_service/src/main/java/com/gis/service/impl/TaskesTimateServiceImpl.java

@@ -1,6 +1,7 @@
 package com.gis.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.gis.common.constant.ConfigConstant;
 import com.gis.common.util.ExcelUtils;
 import com.gis.common.util.Result;
@@ -21,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
 import java.util.*;
 
 
@@ -42,6 +44,13 @@ public class TaskesTimateServiceImpl extends ZtBaseServiceImpl<TaskesTimateEntit
     @Autowired
     ConfigConstant configConstant;
 
+    // 部门id分类
+    private static HashMap<String, Object> deptMap = new HashMap<>();
+    static {
+        deptMap.put("age", "");
+        deptMap.put("wufu", "17,18,19,25");
+    }
+
 
     @Override
     public Result<DetailVo> search(PageDto param) {
@@ -210,5 +219,56 @@ public class TaskesTimateServiceImpl extends ZtBaseServiceImpl<TaskesTimateEntit
         return  Result.success(result);
     }
 
+    @Override
+    public Result<DetailVo> excelByYearDetail(Integer year, String type) {
+        StringBuilder builder = new StringBuilder();
+        String yearDate = LocalDate.of(year, 1, 1).toString();
+//        builder.append("select a.task, a.date, a.account, ROUND(a.consumed/8,2) as consumed, b.project, b.name as taskName, c.name as projectName,c.code,d.realname as realname, d.slack, e.id as deptId, e.name as deptName, g.name as moduleName");
+        builder.append("select a.task, DATE_FORMAT( a.date, '%Y-%m-%d') as date, a.account, ROUND(a.consumed/8,2) as consumed, b.project, b.name as taskName, c.name as projectName,c.code,d.realname as realname, d.slack, e.id as deptId, e.name as deptName, g.name as moduleName");
+        builder.append(" from zt_taskestimate a left join zt_task b on b.id = a.task left join zt_module g on g.id=b.module left join zt_project c on c.id=b.project left join zt_user d on d.account = a.account left join zt_dept e on d.dept = e.id");
+        builder.append(StrUtil.format(" where b.deleted = '0' AND DATE_FORMAT( date, '%Y') = DATE_FORMAT('{}' , '%Y') ", yearDate));
+        if (StrUtil.isNotBlank(type)){
+            Object deptIds = deptMap.get(type);
+            builder.append(" and e.id in (").append(deptIds).append(")");
+        }
+        builder.append(" order by a.account asc");
+
+        List<DetailVo> effortVos = entityMapper.excelByYearDetail(builder.toString());
+        return Result.success(createExcel(effortVos));
+    }
+
+
+    private  HashMap<String, Object> createExcel(List rows){
+
+        String time = DateUtil.format(new Date(), "yyyyMMdd_HHmmss");
+        String savePath = configConstant.serverBasePath + time + ".xlsx";
+        HashMap<String, String> rowTitle = new HashMap<>();
+
+        rowTitle.put("slack", "工号");
+        rowTitle.put("date", "日期");
+        rowTitle.put("task", "任务号");
+        rowTitle.put("project", "项目id");
+        rowTitle.put("code", "项目号");
+        rowTitle.put("projectName", "项目名称");
+        rowTitle.put("account", "账号");
+        rowTitle.put("realname", "姓名");
+        rowTitle.put("consumed", "消耗时间(天)");
+        rowTitle.put("deptId", "部门Id");
+        rowTitle.put("deptName", "部门名称");
+
+        // 2022-2-24 by owen 新增
+        rowTitle.put("taskName", "任务名称");
+        rowTitle.put("moduleName", "模块名称");
+        ExcelUtils.createExcel(rows, savePath, rowTitle);
+
+
+        String domain = configConstant.serverDomain + time + ".xlsx";
+
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("size", rows.size());
+        result.put("path", domain);
+        return result;
+    }
+
 
 }

+ 14 - 2
gis_web/src/main/java/com/gis/web/controller/FinanceController.java

@@ -36,7 +36,7 @@ public class FinanceController extends BaseController {
 
 
 
-    @ApiOperation(value = "月详情(date:当月日期:yyyy-MM-dd)")
+    @ApiOperation(value = "月-详情(date:当月日期:yyyy-MM-dd)")
     @GetMapping(value = "excelByDetail/{date}")
     public Result<DetailVo> excelByDetail(@PathVariable String date) {
         DeptDto param = new DeptDto();
@@ -44,10 +44,22 @@ public class FinanceController extends BaseController {
         return taskesTimateService.excelDetailByDay(param);
     }
 
-    @ApiOperation("月总计(date:当月日期:yyyy-MM-dd)")
+    @ApiOperation("月-总计(date:当月日期:yyyy-MM-dd)")
     @GetMapping(value = "excelByMonth/{date}")
     public Result<FinanceMonthVo> excelByMonth(@PathVariable String date) {
         return taskesTimateService.allProjectEffortByMonthExcel(date);
     }
 
+
+    /***
+     * by owen 2022-07-26
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "年-详情(year: 2022)", notes = "type: age=珠海四维, wufu=芜湖四维, 不传为全部")
+    @GetMapping(value = "excelByYearDetail/{year}")
+    public Result<DetailVo> excelByYearDetail(@PathVariable Integer year, String type) {
+        return taskesTimateService.excelByYearDetail(year, type);
+    }
+
 }