Browse Source

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

ggooalice 2 years ago
parent
commit
74ee809afa

+ 56 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -98,6 +98,14 @@ public class WeiXinCorpController {
     @Resource
     private SysRoleMapper sysRoleMapper;
     @Resource
+    private ParticipationMapper participationMapper;
+    @Resource
+    private TaskGroupMapper taskGroupMapper;
+    @Resource
+    private TaskMapper taskMapper;
+    @Resource
+    private StagesMapper stagesMapper;
+    @Resource
     private SysModuleMapper sysModuleMapper;
     @Resource
     private SysFunctionMapper sysFunctionMapper;
@@ -1032,6 +1040,54 @@ public class WeiXinCorpController {
                                 .setCompanyId(company.getId())
                                 .setJobNumber(userId);
                         userMapper.insert(user);
+                        //todo: 生成初始测试项目及任务
+                        Project project=new Project();
+                        project.setCompanyId(company.getId());
+                        project.setInchargerId(user.getId());
+                        project.setInchargerName(user.getName());
+                        project.setCreatorId(user.getId());
+                        project.setCreatorName(user.getName());
+                        project.setCreateDate(LocalDate.now());
+                        project.setProjectCode("example1");
+                        project.setProjectName(MessageUtils.message("project.example"));
+                        projectMapper.insert(project);
+                        //todo:  设置初始项目参与人
+                        Participation participation=new Participation();
+                        participation.setProjectId(project.getId()).setUserId(user.getId());
+                        participationMapper.insert(participation);
+                        //todo: 生成初始项目相关日报审核人
+                        ProjectAuditor projectAuditor=new ProjectAuditor();
+                        projectAuditor.setAuditorId(user.getId());
+                        projectAuditor.setAuditorName(user.getName());
+                        projectAuditor.setProjectId(project.getId());
+                        projectAuditorMapper.insert(projectAuditor);
+                        //todo: 生成初始项目相关示例任务分组/任务阶段以及示例任务
+                        TaskGroup taskGroup = new TaskGroup();
+                        taskGroup.setProjectId(project.getId())
+                                .setInchargerId(user.getId())
+                                .setName(MessageUtils.message("entry.projectStage"));
+                        taskGroupMapper.insert(taskGroup);
+                        Stages stage = new Stages();
+                        stage.setGroupId(taskGroup.getId());
+                        stage.setSequence(1);
+                        stage.setProjectId(project.getId());
+                        stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
+                        stagesMapper.insert(stage);
+                        Task task=new Task();
+                        task.setCreateDate(LocalDate.now());
+                        task.setProjectId(project.getId());
+                        task.setCompanyId(company.getId());
+                        task.setCreaterId(user.getId());
+                        task.setCreaterName(user.getName());
+                        task.setCreatorColor(user.getColor());
+                        task.setExecutorId(user.getId());
+                        task.setExecutorColor(user.getColor());
+                        task.setExecutorName(user.getName());
+                        task.setStagesId(stage.getId());
+                        task.setGroupId(taskGroup.getId());
+                        task.setSeq(0);
+                        task.setName(MessageUtils.message("Stages.example"));
+                        taskMapper.insert(task);
                     }
 
                     int companyId = company.getId();

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -389,6 +389,11 @@ public class TimeType extends Model<TimeType> {
     @TableField("not_allowed_no_attendance")
     private Integer notAllowedNoAttendance;
 
+    /**
+     * 是否需要微信请假
+     */
+    @TableField("wx_leave")
+    private Integer wxLeave;
 
     @Override
     protected Serializable pkVal() {

+ 11 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LeaveSheetServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.xml.transform.Source;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -243,9 +244,9 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Integer companyId = userMapper.selectById(userId).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).select("id","corpwx_userid"));
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).select("id","name","corpwx_userid"));
         QueryWrapper<LeaveSheet> qw = new QueryWrapper<LeaveSheet>()
-                .select("owner_id", "tel", "leave_type", "start_date","end_date","time_days", "time_hours", "status", "remark")
+                .select("owner_id","tel","owner_name", "leave_type", "start_date","end_date","time_days", "time_hours", "status", "remark")
                 .eq("company_id", companyId)
                 .eq(status != null, "status", status)
                 .eq(leaveType != null, "leave_type", leaveType)
@@ -278,11 +279,16 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
         allList.add(headList);
         for (LeaveSheet leaveSheet : leaveSheets) {
             List<String> item = new ArrayList<>();
-            User us = userList.stream().filter(ul -> ul.getId().equals(leaveSheet.getOwnerId())).findFirst().get();
+            Boolean present = userList.stream().filter(ul -> ul.getId().equals(leaveSheet.getOwnerId())).findFirst().isPresent();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                item.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
+                if (present){
+                    User us = userList.stream().filter(ul -> ul.getId().equals(leaveSheet.getOwnerId())).findFirst().get();
+                    item.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
+                }else {
+                    item.add("");
+                }
             }else {
-                item.add(us.getName());
+                item.add(leaveSheet.getOwnerName()==null?"":leaveSheet.getOwnerName());
             }
             item.add(leaveSheet.getTel()==null?"":leaveSheet.getTel());
             String lts = "";

