Jelajahi Sumber

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

seyason 2 tahun lalu
induk
melakukan
fd47b9b71b
13 mengubah file dengan 284 tambahan dan 231 penghapusan
  1. 28 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java
  3. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  4. 4 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  6. 19 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  7. 184 181
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  8. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DockWithMLD.java
  9. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties
  10. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties
  11. 34 30
      fhKeeper/formulahousekeeper/timesheet/src/components/cascader.vue
  12. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue
  13. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

+ 28 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -673,27 +673,35 @@ public class ProjectController {
         List<ProjectKeyNodesSetting> projectKeyNodesSettings = projectKeyNodesSettingMapper.selectList(new QueryWrapper<ProjectKeyNodesSetting>().eq("company_id", companyId));
         List<String> collect = providerCategoryList.stream().map(pc -> pc.getProviderCategoryName()).distinct().collect(Collectors.toList());
         TimeType timeType = timeTypeMapper.selectById(companyId);
+        List<String> exampleDataList=new ArrayList<>();
         if(timeType.getMainProjectState()==1){
             //heads.add("主项目");
             heads.add(MessageUtils.message("entry.mainProject"));
+            exampleDataList.add("示例-主项目名称");
         }
         //heads.add("项目编号");
         heads.add(MessageUtils.message("entry.projectId"));
+        exampleDataList.add("XM001");
         if(company.getId()==936){
             //heads.add("合同编号");
             heads.add(MessageUtils.message("entry.contractNo"));
+            exampleDataList.add("HT001");
         }
         if(timeType.getMainProjectState()!=1){
             //heads.add("项目分类");
             heads.add(MessageUtils.message("entry.projectType"));
+            exampleDataList.add("示例-项目分类");
         }
         //heads.add("是否为公共项目");
         heads.add(MessageUtils.message("entry.publicProject"));
         //heads.add("项目名称");
         heads.add(MessageUtils.message("entry.projectName"));
+        exampleDataList.add("否");
+        exampleDataList.add("示例-项目名称");
         if(timeType.getMainProjectState()!=1){
             //heads.add("子项目(多个用,隔开)");
             heads.add(MessageUtils.message("entry.sonProject"));
+            exampleDataList.add("示例-子项目名称");
         }
         //heads.add("参与人");
         heads.add(MessageUtils.message("entry.Participants"));
@@ -701,17 +709,23 @@ public class ProjectController {
         heads.add(MessageUtils.message("entry.projectManager"));
         //heads.add("级别");
         heads.add(MessageUtils.message("entry.level"));
+        exampleDataList.add("张三");
+        exampleDataList.add("张三");
+        exampleDataList.add("");
         if(timeType.getProjectWithDept()==1){
             //heads.add("所属部门");
             heads.add(MessageUtils.message("entry.department"));
+            exampleDataList.add("");
         }
         if(company.getPackageCustomer()==1){
             //heads.add("客户");
             heads.add(MessageUtils.message("entry.customer"));
+            exampleDataList.add("示例-客户");
         }
         if(company.getPackageProvider()==1){
             for (String s : collect) {
                 heads.add(s);
+                exampleDataList.add("示例供应商名称");
             }
         }
         //heads.add("开始日期");
@@ -720,6 +734,9 @@ public class ProjectController {
         heads.add(MessageUtils.message("entry.endDate"));
         //heads.add("合同金额");
         heads.add(MessageUtils.message("entry.contract"));
+        exampleDataList.add("2000-01-01");
+        exampleDataList.add("2000-02-01");
+        exampleDataList.add("1000");
         if(company.getId()==936){
             //heads.add("质保开始时间");
             heads.add(MessageUtils.message("entry.warrantyST"));
@@ -735,6 +752,13 @@ public class ProjectController {
             heads.add(MessageUtils.message("entry.projectState"));
             //heads.add("项目阶段");
             heads.add(MessageUtils.message("entry.projectStage"));
+            exampleDataList.add("2000-01-01");
+            exampleDataList.add("2000-02-01");
+            exampleDataList.add("");
+            exampleDataList.add("");
+            exampleDataList.add("");
+            exampleDataList.add("");
+            exampleDataList.add("");
             for (ProjectKeyNodesSetting projectKeyNodesSetting : projectKeyNodesSettings) {
                 //heads.add(projectKeyNodesSetting.getName()+"计划完成日期");
                 heads.add(MessageUtils.message("entry.planCompDate",projectKeyNodesSetting.getName()));
@@ -742,10 +766,14 @@ public class ProjectController {
                 heads.add(MessageUtils.message("entry.actualComDate",projectKeyNodesSetting.getName()));
                 //heads.add(projectKeyNodesSetting.getName()+"节点状态");
                 heads.add(MessageUtils.message("entry.nodeStatus",projectKeyNodesSetting.getName()));
+                exampleDataList.add("");
+                exampleDataList.add("");
+                exampleDataList.add("");
             }
         }
         List<List<String>> allList = new ArrayList<>();
         allList.add(heads);
+        allList.add(exampleDataList);
         //String title = company.getCompanyName()+"_项目导入模板";
         String title = MessageUtils.message("fileName.projectImport",company.getCompanyName());
         /*msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, allList, path);*/

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

@@ -56,5 +56,5 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
 
     User generateUserInfo(Integer companyId, String corpwxOpenId);
 
-    HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList) throws Exception;
+    HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList,String cursor) throws Exception;
 }

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

@@ -330,7 +330,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                 System.out.println("参与搜素的人员列表"+userNameList);
                 HttpRespMsg respMsg=new HttpRespMsg();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList);
+                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;

+ 4 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -3170,7 +3170,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 System.out.println("参与搜素的人员列表"+userNameList);
                 HttpRespMsg respMsg=new HttpRespMsg();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList);
