소스 검색

针对赛元做导出待审核日报功能

seyason 9 달 전
부모
커밋
5a7ee0fa5d

+ 35 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2126,6 +2126,41 @@ public class ReportController {
                 request);
     }
 
+    /**
+     * 导出待审核日报列表
+     * @param state
+     * @param departmentId
+     * @param projectId
+     * @param date
+     * @param startDate
+     * @param endDate
+     * @param userId
+     * @param auditUserId
+     * @param request
+     * @return
+     */
+    @RequestMapping("/exportListByState")
+    public HttpRespMsg exportListByState(@RequestParam Integer state,
+                                      Integer departmentId,
+                                      Integer projectId,
+                                      String date,
+                                      String startDate,
+                                      String endDate,
+                                      String userId,
+                                      String auditUserId,
+                                      HttpServletRequest request) {
+        try {
+            return reportService.exportListByState(state, departmentId,
+                    projectId,
+                    date, startDate, endDate, userId,auditUserId,
+                    request);
+        } catch (Exception e) {
+            HttpRespMsg msg = new HttpRespMsg();
+            msg.setError(e.getMessage());
+            return msg;
+        }
+    }
+
     /**
      * 获取专业待审核的报告
      * @param state

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -167,4 +167,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg transferReport(String reportIds, Integer projectId, Integer groupId, Integer stageId);
 
     HttpRespMsg batchDenyHisReport(Integer reportAuditLogId, String reason, HttpServletRequest request) throws Exception;
+
+    HttpRespMsg exportListByState(Integer state, Integer departmentId, Integer projectId, String date, String startDate, String endDate, String userId, String auditUserId, HttpServletRequest request) throws Exception;
 }

+ 68 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -10015,4 +10015,72 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         return new HttpRespMsg();
     }
+
+    @Override
+    public HttpRespMsg exportListByState(Integer state, Integer departmentId, Integer projectId, String date, String startDate, String endDate, String userId, String auditUserId, HttpServletRequest request) throws Exception {
+        HttpRespMsg listByState = getListByState(state, departmentId, projectId, date, startDate, endDate, userId, auditUserId, request);
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
+        CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
+        List<Map<String, Object>> nameList  = (List<Map<String, Object>>) listByState.getData();
+        List<String> titleList=new ArrayList<>();
+
+        //针对赛元微电子的导出,以后如果有其他公司也需要这样的导出,可以在这里加入判断
+        titleList.add("姓名");
+        titleList.add("部门");
+        titleList.add("日期");
+        titleList.add("考勤时长(h)");
+        titleList.add("项目工时");
+        titleList.add("事项");
+        titleList.add("状态");
+        //添加数据
+        List<List<String>> dataList=new ArrayList<>();
+        dataList.add(titleList);
+        for (Map<String, Object> map : nameList) {
+            List<String> item=new ArrayList<>();
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$userName="+String.valueOf(map.get("corpwxUserId"))+"$");
+                item.add("$departmentName="+String.valueOf(map.get("corpwxDeptId"))+"$");
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                item.add("$userName="+String.valueOf(map.get("name"))+"$");
+                item.add("$departmentName="+String.valueOf(map.get("departmentName"))+"$");
+            }else {
+                item.add(String.valueOf(map.get("name")));
+                item.add(String.valueOf(map.get("departmentName")));
+            }
+            item.add(String.valueOf(map.get("dateStr")));
+            item.add(String.valueOf(map.get("cardHours")));
+            List<Map<String, Object>> workProjectList = (List<Map<String, Object>>) map.get("data");
+            String workStr = "";
+            String workContent = "";
+            String projAuditor = "";
+            if(workProjectList.size()>0) {
+                for (int i = 0; i < workProjectList.size(); i++) {
+                    Map<String, Object> workProject = workProjectList.get(i);
+                    if (i == 0) {
+                        workContent = String.valueOf(workProject.get("content"));
+                    }
+                    workStr += workProject.get("project") + "(" + workProject.get("time") + "h),";
+                    String aud = String.valueOf(workProject.get("projectAuditorName"));
+                    if (!projAuditor.contains(aud)) {
+                        projAuditor += aud + ",";
+                    }
+                }
+                workStr = workStr.substring(0, workStr.length() - 1);
+                projAuditor = projAuditor.substring(0, projAuditor.length() - 1);
+            }
+            item.add(workStr);
+            item.add(workContent);
+            if (((Integer)map.get("isDeptAudit")) == 0) {
+                item.add("待部门主管("+projAuditor+")审核");
+            } else {
+                item.add("待"+map.get("auditDeptName")+"("+map.get("deptAuditorName")+")审核");
+            }
+
+            dataList.add(item);
+        }
+        //通过excel导出
+        String fileName="待审核日报列表_"+System.currentTimeMillis();
+        return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName,dataList,path);
+    }
 }

+ 40 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue

@@ -69,7 +69,9 @@
                         <el-form-item style="margin-left:20px;">
                         <el-link type="primary" @click="recordList(),recordDialogVisible = true,pageIndexList = 1,pageSizeList = 20">{{ $t('Auditrecords') }}</el-link>
                         </el-form-item>
-
+                        <el-form-item style="margin-left:20px;" v-if="user.companyId == 469">
+                        <el-link type="primary" @click="exportListByState" :loading="exportLoading">导出待审核日报</el-link>
+                        </el-form-item>
                         <!-- 调试 -->
                         <!-- <cascaderOption></cascaderOption> -->
                     <!-- </div> -->
@@ -224,7 +226,7 @@
                 </el-table-column>
                 <el-table-column prop="dateStr" :label="$t('weekDay.date')" sortable>
                 </el-table-column>
-                <el-table-column prop="reportTime" :label="$t('screening.workTime') + '(h)'" >
+                <el-table-column prop="reportTime" :label="$t('screening.workTime') + '(h)'" v-if="user.companyId != 469">
                     <template slot-scope="scope">
                         {{scope.row.reportTime | amounts}}
                     </template>
@@ -234,6 +236,12 @@
                         {{scope.row.cardHours?scope.row.cardHours.toFixed(1):'-'}}
                     </template>
                 </el-table-column>
+                
+                <el-table-column label="项目工时" v-if="user.companyId == 469">
+                    <template slot-scope="scope">
+                        <span v-for="(projItem, projIndex) in scope.row.data">{{ projItem.project+'('+projItem.time+'h)' + (projIndex < scope.row.data.length-1?',':'')}}</span>
+                    </template>
+                </el-table-column>
                 <el-table-column :label="$t('other.matters')" v-if="user.companyId == 469">
                     <template slot-scope="scope">
                         {{scope.row.data.length == 0?'':scope.row.data[0].content}}
@@ -518,6 +526,7 @@
         },
         data() {
             return {
+                exportLoading: false,
                 yuzhongCompId: 3385,
                 roleList:[{value: 1,label: 'CRC&LM'},{value: 2,label: 'PM'}],
                 batchDenyLoading: false,
@@ -602,13 +611,41 @@
         },
         methods: {
             batchRevokeClick(row, index) {
-                console.log(row, index, '<===== 点击了撤销')
                 this.undoBathForm = {
                     reason: '',
                     reportAuditLogId: row.id
                 }
                 this.undoBathFormDialog = true
             },
+            exportListByState() {
+                let url = '/report/exportListByState';
+                this.exportLoading = true;
+                this.http.post(url, this.search,
+                res => {
+                    this.exportLoading = false;
+                    if (res.code == "ok") {
+                        var filePath = res.data;
+                        const a = document.createElement('a'); // 创建a标签
+                        var data = filePath.split("/");
+                        a.setAttribute('download', data[data.length-1]);// download属性
+                        a.setAttribute('href', filePath);// href链接
+                        a.click(); //自执行点击事件
+                        a.remove();
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.exportLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
             clickBathCancel() {
                 this.undoBathFormLoading = true
                 this.http.post('/report/batchDenyHisReport', this.undoBathForm,