+ 141 - 22
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -3116,12 +3116,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (inchargerCell != null) {
                         String inchargerName = inchargerCell.getStringCellValue().trim();
                         if (!StringUtils.isEmpty(inchargerName)) {
-                            Optional<User> first = userList.stream().filter(u -> u.getName().equals(inchargerName)).findFirst();
+                            String s1;
+                            if(inchargerName.startsWith("/")){
+                                s1=inchargerName.substring(1,inchargerName.length());
+                            }else s1=inchargerName;
+                            String s2;
+                            if(s1.endsWith("/")){
+                                s2=s1.substring(0,s1.length()-1);
+                            }else s2=s1;
+                            String[] split = s2.split("/");
+                            Optional<User> first;
+                            Integer exception;
+                            if(split.length==1){
+                                first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                                exception=0;
+                            }else {
+                                first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                                exception=1;
+                            }
                             if (first.isPresent()) {
                                 project.setInchargerId(first.get().getId());
-                                project.setInchargerName(inchargerName);
+                                project.setInchargerName(first.get().getName());
                             } else {
-                                throw new Exception("项目负责人["+inchargerName+"]不存在");
+                                switch (exception){
+                                    case 0:throw new Exception("项目负责人姓名/工号为["+split[0]+"]的人员不存在");
+                                    case 1:throw new Exception("项目负责人["+split[0]+"]姓名与工号不匹配");
+                                }
                             }
                         }
                     }
@@ -3188,14 +3208,35 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Participation> participationList = new ArrayList<>();
                     if(inchargerCell!=null){
                         String value = inchargerCell.getStringCellValue();
+                        String s1;
+                        if(value.startsWith("/")){
+                            s1=value.substring(1,value.length());
+                        }else s1=value;
+                        String s2;
+                        if(s1.endsWith("/")){
+                            s2=s1.substring(0,s1.length()-1);
+                        }else s2=s1;
+                        String[] split = s2.split("/");
+                        Optional<User> first;
+                        Integer exception;
+                        if(split.length==1){
+                            first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                            exception=0;
+                        }else {
+                            first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                            exception=1;
+                        }
                         Participation p = new Participation();
-                        Optional<User> first = userList.stream().filter(u -> u.getName().equals(value)).findFirst();
                         if (first.isPresent()) {
                             p.setUserId(first.get().getId());
                             p.setProjectId(project.getId());
                             participationList.add(p);
                         } else {
-                            throw new Exception("参与人["+value+"]不存在");
+                            switch (exception){
+                                case 0:throw new Exception("参与人姓名/工号为["+split[0]+"]的人员不存在");
+
+                                case 1:throw new Exception("参与人["+split[0]+"]姓名工号不匹配");
+                            }
                         }
                     }
                     if (participatorCell != null) {
@@ -3204,7 +3245,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             String[] partSplit = part.split("\\,|\\,");
                             for (String str : partSplit) {
                                 Participation p = new Participation();
-                                Optional<User> first = userList.stream().filter(u -> u.getName().equals(str)).findFirst();
+                                String s1;
+                                if(str.startsWith("/")){
+                                    s1=str.substring(1,str.length());
+                                }else s1=str;
+                                String s2;
+                                if(s1.endsWith("/")){
+                                    s2=s1.substring(0,s1.length()-1);
+                                }else s2=s1;
+                                String[] split = str.split("/");
+                                Optional<User> first;
+                                Integer exception;
+                                if(split.length==1){
+                                    first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                                    exception=0;
+                                }else {
+                                    first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                                    exception=1;
+                                }
                                 if (first.isPresent()) {
                                     User partMemb = first.get();
 //                                    System.out.println("参与人:"+partMemb.getName());
@@ -3214,7 +3272,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                         participationList.add(p);
                                     }
                                 } else {
-                                    throw new Exception("参与人["+str+"]不存在");
+                                    switch (exception){
+                                        case 0:throw new Exception("参与人姓名/工号为["+split[0]+"]的人员不存在");
+
+                                        case 1:throw new Exception("参与人["+split[0]+"]姓名工号不匹配");
+                                    }
+
                                 }
                             }
                         }
@@ -3232,10 +3295,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 msg.data = MessageUtils.message("data.importSucRow",importCount);
                 if (existCodeList.size() > 0) {
                     String collect = existCodeList.stream().collect(Collectors.joining(","));
-                    if(key==1){
-                        //msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
-                        msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
-                    }else msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
+                    msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
                 }
                 OperationRecord operationRecord=new OperationRecord();
                 operationRecord.setCompanyId(user.getCompanyId());
@@ -3554,12 +3614,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (inchargerCell != null) {
                         String inchargerName = inchargerCell.getStringCellValue().trim();
                         if (!StringUtils.isEmpty(inchargerName)) {
-                            Optional<User> first = userList.stream().filter(u -> u.getName().equals(inchargerName)).findFirst();
+                            String s1;
+                            if(inchargerName.startsWith("/")){
+                                s1=inchargerName.substring(1,inchargerName.length());
+                            }else s1=inchargerName;
+                            String s2;
+                            if(s1.endsWith("/")){
+                                s2=s1.substring(0,s1.length()-1);
+                            }else s2=s1;
+                            String[] split = s2.split("/");
+                            Optional<User> first;
+                            Integer exception;
+                            if(split.length==1){
+                                first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                                exception=0;
+                            }else {
+                                first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                                exception=1;
+                            }
                             if (first.isPresent()) {
                                 project.setInchargerId(first.get().getId());
-                                project.setInchargerName(inchargerName);
+                                project.setInchargerName(first.get().getName());
                             } else {
-                                throw new Exception("项目负责人["+inchargerName+"]不存在");
+                                switch (exception){
+                                    case 0:throw new Exception("项目负责人姓名/工号为["+split[0]+"]的人员不存在");
+                                    case 1:throw new Exception("项目负责人["+split[0]+"]姓名与工号不匹配");
+                                }
                             }
                         }
                     }