+                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;
@@ -3566,13 +3566,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 System.out.println("参与搜素的人员列表"+userNameList);
                 HttpRespMsg respMsg=new HttpRespMsg();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList);
+                    respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;
                     }
                 }
                 List<User> targetUserList= (List<User>) respMsg.data;
+                System.out.println(targetUserList);
                 List<String> existCodeList = new ArrayList<>();
                 int importCount = 0;
                 for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
@@ -3973,7 +3974,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                         String curProviderName = split[i1].trim();
                                         Optional<ProviderInfo> first = providerInfoList.stream().filter(pd -> pd.getProviderName().equals(curProviderName)&&pd.getProviderCategoryId().equals(categoryId)).findFirst();
                                         if(!first.isPresent()){
-                                            //msg.setError("供应商["+curProviderName+"]在供应商分类["+providerCategoryList.get(j).getProviderCategoryName()+"]不存在");
+                                            //msg.setError("供应商["+curProviderName+"]在供应商分类["+providerCategoryList.get(j).getProviderCategoryName()+"]不存在");
                                             msg.setError(MessageUtils.message("supplier.noExist",curProviderName,providerCategoryList.get(j).getProviderCategoryName()));
                                             return msg;
                                         }else {

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

@@ -3534,7 +3534,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             System.out.println("参与搜素的人员列表"+userNameList);
             HttpRespMsg respMsg=new HttpRespMsg();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList);
+                respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                 if(respMsg.code.equals("0")){
                     msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                     return msg;

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

@@ -646,7 +646,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         return result;
     }
     @Override
-    public HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList)throws Exception{
+    public HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList ,String cursor)throws Exception{
         HttpRespMsg msg=new HttpRespMsg();
         List<User> userList=new ArrayList<>();
         String url = GET_BATCH_SEARCH_USER_INFO.replace("ACCESS_TOKEN",getProviderAccessToken());
@@ -663,7 +663,9 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             item.put("query_range",1);
             item.put("limit",50);
             item.put("full_match_field",1);
-            item.put("cursor",CURSOR.get("cursor"));
+            if(cursor!=null){
+                item.put("cursor",cursor);
+            }
             jsonArray.add(item);
         }
         jsonObject.put("query_request_list",jsonArray);
@@ -677,6 +679,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 throw new Exception(json.toJSONString());
             }
             JSONArray resultList = json.getJSONArray("query_result_list");
+            List<String> targetUserNameList=new ArrayList<>();
+            String nextCursor=null;
             for (int i = 0; i < resultList.size(); i++) {
                 User user=new User();
                 JSONObject item = resultList.getJSONObject(i);
@@ -696,7 +700,20 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 }
                 user.setCorpwxUserid(openUseridList.get(0));
                 userList.add(user);
+                boolean isLast = item.getBoolean("is_last");
+                if(!isLast){
+                    nextCursor = item.getString("next_cursor");
+                    targetUserNameList.add(userName);
+                }
             }
