소스 검색

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

ggooalice 2 년 전
부모
커밋
fb9e83c524
54개의 변경된 파일1405개의 추가작업 그리고 205개의 파일을 삭제
  1. 78 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyReportController.java
  2. 23 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  3. 34 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  4. 36 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportFormController.java
  5. 16 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  6. 31 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCustomController.java
  7. 43 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyReport.java
  8. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  9. 19 12
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java
  10. 11 19
      src/main/java/com/management/platform/entity/ExpenseType.java
  11. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java
  12. 9 7
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java
  13. 19 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  14. 8 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserCustom.java
  15. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CompanyReportMapper.java
  16. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  17. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportFormMapper.java
  18. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java
  19. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyReportService.java
  20. 9 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  21. 3 3
      src/main/java/com/management/platform/service/ExpenseTypeService.java
  22. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  23. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyReportServiceImpl.java
  24. 12 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java
  25. 278 44
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  26. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProviderInfoServiceImpl.java
  27. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportFormServiceImpl.java
  28. 44 9
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  29. 33 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  30. 24 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  31. 4 6
      src/main/resources/mapper/ExpenseTypeMapper.xml
  32. 27 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  33. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportFormMapper.xml
  34. 7 6
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  35. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SysFunctionMapper.xml
  36. 14 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  37. 4 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  38. 73 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyReportController.java
  39. 44 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/CompanyReport.java
  40. 11 19
      fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/entity/UserPermission.java
  41. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/CompanyReportMapper.java
  42. 3 3
      src/main/java/com/management/platform/mapper/ExpenseTypeMapper.java
  43. 17 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanyReportService.java
  44. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/ReportFormService.java
  45. 20 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanyReportServiceImpl.java
  46. 20 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/ReportFormServiceImpl.java
  47. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanyReportMapper.xml
  48. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/ReportFormMapper.xml
  49. 121 15
      fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue
  50. 34 11
      fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue
  51. 38 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  52. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/provider/provider.vue
  53. 43 10
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue
  54. 2 2
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

+ 78 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyReportController.java

@@ -0,0 +1,78 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.CompanyReport;
+import com.management.platform.entity.ReportForm;
+import com.management.platform.service.CompanyReportService;
+import com.management.platform.service.ReportFormService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@RestController
+@RequestMapping("/company-report")
+public class CompanyReportController {
+    @Autowired
+    private CompanyReportService companyReportService;
+    @Resource
+    private ReportFormService reportFormService;
+
+
+    @RequestMapping("/list")
+    public HttpRespMsg list(Integer companyId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<CompanyReport> companyReportList = companyReportService.list(new QueryWrapper<CompanyReport>().eq("company_id", companyId));
+        List<ReportForm> reportFormList = reportFormService.list();
+        for (ReportForm reportForm : reportFormList) {
+            boolean b = companyReportList.stream().anyMatch(cr -> cr.getReportFormId().equals(reportForm.getId()));
+            if(b){
+                reportForm.setOwned(1);
+            }
+        }
+        httpRespMsg.data=reportFormList;
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(Integer companyId,String formIds){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(companyReportService.remove(new QueryWrapper<CompanyReport>().eq("company_id", companyId))){
+            httpRespMsg.setError("更新失败");
+            return httpRespMsg;
+        }
+        List<CompanyReport> updateList=new ArrayList<>();
+        if(formIds!=null&&!StringUtils.isEmpty(formIds)){
+            String[] split = formIds.split(",");
+            List<String> list = Arrays.asList(split);
+            for (String s : list) {
+                CompanyReport companyReport=new CompanyReport();
+                companyReport.setCompanyId(companyId);
+                companyReport.setReportFormId(Integer.parseInt(s));
+                updateList.add(companyReport);
+            }
+            if(!companyReportService.saveBatch(updateList)){
+                httpRespMsg.setError("更新失败");
+            }
+        }
+        return httpRespMsg;
+    }
+
+}
+

+ 23 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -126,12 +126,13 @@ public class ProjectController {
                                    String providerIds,
                                    String providerNames,
                                    ProjectSeparate projectSeparate,
+                                   Double outputValue,
                                    @RequestParam(defaultValue = "false") boolean onlyChangeParticipate
                                    ) {
         return projectService.editProject(id, name, code, userId, inchargerId, isPublic, planStartDate, planEndDate, level, contractAmount,
                 projectBaseCostData,
                  budget,customerId,chosenLeaders, associateDegrees, associateDegreeNames,
-                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,onlyChangeParticipate);
+                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,outputValue,onlyChangeParticipate);
     }
 
     @RequestMapping("/adjustBase")