@@ -4106,14 +4186,35 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Participation> participationList = new ArrayList<>();
                     if(inchargerCell!=null){
                         String value = inchargerCell.getStringCellValue();
+                        String s1;
+                        if(value.startsWith("/")){
+                            s1=value.substring(1,value.length());
+                        }else s1=value;
+                        String s2;
+                        if(s1.endsWith("/")){
+                            s2=s1.substring(0,s1.length()-1);
+                        }else s2=s1;
+                        String[] split = s2.split("/");
+                        Optional<User> first;
+                        Integer exception;
+                        if(split.length==1){
+                            first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                            exception=0;
+                        }else {
+                            first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                            exception=1;
+                        }
                         Participation p = new Participation();
-                        Optional<User> first = userList.stream().filter(u -> u.getName().equals(value)).findFirst();
                         if (first.isPresent()) {
                             p.setUserId(first.get().getId());
                             p.setProjectId(project.getId());
                             participationList.add(p);
                         } else {
-                            throw new Exception("参与人["+value+"]不存在");
+                            switch (exception){
+                                case 0:throw new Exception("参与人姓名/工号为["+split[0]+"]的人员不存在");
+
+                                case 1:throw new Exception("参与人["+split[0]+"]姓名工号不匹配");
+                            }
                         }
                     }
                     if (participatorCell != null) {
@@ -4121,8 +4222,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if (!StringUtils.isEmpty(part)) {
                             String[] partSplit = part.split("\\,|\\,");
                             for (String str : partSplit) {
+                                String s1;
+                                if(str.startsWith("/")){
+                                   s1=str.substring(1,str.length());
+                                }else s1=str;
+                                String s2;
+                                if(s1.endsWith("/")){
+                                    s2=s1.substring(0,s1.length()-1);
+                                }else s2=s1;
+                                String[] split = s2.split("/");
+                                Optional<User> first;
+                                Integer exception;
+                                if(split.length==1){
+                                    first= userList.stream().filter(u -> u.getName().equals(split[0])||(u.getJobNumber()!=null&&u.getJobNumber().equals(split[0]))).findFirst();
+                                    exception=0;
+                                }else {
+                                    first= userList.stream().filter(u -> u.getName().equals(split[0])&&(u.getJobNumber()!=null&&u.getJobNumber().equals(split[1]))).findFirst();
+                                    exception=1;
+                                }
                                 Participation p = new Participation();
-                                Optional<User> first = userList.stream().filter(u -> u.getName().equals(str)).findFirst();
                                 if (first.isPresent()) {
                                     User partMemb = first.get();
 //                                    System.out.println("参与人:"+partMemb.getName());
@@ -4132,7 +4250,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                         participationList.add(p);
                                     }
                                 } else {
-                                    throw new Exception("参与人["+str+"]不存在");
+                                    switch (exception){
+                                        case 0:throw new Exception("参与人姓名/工号为["+split[0]+"]的人员不存在");
+
+                                        case 1:throw new Exception("参与人["+split[0]+"]姓名工号不匹配");
+                                    }
                                 }
                             }
                         }
@@ -4150,10 +4272,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 msg.data = MessageUtils.message("data.importSucRow",importCount);
                 if (existCodeList.size() > 0) {
                     String collect = existCodeList.stream().collect(Collectors.joining(","));
-                    if(key==1){
-                        //msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
-                        msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
-                    }else msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
+                    msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
                 }
                 OperationRecord operationRecord=new OperationRecord();
                 operationRecord.setCompanyId(user.getCompanyId());

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

@@ -1653,7 +1653,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             ReportAuditLog log = new ReportAuditLog();
             log.setAuditChannel(channel);
             log.setCompanyId(company.getId());
-            log.setResult("通过");
+            //log.setResult("通过");
+            log.setResult(MessageUtils.message("profession.approved"));
             log.setUserId(user.getId());
             log.setUserName(user.getName());
             log.setProjectName(pNames);
@@ -1906,7 +1907,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         ReportAuditLog log = new ReportAuditLog();
         log.setAuditChannel(channel);//导入审核
         log.setCompanyId(company.getId());
-        log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
+        //log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
+        log.setResult(MessageUtils.message("stages.reject")+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
         log.setUserId(user.getId());
         log.setUserName(user.getName());
         log.setProjectName(pNames);
@@ -2555,7 +2557,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             ReportAuditLog log = new ReportAuditLog();
             log.setAuditChannel(channel);
             log.setCompanyId(company.getId());
-            log.setResult("批量通过");
+            //log.setResult("批量通过");
+            log.setResult(MessageUtils.message("profession.batchPass"));
             log.setUserId(user.getId());
             log.setUserName(user.getName());
             log.setProjectName(s);

+ 51 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -88,6 +88,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Resource
     private SysModuleMapper sysModuleMapper;
     @Resource
+    private StagesMapper stagesMapper;
+    @Resource
     private DepartmentService departmentService;
     @Resource
     private SysFunctionMapper sysFunctionMapper;
@@ -1021,10 +1023,59 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 expenseTypeList.add(item);
             }
             expenseTypeService.saveBatch(expenseTypeList);
