Forráskód Böngészése

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

# Conflicts:
#	fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue
ggooalice 3 éve
szülő
commit
ac1a6aa790
18 módosított fájl, 204 hozzáadás és 47 törlés
  1. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/PermissionController.java
  2. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  3. 10 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java
  4. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserMapper.java
  5. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/PermissionService.java
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskService.java
  7. 108 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java
  8. 19 10
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 6 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  11. 11 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  12. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  13. 9 8
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  14. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SysFunctionMapper.xml
  15. 7 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml
  16. 13 5
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  17. 2 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  18. 1 2
      fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/PermissionController.java

@@ -83,6 +83,11 @@ public class PermissionController {
         return permissionService.getAuthority(role, companyId);
     }
 
+    @RequestMapping("/exportData")
+    public HttpRespMsg exportData(@RequestParam Integer role, @RequestParam Integer companyId){
+        return permissionService.exportData(role,companyId);
+    }
+
     @RequestMapping("/switchAuthority")
     public HttpRespMsg switchAuthority(@RequestParam Integer role, @RequestParam Integer id) {
         return permissionService.switchAuthority(role, id);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -292,7 +292,8 @@ public class TaskController {
         taskService.updateById(task);
         ArrayList<Integer> finishedTaskIds = Lists.list(task.getId());
         if (isFinishTask) {
-            taskService.notifyMileStoneFinish(user.getCompanyId(), finishedTaskIds);
+            List<Task> finishedMileStoneList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name, project_id, finish_date").in("id", finishedTaskIds).eq("task_type", 1));
+            taskService.notifyMileStoneFinish(user.getCompanyId(), finishedMileStoneList);
         }
 
         //更新项目完成度

+ 10 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java

@@ -1,21 +1,22 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 菜单功能权限关联表
  * </p>
  *
  * @author Seyason
- * @since 2022-04-05
+ * @since 2022-06-30
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -129,6 +130,11 @@ public class SysFunction extends Model<SysFunction> {
     @TableField("finance_audit")
     private Integer financeAudit;
 
+    /**
+     * 备注
+     */
+    @TableField("remarks")
+    private String remarks;
 
     @TableField(exist = false)
     private boolean checked;

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserMapper.java

@@ -27,9 +27,9 @@ public interface UserMapper extends BaseMapper<User> {
                                                       @Param("companyId") Integer companyId,
                                                       @Param("departmentIds") List departmentIds, String keyword, Integer status, @Param("roleId") Integer roleId);
 
-    List<Map<String, Object>> getPushUserList(@Param("companyId") Integer companyId,Integer alertType);
+    List<Map<String, Object>> getPushUserList(@Param("companyId") Integer companyId,Integer alertType, String date);
 
-    List<Map<String, Object>> getPushDingdingUserList(@Param("alertTime") String alertTime);
+    List<Map<String, Object>> getPushDingdingUserList(@Param("alertTime") String alertTime, String date);
 
     List<Map<String, Object>> getProjectPushUserList(@Param("projectId") Integer projectId);
 

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

@@ -34,4 +34,6 @@ public interface PermissionService extends IService<Permission> {
     HttpRespMsg savePermission(Integer role, String moduleList);
 
     HttpRespMsg setDefaultRole(Integer id, Integer companyId);
+
+    HttpRespMsg exportData(Integer role, Integer companyId);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskService.java

@@ -46,5 +46,5 @@ public interface TaskService extends IService<Task> {
 
     HttpRespMsg getMilestoneTaskList(Integer milestoneId);
 
-    public void notifyMileStoneFinish(Integer companyId, List<Integer> taskIdList);
+    public void notifyMileStoneFinish(Integer companyId, List<Task> taskList);
 }

+ 108 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java

@@ -11,15 +11,18 @@ import com.management.platform.service.PermissionService;
 import com.management.platform.service.SysRoleFunctionService;
 import com.management.platform.service.SysRoleModuleService;
 import com.management.platform.util.HttpRespMsg;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -33,6 +36,8 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
+    @Value(value = "${upload.path}")
+    private String path;
     @Resource
     private UserMapper userMapper;
     @Resource
@@ -335,6 +340,105 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         return new HttpRespMsg();
     }
 
+    @Override
+    public HttpRespMsg exportData(Integer role, Integer companyId) {
+        HttpRespMsg msg = getAuthority(role, companyId);
+        SysRole roleItem = sysRoleMapper.selectById(role);
+        List<SysModule> menuList= (List<SysModule>) msg.data;
+        HSSFWorkbook wb=new HSSFWorkbook();
+        HSSFSheet sheet=wb.createSheet(roleItem.getRolename()+"_权限表");
+        //设置每一列的列宽
+        sheet.setColumnWidth(0,256*15);
+        sheet.setColumnWidth(1,256*20);
+        sheet.setColumnWidth(2,256*50);
+
+        List<String> titles = Arrays.asList("模块","功能","备注");
+        HSSFRow row = sheet.createRow(0);
+        HSSFCellStyle style = wb.createCellStyle();
+        style.setBorderBottom(BorderStyle.valueOf((short)1));
+        style.setBorderLeft(BorderStyle.valueOf((short)1));
+        style.setBorderRight(BorderStyle.valueOf((short)1));
+        style.setBorderTop(BorderStyle.valueOf((short)1));
+        //水平居中
+        style.setAlignment(HorizontalAlignment.CENTER);
+        //垂直对齐
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setBottomBorderColor(IndexedColors.BLACK.index);
+        //背景颜色
+        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        HSSFFont headerFont1 = (HSSFFont) wb.createFont();
+        //字体加粗
+        headerFont1.setBold(true);
+        //字体类型
+        headerFont1.setFontName("黑体");
+        //字体大小
+        headerFont1.setFontHeightInPoints((short)15);
+        style.setFont(headerFont1);
+        //创建标题
+        HSSFCell cell = null;
+        for (int i = 0; i < titles.size(); i++) {
+            cell = row.createCell(i);
+            cell.setCellValue(titles.get(i));
+            cell.setCellStyle(style);
+        }
+        //初始化起始行和结束行
+        int startRow = 1;
+        for (int i = 0; i < menuList.size(); i++) {
+            //利用模块合并单元格(合并行)
+            List<SysFunction> functionList = menuList.get(i).getFunctionList();
+            int endRow = startRow + functionList.size() -1;
+            if (functionList.size() > 1){
+                sheet.addMergedRegion(new CellRangeAddress(startRow,endRow, 0, 0));
+                for (int j = 0; j < functionList.size(); j++) {
+                    row = sheet.createRow(startRow + j);
+                    row.createCell(0).setCellValue(menuList.get(i).getName());
+                    row.createCell(1).setCellValue(functionList.get(j).getName());
+                    row.createCell(2).setCellValue(functionList.get(j).getRemarks());
+                }
+            } else if (functionList.size() == 1){
+                //该模块只有一个功能, 只要一行就行了
+                row = sheet.createRow(startRow);
+                row.createCell(0).setCellValue(menuList.get(i).getName());
+                row.createCell(1).setCellValue(functionList.get(0).getName());
+                row.createCell(2).setCellValue(functionList.get(0).getRemarks());
+            } else {
+                //没有功能,取子模块展示
+                row = sheet.createRow(startRow);
+                row.createCell(0).setCellValue(menuList.get(i).getName());
+                List<SysModule> children = menuList.get(i).getChildren();
+                if(children.size()>0){
+                    for (int k = 0; k < children.size(); k++) {
+                        row = sheet.createRow(startRow+k);
+                        row.createCell(0).setCellValue(children.get(k).getName());
+                    }
+                }
+            }
+            startRow = endRow + 1;
+        }
+        //导出excel
+        String result="系统提示:Excel文件导出成功!";
+        String title= roleItem.getRolename()+"权限表_"+System.currentTimeMillis();
+        String fileName= title+".xls";
+        try {
+            File dir = null;
+            dir = new File(path);
+            // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+            FileOutputStream os = new FileOutputStream(path+fileName);//保存到本地
+            wb.write(os);
+            os.flush();
+            os.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        httpRespMsg.data ="/upload/"+fileName;
+        return httpRespMsg;
+    }
+
     private List<Integer> getCheckedFunList(JSONObject menu) {
         List<Integer> funIds = new ArrayList<>();
         JSONArray funList = menu.getJSONArray("functionList");

+ 19 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2778,19 +2778,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 int pid = (Integer)item.get("id");
                 item.put("curcostList", currentcostList.stream().filter(cur->cur.getProjectId() == pid));
                 List proRealCost = new ArrayList();
+                BigDecimal totalFeeman = new BigDecimal(0.0);
                 for (int m=0;m<realCostData.size(); m++) {
                     HashMap realCostItem = (HashMap)realCostData.get(m);
                     if ((int)realCostItem.get("projectId") == pid) {
                         proRealCost.add(realCostItem);
+                        totalFeeman = totalFeeman.add((BigDecimal)realCostItem.get("cost"));
                     }
                 }
                 item.put("realcostList", proRealCost);
-                BigDecimal baseCost=new BigDecimal(String.valueOf(item.get("baseCost")));
-                baseCost=baseCost.subtract((BigDecimal) item.get("feeMan"));
-                BigDecimal baseCurcost=new BigDecimal(String.valueOf(item.get("baseCurcost")));
-                baseCurcost=baseCurcost.subtract((BigDecimal) item.get("feeMan"));
+                //重新给feeman赋值,因为这个表要统计的已发生工时成本含待审核的
+                item.put("feeMan", totalFeeman);
+                BigDecimal baseCost = new BigDecimal(String.valueOf(item.get("baseCost")));
+                baseCost = baseCost.subtract(totalFeeman);
+                BigDecimal baseCurcost = new BigDecimal(String.valueOf(item.get("baseCurcost")));
+                baseCurcost = baseCurcost.subtract(totalFeeman);
                 item.put("remainingBudget",baseCost);
                 item.put("currentRemainingBudget",baseCurcost);
+
             }
         }
 
@@ -2816,8 +2821,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<ProjectBasecostSetting> settingList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId).eq("alarm_type", 1));
         for (ProjectBasecostSetting setting : settingList) {
             headList.add(setting.getName()+"成本预算");
-            headList.add(setting.getName()+"已发生成本");
-            headList.add(setting.getName()+"已发生占比");
+            headList.add(setting.getName()+"已填报成本");
+            headList.add(setting.getName()+"已填报占比");
         }
         exportList.add(headList);
 
@@ -2836,17 +2841,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 int pid = (Integer)item.get("id");
                 item.put("curcostList", currentcostList.stream().filter(cur->cur.getProjectId() == pid).collect(Collectors.toList()));
                 List proRealCost = new ArrayList();
+                BigDecimal totalFeeman = new BigDecimal(0.0);
                 for (int m=0;m<realCostData.size(); m++) {
                     HashMap realCostItem = (HashMap)realCostData.get(m);
                     if ((int)realCostItem.get("projectId") == pid) {
                         proRealCost.add(realCostItem);
+                        totalFeeman = totalFeeman.add((BigDecimal)realCostItem.get("cost"));
                     }
                 }
                 item.put("realcostList", proRealCost);
-                BigDecimal baseCost=new BigDecimal(String.valueOf(item.get("baseCost")));
-                baseCost=baseCost.subtract((BigDecimal) item.get("feeMan"));
-                BigDecimal baseCurcost=new BigDecimal(String.valueOf(item.get("baseCurcost")));
-                baseCurcost=baseCurcost.subtract((BigDecimal) item.get("feeMan"));
+                //重新给feeman赋值,因为这个表要统计的已发生工时成本含待审核的
+                item.put("feeMan", totalFeeman);
+                BigDecimal baseCost = new BigDecimal(String.valueOf(item.get("baseCost")));
+                baseCost = baseCost.subtract(totalFeeman);
+                BigDecimal baseCurcost = new BigDecimal(String.valueOf(item.get("baseCurcost")));
+                baseCurcost = baseCurcost.subtract(totalFeeman);
                 item.put("remainingBudget",baseCost);
                 item.put("currentRemainingBudget",baseCurcost);
             }