+            if(targetUserNameList.size()>0){
+                HttpRespMsg respMsg = getBatchSearchUserInfo(wxCorpInfo, targetUserNameList,nextCursor);
+                if(!respMsg.code.equals("0")){
+                    List<User> targetUserList= (List<User>) respMsg.data;
+                    userList.addAll(targetUserList);
+                }
+            }
+
         }
         msg.data=userList;
         return msg;

+ 184 - 181
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -279,205 +279,208 @@ public class TimingTask {
 
 
     //每天2:11 同步钉钉用户前2天到未来30天时间段的打卡,请假,出差数据
-    @Scheduled(cron = "0 11 2 ? * *")
+    @Scheduled(cron = "0 41 15 ? * *")
     private void synFanWeiWorkData() {
-        if (isDev) return;
+        /*if (isDev) return;
+        if(!isPrivateDeploy) return;*/
         List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_fanwei", 1));
         List<Integer> compIds = timeTypeList.stream().map(TimeType::getCompanyId).collect(Collectors.toList());
         if(compIds.isEmpty()){
             return;
         }
-        DockWithMLD dockWithMLD=new DockWithMLD();
-        JSONObject jsonObject=new JSONObject();
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm");
-        LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
-        String startDate = dtf.format(yesterday);
-        String endDate = dtf.format(yesterday.plusDays(32));
-        List<UserFvTime> oldUserFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().in("company_id", compIds));
-        List<LeaveSheet> oldLeaveSheetList = leaveSheetService.list(new QueryWrapper<LeaveSheet>().in("company_id", compIds));
-        List<BusinessTrip> oldBusinessTripList = businessTripService.list(new QueryWrapper<BusinessTrip>().in("company_id", compIds));
-        jsonObject.put("startDate",startDate);
-        jsonObject.put("endDate",endDate);
-        String jsonString = jsonObject.toJSONString();
-        List<UserFvTime> userFvTimeList=new ArrayList<>();
-        List<LeaveSheet> leaveSheetList=new ArrayList<>();
-        List<BusinessTrip> businessTripList=new ArrayList<>();
-        //Todo: 获取打卡数据
-        HttpRespMsg workDataMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getWorkData", jsonString);
-        List<Map<String,Object>> workDataList= (List<Map<String, Object>>) workDataMsg.data;
-        List<String> userIds = workDataList.stream().map(map -> String.valueOf(map.get("userId"))).collect(Collectors.toList());
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("job_number", userIds));
-        for (User user : userList) {
-            System.out.println("需要同步的用户列表-----"+userList);
-            LocalTime startTime=null;
-            LocalTime endTime=null;
-            LocalDate workDate=null;
-            for (Map<String, Object> map : workDataList) {
-                if (map.get("userId").equals(user.getJobNumber())) {
-                    if(String.valueOf(map.get("signtype")).equals("签到")){
-                        startTime=LocalTime.parse(String.valueOf(map.get("signtime")), dtf2);
-                        workDate= LocalDate.parse(String.valueOf(map.get("workDate")), dtf);
+        for (Integer compId : compIds) {
+            DockWithMLD dockWithMLD=new DockWithMLD();
+            JSONObject jsonObject=new JSONObject();
+            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm");
+            LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
+            String startDate = dtf.format(yesterday);
+            String endDate = dtf.format(yesterday.plusDays(32));
+            List<UserFvTime> oldUserFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().eq("company_id", compId));
+            List<LeaveSheet> oldLeaveSheetList = leaveSheetService.list(new QueryWrapper<LeaveSheet>().eq("company_id", compId));
+            List<BusinessTrip> oldBusinessTripList = businessTripService.list(new QueryWrapper<BusinessTrip>().eq("company_id", compId));
+            jsonObject.put("startDate",startDate);
+            jsonObject.put("endDate",endDate);
+            String jsonString = jsonObject.toJSONString();
+            List<UserFvTime> userFvTimeList=new ArrayList<>();
+            List<LeaveSheet> leaveSheetList=new ArrayList<>();
+            List<BusinessTrip> businessTripList=new ArrayList<>();
+            //Todo: 获取打卡数据
+            HttpRespMsg workDataMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getWorkData", jsonString);
+            List<Map<String,Object>> workDataList= (List<Map<String, Object>>) workDataMsg.data;
+            List<String> userIds = workDataList.stream().map(map -> String.valueOf(map.get("userId"))).collect(Collectors.toList());
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("job_number", userIds));
+            //获取休息设置
+            TimeAutoExclude timeAutoExclude = timeAutoExcludeMapper.selectOne(new QueryWrapper<TimeAutoExclude>().eq("company_id", compId));
+            TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", compId));
+            for (User user : userList) {
+                System.out.println("需要同步的用户列表-----"+userList);
+                LocalTime startTime=null;
+                LocalTime endTime=null;
+                LocalDate workDate=null;
+                for (Map<String, Object> map : workDataList) {
+                    if (map.get("userId").equals(user.getJobNumber())) {
+                        if(String.valueOf(map.get("signtype")).equals("签到")){
+                            startTime=LocalTime.parse(String.valueOf(map.get("signtime")), dtf2);
+                            workDate= LocalDate.parse(String.valueOf(map.get("workDate")), dtf);
+                        }
+                        if(String.valueOf(map.get("signtype")).equals("签退")){
+                            endTime=LocalTime.parse(String.valueOf(map.get("signtime")), dtf2);
+                            workDate=LocalDate.parse(String.valueOf(map.get("workDate")),dtf);
+                        }
+                    }
+                }
+                UserFvTime userFvTime=new UserFvTime();
+                System.out.println("泛微同步人员打卡数据----"+user.getName());
+                if(compIds.contains(user.getCompanyId())){
+                    if(startTime==null||endTime==null){
+                        System.out.println("缺少上班或者下班打卡时间----"+user.getName());
+                        continue;
+                    }
+                    userFvTime.setWorkDate(workDate);
+                    Duration between = Duration.between(startTime, endTime);
+                    userFvTime.setStartTime(startTime.format(dtf2));
+                    userFvTime.setEndTime(endTime.format(dtf2));
+                    userFvTime.setCompanyId(user.getCompanyId());
+                    userFvTime.setUserId(user.getId());
+                    long workHours = between.toHours();
+                    long restHours;
+                    if(startTime.isBefore(LocalTime.parse(timeAutoExclude.getStartTime(),dtf2))
+                            &&endTime.isAfter(LocalTime.parse(timeAutoExclude.getEndTime(),dtf2))){
+                        Duration bt = Duration.between(LocalTime.parse(timeAutoExclude.getStartTime(),dtf2), LocalTime.parse(timeAutoExclude.getEndTime(),dtf2));
+                        restHours=bt.toHours();
+                    }else {
+                        restHours=0;
                     }
-                    if(String.valueOf(map.get("signtype")).equals("签退")){
-                        endTime=LocalTime.parse(String.valueOf(map.get("signtime")), dtf2);
-                        workDate=LocalDate.parse(String.valueOf(map.get("workDate")),dtf);
+                    userFvTime.setWorkHours(BigDecimal.valueOf(workHours).subtract(BigDecimal.valueOf(restHours)).floatValue());
+                    Optional<UserFvTime> first = oldUserFvTimeList.stream().filter(ol -> ol.getWorkDate().isEqual(userFvTime.getWorkDate()) && ol.getUserId().equals(userFvTime.getUserId())).findFirst();
+                    if(first.isPresent()){
+                        userFvTime.setId(first.get().getId());
                     }
+                    userFvTimeList.add(userFvTime);
                 }
             }
-            UserFvTime userFvTime=new UserFvTime();
-            //获取休息设置
-            TimeAutoExclude timeAutoExclude = timeAutoExcludeMapper.selectOne(new QueryWrapper<TimeAutoExclude>().eq("company_id", user.getCompanyId()));
-            System.out.println("泛微同步人员打卡数据----"+user.getName());
-            if(compIds.contains(user.getCompanyId())){
-                if(startTime==null||endTime==null){
-                    System.out.println("缺少上班或者下班打卡时间----"+user.getName());
+            if(userFvTimeList.size()>0){
+                userFvTimeService.saveOrUpdateBatch(userFvTimeList);
+            }
+            //Todo: 获取请假数据
+            HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
+            List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
+            for (Map<String, Object> map : leaveRecordList) {
+                User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
+                if(user==null){
                     continue;
                 }
-                userFvTime.setWorkDate(workDate);
-                Duration between = Duration.between(startTime, endTime);
-                userFvTime.setStartTime(startTime.format(dtf2));
-                userFvTime.setEndTime(endTime.format(dtf2));
-                userFvTime.setCompanyId(user.getCompanyId());
-                userFvTime.setUserId(user.getId());
-                long workHours = between.toHours();
-                long restHours;
-                if(startTime.isBefore(LocalTime.parse(timeAutoExclude.getStartTime(),dtf2))
-                        &&endTime.isAfter(LocalTime.parse(timeAutoExclude.getEndTime(),dtf2))){
-                    Duration bt = Duration.between(LocalTime.parse(timeAutoExclude.getStartTime(),dtf2), LocalTime.parse(timeAutoExclude.getEndTime(),dtf2));
-                    restHours=bt.toHours();
-                }else {
-                    restHours=0;
-                }
-                userFvTime.setWorkHours(BigDecimal.valueOf(workHours).subtract(BigDecimal.valueOf(restHours)).floatValue());
-                Optional<UserFvTime> first = oldUserFvTimeList.stream().filter(ol -> ol.getWorkDate().isEqual(userFvTime.getWorkDate()) && ol.getUserId().equals(userFvTime.getUserId())).findFirst();
-                if(first.isPresent()){
-                    userFvTime.setId(first.get().getId());
-                }
-                userFvTimeList.add(userFvTime);
-            }
-        }
-        if(userFvTimeList.size()>0){
-            userFvTimeService.saveOrUpdateBatch(userFvTimeList);
-        }
-        //Todo: 获取请假数据
-        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
-        List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
-        for (Map<String, Object> map : leaveRecordList) {
-            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
-            if(user==null){
-                continue;
-            }
-            System.out.println("泛微同步人员请假数据----"+user.getName());
-            if(compIds.contains(user.getCompanyId())){
-               LeaveSheet leaveSheet=new LeaveSheet();
-               leaveSheet.setCompanyId(user.getCompanyId());
-               leaveSheet.setStatus(0);
-               leaveSheet.setOwnerId(user.getId());
-               leaveSheet.setOwnerName(user.getName());
-               leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
-               leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
-               Integer timeType=null;
-               switch (String.valueOf(map.get("timeType"))){
-                   case "小时":timeType=1;
-                       break;
-                   case "天":timeType=0;
-                       break;
-               }
-               leaveSheet.setTimeType(timeType);
-               leaveSheet.setTimeDays(Float.parseFloat((String) map.get("timeDays")));
-               if (timeType == 0){
-                   TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
-                   leaveSheet.setTimeHours(leaveSheet.getTimeDays()*allDay.getAllday());
-               }else {
-                   leaveSheet.setTimeHours(Float.parseFloat((String) map.get("timeHours")));
-               }
-               Integer leaveType=null;
-               switch (String.valueOf(map.get("leaveType"))){
-                   case "事假":leaveType=0;
-                       break;
-                   case "病假":leaveType=1;
-                       break;
-                   case "年假":leaveType=2;
-                       break;
-                   case "产假":leaveType=3;
-                       break;
-                   case "婚假":leaveType=4;
-                       break;
-                   case "丧假":leaveType=5;
-                       break;
-                   case "调休":leaveType=6;
-                       break;
-                   case "陪产假":leaveType=7;
-                       break;
-                   default:leaveType=8;
-               }
-               leaveSheet.setLeaveType(leaveType);
-               leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
-               leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
-                Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate()) && ol.getOwnerId().equals(leaveSheet.getOwnerId())).findFirst();
-                if(first.isPresent()){
-                    leaveSheet.setId(first.get().getId());
+                System.out.println("泛微同步人员请假数据----"+user.getName());
+                if(compIds.contains(user.getCompanyId())){
+                    LeaveSheet leaveSheet=new LeaveSheet();
+                    leaveSheet.setCompanyId(user.getCompanyId());
+                    leaveSheet.setStatus(0);
+                    leaveSheet.setOwnerId(user.getId());
+                    leaveSheet.setOwnerName(user.getName());
+                    leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
+                    leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
+                    Integer timeType=null;
+                    switch (String.valueOf(map.get("timeType"))){
+                        case "小时":timeType=1;
+                            break;
+                        case "天":timeType=0;
+                            break;
+                    }
+                    leaveSheet.setTimeType(timeType);
+                    leaveSheet.setTimeDays(Float.parseFloat(((String) map.get("timeDays")).equals("")?"0.00":((String) map.get("timeDays"))));
+                    if (timeType == 0){
+                        leaveSheet.setTimeHours(leaveSheet.getTimeDays()*allDay.getAllday());
+                    }else {
+                        leaveSheet.setTimeHours(Float.parseFloat(((String) map.get("timeHours")).equals("")?"0.00":((String) map.get("timeHours"))));
+                    }
+                    Integer leaveType=null;
+                    switch (String.valueOf(map.get("leaveType"))){
+                        case "事假":leaveType=0;
+                            break;
+                        case "病假":leaveType=1;
+                            break;
+                        case "年假":leaveType=2;
+                            break;
+                        case "产假":leaveType=3;
+                            break;
+                        case "婚假":leaveType=4;
+                            break;
+                        case "丧假":leaveType=5;
+                            break;
+                        case "调休":leaveType=6;
+                            break;
+                        case "陪产假":leaveType=7;
+                            break;
+                        default:leaveType=8;
+                    }
+                    leaveSheet.setLeaveType(leaveType);
+                    leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
+                    leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
+                    Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate()) && ol.getOwnerId().equals(leaveSheet.getOwnerId())).findFirst();
+                    if(first.isPresent()){
+                        leaveSheet.setId(first.get().getId());
+                    }
+                    leaveSheetList.add(leaveSheet);
                 }
-               leaveSheetList.add(leaveSheet);
             }
-        }
-        if(leaveSheetList.size()>0){
-            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
-        }
-        //Todo: 获取出差数据
-        HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
-        List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
-        for (Map<String, Object> map : travelRecordList) {
-            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
-            if(user==null){
-                continue;
+            if(leaveSheetList.size()>0){
+                leaveSheetService.saveOrUpdateBatch(leaveSheetList);
             }
-            System.out.println("泛微同步人员出差数据----"+user.getName());
-            if(compIds.contains(user.getCompanyId())){
-                BusinessTrip businessTrip=new BusinessTrip();
-                businessTrip.setCompanyId(user.getCompanyId());
-                businessTrip.setOwnerId(user.getId());
-                businessTrip.setOwnerName(user.getName());
-                businessTrip.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
-                businessTrip.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
-                Integer way=null;
-                switch (String.valueOf(map.get("way"))){
-                    case "飞机":way=0;
-                    break;
-                    case "高铁/火车":way=1;
-                        break;
-                    case "汽车":way=2;
-                        break;
-                    case "轮船":way=3;
-                        break;
-                    case "其他":way=4;
-                        break;
-                }
-                businessTrip.setWay(way);
-                businessTrip.setCityFrom((String) map.get("cityFrom"));
-                businessTrip.setCityTo((String) map.get("cityTo"));
-                Integer goBack=null;
-                switch (String.valueOf(map.get("goBack"))){
-                    case "单程":goBack=0;
-                    break;
-                    case "往返":goBack=1;
-                    break;
+            //Todo: 获取出差数据
+            HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
+            List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
+            for (Map<String, Object> map : travelRecordList) {
+                User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
+                if(user==null){
+                    continue;
                 }
-                businessTrip.setGoBack(goBack);
-                businessTrip.setDayCount(Integer.parseInt(String.valueOf(map.get("dayCount")).substring(0,1)));
-                businessTrip.setProcinstId((String) map.get("procinstId"));
-                businessTrip.setGmtFinished((String)map.get("gmtFinished"));
-                Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate()) && ol.getOwnerId().equals(businessTrip.getOwnerId())).findFirst();
-                if(first.isPresent()){
-                    businessTrip.setId(first.get().getId());
+                System.out.println("泛微同步人员出差数据----"+user.getName());
+                if(compIds.contains(user.getCompanyId())){
+                    BusinessTrip businessTrip=new BusinessTrip();
+                    businessTrip.setCompanyId(user.getCompanyId());
+                    businessTrip.setOwnerId(user.getId());
+                    businessTrip.setOwnerName(user.getName());
+                    businessTrip.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
+                    businessTrip.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
+                    Integer way=null;
+                    switch (String.valueOf(map.get("way"))){
+                        case "飞机":way=0;
+                            break;
+                        case "高铁/火车":way=1;
+                            break;
+                        case "汽车":way=2;
+                            break;
+                        case "轮船":way=3;
+                            break;
+                        case "其他":way=4;
+                            break;
+                    }
+                    businessTrip.setWay(way);
+                    businessTrip.setCityFrom((String) map.get("cityFrom"));
+                    businessTrip.setCityTo((String) map.get("cityTo"));
+                    Integer goBack=null;
+                    switch (String.valueOf(map.get("goBack"))){
+                        case "单程":goBack=0;
+                            break;
+                        case "往返":goBack=1;
+                            break;
+                    }
+                    businessTrip.setGoBack(goBack);
+                    businessTrip.setDayCount(Integer.parseInt(String.valueOf(map.get("dayCount")).substring(0,1)));
+                    businessTrip.setProcinstId((String) map.get("procinstId"));
+                    businessTrip.setGmtFinished((String)map.get("gmtFinished"));
+                    Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate()) && ol.getOwnerId().equals(businessTrip.getOwnerId())).findFirst();
+                    if(first.isPresent()){
+                        businessTrip.setId(first.get().getId());
+                    }
+                    businessTripList.add(businessTrip);
                 }
-                businessTripList.add(businessTrip);
             }
-        }
-        if(businessTripList.size()>0){
-            businessTripService.saveOrUpdateBatch(businessTripList);
+            if(businessTripList.size()>0){
+                businessTripService.saveOrUpdateBatch(businessTripList);
+            }
         }
     }
 

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DockWithMLD.java

@@ -77,10 +77,10 @@ public class DockWithMLD {
         header.put("Md5",md5OfStr);
         paramDatajson.put("header",header);
         //分页参数 处理全部数据 不需要进行分页
-        /*JSONObject pageInfo = new JSONObject();
-        pageInfo.put("pageNo", -1);
-        pageInfo.put("pageSize", -1);
-        paramDatajson.put("pageInfo",pageInfo);*/
+        JSONObject pageInfo = new JSONObject();
+        pageInfo.put("pageNo", 1);
+        pageInfo.put("pageSize",1000);
+        paramDatajson.put("pageInfo",pageInfo);
         //封装 mainTable 参数
         JSONObject mainTable  = JSON.parseObject(screenString);
         paramDatajson.put("mainTable",mainTable);

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

@@ -366,7 +366,7 @@ data.upSkip=自动更新{0}条已存在项目编码:{1}。
 data.exceedMonthError=获取数据时间段不得超过一个月
 data.verificationError=数据有误 验证失败
 #供应商相关
-supplier.noExist=供应商[{0}]在供应商分类[{1}]不存在
+supplier.noExist=供应商[{0}]在供应商分类[{1}]不存在
 supplier.addSupplier=请填写供应商数据
 supplier.lackNameOnRow=第{0}行缺少供应商名称
 supplier.nameRepeat=当前导入数据存在重复供应商名称[{0}]
@@ -538,10 +538,10 @@ fileName.leaveRemaining = 假期剩余表
 #excel
 excel.publicProject=是否为非项目
 excel.projectName=项目名称必填
-excel.manyPeople=多个参与人(姓名/工号)使用中文逗号(,)隔开
+excel.manyPeople=多个参与人(姓名)使用中文逗号(,)隔开
 excel.manyPeoplePlus=多个参与人(工号)使用中文逗号(,)隔开
-excel.projectManager=项目经理(姓名/工号)需存在于参与人中
-excel.projectManagerPlus=项目经理(姓名/工号)需存在于参与人中
+excel.projectManager=项目经理(姓名)需存在于参与人中
+excel.projectManagerPlus=项目经理(姓名)需存在于参与人中
 excel.projectCharge=负责人需存在于参与人中
 excel.dateFormat=日期格式:yyyy-MM-dd
 excel.forExample=例如: 2021-01-01

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

@@ -538,9 +538,9 @@ fileName.leaveRemaining = Leave Remaining Table
 #excel
 excel.publicProject=Whether it is a non project
 excel.projectName=Project name is required
-excel.manyPeople=Multiple participants (name/jobNumber) are separated by commas (,)
+excel.manyPeople=Multiple participants (name) are separated by commas (,)
 excel.manyPeoplePlus=Multiple participants (jobNumber) are separated by commas (,)
-excel.projectManager=The project manager (name/jobNumber) must exist in the participants
+excel.projectManager=The project manager (name) must exist in the participants
 excel.projectManagerPlus=The project manager (jobNumber) must exist in the participants
 excel.projectCharge=The person in charge must exist in the participants
 excel.dateFormat=Date Format:yyyy-MM-dd

+ 34 - 30
fhKeeper/formulahousekeeper/timesheet/src/components/cascader.vue

@@ -26,7 +26,7 @@
         <div class="transitionBox">
             <ul class="transitionBoxUl">
                 <li :class="transitionBoxLiIdx == index ? 'liHover' : ''" v-for="(item, index) in options" :key="index" @mouseover="liMouseOver(index, item)" @click.stop="liClist(item)"> 
-                    <span :class="item.children ? 'idxspan' : ''" v-if="!radios">
+                    <span :class="item.children ? 'idxspan' : ''" v-if="!radios || fistRadio">
                         <!-- {{item.label}} -->
                         <span v-if="userName">
                             <span v-if="item.type == 'dep'">
@@ -41,7 +41,7 @@
                         </span>
                         <!-- <ww-open-data type='departmentName' :openid='item.label'></ww-open-data> -->
                     </span>
-                    <span v-if="radios" style="margin-left: -15px">
+                    <span v-if="radios && !fistRadio" style="margin-left: -15px">
                         <el-radio v-model="optionsOId" :label="item.value">
                             <span class="idxspan" style="margin-left: -10px"> 
                                 <!-- {{item.label}}  -->
@@ -147,6 +147,11 @@ export default {
         userName: {
             type: Boolean,
             default: false
+        },
+        // 第一季是否不选中
+        fistRadio: {
+            type: Boolean,
+            default: false
         }
     },
     data() {
@@ -298,36 +303,35 @@ export default {
         },
         // 点击
         liClist(item) {
-            console.log('我被你点击了')
-            if(!item.children) {
-                this.selectName = item.label
-                if(item.type) {
-                    this.selectNameType = item.type
-                }
-                let obj = {
-                    id: item.value,
-                    distinction: this.distinction
-                }
-                console.log('将要传出去的值1', obj)
-                this.$emit('vueCasader', obj)
-            }
-            if(this.radios) {
-                this.selectName = item.label
-                if(item.type) {
-                    this.selectNameType = item.type
+            if(item.label != this.$t('lable.department') && item.label != this.$t('designatedpersonnel')) {
+                if(!item.children) {
+                    this.selectName = item.label
+                    if(item.type) {
+                        this.selectNameType = item.type
+                    }
+                    let obj = {
+                        id: item.value,
+                        distinction: this.distinction
+                    }
+                    this.$emit('vueCasader', obj)
                 }
-                let obj = {
-                    id: item.value,
-                    distinction: this.distinction,
-                    item: item
+                if(this.radios) {
+                    this.selectName = item.label
+                    if(item.type) {
+                        this.selectNameType = item.type
+                    }
+                    let obj = {
+                        id: item.value,
+                        distinction: this.distinction,
+                        item: item
+                    }
+                    this.$emit('vueCasader', obj)
+                } else {
+                    this.transitionBoxLiIdx = ''
+                    this.show = !this.show
+                    this.classDiv = false
+                    this.move = false
                 }
-                console.log('将要传出去的值2', obj)
-                this.$emit('vueCasader', obj)
-            } else {
-                this.transitionBoxLiIdx = ''
-                this.show = !this.show
-                this.classDiv = false
-                this.move = false
             }
         },
         // 接受子组件传过来的值

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

@@ -462,7 +462,7 @@
                     <el-form-item :label="$t('selectdepartmentsdesignatepersonnel')" >
                         <el-cascader filterable ref="deptCascader" v-model="curDeptId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" @change="chooseDept" v-if="user.userNameNeedTranslate != 1" :options="soption" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable></el-cascader>
                         <!-- <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader> -->
-                        <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :userName="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
+                        <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :fistRadio="true" :userName="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                     </el-form-item>
                 </el-form>
                 <div slot="footer" class="dialog-footer">

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

@@ -474,7 +474,7 @@
                   <el-cascader filterable ref="deptCascader"  v-model="curDeptId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" @change="chooseDept"
                     :options="soption" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable v-show="user.userNameNeedTranslate != 1"></el-cascader>
 
-                  <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :userName="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
+                    <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :userName="true" :fistRadio="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
 
               </el-form-item>
               </el-form>