+
             if (userMapper.insert(user) == 0) {
                 //httpRespMsg.setError("操作失败");
                 httpRespMsg.setError(MessageUtils.message("other.operationFail"));
             } else {
+                //todo: 生成初始测试项目及任务
+                Project project=new Project();
+                project.setCompanyId(company.getId());
+                project.setInchargerId(user.getId());
+                project.setInchargerName(user.getName());
+                project.setCreatorId(user.getId());
+                project.setCreatorName(user.getName());
+                project.setCreateDate(LocalDate.now());
+                project.setProjectCode("example1");
+                project.setProjectName(MessageUtils.message("project.example"));
+                projectMapper.insert(project);
+                //todo:  设置初始项目参与人
+                Participation participation=new Participation();
+                participation.setProjectId(project.getId()).setUserId(user.getId());
+                participationMapper.insert(participation);
+                //todo: 生成初始项目相关日报审核人
+                ProjectAuditor projectAuditor=new ProjectAuditor();
+                projectAuditor.setAuditorId(user.getId());
+                projectAuditor.setAuditorName(user.getName());
+                projectAuditor.setProjectId(project.getId());
+                projectAuditorMapper.insert(projectAuditor);
+                //todo: 生成初始项目相关示例任务分组/任务阶段以及示例任务
+                TaskGroup taskGroup = new TaskGroup();
+                taskGroup.setProjectId(project.getId())
+                        .setInchargerId(user.getId())
+                        .setName(MessageUtils.message("entry.projectStage"));
+                taskGroupMapper.insert(taskGroup);
+                Stages stage = new Stages();
+                stage.setGroupId(taskGroup.getId());
+                stage.setSequence(1);
+                stage.setProjectId(project.getId());
+                stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
+                stagesMapper.insert(stage);
+                Task task=new Task();
+                task.setCreateDate(LocalDate.now());
+                task.setProjectId(project.getId());
+                task.setCompanyId(company.getId());
+                task.setCreaterId(user.getId());
+                task.setCreaterName(user.getName());
+                task.setCreatorColor(user.getColor());
+                task.setExecutorId(user.getId());
+                task.setExecutorColor(user.getColor());
+                task.setExecutorName(user.getName());
+                task.setStagesId(stage.getId());
+                task.setGroupId(taskGroup.getId());
+                task.setSeq(0);
+                task.setName(MessageUtils.message("Stages.example"));
+                taskMapper.insert(task);
                 httpRespMsg.data = user;
             }
         }

+ 204 - 192
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -384,12 +384,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             JSONObject reqParam = new JSONObject();
             reqParam.put("auth_corpid", corpInfo.getCorpid());
             reqParam.put("permanent_code", corpInfo.getPermanentCode());
-
-            System.out.println("SuiteAccessToken为:"+getSuiteAccessToken());
-            System.out.println("CompanyId为:"+corpInfo.getCompanyId());
-            System.out.println("Corpid为:"+corpInfo.getCorpid());
-            System.out.println("PermanentCode"+corpInfo.getPermanentCode());
-
+//            System.out.println("SuiteAccessToken为:"+getSuiteAccessToken());
+//            System.out.println("CompanyId为:"+corpInfo.getCompanyId());
+//            System.out.println("Corpid为:"+corpInfo.getCorpid());
+//            System.out.println("PermanentCode为:"+corpInfo.getPermanentCode());
             HttpEntity<String> requestEntity = new HttpEntity<String>(reqParam.toJSONString(), headers);
             ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
                     HttpMethod.POST, requestEntity, String.class);
@@ -1134,13 +1132,201 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         }
     }
 