+ 6 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -728,9 +728,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             fTask.setTaskStatus(1);
             LocalDate createDate = reportList.get(0).getCreateDate();
             fTask.setFinishDate(createDate);
-            //不能用Mapper更新,使用mapper更新会导致下面的taskService获取数据不是最新的,没有finshDate
-            taskService.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
-            taskService.notifyMileStoneFinish(companyId, finishedTaskIds);
+            taskMapper.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
+            //如果是里程碑,需要发送通知
+            List<Task> finishedMileStoneList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name, project_id, finish_date").in("id", finishedTaskIds).eq("task_type", 1));
+            if (finishedMileStoneList.size() > 0) {
+                taskService.notifyMileStoneFinish(companyId, finishedMileStoneList);
+            }
         }
 
         int enginerring = companyMapper.selectById(companyId).getPackageEngineering();
@@ -2057,7 +2060,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             nameList.forEach(n->{
                 n.put("dateStr",sdf.format((java.sql.Date)n.get("date")));
             });
-            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
             List<Profession> professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", curUser.getCompanyId()));
             for (int index=0;index<nameList.size(); index++) {
                 Map<String, Object> map2 = nameList.get(index);

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -536,7 +536,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     }
 
     @Override
-    public void notifyMileStoneFinish(Integer companyId, List<Integer> taskIdList) {
+    public void notifyMileStoneFinish(Integer companyId, List<Task> taskList) {
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         new Thread() {
             public void run() {
@@ -544,7 +544,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 //钉钉注册的公司
                 if (dingdingList.size() > 0) {
                     CompanyDingding dingding = dingdingList.get(0);
-                    List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().in("id", taskIdList).eq("task_type", 1));
+//                    List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().in("id", taskIdList).eq("task_type", 1));
                     for (Task task : taskList) {
                         String finishDate = dateTimeFormatter.format(task.getFinishDate());
                         Project project = projectMapper.selectById(task.getProjectId());

+ 11 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -307,12 +307,21 @@ public class TimingTask {
         }
         DateTimeFormatter dt = DateTimeFormatter.ofPattern("HH:mm");
         String str = dt.format(now);
+        String date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate);
         List<TimeType> typeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().isNotNull("alert_time")
                 .ge("alert_time", str));
         typeList.forEach(t->{
             if (str.equals(t.getAlertTime())) {
                 //发送推送提醒
-                List<Map<String, Object>> userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType());
+                Company company = companyMapper.selectById(t.getCompanyId());
+                //开通了OA功能,有请假模块的,需要把当前请假的排除掉
+                List<Map<String, Object>> userList = null;
+                if (company.getPackageOa() == 1) {
+                    userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType(), date);
+                } else {
+                    userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType(), null);
+                }
+
                 List<WxCorpInfo> cpList = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().eq("company_id", t.getCompanyId()));
                 userList.forEach(u->{
                     if (u.get("corpwxUserid") != null){
@@ -337,7 +346,7 @@ public class TimingTask {
             }
         });
 
-        List<Map<String, Object>> dingdingUserList = userMapper.getPushDingdingUserList(str);
+        List<Map<String, Object>> dingdingUserList = userMapper.getPushDingdingUserList(str, date);
         //钉钉平台的用批量发送, 每分钟5000个
         int minuteSize = 5000;
         int minuteTimes = dingdingUserList.size()/minuteSize + (dingdingUserList.size()%minuteSize==0?0:1);

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -713,6 +713,7 @@
             and rp.dept_id=#{departmentId}
         </if>
         group by us.id
+        order by rp.dept_id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>
@@ -732,6 +733,7 @@
             and rp.dept_id=#{departmentId}
         </if>
         group by us.id
+        order by rp.dept_id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>) total

+ 9 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -162,7 +162,6 @@
         <if test="departmentId != null">
             AND department.department_id = #{departmentId}
         </if>
-
         ORDER BY a.creator_id, a.create_date desc
     </select>
 
@@ -338,6 +337,7 @@
         AND a.id in(select report_id from report_profession_progress, project_profession where
         project_profession.incharger_id = #{id}
         and report_profession_progress.profession_id = project_profession.profession_id
+        and report_profession_progress.project_id = project_profession.project_id
         and report_profession_progress.audit_state = 0)
         ORDER BY a.creator_id ASC
     </select>
@@ -421,12 +421,13 @@
         JOIN user AS b ON a.creator_id=b.id
         WHERE b.company_id=#{companyId}
         <if test="leaderId != null">
-            AND a.creator_id in (select memb_id from pp_membs where pp_id in(select id from project_profession where incharger_id = #{leaderId}))
-            AND a.project_id in (select project_id from project_profession where incharger_id = #{leaderId})
-            AND a.id in (select report_id from report_profession_progress, project_profession where
+            AND EXISTS (SELECT 1 FROM report_profession_progress, project_profession WHERE
             project_profession.incharger_id = #{leaderId}
-            and report_profession_progress.profession_id = project_profession.profession_id
-            and report_profession_progress.audit_state = 0)
+            AND report_profession_progress.profession_id = project_profession.profession_id
+            AND report_profession_progress.project_id = project_profession.project_id
+            AND report_profession_progress.audit_state = 0
+            AND report_profession_progress.`report_id` = a.id
+            )
         </if>
         ORDER BY a.create_date DESC
     </select>
@@ -607,7 +608,7 @@
     </select>
     <select id="getProjectCost" resultType="java.util.HashMap">
         SELECT project_id as projectId,basecost_id as basecostId, SUM(cost) AS cost FROM report WHERE company_id=#{companyId}
-        AND state = 1 and basecost_id > 0 AND project_id IN
+        AND (state = 0 or state = 1) and basecost_id > 0 AND project_id IN
         <foreach collection="projectIds" item="item" separator="," open="(" close=")" index="index">
             #{item}
         </foreach>
@@ -625,7 +626,7 @@
     </select>
 
     <select id="getOneProjectBaseCost" resultType="java.util.HashMap">
-        SELECT basecost_id as basecostId, IFNULL(SUM(cost), 0) AS cost FROM report WHERE state = 1 and basecost_id > 0 AND project_id = #{projectId} group by basecost_id
+        SELECT basecost_id as basecostId, IFNULL(SUM(cost), 0) AS cost FROM report WHERE (state = 0 or state = 1) and basecost_id > 0 AND project_id = #{projectId} group by basecost_id
     </select>
 
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SysFunctionMapper.xml

@@ -22,6 +22,7 @@
         <result column="package_finance" property="packageFinance" />
         <result column="sync_corpwx_time" property="syncCorpwxTime" />
         <result column="finance_audit" property="financeAudit" />
+        <result column="remarks" property="remarks" />
     </resultMap>
     <resultMap id="BaseResultMap1" type="com.management.platform.entity.vo.SysRichFunction">
         <id column="id" property="id" />
@@ -34,7 +35,7 @@
     </resultMap>
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, icon, code, module_id, seq, use_state, package_time, package_project, package_oa, package_expense, package_customer, package_engineering, package_contract, package_etimecard, package_finance, sync_corpwx_time, finance_audit
+        id, name, icon, code, module_id, seq, use_state, package_time, package_project, package_oa, package_expense, package_customer, package_engineering, package_contract, package_etimecard, package_finance, sync_corpwx_time, finance_audit, remarks
     </sql>
     <select id="getRoleFunctions" resultMap="BaseResultMap1" >
         select sys_function.id, sys_function.name, sys_function.icon, sys_function.code, sys_function.module_id, sys_function.seq, sys_module.name as module_name

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -108,6 +108,10 @@
                 AND NOT EXISTS(SELECT 1 FROM report WHERE report.`creator_id` = a.id AND report.`create_date` = DATE_FORMAT(NOW(), '%Y-%m-%d'))
             </otherwise>
         </choose>
+        <if test="date != null">
+            and not exists (select 1 from leave_sheet where owner_id = a.id and start_date &lt;= #{date} and end_date &gt;= #{date} and leave_sheet.status = 0)
+        </if>
+
     </select>
 
 
@@ -118,6 +122,9 @@
         AND a.is_active = 1
         AND a.report_status=0
         AND NOT EXISTS(SELECT 1 FROM report WHERE report.`creator_id` = a.id AND ((report.`create_date` = DATE_FORMAT(date_sub(NOW(),interval 1 day), '%Y-%m-%d') and time_type.alert_type=1)or(report.`create_date` = DATE_FORMAT(NOW(), '%Y-%m-%d') and time_type.alert_type=0)))
+        <if test="date != null">
+            and not exists (select 1 from leave_sheet where owner_id = a.id and start_date &lt;= #{date} and end_date &gt;= #{date} and leave_sheet.status = 0)
+        </if>
         order by a.company_id
     </select>
     <!--获取项目的参与人的推送id -->

+ 13 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -402,9 +402,17 @@
                     <span>¥{{scope.row.baseCurcost | numberToCurrency}}</span>
                   </template>
                 </el-table-column>
-                <el-table-column  prop="currentRemainingBudget" label="当前剩余预算" min-width="200"></el-table-column>
-                <el-table-column  prop="remainingBudget" label="总剩余预算" min-width="200"></el-table-column>
-                <el-table-column prop="feeMan" label="已发生工时成本" min-width="160" align="right">
+                <el-table-column  prop="currentRemainingBudget" label="当前剩余预算" min-width="200"  align="right">
+                  <template slot-scope="scope">
+                    <span>¥{{scope.row.currentRemainingBudget | numberToCurrency}}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column  prop="remainingBudget" label="总剩余预算" min-width="200"  align="right">
+                  <template slot-scope="scope">
+                    <span>¥{{scope.row.remainingBudget | numberToCurrency}}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="feeMan" label="已填报工时成本" min-width="160" align="right">
                   <template slot-scope="scope">
                     <span :class="scope.row.baseCurcost * 0.9 < scope.row.feeMan ? 'warntext' : ''">¥{{scope.row.feeMan | numberToCurrency}}</span>
                   </template>
@@ -415,13 +423,13 @@
                       <span>¥{{budgetFilter(scope.row.curcostList,item.id) | numberToCurrency}}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column :label="item.name + '已发生成本'" min-width="200" align="right">
+                  <el-table-column :label="item.name + '已填报成本'" min-width="200" align="right">
                     <template slot-scope="scope">
                       <span :class="percentageFilter(scope.row,item.id) > 90 ? 'warntext' : ''"
                       >¥{{AlreadyFilter(scope.row.realcostList,item.id) | numberToCurrency}}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column :label="item.name + '已发生占比'" min-width="200" align="right">
+                  <el-table-column :label="item.name + '已填报占比'" min-width="200" align="right">
                     <template slot-scope="scope">
                       <span :class="percentageFilter(scope.row,item.id) > 90 ? 'warntext' : ''"
                       >{{percentageFilter(scope.row,item.id) == 'NaN' ? '-' : percentageFilter(scope.row,item.id) + '%'}}</span>

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -2374,7 +2374,8 @@ a {
                         taskGpIncharge: item.taskGpIncharge,
                         category:item.category,
                         projectDesc: item.projectDesc,
-                        projectMainId: item.projectMainId
+                        projectMainId: item.projectMainId,
+                        creatorId: item.creatorId
                     }
                     this.deleteVif = item.creatorId
                     console.log("handleadd",this.deleteVif,this.addForm.id)

+ 1 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue

@@ -34,7 +34,6 @@
                     <el-button type="primary" size="small" @click="shisha(scope.row.id), roleName = scope.row.rolename" v-if="scope.row.rolename !='超级管理员' || (scope.row.rolename =='超级管理员' && user.roleName == '超级管理员')">分配权限</el-button>
                     
                     <el-button type="danger" size="small" @click="deteHand(scope.row)" v-if="scope.row.rolename != '超级管理员'">删除</el-button>
-                    
                 </div>
             </template>
         </el-table-column>
@@ -471,7 +470,7 @@ export default {
         },res => {
           if(res.code == 'ok'){
             var a = document.createElement('a');
-            a.download = "权限数据统计.xls";
+            a.download = "权限数据.xls";
             a.href = res.data;
             a.click();
           }else{