@@ -595,6 +596,9 @@ public class ProjectController {
         if(company.getId()==936){
             heads.add("合同编号");
         }
+        if(company.getId()==428){
+            heads.add("项目分组");
+        }
         if(timeType.getMainProjectState()!=1){
             heads.add("项目分类");
         }
@@ -906,5 +910,23 @@ public class ProjectController {
     public HttpRespMsg exportGroupWithProjectTimeCost(String startDate,String endDate,Integer pageIndex,Integer pageSize,Integer groupId,Integer projectId){
         return projectService.exportGroupWithProjectTimeCost(startDate,endDate,pageIndex,pageSize,groupId,projectId,request);
     }
+    @RequestMapping("/getProjectBaseCost")
+    public HttpRespMsg getProjectBaseCost(Integer projectId,HttpServletRequest request,Integer pageIndex,Integer pageSize){
+        return projectService.getProjectBaseCost(projectId,request,pageIndex,pageSize);
+    }
+
+    @RequestMapping("/exportProjectBaseCost")
+    public HttpRespMsg exportProjectBaseCost(HttpServletRequest request){
+        return projectService.exportProjectBaseCost(request);
+    }
+
+    @RequestMapping("/getTimeCostByUserCustom")
+    public HttpRespMsg getTimeCostByUserCustom(String startDate,String endDate,String subCustomName,Integer customId,HttpServletRequest request,String fieldName){
+        return  projectService.getTimeCostByUserCustom(startDate,endDate,subCustomName,customId,request,fieldName);
+    }
+    @RequestMapping("/exportTimeCostByUserCustom")
+    public HttpRespMsg exportTimeCostByUserCustom(String startDate,String endDate,String subCustomName,Integer customId,HttpServletRequest request,String fieldName){
+        return projectService.exportTimeCostByUserCustom(startDate,endDate,subCustomName,customId,request,fieldName);
+    }
 }
 

+ 34 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -9,10 +9,7 @@ import com.management.platform.entity.*;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.entity.vo.WorktimeItem;
 import com.management.platform.mapper.*;
-import com.management.platform.service.CompanyService;
-import com.management.platform.service.ReportService;
-import com.management.platform.service.UserSalaryService;
-import com.management.platform.service.UserService;
+import com.management.platform.service.*;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.WorkDayCalculateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +55,8 @@ public class ReportController {
     @Resource
     private DepartmentMapper departmentMapper;
     @Resource
+    private BusinessTripService businessTripService;
+    @Resource
     private ProjectCurrentcostMapper projectCurrentcostMapper;
     @Resource
     private UserSalaryService userSalaryService;
@@ -915,6 +914,33 @@ public class ReportController {
 
         }
 
+        //自定义数值为餐补的情况下,如果是出差则不能填餐补
+        if (comTimeType.getCustomDataActive() == 1 && comTimeType.getCustomDataName().contains("餐补")) {
+            if (company.getPackageOa() == 1) {
+                //含OA模块的才有出差
+                for (Report r : reportList) {
+                    if (r.getCustomData() > 0) {
+                        //检查出差记录
+                        LocalDate workDate = r.getCreateDate();
+                        String ownerId = r.getCreatorId();
+                        int cnt = businessTripService.count(new QueryWrapper<BusinessTrip>().eq("owner_id", ownerId).le("start_date", workDate).ge("end_date", workDate));
+                        System.out.println("检查出差条数=="+cnt);
+                        if (cnt > 0) {
+                            //返回错误提示
+                            HttpRespMsg msg = new HttpRespMsg();
+                            if (ownerId.equals(token)) {
+                                //自己填报自己的
+                                msg.setError(dtf.format(workDate)+"有出差,餐补必须为0");
+                            } else {
+                                msg.setError(userService.getById(ownerId) + "在" + dtf.format(workDate)+"有出差,餐补必须为0");
+                            }
+                            return msg;
+                        }
+                    }
+                }
+            }
+        }
+
         return reportService.editReport(reportList, createDate.length > 0 ? createDate[0] : null, targetUserList, hourCost, user.getCompanyId());
     }
 
@@ -1067,8 +1093,8 @@ public class ReportController {
      * reportIds 报告id
      */
     @RequestMapping("/approve")
-    public HttpRespMsg approveReport(@RequestParam String reportIds, Integer isDepartment, HttpServletRequest request) {
-        return reportService.approveReport(reportIds,isDepartment, request);
+    public HttpRespMsg approveReport(@RequestParam String reportIds, Integer isDepartment, HttpServletRequest request,String evaluate) {
+        return reportService.approveReport(reportIds,isDepartment, request,evaluate);
     }
 
 
@@ -1115,8 +1141,8 @@ public class ReportController {
     }
 
     @RequestMapping("/batchApproveReport")
-    public HttpRespMsg batchApproveReport(@RequestParam String ids, Integer isDepartment, HttpServletRequest request) {
-        return reportService.batchApproveReport(ids, isDepartment, request);
+    public HttpRespMsg batchApproveReport(@RequestParam String ids, Integer isDepartment, HttpServletRequest request,String evaluate) {
+        return reportService.batchApproveReport(ids, isDepartment, request,evaluate);
     }
 
     @RequestMapping("/batchDenyReport")

+ 36 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportFormController.java

@@ -0,0 +1,36 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.ReportForm;
+import com.management.platform.service.ReportFormService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@RestController
+@RequestMapping("/report-form")
+public class ReportFormController {
+    @Autowired
+    private ReportFormService reportFormService;
+
+    @RequestMapping("/list")
+    public HttpRespMsg list(){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<ReportForm> list = reportFormService.list();
+        httpRespMsg.data=list;
+        return httpRespMsg;
+    }
+}
+

+ 16 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -71,6 +71,8 @@ public class TaskController {
     private CompanyDingdingService companyDingdingService;
     @Resource
     private WxCorpInfoService wxCorpInfoService;
+    @Resource
+    private ProjectSeparateMapper projectSeparateMapper;
 
     @RequestMapping("/save")
     @Transactional
@@ -703,7 +705,7 @@ public class TaskController {
      * @return
      */
     @RequestMapping("/listByPage")
-    public HttpRespMsg listByPage(Integer status, Integer viewId, Integer pageIndex, Integer pageSize,Integer type,Integer dateType,String startDate,String endDate) {
+    public HttpRespMsg listByPage(Integer status, Integer viewId, Integer pageIndex, Integer pageSize,Integer type,Integer dateType,String startDate,String endDate,String groupName) {
         HttpRespMsg msg = new HttpRespMsg();
         String userId = request.getHeader("Token");
         User user = userMapper.selectById(userId);
@@ -739,14 +741,24 @@ public class TaskController {
 //            //已超期的任务,未完成的任务
 //            queryWrapper.lt("end_date", LocalDate.now()).eq("task_status", 0);
 //        }
-        List<Task> list = taskMapper.getTaskWithProjectName(queryWrapper, (pageIndex-1)*pageSize, pageSize);
-
-        int total = taskMapper.selectCount(queryWrapper);;
+        List<Task> list = taskMapper.getTaskWithProjectName(queryWrapper, (pageIndex-1)*pageSize, pageSize,companyId,groupName);
+        int total = taskMapper.selectCount(queryWrapper);
         Map<String, Object> map = new HashMap<>();
         map.put("records", list);
         map.put("total", total);
         msg.data = map;
         return msg;
     }
+    @RequestMapping("/getGroupNameList")
+    public HttpRespMsg getGroupNameList(HttpServletRequest request){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<Project> projectList = projectService.list(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<Integer> collect = projectList.stream().distinct().map(Project::getId).collect(Collectors.toList());
+        List<ProjectSeparate> projectSeparateList = projectSeparateMapper.selectList(new QueryWrapper<ProjectSeparate>().in("id", collect));
+        List<String> nameList = projectSeparateList.stream().distinct().map(ProjectSeparate::getProjectCategorySub).collect(Collectors.toList());
+        httpRespMsg.data=nameList;
+        return httpRespMsg;
+    }
 }
 

+ 31 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCustomController.java

@@ -3,10 +3,12 @@ package com.management.platform.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.SubUserCustom;
 import com.management.platform.entity.User;
 import com.management.platform.entity.UserCustom;
 import com.management.platform.mapper.UserCustomMapper;
 import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.SubUserCustomService;
 import com.management.platform.service.UserCustomService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +17,10 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,6 +38,8 @@ public class UserCustomController {
     @Resource
     private UserCustomMapper userCustomMapper;
     @Resource
+    private SubUserCustomService subUserCustomService;
+    @Resource
     private UserMapper userMapper;
     @RequestMapping("/addOrMod")
     public HttpRespMsg addOrMod(String json, HttpServletRequest request){
@@ -92,5 +99,29 @@ public class UserCustomController {
         userCustomService.removeById(id);
         return new HttpRespMsg();
     }
+    @RequestMapping("/getUserCustomTitle")
+    public HttpRespMsg getUserCustomTitle(HttpServletRequest request){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<UserCustom> userCustomList = userCustomMapper.selectList(new QueryWrapper<UserCustom>().eq("company_id", user.getCompanyId()).eq("type", 0));
+        List<UserCustom> customList = userCustomMapper.selectList(new QueryWrapper<UserCustom>().eq("company_id", user.getCompanyId()));
+        List<SubUserCustom> subUserCustomList =subUserCustomService.list();
+        List<String> fieldList=new ArrayList<>();
+        for (int i = 0; i < customList.size(); i++) {
+            UserCustom userCustom = customList.get(i);
+            if(userCustom.getType()==0){
+                fieldList.add("plate"+(i+1));
+            }
+        }
+        for (UserCustom userCustom : userCustomList) {
+            List<SubUserCustom> collect = subUserCustomList.stream().filter(sub -> sub.getUserCustomId().equals(userCustom.getId())).collect(Collectors.toList());
+            userCustom.setSubUserCustomList(collect);
+        }
+        HashMap map=new HashMap();
+        map.put("result",userCustomList);
+        map.put("field",fieldList);
+        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
 }
 

+ 43 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyReport.java

@@ -0,0 +1,43 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyReport extends Model<CompanyReport> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 报表id
+     */
+    @TableField("report_form_id")
+    private Integer reportFormId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -288,9 +288,17 @@ public class Project extends Model<Project> {
     @TableField("current_stage_name")
     private String currentStageName;
 
+    /**
+     * 项目产值
+     */
+    @TableField("output_value")
+    private Double outputValue;
+
     @TableField(exist = false)
     ProjectSeparate projectSeparate;
 
+    @TableField(exist = false)
+    List<ProjectBasecost> projectBasecostList;
 
     @Override
     protected Serializable pkVal() {

+ 19 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java

@@ -1,16 +1,9 @@
 package com.management.platform.entity;
 
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.management.platform.entity.vo.WorktimeItem;
 import lombok.Data;
@@ -18,13 +11,20 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-07-24
+ * @since 2022-08-04
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -66,13 +66,13 @@ public class Report extends Model<Report> {
     private Double workingTime;
 
     /**
-     * 报告内容
+     * 报告内容; 根据multi_worktime的取值,形式有差别
      */
     @TableField("content")
     private String content;
 
     /**
-     * 审查状态 0-未审核 1-已通过 2-未通过
+     * 审查状态 0-未审核 1-已通过 2-未通过, -1-导入待审核, 3草稿
      */
     @TableField("state")
     private Integer state;
@@ -250,6 +250,7 @@ public class Report extends Model<Report> {
      */
     @TableField("is_final_audit")
     private Integer isFinalAudit;
+
     /**
      * 审核流程:审核过程中,项目的审核状态; 0-待审核,1-审核通过
      */
@@ -338,6 +339,12 @@ public class Report extends Model<Report> {
     @TableField("group_audit_state")
     private Integer groupAuditState;
 
+    /**
+     * 评价
+     */
+    @TableField("evaluate")
+    private String evaluate;
+
 
     @Override
     protected Serializable pkVal() {

+ 11 - 19
src/main/java/com/management/platform/entity/ExpenseType.java

@@ -1,26 +1,27 @@
 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-07-28
+ * @since 2022-08-03
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-public class ExpenseType extends Model<ExpenseType> {
+public class ReportForm extends Model<ReportForm> {
 
     private static final long serialVersionUID=1L;
 
@@ -28,22 +29,13 @@ public class ExpenseType extends Model<ExpenseType> {
     private Integer id;
 
     /**
-     * 主类型: 0-一般费用,1-差旅费用,2-外包费用
-     */
-    @TableField("main_type")
-    private Integer mainType;
-
-    /**
-     * 费用类型名称
+     * 报表名称
      */
-    @TableField("type_name")
-    private String typeName;
+    @TableField("report_form_name")
+    private String reportFormName;
 
-    /**
-     * 公司id
-     */
-    @TableField("company_id")
-    private Integer companyId;
+    @TableField(exist = false)
+    private Integer owned;
 
 
     @Override

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java

@@ -16,7 +16,7 @@ import java.io.Serializable;
  * </p>
  *
  * @author Seyason
- * @since 2022-06-30
+ * @since 2022-08-04
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -136,6 +136,12 @@ public class SysFunction extends Model<SysFunction> {
     @TableField("remarks")
     private String remarks;
 
+    /**
+     * 权限所属报表
+     */
+    @TableField("report_form_id")
+    private Integer reportFormId;
+
     @TableField(exist = false)
     private boolean checked;
     @Override

+ 9 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java

@@ -1,20 +1,20 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * <p>
  * 
@@ -203,6 +203,8 @@ public class Task extends Model<Task> {
     private List<MilestoneTaskRef> refTaskList;
     @TableField(exist = false)
     private Integer finishRefTaskCount;
+    @TableField(exist = false)
+    private String projectCategorySub;
 
     @Override
     protected Serializable pkVal() {

+ 19 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import java.util.List;
  * </p>
  *
  * @author Seyason
- * @since 2022-08-03
+ * @since 2022-08-05
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -296,6 +296,24 @@ public class TimeType extends Model<TimeType> {
     @TableField("project_level_state")
     private Integer projectLevelState;
 
+    /**
+     * 0-未开启 1-开启
+     */
+    @TableField("need_evaluate")
+    private Integer needEvaluate;
+
+    /**
+     * 0-未开启 1-开启
+     */
+    @TableField("output_value_status")
+    private Integer outputValueStatus;
+
+    /**
+     * 0-未开启 1-开启
+     */
+    @TableField("user_custom_static")
+    private Integer userCustomStatic;
+
     @TableField(exist = false)
     private List<User> userList;
 

+ 8 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserCustom.java

@@ -1,14 +1,16 @@
 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;
+import java.util.List;
+
 /**
  * <p>
  * 
@@ -39,6 +41,9 @@ public class UserCustom extends Model<UserCustom> {
     @TableField("type")
     private Integer type;
 
+    @TableField(exist = false)
+    private List<SubUserCustom> subUserCustomList;
+
 
     @Override
     protected Serializable pkVal() {

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CompanyReportMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.CompanyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface CompanyReportMapper extends BaseMapper<CompanyReport> {
+
+}

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

@@ -119,4 +119,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> selectWithGroupProject(Integer companyId, String startDate, String endDate,  Integer startIndex, Integer endIndex, Integer projectId, List<Integer> inchagerIds, Integer groupId);
 
     long selectCountWithGroupProject(Integer companyId, String startDate, String endDate, Integer startIndex, Integer endIndex, Integer projectId, List<Integer> inchagerIds, Integer groupId);
+
+    List<Map<String, Object>> getCostByUserCustom(String startDate, String endDate, Integer companyId, List<Integer> deptIds, Integer customId, String subCustomName,String fieldName);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportFormMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ReportForm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface ReportFormMapper extends BaseMapper<ReportForm> {
+
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -35,7 +35,7 @@ public interface TaskMapper extends BaseMapper<Task> {
 
     Integer getProjectTaskCount(Integer companyId, Integer projectId,Integer taskType,List<Integer> inchagerIds);
 
-    List getTaskWithProjectName(@Param(Constants.WRAPPER) Wrapper wrapper, Integer pageStart, Integer pageSize);
+    List getTaskWithProjectName(@Param(Constants.WRAPPER) Wrapper wrapper, Integer pageStart, Integer pageSize,Integer companyId,String groupName);
 
     List recentSimpleList(Integer projectId, String userId);
 

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyReportService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.CompanyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface CompanyReportService extends IService<CompanyReport> {
+
+}

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

@@ -43,7 +43,7 @@ public interface ProjectService extends IService<Project> {
                             String providerIds,
                             String providerNames,
                             HttpServletRequest request,
-                            ProjectSeparate projectSeparate,boolean onlyChangeParticipate);
+                            ProjectSeparate projectSeparate,Double outputValue,boolean onlyChangeParticipate);
 
     HttpRespMsg deleteProject(Integer id, Integer force);
 
@@ -170,4 +170,12 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getTimeCostByGroupProject(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId, HttpServletRequest request);
 
     HttpRespMsg exportGroupWithProjectTimeCost(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId, HttpServletRequest request);
+
+    HttpRespMsg getProjectBaseCost(Integer projectId, HttpServletRequest request, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportProjectBaseCost(HttpServletRequest request);
+
+    HttpRespMsg getTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId,HttpServletRequest request,String fieldName);
+
+    HttpRespMsg exportTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId, HttpServletRequest request, String fieldName);
 }

+ 3 - 3
src/main/java/com/management/platform/service/ExpenseTypeService.java

@@ -1,6 +1,6 @@
 package com.management.platform.service;
 
-import com.management.platform.entity.ExpenseType;
+import com.management.platform.entity.ReportForm;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-28
+ * @since 2022-08-03
  */
-public interface ExpenseTypeService extends IService<ExpenseType> {
+public interface ReportFormService extends IService<ReportForm> {
 
 }

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

@@ -41,13 +41,13 @@ public interface ReportService extends IService<Report> {
                                String userId,
                                HttpServletRequest request);
 
-    HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request);
+    HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request,String evaluate);
 
     HttpRespMsg denyReport(String date, String reportIds, String reason, Integer isDepartment, HttpServletRequest request);
 
     HttpRespMsg getMembList(String date, HttpServletRequest request);
 
-    HttpRespMsg batchApproveReport(String ids, Integer isDepartment, HttpServletRequest request);
+    HttpRespMsg batchApproveReport(String ids, Integer isDepartment, HttpServletRequest request,String evaluate);
     HttpRespMsg batchDenyReport(String ids, Integer isDepartment, String reason, HttpServletRequest request);
 
     HttpRespMsg cancelReport(String userId, String reportIds, HttpServletRequest request);

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyReportServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.CompanyReport;
+import com.management.platform.mapper.CompanyReportMapper;
+import com.management.platform.service.CompanyReportService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Service
+public class CompanyReportServiceImpl extends ServiceImpl<CompanyReportMapper, CompanyReport> implements CompanyReportService {
+
+}

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

@@ -60,6 +60,8 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
     private SysRoleModuleService sysRoleModuleService;
     @Resource
     private CompanyMapper companyMapper;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
 
 
     //根据角色id获取角色列表
@@ -253,13 +255,19 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         List<SysFunction> functionList = sysFunctionMapper.selectList(functionQueryWrapper);
         //勾选上角色选中的功能
         List<SysRoleFunction> roleFunctionList = sysRoleFunctionMapper.selectList(new QueryWrapper<SysRoleFunction>().eq("role_id", role));
+        //获取当前公司开启了得报表
+        List<CompanyReport> companyReportList = companyReportMapper.selectList(new QueryWrapper<CompanyReport>().eq("company_id", companyId));
+        List<Integer> formIds = companyReportList.stream().map(CompanyReport::getReportFormId).collect(Collectors.toList());
         List<Integer> funIds = roleFunctionList.stream().map(fun -> fun.getFunctionId()).collect(Collectors.toList());
-        functionList.stream().forEach(fun -> {
+        List<SysFunction> resultFunList=new ArrayList<>();
+        for (SysFunction fun : functionList) {
             if (funIds.contains(fun.getId())) {
                 fun.setChecked(true);
             }
-        });
-
+            if(fun.getReportFormId()==null||(fun.getReportFormId()!=null&&formIds.contains(fun.getReportFormId()))){
+                resultFunList.add(fun);
+            }
+        }
         for (SysModule module : moduleList) {
             if (module.getParentId() == null) {
                 menuList.add(module);
@@ -268,7 +276,7 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
                 module.setChecked(true);
             }
             //赋予菜单对应功能列表
-            module.setFunctionList(functionList.stream().filter(item -> item.getModuleId().equals(module.getId())).collect(Collectors.toList()));
+            module.setFunctionList(resultFunList.stream().filter(item -> item.getModuleId().equals(module.getId())).collect(Collectors.toList()));
         }
         for (SysModule mainMenu : menuList) {
             List<SysModule> list = moduleList.stream().filter(mod -> mainMenu.getId().equals(mod.getParentId())).collect(Collectors.toList());

+ 278 - 44
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -148,6 +148,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     ProjectSeparateMapper projectSeparateMapper;
     @Resource
     ProjectStageMapper projectStageMapper;
+    @Resource
+    UserCustomMapper userCustomMapper;
+    @Resource
+    SubUserCustomMapper subUserCustomMapper;
+
 
     @Resource
     private HttpServletResponse response;
@@ -258,7 +263,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             TimeType timeType = timeTypeMapper.selectById(companyId);
             List<Integer> projectIds = projectList.stream().distinct().map(pl -> pl.getId()).collect(Collectors.toList());
             List<ProjectSeparate> projectSeparateList=new ArrayList<>();
-            if(companyId==936){
+            if(companyId==936||companyId==428){
                 if (projectIds.size() > 0) {
                     projectSeparateList = projectSeparateMapper.selectList(new QueryWrapper<ProjectSeparate>().in("id", projectIds));
                 }
@@ -319,7 +324,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     projectVO.setProviderInfoList(mapList);
                 }
-                if(companyId==936){
+                if(companyId==936||companyId==428){
                         Optional<ProjectSeparate> first1 = projectSeparateList.stream().filter(ps -> ps.getId().equals(project.getId())).findFirst();
                         if(first1.isPresent()){
                             projectVO.setProjectSeparate(first1.get());
@@ -365,11 +370,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                    String providerIds,
                                    String providerNames,
                                    HttpServletRequest request,
-                                   ProjectSeparate projectSeparate,boolean onlyChangeParticipate) {
+                                   ProjectSeparate projectSeparate,Double outputValue,boolean onlyChangeParticipate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
-
+        TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         boolean isNew = true;
         //检查负责人要在参与人中
         if (inchargerId != null) {
@@ -423,6 +428,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             .setTaskGpIncharge(taskGpIncharge)
                             .setProviderIds(providerIds)
                             .setProviderNames(providerNames);
+                    if(timeType.getOutputValueStatus()==1){
+                        project.setOutputValue(outputValue==null?0.00:outputValue);
+                    }
                     ProjectMain projectMain = projectMainMapper.selectById(projectMainId);
                     if(projectMain!=null){
                         project.setCategory(projectMain.getCategoryId());
@@ -471,7 +479,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                     }
                     id = project.getId();
-                    if(companyId==936){
+                    if(companyId==936||companyId==428){
                         projectSeparate.setId(id);
                         projectSeparateMapper.insert(projectSeparate);
                     }
@@ -502,6 +510,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         .setTaskGpIncharge(taskGpIncharge)
                         .setProviderIds(providerIds)
                         .setProviderNames(providerNames);
+                if(timeType.getOutputValueStatus()==1){
+                    p.setOutputValue(outputValue==null?0.00:outputValue);
+                }
                 if (category != null) {
                     ProjectCategory projectCategory = projectCategoryMapper.selectById(category);
                     if (projectCategory != null) {
@@ -509,7 +520,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         p.setCategoryName(projectCategory.getName());
                     }
                 }
-                if(companyId==936){
+                if(companyId==936||companyId==428){
                     //编辑之前的项目是否存在子表数据
                     ProjectSeparate separate = projectSeparateMapper.selectById(id);
                     projectSeparate.setId(id);
@@ -1179,7 +1190,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<ProjectAuditor> auditorList = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().eq("project_id", id));
         project.setAuditorList(auditorList);
         project.setAuditUserIds(auditorList.stream().map(ProjectAuditor::getAuditorId).collect(Collectors.toList()));
-        if(project.getCompanyId()==936){
+        if(project.getCompanyId()==936||project.getCompanyId()==428){
             ProjectSeparate projectSeparate = projectSeparateMapper.selectById(id);
             project.setProjectSeparate(projectSeparate);
         }
@@ -2772,20 +2783,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     int i=0;
                     int k=0;
                     int c=0;
+                    int d=0;
                     if(timeType.getMainProjectState()==1){
                         mainNameCell = row.getCell(0);
-                        codeCell = row.getCell(1);
+                        if(company.getId()==428){
+                            projectCategorySubCell=row.getCell(1);
+                            d++;
+                        }
+                        codeCell = row.getCell(1+d);
                         if(company.getId()==936){
-                            contractCell=row.getCell(2);
+                            contractCell=row.getCell(2+d);
                             c++;
                         }
-                        isPublicCell = row.getCell(2+c);
-                        nameCell = row.getCell(3+c);
-                        participatorCell = row.getCell(4+c);
-                        inchargerCell = row.getCell(5+c);
-                        levelCell = row.getCell(6+c);
+                        isPublicCell = row.getCell(2+c+d);
+                        nameCell = row.getCell(3+c+d);
+                        participatorCell = row.getCell(4+c+d);
+                        inchargerCell = row.getCell(5+c+d);
+                        levelCell = row.getCell(6+c+d);
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(7+c);
+                            customerCell=row.getCell(7+c+d);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -2795,17 +2811,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(7+i+k+c);
-                        endDateCell = row.getCell(8+i+k+c);
-                        amountCell = row.getCell(9+i+k+c);
+                        startDateCell = row.getCell(7+i+k+c+d);
+                        endDateCell = row.getCell(8+i+k+c+d);
+                        amountCell = row.getCell(9+i+k+c+d);
                         if(company.getId()==936){
-                            warrantyEndDateCell=row.getCell(10+i+k+c);
-                            warrantyStartDateCell=row.getCell(11+i+k+c);
-                            projectCategorySubCell=row.getCell(12+i+k+c);
-                            regionCell=row.getCell(13+i+k+c);
-                            buCell=row.getCell(14+i+k+c);
-                            stateCell=row.getCell(15+i+k+c);
-                            stageCell=row.getCell(16+i+k+c);
+                            warrantyEndDateCell=row.getCell(10+i+k+c+d);
+                            warrantyStartDateCell=row.getCell(11+i+k+c+d);
+                            projectCategorySubCell=row.getCell(12+i+k+c+d);
+                            regionCell=row.getCell(13+i+k+c+d);
+                            buCell=row.getCell(14+i+k+c+d);
+                            stateCell=row.getCell(15+i+k+c+d);
+                            stageCell=row.getCell(16+i+k+c+d);
                         }
                     }else {
                         codeCell = row.getCell(0);
@@ -2813,15 +2829,19 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             contractCell=row.getCell(1);
                             c++;
                         }
-                        categoryCell = row.getCell(1+c);
-                        isPublicCell = row.getCell(2+c);
-                        nameCell = row.getCell(3+c);
-                        subNameCell = row.getCell(4+c);
-                        participatorCell = row.getCell(5+c);
-                        inchargerCell = row.getCell(6+c);
-                        levelCell = row.getCell(7+c);
+                        if(company.getId()==428){
+                            projectCategorySubCell=row.getCell(1+c);
+                            d++;
+                        }
+                        categoryCell = row.getCell(1+c+d);
+                        isPublicCell = row.getCell(2+c+d);
+                        nameCell = row.getCell(3+c+d);
+                        subNameCell = row.getCell(4+c+d);
+                        participatorCell = row.getCell(5+c+d);
+                        inchargerCell = row.getCell(6+c+d);
+                        levelCell = row.getCell(7+c+d);
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(8+c);
+                            customerCell=row.getCell(8+c+d);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -2831,17 +2851,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(8+i+k+c);
-                        endDateCell = row.getCell(9+i+k+c);
-                        amountCell = row.getCell(10+i+k+c);
+                        startDateCell = row.getCell(8+i+k+c+d);
+                        endDateCell = row.getCell(9+i+k+c+d);
+                        amountCell = row.getCell(10+i+k+c+d);
                         if(company.getId()==936){
-                            warrantyEndDateCell=row.getCell(11+i+k+c);
-                            warrantyStartDateCell=row.getCell(12+i+k+c);
-                            projectCategorySubCell=row.getCell(13+i+k+c);
-                            regionCell=row.getCell(14+i+k+c);
-                            buCell=row.getCell(15+i+k+c);
-                            stateCell=row.getCell(16+i+k+c);
-                            stageCell=row.getCell(17+i+k+c);
+                            warrantyEndDateCell=row.getCell(11+i+k+c+d);
+                            warrantyStartDateCell=row.getCell(12+i+k+c+d);
+                            projectCategorySubCell=row.getCell(13+i+k+c+d);
+                            regionCell=row.getCell(14+i+k+c+d);
+                            buCell=row.getCell(15+i+k+c+d);
+                            stateCell=row.getCell(16+i+k+c+d);
+                            stageCell=row.getCell(17+i+k+c+d);
                         }
                     }
                     if (codeCell != null)codeCell.setCellType(CellType.STRING);
@@ -3094,7 +3114,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if(company.getId()==936){
                         ProjectSeparate projectSeparate=new ProjectSeparate();
                         projectSeparate.setId(id);
-                        if (warrantyStartDateCell !=null && !StringUtils.isEmpty(warrantyStartDateCell.getDateCellValue())) {
+                        if (warrantyStartDateCell !=null&& warrantyStartDateCell.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(warrantyStartDateCell.getDateCellValue())) {
                             projectSeparate.setWarrantyStartDate(LocalDate.parse(sdf.format(warrantyStartDateCell.getDateCellValue()), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                         }
                         if (warrantyEndDateCell !=null && warrantyEndDateCell.getCellTypeEnum() == CellType.NUMERIC && !StringUtils.isEmpty(warrantyEndDateCell.getDateCellValue())) {
@@ -3115,6 +3135,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                         projectSeparateMapper.insert(projectSeparate);
                     }
+                    if(company.getId()==428){
+                        ProjectSeparate projectSeparate=new ProjectSeparate();
+                        projectSeparate.setId(id);
+                        if (projectCategorySubCell != null && !StringUtils.isEmpty(projectCategorySubCell.getStringCellValue())) {
+                            projectSeparate.setProjectCategorySub(projectCategorySubCell.getStringCellValue());
+                        }
+                        projectSeparateMapper.insert(projectSeparate);
+                    }
                     importCount++;
                     //参与人
                     if(inchargerCell!=null){
@@ -3290,6 +3318,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             headList.add("项目状态");
             headList.add("项目阶段");
         }
+        if(company.getId()==428){
+            headList.add("项目分组");
+        }
         List<List<String>> allList = new ArrayList<List<String>>();
         allList.add(headList);
         String[] levelArray = new String[]{"正常","紧急","重要","重要且紧急","低风险","中风险","高风险"};
@@ -3390,6 +3421,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 rowData.add(projectVO.getCurrentStageName()==null?"":projectVO.getCurrentStageName());
             }
+            if(company.getId()==428){
+                Optional<ProjectSeparate> first = projectSeparateList.stream().filter(ps -> ps.getId().equals(projectVO.getId())).findFirst();
+                if(first.isPresent()){
+                    ProjectSeparate projectSeparate = first.get();
+                    rowData.add(projectSeparate.getProjectCategorySub()==null?"":projectSeparate.getProjectCategorySub());
+                }else {
+                    rowData.add("");
+                }
+            }
             allList.add(rowData);
         }
 
@@ -5024,6 +5064,200 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg getProjectBaseCost(Integer projectId, HttpServletRequest request, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("Token"));
+        Integer companyId = user.getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目成本基线表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目成本基线表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl ->(pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        QueryWrapper<Project> queryWrapper=new QueryWrapper<>();
+        if(projectId!=null){
+            queryWrapper.eq("id",projectId);
+        }
+        if(inchagerIds!=null){
+            queryWrapper.in("id",inchagerIds);
+        }
+        IPage<Project> projectIPage;
+        if(pageIndex!=null && pageSize!=null){
+            projectIPage= projectMapper.selectPage(new Page<>(pageIndex, pageSize),
+                    queryWrapper.eq("company_id",user.getCompanyId()));
+        }else {
+            projectIPage= projectMapper.selectPage(new Page<>(-1,-1),
+                    queryWrapper.eq("company_id",user.getCompanyId()));
+        }
+        List<Project> targetProjectList = projectIPage.getRecords();
+        List<Integer> collect = targetProjectList.stream().distinct().map(Project::getId).collect(Collectors.toList());
+        List<ProjectBasecost> projectBasecostList=new ArrayList<>();
+        if(collect!=null&&collect.size()>0){
+            projectBasecostList = projectBasecostMapper.selectList(new QueryWrapper<ProjectBasecost>().in("project_id", collect));
+        }
+        List<ProjectBasecostSetting> settingList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", user.getCompanyId()));
+        List<String> titleList = settingList.stream().distinct().map(ProjectBasecostSetting::getName).collect(Collectors.toList());
+        for (Project project : targetProjectList) {
+            List<ProjectBasecost> basecostList = projectBasecostList.stream().filter(pb -> pb.getProjectId().equals(project.getId())).collect(Collectors.toList());
+            if(basecostList!=null){
+                project.setProjectBasecostList(basecostList);
+            }
+        }
+        HashMap map=new HashMap();
+        map.put("total",projectIPage.getTotal());
+        map.put("title",titleList);
+        map.put("result",targetProjectList);
+        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg exportProjectBaseCost(HttpServletRequest request) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        HttpRespMsg projectBaseCost = getProjectBaseCost(null, request, null, null);
+        HashMap map= (HashMap) projectBaseCost.data;
+        List<Project> resultProjectList= (List<Project>) map.get("result");
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList= (List<String>) map.get("title");
+        List<String> firstTitle=new ArrayList<>();
+        firstTitle.add("项目编号");
+        firstTitle.add("项目名称");
+        firstTitle.addAll(titleList);
+        dataList.add(firstTitle);
+        for (Project project : resultProjectList) {
+            List<String> item=new ArrayList<>();
+            item.add(project.getProjectCode());
+            item.add(project.getProjectName());
+            for (String s : titleList) {
+                List<ProjectBasecost> projectBasecostList = project.getProjectBasecostList();
+                if(projectBasecostList!=null){
+                    Optional<ProjectBasecost> first = projectBasecostList.stream().filter(pb -> pb.getBaseName().equals(s)).findFirst();
+                    if(first.isPresent()){
+                        ProjectBasecost projectBasecost = first.get();
+                        item.add(String.valueOf(projectBasecost.getBaseAmount()));
+                    }else item.add("");
+                }
+            }
+            dataList.add(item);
+        }
+        //生成excel文件导出
+        String fileName = "项目成本基线表_"+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
+        httpRespMsg.data = resp;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg getTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId,HttpServletRequest request,String fieldName) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        User targetUser = userMapper.selectById(request.getHeader("Token"));
+        Integer companyId =targetUser.getCompanyId();
+        Map<String, Object> resultMap = new HashMap<>();
+        //当前用户管理部门
+        List<Integer> deptIds=null;
+        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",companyId));
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id", companyId));
+        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看全公司");
+        List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
+        List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
+        List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
+        //判断查看权限
+        if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
+            if(functionDpartList.size()>0){
+                if(functionTimeList.size()>0||functionCostList.size()>0){
+                    List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+                    List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                    collect.addAll(otherCollect);
+                    for (Integer integer : collect) {
+                        List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                        deptIds.addAll(branchDepartment);
+                    }
+                }
+            }
+        }
+        List<Map<String, Object>> list= projectMapper.getCostByUserCustom(startDate, endDate,companyId,deptIds,customId,subCustomName,fieldName);
+        BigDecimal totalCostMoney = new BigDecimal(0);
+        Map<String, Object> finalMap = new HashMap<>();
+        for (Map<String, Object> map : list) {
+            totalCostMoney=totalCostMoney.add((BigDecimal) map.get("costMoney"));
+        }
+        finalMap.put("totalCostMoney", totalCostMoney);
+        finalMap.put("list", list);
+        if(functionCostList.size()==0){
+            finalMap.put("totalCostMoney",null);
+            list.forEach(li->{
+                List<Map<String,Object>> mapList= (List<Map<String, Object>>) li.get("name");
+                mapList.forEach(ml->{
+                    ml.put("costMoney",null);
+                });
+            });
+        }
+        if(functionTimeList.size()==0){
+            list.forEach(li->{
+                List<Map<String,Object>> mapList= (List<Map<String, Object>>) li.get("name");
+                mapList.forEach(ml->{
+                    ml.put("cost",null);
+                });
+            });
+        }
+        httpRespMsg.data = finalMap;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg exportTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId, HttpServletRequest request, String fieldName) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        User targetUser = userMapper.selectById(request.getHeader("token"));
+        List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
+        List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
+        HttpRespMsg msg = getTimeCostByUserCustom(startDate, endDate, null, customId, request, fieldName);
+        HashMap map= (HashMap) msg.data;
+        UserCustom userCustom = userCustomMapper.selectById(customId);
+        List<Map<String,Object>> resultList= (List<Map<String, Object>>) map.get("list");
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add(userCustom.getName());
+        if(functionTimeList.size()>0){
+            titleList.add("工时");
+        }
+        if(functionCostList.size()>0){
+            titleList.add("成本");
+        }
+        dataList.add(titleList);
+        for (Map<String, Object> stringObjectMap : resultList) {
+            List<String> item=new ArrayList<>();
+            item.add(String.valueOf(stringObjectMap.get("name")));
+            if(functionTimeList.size()>0){
+                item.add(String.valueOf(stringObjectMap.get("cost"))==null?"":String.valueOf(stringObjectMap.get("cost")));
+            }
+            if(functionCostList.size()>0){
+                item.add(String.valueOf(stringObjectMap.get("costMoney"))==null?"":String.valueOf(stringObjectMap.get("costMoney")));
+            }
+            dataList.add(item);
+        }
+        //生成excel文件导出
+        String fileName = userCustom.getName()+"工时成本统计_"+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
+        httpRespMsg.data = resp;
+
+        return httpRespMsg;
+    }
+
 
     private List<Department> getSubDepts(Department dp, List<Department> list) {
         List<Department> collect = list.stream().filter(l -> dp.getDepartmentId().equals(l.getSuperiorId())).collect(Collectors.toList());

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

@@ -152,14 +152,14 @@ public class ProviderInfoServiceImpl extends ServiceImpl<ProviderInfoMapper, Pro
     public HttpRespMsg exportData(HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("token"));
         List<List<String>> dataList=new ArrayList<>();
-        String[] titleString=new String[]{"供应商名称","供应商编码","分类","联系人","联系人电话","邮箱","地址","备注"};
+        String[] titleString=new String[]{"供应商编号","供应商名称","分类","联系人","联系电话","邮箱","地址","备注"};
         List<String> titleList = Arrays.asList(titleString);
         dataList.add(titleList);
         List<ProviderInfo> providerInfoList = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()));
         for (ProviderInfo providerInfo : providerInfoList) {
             List<String> item=new ArrayList<>();
-            item.add(providerInfo.getProviderName()==null?"":providerInfo.getProviderName());
             item.add(providerInfo.getProviderCode()==null?"":providerInfo.getProviderCode());
+            item.add(providerInfo.getProviderName()==null?"":providerInfo.getProviderName());
             item.add(providerInfo.getProviderCategoryName()==null?"":providerInfo.getProviderCategoryName());
             item.add(providerInfo.getContactName()==null?"":providerInfo.getContactName());
             item.add(providerInfo.getContactPhone()==null?"":providerInfo.getContactPhone());

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportFormServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ReportForm;
+import com.management.platform.mapper.ReportFormMapper;
+import com.management.platform.service.ReportFormService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Service
+public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportForm> implements ReportFormService {
+
+}

+ 44 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1128,11 +1128,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
     //审核通过某天某人的某报告
     @Override
-    public HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
+    public HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request,String evaluate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("Token");
         User user = userMapper.selectById(token);
         Company company = companyMapper.selectById(user.getCompanyId());
+        TimeType timeType = timeTypeMapper.selectById(company.getId());
         final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         if (company.getPackageEngineering() == 1) {
             //检查是否有专业进度待审核
@@ -1148,6 +1149,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (report.getDepartmentAuditState() == 0){
                         report = new Report();
                         report.setDepartmentAuditState(1);
+                        if(timeType.getNeedEvaluate()==1){
+                            report.setEvaluate(evaluate);
+                        }
                         reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                     }
                 }
@@ -1173,11 +1177,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         if (count == 0) {
                             Report report = new Report();
                             report.setDepartmentAuditState(0);
+                            if(timeType.getNeedEvaluate()==1){
+                                report.setEvaluate(evaluate);
+                            }
                             reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                         }
                     }
                 } else {
                     Report report = reportMapper.selectById(ids.get(0));
+                    if(timeType.getNeedEvaluate()==1){
+                        report.setEvaluate(evaluate);
+                    }
                     //部门待审核,部门审核通过
                     if (report.getDepartmentAuditState() == 0) {
                         report = new Report();
@@ -1206,7 +1216,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
         } else {
             //先按照大的审核模式进行分类
-            TimeType timeType = timeTypeMapper.selectById(company.getId());
             Report oneReport = reportMapper.selectById(ids.get(0));
             int oldState = oneReport.getState();
             String creatorId = oneReport.getCreatorId();
@@ -1223,6 +1232,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     return httpRespMsg;
                 }
                 for (Report r : reportList) {
+                    if(timeType.getNeedEvaluate()==1){
+                        r.setEvaluate(evaluate);
+                    }
                     if (r.getGroupAuditState() == 0) {
                         r.setGroupAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());
@@ -1245,7 +1257,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 .orderByAsc("seq"));
                 if (settings.size() == 0) {
                     //直接进行项目经理审核
-                    reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
+                    reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()).setEvaluate(timeType.getNeedEvaluate()==1?evaluate:null),
                             new QueryWrapper<Report>().in("id", ids));
                 } else {
                     //按流程走
@@ -1256,17 +1268,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         //最终审核了,审核通过
                         if (item.getIsDeptAudit() == 1) {
                             //如果最终是部门审核,直接通过
-                            reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
+                            reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()).setEvaluate(timeType.getNeedEvaluate()==1?evaluate:null),
                                     new QueryWrapper<Report>().in("id", ids));
                         } else {
                             //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
-                            reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
+                            reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()).setEvaluate(timeType.getNeedEvaluate()==1?evaluate:null),
                                     new QueryWrapper<Report>().in("id", ids));
                         }
                     } else {
                         if (item.getIsDeptAudit() == 1) {
                             //当前是部门审核,获取审核部门id
                             Report upR = new Report();
+                            if(timeType.getNeedEvaluate()==1){
+                                upR.setEvaluate(evaluate);
+                            }
                             Integer auditDeptid = item.getAuditDeptid();
                             for (int m=0;m<settings.size(); m++) {
                                 if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
@@ -1287,7 +1302,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                     new QueryWrapper<Report>().in("id", ids));
                         } else {
                             //当前的先审核通过
-                            reportMapper.update(new Report().setProjectAuditState(1),
+                            reportMapper.update(new Report().setProjectAuditState(1).setEvaluate(timeType.getNeedEvaluate()==1?evaluate:null),
                                     new QueryWrapper<Report>().in("id", ids));
                             //项目审核的情况下,需要判断是否该员工当天所有项目是否都是项目经理审核通过了
                             List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
@@ -1298,6 +1313,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             if (pendingNum == 0) {
                                 //没有其他待审核的项目了,流程往下走
                                 Report upR = new Report();
+                                if(timeType.getNeedEvaluate()==1){
+                                    upR.setEvaluate(evaluate);
+                                }
                                 for (int m=0;m<settings.size(); m++) {
                                     if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
                                         AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
@@ -1771,10 +1789,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg batchApproveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
+    public HttpRespMsg batchApproveReport(String reportIds, Integer isDepartment, HttpServletRequest request,String evaluate) {
         String token = request.getHeader("Token");
         User user = userMapper.selectById(token);
         Company company = companyMapper.selectById(user.getCompanyId());
+        TimeType timeType = timeTypeMapper.selectById(company.getId());
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         if (company.getPackageEngineering() == 1) {
@@ -1790,6 +1809,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (report.getDepartmentAuditState() == 0) {
                         report = new Report();
                         report.setDepartmentAuditState(1);
+                        if(timeType.getNeedEvaluate()==1){
+                            report.setEvaluate(evaluate);
+                        }
                         reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                     }
                 }
@@ -1814,6 +1836,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         if (count == 0) {
                             Report report = new Report();
                             report.setDepartmentAuditState(0);
+                            if(timeType.getNeedEvaluate()==1){
+                                report.setEvaluate(evaluate);
+                            }
                             reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                         }
                     }
@@ -1823,6 +1848,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (report.getDepartmentAuditState() == 0) {
                         report = new Report();
                         report.setDepartmentAuditState(1);
+                        if(timeType.getNeedEvaluate()==1){
+                            report.setEvaluate(evaluate);
+                        }
                         reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                     } else {
                         //直接进行项目经理审核
@@ -1835,10 +1863,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
 
         } else {
-            TimeType timeType = timeTypeMapper.selectById(company.getId());
             LocalDateTime now = LocalDateTime.now();
-
             Report oneReport = reportMapper.selectById(ids.get(0));
+            if(timeType.getNeedEvaluate()==1){
+                oneReport.setEvaluate(evaluate);
+            }
             int oldState = oneReport.getState();
             List<User> allUsers = null;
             List<Report> allReports = null;
@@ -1856,6 +1885,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     return httpRespMsg;
                 }
                 for (Report r : reportList) {
+                    if(timeType.getNeedEvaluate()==1){
+                        r.setEvaluate(evaluate);
+                    }
                     if (r.getGroupAuditState() == 0) {
                         r.setGroupAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());
@@ -1892,6 +1924,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         User auditTargetUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst().get();
                         List<AuditWorkflowTimeSetting> deptSettings = settings.stream().filter(s->s.getDeptId().equals(auditTargetUser.getDepartmentId())).collect(Collectors.toList());
                         Report curReport = new Report().setId(rid);
+                        if(timeType.getNeedEvaluate()==1){
+                            curReport.setEvaluate(evaluate);
+                        }
                         if (deptSettings.size() == 0) {
                             //直接进行项目经理审核
                             curReport.setState(1).setProjectAuditTime(now);

+ 33 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -679,6 +679,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
             User creator = userMapper.selectById(request.getHeader("Token"));
+            if (name != null) name = name.trim();
+            if (phone != null) phone = phone.trim();
             //处理时薪
             BigDecimal costValue = cost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(cost);
             BigDecimal monthCostValue = (monthCost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(monthCost));
@@ -686,7 +688,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 //新增
                 //电话号码列 检测重名
                 if (!StringUtils.isEmpty(phone) && userMapper.selectList(new QueryWrapper<User>().eq("phone", phone)).size() > 0) {
-                    httpRespMsg.setError("电话号码重复");
+                    httpRespMsg.setError("该电话号码已存在");
                 } else {
                     //只计算活跃的用户
                     if (userMapper.selectCount(new QueryWrapper<User>()
@@ -741,6 +743,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 }
             } else {
                 //修改
+                if (!StringUtils.isEmpty(phone) && userMapper.selectList(new QueryWrapper<User>().eq("phone", phone).ne("id", targetId)).size() > 0) {
+                    httpRespMsg.setError("该电话号码已存在");
+                    return httpRespMsg;
+                }
+
                 User oldUser = userMapper.selectById(targetId);
                 boolean salaryChange = false;
 
@@ -976,6 +983,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 if (StringUtils.isEmpty(name)) {
                     continue;
                 }
+                name = name.trim();
                 Integer deptId;
                 String deptCascade;
                 if (StringUtils.isEmpty(dept)) {
@@ -1021,6 +1029,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     phoneList.add(phone);
                 }
 
+
                 userList.add(new User()
                         .setId(id.toString())
                         .setName(name)
@@ -1296,6 +1305,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             headCell.setCellValue("时薪");
             headCell.setCellStyle(headStyle);
             headCell = headRow.createCell(7);
+            headCell.setCellValue("证书");
+            headCell.setCellStyle(headStyle);
+            headCell = headRow.createCell(8);
             headCell.setCellValue("状态");
             headCell.setCellStyle(headStyle);
 
@@ -1311,6 +1323,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             }
             List<User> data = userMapper.selectList(queryWrapper);
             List<Department> deptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+            List<String> collect = data.stream().distinct().map(da -> da.getId()).collect(Collectors.toList());
+            List<UserCert> userCertList=new ArrayList<>();
+            if(collect!=null&&!StringUtils.isEmpty(data)){
+                userCertList = userCertMapper.selectList(new QueryWrapper<UserCert>().in("user_id", collect));
+            }
             for (User item : data) {
                 if (item.getDepartmentId() != 0) {
                     Optional<Department> first = deptList.stream().filter(d -> d.getDepartmentId().equals(item.getDepartmentId())).findFirst();
@@ -1327,8 +1344,21 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 row.createCell(4).setCellValue(item.getDepartmentName());
                 row.createCell(5).setCellValue(item.getMonthCost()==null? 0 : item.getMonthCost().intValue());
                 row.createCell(6).setCellValue(item.getCost() == null?0.0 : item.getCost().doubleValue());
-                row.createCell(7).setCellValue(item.getIsActive()==1?"正常":"已停用");
-
+                List<UserCert> certList = userCertList.stream().distinct().filter(uc -> uc.getUserId().equals(item.getId())).collect(Collectors.toList());
+                if(certList.size()>0){
+                    String s="";
+                    for (int i = 0; i < certList.size(); i++) {
+                        if(i<certList.size()-1){
+                            s+=certList.get(i).getCertName()+" "+certList.get(i).getCertDate()+",";
+                        }else {
+                            s+=certList.get(i).getCertName()+" "+certList.get(i).getCertDate();
+                        }
+                    }
+                    row.createCell(7).setCellValue(s);
+                }else {
+                    row.createCell(7).setCellValue("");
+                }
+                row.createCell(8).setCellValue(item.getIsActive()==1?"正常":"已停用");
                 rowNum++;
             }
             //生成Excel文件

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

@@ -519,6 +519,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                     if ("00:00".equals(leaveStart)) {
                                         leaveStart = baseMorningStart;
                                     }
+                                    System.out.println("leaveStart=="+leaveStart+", leaveEnd="+leaveEnd);
                                 } else {
                                     if (showLog)System.out.println("跨天请假@@@@");
                                     if (showLog)System.out.println("当天=="+localDate+", sDate=" + sDate+", 比较="+(localDate.isEqual(sDate)));
@@ -609,7 +610,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                 if (leaveTime == null) {
                                     leaveTime = 0.0;
                                 }
-                                ct.setAskLeaveTime(leaveTime + DateTimeUtil.getHoursFromSeconds(spItem.getInteger("duration")));
+                                ct.setAskLeaveTime(leaveTime + convertDayTimeToHours(DateTimeUtil.getHoursFromSeconds(spItem.getInteger("duration"))));
                                 break;
                             case 2://补卡
                             case 3://出差
@@ -619,7 +620,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                 if (outdoorTime == null) {
                                     outdoorTime = 0.0;
                                 }
-                                double otTime = DateTimeUtil.getHoursFromSeconds(spItem.getInteger("duration"));
+                                double otTime = convertDayTimeToHours(DateTimeUtil.getHoursFromSeconds(spItem.getInteger("duration")));
                                 if (otTime > 8.0) {
                                     otTime = 8.0;
                                 }
@@ -667,6 +668,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                     if (ct.getAskLeaveTime() != null && ct.getAskLeaveTime() == 24.0) {
                         ct.setAskLeaveTime(8.0);//24小时为一天,修正为8小时
                     }
+                    if (ct.getAskLeaveTime() > 8.0) {
+                        ct.setAskLeaveTime(8.0);//超过8小时都以8小时计算
+                    }
+                    if (showLog)System.out.println("校正后请假时长="+ct.getAskLeaveTime());
                     //如果有出差的,但是没有打卡,则用出差的时间作为timeDelta
                     if (timeDelta < 8.0 && ct.getOutdoorTime() > 0) {
                         timeDelta += ct.getOutdoorTime();
@@ -675,6 +680,13 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                     if (workHours < 0) {
                         workHours = 0;
                     }
+                    if (ct.getAskLeaveTime() >= 8.0) {
+                        //全天请假了,就不算打卡工作时长了。
+                        workHours = 0;
+                        //重新校正开始时间和结束时间
+                        ct.setStartTime(baseMorningStart);
+                        ct.setEndTime(baseAfternoonEnd);
+                    }
                     if (showLog)System.out.println("工作时长=="+workHours);
                     ct.setWorkHours(DateTimeUtil.getHoursFromDouble(workHours));
 //                        if (regular_work_sec < standard_work_sec) {
@@ -711,4 +723,14 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             }
         }
     }
+
+    private double convertDayTimeToHours(double d) {
+        if (d == 12) {
+            return 4.0;
+        } else if (d == 24) {
+            return 8.0;
+        } else {
+            return d;
+        }
+    }
 }

+ 4 - 6
src/main/resources/mapper/ExpenseTypeMapper.xml

@@ -1,18 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.management.platform.mapper.ExpenseTypeMapper">
+<mapper namespace="com.management.platform.mapper.CompanyReportMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.management.platform.entity.ExpenseType">
-        <id column="id" property="id" />
-        <result column="main_type" property="mainType" />
-        <result column="type_name" property="typeName" />
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.CompanyReport">
         <result column="company_id" property="companyId" />
+        <result column="report_form_id" property="reportFormId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, main_type, type_name, company_id
+        company_id, report_form_id
     </sql>
 
 </mapper>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 27 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml


+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportFormMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ReportFormMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportForm">
+        <id column="id" property="id" />
+        <result column="report_form_name" property="reportFormName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, report_form_name
+    </sql>
+
+</mapper>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 7 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml


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

@@ -23,6 +23,7 @@
         <result column="sync_corpwx_time" property="syncCorpwxTime" />
         <result column="finance_audit" property="financeAudit" />
         <result column="remarks" property="remarks" />
+        <result column="report_form_id" property="reportFormId" />
     </resultMap>
     <resultMap id="BaseResultMap1" type="com.management.platform.entity.vo.SysRichFunction">
         <id column="id" property="id" />
@@ -35,7 +36,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, remarks
+        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, report_form_id
     </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

+ 14 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -87,6 +87,7 @@
         <result column="project_name" property="projectName" />
         <result column="start_date" property="startDate" />
         <result column="stages_name" property="stagesName" />
+        <result column="project_category_sub" property="projectCategorySub" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -197,9 +198,21 @@
     </select>
 
     <select id="getTaskWithProjectName" resultMap="RichResultMap">
-        SELECT task.*, project.`project_name`, stages.stages_name FROM task LEFT JOIN project ON project.id = task.`project_id`
+        SELECT task.*, project.`project_name`, stages.stages_name
+        <if test="companyId==428">
+            ,ps.project_category_sub
+        </if>
+        FROM task LEFT JOIN project ON project.id = task.`project_id`
         left join stages on stages.id = task.stages_id
+        <if test="companyId==428">
+            left join project_separate ps on ps.id=task.project_id
+        </if>
         ${ew.customSqlSegment}
+        <if test="companyId==428">
+            <if test="groupName!=null and groupName!=''">
+                and ps.project_category_sub=#{groupName}
+            </if>
+        </if>
         ORDER BY task.indate desc
         <if test="pageStart != null and pageSize != null">
             limit #{pageStart}, #{pageSize}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 73 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyReportController.java

@@ -0,0 +1,73 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.CompanyReport;
+import com.management.platform.entity.ReportForm;
+import com.management.platform.service.CompanyReportService;
+import com.management.platform.service.ReportFormService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@RestController
+@RequestMapping("/company-report")
+public class CompanyReportController {
+    @Resource
+    private CompanyReportService companyReportService;
+    @Resource
+    private ReportFormService reportFormService;
+
+
+    @RequestMapping("/list")
+    public HttpRespMsg list(Integer companyId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<CompanyReport> companyReportList = companyReportService.list(new QueryWrapper<CompanyReport>().eq("company_id", companyId));
+        List<ReportForm> reportFormList = reportFormService.list();
+        for (ReportForm reportForm : reportFormList) {
+            boolean b = companyReportList.stream().anyMatch(cr -> cr.getReportFormId().equals(reportForm.getId()));
+            if(b){
+                reportForm.setOwned(1);
+            }
+        }
+        httpRespMsg.data=reportFormList;
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(Integer companyId,String formIds){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        companyReportService.remove(new QueryWrapper<CompanyReport>().eq("company_id", companyId));
+        List<CompanyReport> updateList=new ArrayList<>();
+        if(formIds!=null&&!StringUtils.isEmpty(formIds)){
+            String[] split = formIds.split(",");
+            List<String> list = Arrays.asList(split);
+            for (String s : list) {
+                CompanyReport companyReport=new CompanyReport();
+                companyReport.setCompanyId(companyId);
+                companyReport.setReportFormId(Integer.parseInt(s));
+                updateList.add(companyReport);
+            }
+            if(!companyReportService.saveBatch(updateList)){
+                httpRespMsg.setError("更新失败");
+            }
+        }
+        return httpRespMsg;
+    }
+
+}
+

+ 44 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/CompanyReport.java

@@ -0,0 +1,44 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+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-08-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyReport extends Model<CompanyReport> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 报表id
+     */
+    @TableField("report_form_id")
+    private Integer reportFormId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 11 - 19
fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/entity/UserPermission.java

@@ -1,9 +1,8 @@
-package com.hssx.user.entity;
+package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -13,37 +12,30 @@ import java.io.Serializable;
 
 /**
  * <p>
- *
+ * 
  * </p>
  *
- * @author Reiskuchen
- * @since 2019-11-04
+ * @author Seyason
+ * @since 2022-08-03
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@TableName("user_permission")
-public class UserPermission extends Model<UserPermission> {
+public class ReportForm extends Model<ReportForm> {
 
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID=1L;
 
-    /**
-     * 角色权限关联表主键
-     */
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**
-     * 用户id
+     * 报表名称
      */
-    @TableField("user_id")
-    private Integer userId;
+    @TableField("report_form_name")
+    private String reportFormName;
 
-    /**
-     * 权限id
-     */
-    @TableField("permission_id")
-    private Integer permissionId;
+    @TableField(exist = false)
+    private Integer owned;
 
 
     @Override

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/CompanyReportMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.CompanyReport;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface CompanyReportMapper extends BaseMapper<CompanyReport> {
+
+}

+ 3 - 3
src/main/java/com/management/platform/mapper/ExpenseTypeMapper.java

@@ -1,7 +1,7 @@
 package com.management.platform.mapper;
 
-import com.management.platform.entity.ExpenseType;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.ReportForm;
 
 /**
  * <p>
@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-28
+ * @since 2022-08-03
  */
-public interface ExpenseTypeMapper extends BaseMapper<ExpenseType> {
+public interface ReportFormMapper extends BaseMapper<ReportForm> {
 
 }

+ 17 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanyReportService.java

@@ -0,0 +1,17 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.CompanyReport;
+
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface CompanyReportService extends IService<CompanyReport> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/ReportFormService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.ReportForm;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+public interface ReportFormService extends IService<ReportForm> {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanyReportServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.CompanyReport;
+import com.management.platform.mapper.CompanyReportMapper;
+import com.management.platform.service.CompanyReportService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Service
+public class CompanyReportServiceImpl extends ServiceImpl<CompanyReportMapper, CompanyReport> implements CompanyReportService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/ReportFormServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.ReportForm;
+import com.management.platform.mapper.ReportFormMapper;
+import com.management.platform.service.ReportFormService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Service
+public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportForm> implements ReportFormService {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanyReportMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.CompanyReportMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.CompanyReport">
+        <result column="company_id" property="companyId" />
+        <result column="report_form_id" property="reportFormId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, report_form_id
+    </sql>
+
+</mapper>

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/ReportFormMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ReportFormMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportForm">
+        <id column="id" property="id" />
+        <result column="report_form_name" property="reportFormName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, report_form_name
+    </sql>
+
+</mapper>

+ 121 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -35,14 +35,20 @@
                 <el-radio-button label="部门"></el-radio-button>
                 <el-radio-button label="人员" v-if="permissions.countPersonnel"></el-radio-button>
                 <el-radio-button :label="namess" v-if="jichu.customDegreeActive == 1"></el-radio-button>
+                <el-radio-button v-for="item in theCustomList" :key="item.id" :label="item.name"></el-radio-button>
             </el-radio-group>
+<!-- 
+            <el-select v-model="customName" filterable placeholder="请选择" style="margin-top: 10px;width: 350px" v-if="theCustomListFlg" @change="jieliu()">
+                <el-option v-for="item in customList" :key="item.id" :label="item.name" :value="item.name"></el-option>
+            </el-select> -->
 
             <el-select v-model="personnelValue" filterable clearable placeholder="请选择人员" style="margin-top: 10px;width: 350px" v-if="radio == '人员'" @change="personnel()">
                 <el-option v-for="item in hasReportUserList" :key="item.id" :label="item.name" :value="item.name"></el-option>
             </el-select>
         </el-col>
         <el-col :span="4">
-            <el-button @click="showExportDialog">报表导出</el-button>
+            <el-button @click="exportProjectData" v-if="theCustomListFlg">报表导出</el-button>
+            <el-button @click="showExportDialog" v-else>报表导出</el-button>
         </el-col>
         </el-row>
         <!-- <div id="clearfix" :style="'width:'+widthHtval+'px;position: relative; height:'+containerHeight+'px;'">
@@ -160,7 +166,15 @@
                 jichu: [],
                 namess: '',
                 timers: null, // 点击的时间
-                zhishin: 0
+                zhishin: 0,
+                theCustomList: [], // 自定义数据来源
+                theCustomListFlg: false, // 判断是否点击的是自定义配置的数据来源
+                theCustomListId: '',
+                theCustomListPlantLIst: [],
+                theCustomListPlant: '',
+                customId: '',
+                customName: '',
+                customList: []
             };
         },
         methods: {
@@ -297,7 +311,16 @@
                         param.projectSum = this.exportParam.projectSum;
                     }
                 }
-                param.type = this.exportParam.type*1
+                if(!this.theCustomListFlg) {
+                    param.type = this.exportParam.type*1
+                } 
+                if(this.theCustomListFlg) {
+                    url = '/project/exportTimeCostByUserCustom'
+                    fileName = this.radio + '统计.xls'
+                    // param.subCustomName = this.customName
+                    param.customId = this.theCustomListId
+                    param.fieldName = this.theCustomListPlant
+                }
                 this.http.post(url, param,
                     res => {
                         this.listLoading = false;
@@ -703,17 +726,45 @@
             yanjiu() {
                 console.log('触发')
             },
-            getEchart(){
+            getEchart(e){
                 var that = this
-                // that.timers = setTimeout(()=>{
-                    // clearTimeout(that.timers)
-                    // console.log(that.timers)
-                    that.jieliu()
-                // },100);
-                // this.jieliu()
-                // if(this.radio == '项目分类'){
-                //     this.getCategoryList()
-                // }
+                // 更具选中的名字筛选出对应的自定义id
+                that.theCustomListFlg = false
+                let ints = null
+                for(var i in that.theCustomList) {
+                    if(that.radio == that.theCustomList[i].name) {
+                        that.theCustomListId = that.theCustomList[i].id
+                        that.theCustomListPlant = that.theCustomListPlantLIst[i]
+                        that.theCustomListFlg = true
+                        ints = i
+                    }
+                }
+                if(that.theCustomListFlg) {
+                    that.customList = that.theCustomList[ints].subUserCustomList
+                    that.customName = that.theCustomList[ints].subUserCustomList[0].name
+                    // that.getCusTom()
+                }
+                that.jieliu()
+            },
+            getCusTom() {
+                this.http.post('/sub-user-custom/list',{
+                    userCustomId: this.theCustomListId
+                },res => {
+                    if(res.code == 'ok'){
+                        this.customList = res.data
+                        this.customName = res.data[0].name
+                    }else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    })
+                })
             },
             getCategoryList(){
                 this.http.post('/project-category/list',{},
@@ -776,7 +827,13 @@
                     return;
                 } else if (this.radio == this.namess) {
                     url = '/project/getDegreeCost'
-                } 
+                } else if (this.theCustomListFlg) {
+                    url = '/project/getTimeCostByUserCustom'
+                    // param.subCustomName = this.customName
+                    param.customId = this.theCustomListId
+                    param.fieldName = this.theCustomListPlant
+                    console.log(param, '要传的数据')
+                }
                 this.http.post(url, param,
                 res => {
                     if (res.code == "ok") {
@@ -864,7 +921,31 @@
                                     yList.push(item);
                                 }
                             }
-                        } else {
+                        } 
+                        else if(this.theCustomListFlg) {
+                            list = res.data.list
+                            
+                            for(var i in list) {
+                                // console.log(list[i].name, list[i].costMoney, list[i].cost)
+                                xList.push(list[i].name);
+                                let item = {
+                                    "value": this.yAxisValue==0?list[i].costMoney:list[i].cost,
+                                    "id": list[i].id || i,
+                                }
+                                if(this.permissions.countCost){
+                                    // item.money = list[i].costMoney.toFixed(2)
+                                    item.money = list[i].costMoney ? list[i].costMoney.toFixed(2) : 0
+                                    totalMoneyCost += parseFloat(list[i].costMoney);
+                                }
+                                if(this.permissions.countHours){
+                                    item.cost = list[i].cost
+                                    totalHours += parseFloat(list[i].cost);
+                                }
+                                yList.push(item);
+                                
+                            }
+                        } 
+                        else {
                             list = res.data
                             
                             for(var i in list) {
@@ -1062,6 +1143,27 @@
                 event.preventDefault() // 阻止浏览器默认事件
                 this.domObj.scrollLeft = this.domObj.scrollLeft + step
             },
+            // 判断后端给的字段
+            // 获取自定义
+            getZDY() {
+                this.http.post('/user-custom/getUserCustomTitle',{},res => {
+                    if(res.code == 'ok'){
+                        console.log(res, '数据来源')
+                        this.theCustomList = res.data.result
+                        this.theCustomListPlantLIst = res.data.field
+                    }else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    })
+                })
+            }
         },
         created() {
             this.myChart = null
@@ -1111,6 +1213,10 @@
             this.getUsers()
             this.jutishez()
             this.scrollFunction()
+            // 判断
+            if(this.user.timeType.userCustomStatic) {
+                this.getZDY()
+            }
         },
         beforeDestroy () {
             var myChart = echarts.init(document.getElementById("container"));

+ 34 - 11
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -59,7 +59,7 @@
                             <el-col :span="18" ><span>{{project.projectSeparate.contractCode}}</span></el-col>
                         </el-row>
                         <el-row :gutter="10">
-                            <el-col :span="5" ><span class="gray_label">质保开始时间</span></el-col><el-col :span="7" >
+                            <el-col :span="5" ><span class="gray_label">质保开始时间:</span></el-col><el-col :span="7" >
                                 <span >{{project.projectSeparate.warrantyStartDate==null?'-':project.projectSeparate.warrantyStartDate}}</span></el-col>
                             <el-col :span="5" ><span class="gray_label">质保截止时间:</span></el-col><el-col :span="7" ><span>
                                 {{project.projectSeparate.warrantyEndDate == null?'-':project.projectSeparate.warrantyEndDate}}</span></el-col>
@@ -77,6 +77,12 @@
                             <el-col :span="18" ><span>{{project.projectSeparate.bu}}</span></el-col>
                         </el-row>
                     </div>
+                    <div v-if="user.companyId == '428'">
+                        <el-row :gutter="10" >
+                            <el-col :span="5" ><span class="gray_label">项目分组:</span></el-col><el-col :span="7" ></el-col>
+                            <el-col :span="18" ><div v-if="project.projectSeparate"><span>{{project.projectSeparate.projectCategorySub}}</span></div></el-col>
+                        </el-row>
+                    </div>
                 </div>
                 <div class="box" style="margin-top:10px;">
                     <div><label>相关人员</label>
@@ -354,6 +360,12 @@
                         <el-input v-model="addForm.projectSeparate.bu" placeholder="所属BU" clearable></el-input>
                     </el-form-item>
                 </div>
+
+                <div v-if="user.companyId == '428'">
+                    <el-form-item label="项目分组" >
+                        <el-input v-model="addForm.projectSeparate.projectCategorySub" placeholder="请输入项目分组" maxlength="50" show-word-limit clearable></el-input>
+                    </el-form-item>
+                </div>
                
             </el-form>
             <div slot="footer" class="dialog-footer">
@@ -1443,6 +1455,9 @@
                              formData.append("region", this.addForm.projectSeparate.region ? this.addForm.projectSeparate.region : '');
                              formData.append("bu", this.addForm.projectSeparate.bu ? this.addForm.projectSeparate.bu : '');
                         }
+                        if(this.user.companyId == '428') {
+                             formData.append("projectCategorySub", this.addForm.projectSeparate.projectCategorySub ? this.addForm.projectSeparate.projectCategorySub : '');
+                        }
                         // return
                         this.http.uploadFile(this.port.project.add,formData,
                         res => {
@@ -1663,20 +1678,28 @@
                     this.listLoading = false;
                     if (res.code == "ok") {
                         this.project = res.data;
-                        if(this.user.companyId == '936') {
+                        if(this.user.companyId == '936' || this.user.companyId == '428') {
                             if(res.data.projectSeparate) {
                                 this.project = res.data;
                             } else {
-                                var obj = {
-                                    contractCode: '',
-                                    warrantyStartDate: '',
-                                    warrantyEndDate: '',
-                                    projectCategorySub: '',
-                                    region: '',
-                                    bu: '',
+                                if(this.user.companyId == '936') {
+                                    var obj = {
+                                        contractCode: '',
+                                        warrantyStartDate: '',
+                                        warrantyEndDate: '',
+                                        projectCategorySub: '',
+                                        region: '',
+                                        bu: '',
+                                    }
+                                    res.data.projectSeparate = obj
+                                    this.project = res.data;
+                                } else {
+                                    var obj = {
+                                        projectCategorySub: '',
+                                    }
+                                    res.data.projectSeparate = obj
+                                    this.project = res.data;
                                 }
-                                res.data.projectSeparate = obj
-                                this.project = res.data;
                             }
                         } else {
                             this.project = res.data;

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

@@ -146,6 +146,25 @@
                      </div>
                 </template>
             </el-table-column>
+            <el-table-column prop="projectCategorySub" label="项目分组" width="200" v-if="user.companyId == '428'">
+                <template slot-scope="scope">
+                    <div v-if="scope.row.projectSeparate">
+                        <div v-if="scope.row.projectSeparate.projectCategorySub">
+                            <el-popover placement="top" width="400" trigger="hover" v-if="scope.row.projectSeparate.projectCategorySub.length > 15">
+                                <div>
+                                    <span>{{scope.row.projectSeparate.projectCategorySub}}</span>
+                                </div>
+                                <div slot="reference" class="kans">
+                                    <span>{{scope.row.projectSeparate.projectCategorySub}}...</span>
+                                </div>
+                            </el-popover>
+                            <div v-else>
+                                <span>{{scope.row.projectSeparate.projectCategorySub}}</span>
+                            </div>
+                        </div>
+                     </div>
+                </template>
+            </el-table-column>
             <el-table-column prop="categoryName" label="项目分类" sortable="custom" width="120"></el-table-column>
             <el-table-column prop="projectName" label="项目名称" width="250" sortable="custom">
                  <template slot-scope="scope">
@@ -421,7 +440,6 @@
                     <el-input id="outputValue" v-model="addForm.outputValue" style="width:32%;"
                     placeholder="" clearable  @keyup.native="restrictNumber('outputValue')">
                     </el-input><span style="margin-left:10px;">元</span>
-
                 </el-form-item>
 
                 <!-- 单个公司的固定字段 -->
@@ -455,6 +473,11 @@
                     <el-input v-model="addForm.bu" placeholder="所属BU" clearable></el-input>
                 </el-form-item>
                 </div>
+                <div v-if="user.companyId == '428'">
+                    <el-form-item label="项目分组" >
+                        <el-input v-model="addForm.projectCategorySub" maxlength="50" show-word-limit placeholder="请输入项目分组" clearable></el-input>
+                    </el-form-item>
+                </div>
                 <!-- 项目基线 -->
                 <div style="margin: 10px 0 30px 0;min-height:200px;" v-if="user.company.packageProject == 1">
                     <el-tabs v-model="activeName" @tab-click="handleClick">
@@ -2910,6 +2933,9 @@ a {
                         this.$set(this.addForm, 'region', '')
                         this.$set(this.addForm, 'bu', '')
                     }
+                    if(this.user.companyId == '428') {
+                        this.$set(this.addForm, 'projectCategorySub', '')
+                    }
                     this.projectBaseCostData = [];
                     this.auseList = [];
                     for (var m=0;m<this.baseCostItemList.length; m++) {
@@ -2976,6 +3002,14 @@ a {
                         }
                     }
 
+                    if(this.user.companyId == '428') {
+                        if(item.projectSeparate) {
+                            this.$set(this.addForm, 'projectCategorySub', item.projectSeparate.projectCategorySub)
+                        } else {
+                            this.$set(this.addForm, 'projectCategorySub', '')
+                        }
+                    }
+
                     // 判断是否有供应商
                     if(this.user.company.packageProvider) {
                         // this.addForm.supplierId = item.providerIds.split(',')
@@ -3248,6 +3282,9 @@ a {
                              formData.append("region", this.addForm.region ? this.addForm.region : '');
                              formData.append("bu", this.addForm.bu ? this.addForm.bu : '');
                         }
+                        if(this.user.companyId == '428') {
+                             formData.append("projectCategorySub", this.addForm.projectCategorySub ? this.addForm.projectCategorySub : '');
+                        }
 
                         // formData.append("associateDegreeNames", listName)
                         // console.log("addform",this.addForm);

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/provider/provider.vue

@@ -29,7 +29,7 @@
                         {{scope.$index+1+(page-1)*size}}
                     </template> -->
             </el-table-column>
-            <el-table-column prop="providerCode" label="供应商编"  width="200" sortable="custom"></el-table-column>
+            <el-table-column prop="providerCode" label="供应商编"  width="200" sortable="custom"></el-table-column>
             <el-table-column prop="providerName" label="供应商名称" width="200" sortable="custom"></el-table-column>
             <el-table-column prop="providerCategoryName" label="供应商分类" width="200" sortable="custom"></el-table-column>
             <el-table-column prop="contactName" label="联系人"  width="120"></el-table-column>

+ 43 - 10
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -3,11 +3,11 @@
         <!--工具条-->
         <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
             <el-form :inline="true">
-                <div style="margin-left: 20px;display: inline-block">
+                <!-- <div style="margin-left: 20px;display: inline-block">
                 <el-form-item label="任务列表">
                 </el-form-item>
-                </div>
-                <el-form-item >
+                </div> -->
+                <el-form-item label="任务列表">
                     <div style="margin-left: 8px">
                     <!-- <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true"> -->
                         <el-select v-model="searchField" style="width:120px;"  slot="prepend" placeholder="请选择">
@@ -18,15 +18,22 @@
                     <!-- </el-input> -->
                     </div>
                 </el-form-item>
+                <el-form-item label="项目分组" v-if="user.companyId == '428'">
+                    <div style="margin-left: 8px">
+                        <el-select v-model="groupName" style="width:200px;" placeholder="请选择" clearable @change="hiddens()">
+                            <el-option v-for="(item, index) in groupNameList" :key="index" :label="item" :value="item"></el-option>
+                        </el-select>
+                    </div>
+                </el-form-item>
                 <!-- <el-form-item style="float:right;">
                     <el-link type="primary" :underline="false" @click="handleAdd(-1,null)">新增任务</el-link>
                 </el-form-item> -->
 
-                <div style="margin-left: 40px;display: inline-block">
+                <!-- <div style="margin-left: 40px;display: inline-block">
                 <el-form-item label="类型">
                 </el-form-item>
-                </div>
-                <el-form-item >
+                </div> -->
+                <el-form-item label="类型">
                     <div style="margin-left: 8px">
                     <!-- <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true"> -->
                         <el-select v-model="typeField" style="width:120px;"  slot="prepend" placeholder="请选择" clearable @change="hiddens()">
@@ -102,7 +109,7 @@
                             </div>
                         </template>
                     </el-table-column>
-                    
+                    <el-table-column prop="projectCategorySub" label="项目分组" sortable width="300" v-if="user.companyId == '428'"></el-table-column>
                     <el-table-column prop="projectName" label="项目名称" sortable width="260" show-overflow-tooltip>
                         <template slot-scope="scope">
                             <el-link type="primary" :href="'#/projectInside/'+scope.row.projectId">{{scope.row.projectName}}</el-link>
@@ -790,7 +797,9 @@ import { error } from 'dingtalk-jsapi';
                 selectedGroup:{},
                 dateClass: true,
                 dateType: 0,
-                dateSelect: []
+                dateSelect: [],
+                groupName: '',
+                groupNameList: []
             };
         },
         methods: {
@@ -985,6 +994,9 @@ import { error } from 'dingtalk-jsapi';
                     parameter.startDate = this.dateSelect[0]
                     parameter.endDate = this.dateSelect[1]
                 }
+                if(this.user.companyId == '428') {
+                    parameter.groupName = this.groupName
+                }
                 this.http.post('/task/listByPage', parameter,
                 res => {
                     this.listLoading = false;
@@ -1663,11 +1675,29 @@ import { error } from 'dingtalk-jsapi';
                         });
                     });
                 });
-
-                
             },
             chan() {
                 // console.log(this.critic)
+            },
+            getSthForSb() {
+                this.http.post('/task/getGroupNameList ',{},
+                res => {
+                    if (res.code == "ok") {
+                        console.log('看看是', res.data)
+                        this.groupNameList = res.data
+                    } else {
+                        this.$message({
+                        message: res.msg,
+                        type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
             }
         },
         created() {
@@ -1681,6 +1711,9 @@ import { error } from 'dingtalk-jsapi';
         mounted() {
             this.getList();
             this.getUsers();
+            if(this.user.companyId == '428') {
+                this.getSthForSb()
+            }
         },
     };
 </script>

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -239,8 +239,8 @@
                         icon="plus" color="#ffffff" ><span style="color:#999;text-align:center;padding: 0 5px;"> 添加工时  </span></van-tag>
                     </div>
                     
-                    <div class="overtime" v-if="!user.timeType.lockWorktime || isWeekend">
-                        <div class="overTimeClas">
+                    <div class="overtime" v-if="((user.timeType.fillOvertime || isWeekend) || (isCorpWX&&canEdit))">
+                        <div class="overTimeClas" v-if="user.timeType.fillOvertime || isWeekend">
                             <van-checkbox :disabled="!item.canEdit" v-model="item.isOvertime" style="width: 4.3rem;">含加班</van-checkbox>
                             <van-field v-model="item.overtimeHours" type="number" :disabled="!item.canEdit || item.isOvertime==null||item.isOvertime==0 || !item.isOvertime"
                             placeholder="请输入加班时长" style="width: 5rem"></van-field>