-    //查询某时间段的微信请假审批单号及详情
+    //查询微信请假单详情
+    private List<LeaveSheet> wxLeaveDetail(String startTime,String endTime,List<String> fail,String accessToken,WxCorpInfo wxCorpInfo){
+        String url = "https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovalinfo?access_token=ACCESS_TOKEN";
+        String detailUrl = "https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovaldetail?access_token=ACCESS_TOKEN";
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        ArrayList<LeaveSheet> result = new ArrayList<>();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        //批量获取审批单号
+        ArrayList<HashMap> list = new ArrayList<>();
+        HashMap<String, String> record_type = new HashMap<>();
+        list.add(record_type);
+        record_type.put("key", "record_type");
+        record_type.put("value", "1");
+        JSONObject requestMap = new JSONObject();
+        requestMap.put("starttime", startTime);
+        requestMap.put("endtime", endTime);
+        requestMap.put("cursor", 0);
+        requestMap.put("size", 100);
+        requestMap.put("filters", list);
+        HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+        ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+        if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+            String resp = ResponseEntity.getBody();
+            JSONObject json = JSONObject.parseObject(resp);
+            Object[] sp_no_lists = json.getJSONArray("sp_no_list").toArray();
+            //查询每个审批号审批详情
+            for (int i = 0; i < sp_no_lists.length; i++) {
+                detailUrl = detailUrl.replace("ACCESS_TOKEN", accessToken);
+                JSONObject detailMap = new JSONObject();
+                detailMap.put("sp_no", sp_no_lists[i]);
+                HttpEntity<JSONObject> detailEntity = new HttpEntity<>(detailMap, headers);
+                ResponseEntity<String> detailResponseEntity = restTemplate.postForEntity(detailUrl, detailEntity, String.class);
+                if(ResponseEntity.getStatusCode() == HttpStatus.OK){
+                    //封装请假单数据
+                    String detailResp = detailResponseEntity.getBody();
+                    JSONObject infoJson = JSONObject.parseObject(detailResp).getJSONObject("info");
+                    //审核状态
+                    Integer sp_status = infoJson.getInteger("sp_status");
+                    switch (sp_status){
+                        //审批中
+                        case 1:
+                            sp_status=1;
+                            break;
+                        //已通过
+                        case 2:
+                            sp_status=0;
+                            break;
+                        //已驳回
+                        case 3:
+                            sp_status=2;
+                            break;
+                        //已撤销
+                        case 4:
+                            sp_status=3;
+                            break;
+                        //通过后撤销
+                        case 5:
+                            sp_status=5;
+                            break;
+                        //通过后撤销
+                        case 6:
+                            sp_status=6;
+                            break;
+                        //7-已删除
+                        case 7:
+                            sp_status=7;
+                            break;
+                        default:
+                            sp_status=8;
+                    }
+                    //审批申请提交时间,Unix时间戳
+                    LocalDateTime applyTime = LocalDateTime.ofEpochSecond(Long.parseLong(infoJson.getString("apply_time")), 0, ZoneOffset.ofHours(8));
+                    //申请人姓名
+                    String applyer = infoJson.getString("applyer");
+                    String userId = JSONObject.parseObject(applyer).getString("userid");
+                    User user = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", userId));
+                    String name = user==null?userId:user.getName();
+                    //审批人姓名
+                    String approverUserId = infoJson.getJSONArray("sp_record").getJSONObject(0)
+                            .getJSONArray("details").getJSONObject(0)
+                            .getJSONObject("approver").getString("userid");
+                    User approverUser = new User();
+                    if (approverUserId!=null&&approverUserId!=""){
+                        approverUser = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", approverUserId));
+                    }
+                    String approverName = approverUser==null?approverUserId:approverUser.getName();
+                    JSONArray contents = infoJson.getJSONObject("apply_data")
+                            .getJSONArray("contents");
+                    //请假类型
+                    JSONObject vacation = contents.getJSONObject(0)
+                            .getJSONObject("value")
+                            .getJSONObject("vacation");
+                    String text = vacation.getJSONObject("selector")
+                            .getJSONArray("options").getJSONObject(0)
+                            .getJSONArray("value").getJSONObject(0)
+                            .getString("text");
+                    //请假事由
+                    String remark = contents.getJSONObject(1).getJSONObject("value").getString("text");
+                    Integer leave_type = 0;
+                    switch (text){
+                        case "事假":
+                            leave_type = 0;
+                            break;
+                        case "病假":
+                            leave_type = 1;
+                            break;
+                        case "年假":
+                            leave_type = 2;
+                            break;
+                        case "产假":
+                            leave_type = 3;
+                            break;
+                        case "婚假":
+                            leave_type = 4;
+                            break;
+                        case "丧假":
+                            leave_type = 5;
+                            break;
+                        case "调休假":
+                            leave_type = 6;
+                            break;
+                        case "陪产假":
+                            leave_type = 7;
+                            break;
+                        case "其他":
+                            leave_type = 8;
+                            break;
+                    }
+                    //请假开始时间
+                    JSONObject date_range = vacation.getJSONObject("attendance")
+                            .getJSONObject("date_range");
+                    String startDate =date_range.getString("new_begin");
+                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+                    long startDateTemp = Long.valueOf(startDate);
+                    String startDateString = sdf.format(new Date(startDateTemp * 1000L));
+                    DateTimeFormatter startfmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                    LocalDate sDate = LocalDate.parse(startDateString, startfmt);
+                    //请假结束时间
+                    String endDate = date_range.getString("new_end");
+                    long endDatetemp = Long.valueOf(endDate);
+                    String endDateString = sdf.format(new Date(endDatetemp * 1000L));
+                    DateTimeFormatter endfmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                    LocalDate eDate = LocalDate.parse(endDateString, endfmt);
+                    //请假时长
+                    String timeHours = date_range.getString("new_duration");
+                    String leaveType = date_range.getString("type");
+                    LeaveSheet leaveSheet = new LeaveSheet();
+                    leaveSheet.setProcinstId(sp_no_lists[i].toString());
+                    leaveSheet.setIsFinalAudit(1);
+                    leaveSheet.setIndate(applyTime);
+                    leaveSheet.setOwnerName(name);
+                    leaveSheet.setOwnerId(user==null?"":user.getId());
+                    leaveSheet.setCompanyId(user.getCompanyId());
+                    leaveSheet.setTel(user.getPhone()==null?"":user.getPhone());
+                    //审批人信息
+                    leaveSheet.setAuditorName(approverName);
+                    leaveSheet.setAuditorId(approverUser==null?"":approverUser.getId());
+                    //请假日期
+                    leaveSheet.setStartDate(sDate);
+                    leaveSheet.setEndDate(eDate);
+                    //请假类型
+                    leaveSheet.setLeaveType(leave_type);
+                    leaveSheet.setStatus(sp_status);
+                    //请假说明
+                    leaveSheet.setRemark(remark==null?"":remark);
+                    //请假时长和天数
+                    float time = Float.parseFloat(timeHours);
+                    if("hour".equals(leaveType)){
+                        leaveSheet.setTimeType(1);
+                        leaveSheet.setTimeHours(time/3600);
+                    }else{
+                        leaveSheet.setTimeType(0);
+                        leaveSheet.setTimeHours(time/3600);
+                        leaveSheet.setTimeDays(time/3600/24);
+                    }
+                    result.add(leaveSheet);
+                }
+            }
+        }else{
+            fail.add(wxCorpInfo.getCorpFullName());
+            System.err.println(wxCorpInfo.getCorpFullName()+"审批单查询失败");
+        }
+        return result;
+    }
+
+    //更新审核中的请假单以及查询某时间段的微信请假审批单号
     @Override
     public List<LeaveSheet> wxLeaveNumber(String startTime,String endTime,List<WxCorpInfo> wxCorpInfos,List<LeaveSheet> approvalLeave) throws Exception {
-        //存储更新失败的公司名称
-        List<String> fail = new ArrayList<>();
         String url = "https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovalinfo?access_token=ACCESS_TOKEN";
         String detailUrl = "https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovaldetail?access_token=ACCESS_TOKEN";
+        //存储更新失败的公司名称
+        List<String> fail = new ArrayList<>();
         HttpHeaders headers = new HttpHeaders();
         RestTemplate restTemplate = new RestTemplate();
         ArrayList<LeaveSheet> result = new ArrayList<>();
@@ -1150,10 +1336,11 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         for (WxCorpInfo wxCorpInfo : wxCorpInfos) {
             //更新Access_token
             String accessToken = getCorpAccessToken(wxCorpInfo);
-            if (StringUtils.isEmpty(accessToken)){
-                System.out.println(wxCorpInfo.getCorpName()+"accessToken获取失败");
-                continue;
-            }
+//            if (StringUtils.isEmpty(accessToken)){
+//                System.out.println(wxCorpInfo.getCorpName()+"accessToken获取失败");
+//                fail.add(wxCorpInfo.getCorpName());
+//                continue;
+//            }
             url = url.replace("ACCESS_TOKEN", accessToken);
             //查询并更新审核中的审批单
             System.out.println("+++++++++++++++++++开始查询并更新审核中的审批单+++++++++++++++++++");
@@ -1224,192 +1411,17 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 }
             }
             System.out.println("+++++++++++++++++++++开始同步昨天请假信息+++++++++++++++++++++");
-            //批量获取审批单号
-            ArrayList<HashMap> list = new ArrayList<>();
-            HashMap<String, String> record_type = new HashMap<>();
-            list.add(record_type);
-            record_type.put("key", "record_type");
-            record_type.put("value", "1");
-            JSONObject requestMap = new JSONObject();
-            requestMap.put("starttime", startTime);
-            requestMap.put("endtime", endTime);
-            requestMap.put("cursor", 0);
-            requestMap.put("size", 100);
-            requestMap.put("filters", list);
-            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
-            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
-            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = ResponseEntity.getBody();
-                JSONObject json = JSONObject.parseObject(resp);
-                Object[] sp_no_lists = json.getJSONArray("sp_no_list").toArray();
-                //查询每个审批号审批详情
-                for (int i = 0; i < sp_no_lists.length; i++) {
-                    detailUrl = detailUrl.replace("ACCESS_TOKEN", accessToken);
-                    JSONObject detailMap = new JSONObject();
-                    detailMap.put("sp_no", sp_no_lists[i]);
-                    HttpEntity<JSONObject> detailEntity = new HttpEntity<>(detailMap, headers);
-                    ResponseEntity<String> detailResponseEntity = restTemplate.postForEntity(detailUrl, detailEntity, String.class);
-                    if(ResponseEntity.getStatusCode() == HttpStatus.OK){
-                        //封装请假单数据
-                        String detailResp = detailResponseEntity.getBody();
-                        JSONObject infoJson = JSONObject.parseObject(detailResp).getJSONObject("info");
-                        //审核状态
-                        Integer sp_status = infoJson.getInteger("sp_status");
-                        switch (sp_status){
-                            //审批中
-                            case 1:
-                                sp_status=1;
-                                break;
-                            //已通过
-                            case 2:
-                                sp_status=0;
-                                break;
-                            //已驳回
-                            case 3:
-                                sp_status=2;
-                                break;
-                            //已撤销
-                            case 4:
-                                sp_status=3;
-                                break;
-                            //通过后撤销
-                            case 5:
-                                sp_status=5;
-                                break;
-                            //通过后撤销
-                            case 6:
-                                sp_status=6;
-                                break;
-                            //7-已删除
-                            case 7:
-                                sp_status=7;
-                                break;
-                            default:
-                                sp_status=8;
-                        }
-                        //审批申请提交时间,Unix时间戳
-                        LocalDateTime applyTime = LocalDateTime.ofEpochSecond(Long.parseLong(infoJson.getString("apply_time")), 0, ZoneOffset.ofHours(8));
-                        //申请人姓名
-                        String applyer = infoJson.getString("applyer");
-                        String userId = JSONObject.parseObject(applyer).getString("userid");
-                        User user = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", userId));
-                        String name = user==null?userId:user.getName();
-                        //审批人姓名
-                        String approverUserId = infoJson.getJSONArray("sp_record").getJSONObject(0)
-                                .getJSONArray("details").getJSONObject(0)
-                                .getJSONObject("approver").getString("userid");
-                        User approverUser = new User();
-                        if (approverUserId!=null&&approverUserId!=""){
-                            approverUser = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", approverUserId));
-                        }
-                        String approverName = approverUser==null?approverUserId:approverUser.getName();
-                        JSONArray contents = infoJson.getJSONObject("apply_data")
-                                .getJSONArray("contents");
-                        //请假类型
-                        JSONObject vacation = contents.getJSONObject(0)
-                                .getJSONObject("value")
-                                .getJSONObject("vacation");
-                        String text = vacation.getJSONObject("selector")
-                                .getJSONArray("options").getJSONObject(0)
-                                .getJSONArray("value").getJSONObject(0)
-                                .getString("text");
-                        //请假事由
-                        String remark = contents.getJSONObject(1).getJSONObject("value").getString("text");
-                        Integer leave_type = 0;
-                        switch (text){
-                            case "事假":
-                                leave_type = 0;
-                                break;
-                            case "病假":
-                                leave_type = 1;
-                                break;
-                            case "年假":
-                                leave_type = 2;
-                                break;
-                            case "产假":
-                                leave_type = 3;
-                                break;
-                            case "婚假":
-                                leave_type = 4;
-                                break;
-                            case "丧假":
-                                leave_type = 5;
-                                break;
-                            case "调休假":
-                                leave_type = 6;
-                                break;
-                            case "陪产假":
-                                leave_type = 7;
-                                break;
-                            case "其他":
-                                leave_type = 8;
-                                break;
-                        }
-                        //请假开始时间
-                        JSONObject date_range = vacation.getJSONObject("attendance")
-                                .getJSONObject("date_range");
-                        String startDate =date_range.getString("new_begin");
-                        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
-                        long startDateTemp = Long.valueOf(startDate);
-                        String startDateString = sdf.format(new Date(startDateTemp * 1000L));
-                        DateTimeFormatter startfmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                        LocalDate sDate = LocalDate.parse(startDateString, startfmt);
-                        //请假结束时间
-                        String endDate = date_range.getString("new_end");
-                        long endDatetemp = Long.valueOf(endDate);
-                        String endDateString = sdf.format(new Date(endDatetemp * 1000L));
-                        DateTimeFormatter endfmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                        LocalDate eDate = LocalDate.parse(endDateString, endfmt);
-                        //请假时长
-                        String timeHours = date_range.getString("new_duration");
-                        String leaveType = date_range.getString("type");
-                        LeaveSheet leaveSheet = new LeaveSheet();
-                        leaveSheet.setProcinstId(sp_no_lists[i].toString());
-                        leaveSheet.setIsFinalAudit(1);
-                        leaveSheet.setIndate(applyTime);
-                        leaveSheet.setOwnerName(name);
-                        leaveSheet.setOwnerId(user==null?"":user.getId());
-                        leaveSheet.setCompanyId(user.getCompanyId());
-                        leaveSheet.setTel(user.getPhone()==null?"":user.getPhone());
-                        //审批人信息
-                        leaveSheet.setAuditorName(approverName);
-                        leaveSheet.setAuditorId(approverUser==null?"":approverUser.getId());
-                        //请假日期
-                        leaveSheet.setStartDate(sDate);
-                        leaveSheet.setEndDate(eDate);
-                        //请假类型
-                        leaveSheet.setLeaveType(leave_type);
-                        leaveSheet.setStatus(sp_status);
-                        //请假说明
-                        leaveSheet.setRemark(remark==null?"":remark);
-                        //请假时长和天数
-                        float time = Float.parseFloat(timeHours);
-                        if("hour".equals(leaveType)){
-                            leaveSheet.setTimeType(1);
-                            leaveSheet.setTimeHours(time/3600);
-                        }else{
-                            leaveSheet.setTimeType(0);
-                            leaveSheet.setTimeHours(time/3600);
-                            leaveSheet.setTimeDays(time/3600/24);
-                        }
-                        result.add(leaveSheet);
-                    }else{
-                        System.err.println(sp_no_lists[i]+"审批单详情查询失败");
-                    }
-                }
-            }else{
-                fail.add(wxCorpInfo.getCorpFullName());
-                System.err.println(wxCorpInfo.getCorpFullName()+"审批单查询失败");
-            }
+
         }
         if (fail.size() == 0){
             System.err.println("全部同步成功");
         }else{
-            System.out.print("同步失败的公司有:");
+            System.err.println("总共"+fail.size()+"个公司同步失败");
+            System.err.print("同步失败的公司有:");
             for (String s : fail) {
                 System.err.print(s+",");
-                System.out.println();
             }
+            System.out.println();
         }
         return result;
     }

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

@@ -317,15 +317,22 @@ public class TimingTask {
 
     //每天1:00 同步昨天的微信请假信息
     @Scheduled(cron = "0 0 1 ? * *")
+//    @Scheduled(cron = "0 59 13 ? * *")
     public void synWxLeave() throws Exception {
         if (isDev) return;
         System.out.println("+++++++++++++++++++微信请假同步开始+++++++++++++++++++");
         String startTime = Long.toString(System.currentTimeMillis()/1000L-86400);
         String endTime = Long.toString(System.currentTimeMillis()/1000L);
+        //查询开启了微信请假同步的公司
+        List<TimeType> needSynLeave = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("wx_leave", 1));
+        ArrayList<Integer> companyId = new ArrayList<>();
+        needSynLeave.forEach(item->{
+            companyId.add(item.getCompanyId());
+        });
         //查询更新审批中的请假单
         List<LeaveSheet> approvalLeave = leaveSheetMapper.selectApprovalList();
         //插入请假单并更新审核中的请假单
-        List<WxCorpInfo> wxCorpInfos = wxCorpInfoMapper.selectList(null);
+        List<WxCorpInfo> wxCorpInfos = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().in("company_id",companyId));
         List<LeaveSheet> leaveSheets = wxCorpInfoService.wxLeaveNumber(startTime,endTime, wxCorpInfos,approvalLeave);
         for (LeaveSheet leaveSheet : leaveSheets) {
             leaveSheetMapper.insert(leaveSheet);
@@ -474,7 +481,7 @@ public class TimingTask {
 
     @Scheduled(cron = "0 30,0/5 17-19 * * ?")
     public void  getClockRecordWithCorpWx(){
-        /*if(isDev) return;*/
+        if(isDev) return;
         //todo: 有限制无考勤不填报的情况才获取
         LocalDateTime start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
         LocalDateTime end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).withSecond(0).withNano(0);

File diff suppressed because it is too large
+ 714 - 712
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties


+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -178,6 +178,8 @@ profession.impProReject=The {1} project in the daily report you {0} imported was
 profession.fillProReject=The {1} project in the daily report you filled in by {0} was rejected by [{2}]. Reason: {3}.
 profession.approver=Please set approver
 profession.checker=Please set reviewer
+profession.approved=approved
+profession.batchPass=Batch Pass
 # \u9879\u76EE\u76F8\u5173
 project.deleteErrorByProject=Failed to delete, bound item.
 project.deleteErrorByMaster=Failed to delete, the master project has been bound.
@@ -222,6 +224,7 @@ project.storesReserve=Project preparation materials
 project.processDocuments=Project process documents
 project.deliverable=Project Deliverable
 project.manage = manage
+project.example=Example Project
 # \u4F9B\u8D27\u76F8\u5173
 provider.noRepeat=Vendor No. already exists.
 provider.classNameRepeat=The supplier name under this category already exists.
@@ -238,6 +241,7 @@ Stages.noExistAndRefresh=This task does not exist, please refresh and view.
 Stages.ListNull=The task list is empty and cannot be saved.
 Stages.ListNotExist=The task list ["{0}"] does not exist.
 Stages.leastOneGroup=Keep at least one task group.
+Stages.example=Example Task
 #\u5206\u7EC4\u76F8\u5173
 group.RepeatName=Group has duplicate name.
 group.userNull=The user ["{0}"] does not exist. Please add the member in the organization structure.

+ 2 - 0
fhKeeper/formulahousekeeper/timesheet/src/components/select.vue

@@ -415,6 +415,8 @@ export default {
             res => {
                 if (res.code == "ok") {
                     console.log('数据')
+                    this.options = res.data.retUser
+                    this.cursor = res.data.nextCursor
                 } else {
                     this.$message({
                         message: res.msg,

+ 12 - 12
fhKeeper/formulahousekeeper/timesheet/src/views/project/summary.vue

@@ -291,7 +291,7 @@
                                     fontSize: 18,
                                     fontWeight: 'normal',
                                  },
-                              text: list.length == 0?this.$t('nodata'):this.$t('themosttime'),
+                              text: list.length == 0?_this.$t('nodata'):_this.$t('themosttime'),
                               left: "center",
                               top: "center"
                             },
@@ -313,7 +313,7 @@
                                 trigger:'axis',
                                 formatter: function (params,ticket,callback) {
                                     var res = params[0].data.fullName + ""+" : " + params[0].data.value 
-                                    + this.$t('time.hour');
+                                    + _this.$t('time.hour');
                                     _this.params = params;
                                     return res;
                                 }
@@ -327,11 +327,11 @@
                             yAxis: [{
                                 type : 'value',
                                 axisLabel: {
-                                    formatter:'{value}'+this.$t('time.hour')
+                                    formatter:'{value}'+_this.$t('time.hour')
                                 }
                             }],
                             series: [{
-                                name: this.$t('hao-shi-xiao-shi'),
+                                name: _this.$t('hao-shi-xiao-shi'),
                                 type: 'bar',
                                 barMaxWidth: 30,
                                 data: yList,
@@ -368,7 +368,7 @@
                                     fontSize: 18,
                                     fontWeight: 'normal',
                                  },
-                              text: list.length == 0?this.$t('nodata'):this.$t('taskListStatistics'),
+                              text: list.length == 0?_this.$t('nodata'):_this.$t('taskListStatistics'),
                               left: "center",
                               top: "center"
                             },
@@ -382,11 +382,11 @@
                             },
                             tooltip:{
                                 trigger:'item',
-                                formatter: "{b}<br/>"+this.$t('ren-wu-shu')+":{c} ({d}%)",
+                                formatter: "{b}<br/>"+_this.$t('ren-wu-shu')+":{c} ({d}%)",
                             },
                             series : [
                                 {
-                                    name: this.$t('tasklist'),
+                                    name: _this.$t('tasklist'),
                                     type: 'pie',
                                     radius: '55%',
                                     data:list
@@ -476,12 +476,12 @@
             pulledOut(dataList) {
                 console.log(dataList, '过来的值')
                 // var xList = [], yList = [], list = res.data;
-                let _this = this;
+                var _this = this;
                 var xList = [], yList = [], list = dataList;
                 for(var i in list) {
                     xList.push(list[i].executorName);
                     yList.push({
-                        "value": _this.sumListRadio == this.$t('plantime') ? list[i].taskHours : list[i].taskCount,
+                        "value": _this.sumListRadio == _this.$t('plantime') ? list[i].taskHours : list[i].taskCount,
                         "id": list[i].executorId
                     });
                 }
@@ -496,7 +496,7 @@
                             fontSize: 18,
                             fontWeight: 'normal',
                          },
-                      text: list.length == 0?this.$t('nodata'):this.$t('zhi-hang-ren-fen-pei-tu'),
+                      text: list.length == 0?_this.$t('nodata'):_this.$t('zhi-hang-ren-fen-pei-tu'),
                       left: "center",
                       top: "center"
                     },
@@ -518,7 +518,7 @@
                         trigger:'axis',
                         formatter: function (params,ticket,callback) {
                             var res = params[0].name + ""+" : " + params[0].data.value 
-                            + (_this.sumListRadio == this.$t('plantime') ? this.$t('time.hour') : this.$t('ge'));
+                            + (_this.sumListRadio == _this.$t('plantime') ? _this.$t('time.hour') : _this.$t('ge'));
                             _this.params = params;
                             return res;
                         }
@@ -536,7 +536,7 @@
                         }
                     }],
                     series: [{
-                        name: _this.sumListRadio == this.$t('plantime') ? this.$t('xiaoshijihua') : this.$t('rwushuliang'),
+                        name: _this.sumListRadio == _this.$t('plantime') ? _this.$t('xiaoshijihua') : _this.$t('rwushuliang'),
                         type: 'bar',
                         barMaxWidth: 30,
                         data: yList,