Sfoglia il codice sorgente

美莱德增加个人直属审核人设置

QuYueTing 1 giorno fa
parent
commit
f64fcb368c
22 ha cambiato i file con 472 aggiunte e 1816 eliminazioni
  1. 118 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatAccountController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/WechatAccountServiceImpl.java
  3. 2 2
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ProjectController.java
  4. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/ProjectService.java
  5. 2 2
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  6. 298 1733
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  7. 0 4
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  8. 3 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/config/Config.java
  9. 6 18
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  10. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  11. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ErpOrderInfoServiceImpl.java
  12. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  13. 9 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserWithBeisenServiceImpl.java
  14. 0 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  15. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java
  16. 1 24
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/BeiSenUtils.java
  17. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SysConstant.java
  18. 5 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceStaffServiceImpl.java
  19. 3 2
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  20. 3 1
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  21. 1 0
      fhKeeper/formulahousekeeper/timesheet_mld/src/views/corpreport/list.vue
  22. 6 14
      fhKeeper/formulahousekeeper/timesheet_mld/src/views/team/index.vue

+ 118 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatAccountController.java

@@ -38,6 +38,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
@@ -536,6 +537,45 @@ public class WechatAccountController {
 
     }
 
+    /**
+     * 为慕临研公众号创建菜单
+     * @return
+     */
+    @RequestMapping("/createMenuForMuLinYanPublic")
+    public HttpRespMsg createMenuForMuLinYanPublic()  {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        WechatAccount wechatAccount = new WechatAccount();
+        wechatAccount.setAppId("wx387ef72756590dc0");
+        wechatAccount.setAppSecret("ab381ce533f01393adb9a7374f49ea8f");
+        String url = String.format(
+                "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",
+                wechatAccount.getAppId(), wechatAccount.getAppSecret());
+
+        try {
+            String accessToken = null;
+            System.out.println("url==>"+url);
+            String response = restTemplate.getForObject(url, String.class);
+            JSONObject json = JSON.parseObject(response);
+
+            if (json.containsKey("access_token")) {
+                accessToken = json.getString("access_token");
+            } else {
+                throw new RuntimeException("获取AccessToken失败: " + response);
+            }
+            log.info("accessToken==>{}", accessToken);
+            boolean menuWithMiniProgram = createMenuWithMuYanLinPublic(accessToken);
+            if (menuWithMiniProgram){
+                return httpRespMsg;
+            }else {
+                httpRespMsg.setError("创建失败");
+                return httpRespMsg;
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("调用微信API失败", e);
+        }
+    }
+
+
     // 创建微信公众号菜单
     @RequestMapping("/deleteMenu")
     public HttpRespMsg deleteMenu(Integer companyId)  {
@@ -598,6 +638,8 @@ public class WechatAccountController {
 
     }
 
+
+
     /**
      * 创建包含小程序链接的菜单
      * @param accessToken 微信access_token
@@ -641,6 +683,49 @@ public class WechatAccountController {
 
     }
 
+    /**
+     * 创建包含小程序链接的菜单
+     * @param accessToken 微信access_token
+     * @return 是否创建成功
+     */
+    public  boolean createMenuWithMuYanLinPublic(String accessToken) {
+        // 构建菜单JSON
+        String menuJson = buildMuYanLinMenuJson();
+
+        // 设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+
+        // 创建请求实体
+        HttpEntity<String> requestEntity = new HttpEntity<>(menuJson, headers);
+
+        // 构建完整URL
+        String requestUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken;
+
+        try {
+            // 发送POST请求
+            ResponseEntity<String> responseEntity = restTemplate.exchange(
+                    requestUrl,
+                    HttpMethod.POST,
+                    requestEntity,
+                    String.class
+            );
+            log.info("responseEntity==>" + responseEntity);
+
+            // 解析响应
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                JSONObject jsonResult = JSON.parseObject(responseEntity.getBody());
+                log.info("解析响应"+jsonResult.toJSONString());
+                return jsonResult.getInteger("errcode") == 0;
+            }
+            return false;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
     private static String buildHrefMenuJson() {
         // 示例菜单结构:主菜单包含3个子菜单,其中一个是小程序链接
         JSONObject menu = new JSONObject();
@@ -648,7 +733,7 @@ public class WechatAccountController {
         // 第二个菜单项 - 包含子菜单
         JSONObject button2 = new JSONObject();
         button2.put("type", "view");
-        button2.put("name", "临研GCP培训");
+        button2.put("name", "GCP服务");
         button2.put("url", "http://mobclass.m-clitrial.com/");
 
         /*JSONObject subButton1 = new JSONObject();
@@ -678,6 +763,38 @@ public class WechatAccountController {
         return menu.toJSONString();
     }
 
+    private static String buildMuYanLinMenuJson() {
+        // 示例菜单结构:主菜单包含3个子菜单,其中一个是小程序链接
+        JSONObject menu = new JSONObject();
+
+        // 第一个菜单项 - 网页跳转到GCP服务
+        JSONObject button1 = new JSONObject();
+        button1.put("type", "view");
+        button1.put("name", "GCP服务");
+        button1.put("url", "http://mobclass.m-clitrial.com/");
+//兼职报名, 跳转网页 http://mp.weixin.qq.com/mp/homepage?__biz=MzkzMTgxMTQyMA==&hid=1&sn=c95cc0b78a5ef32d55766202737ec79e&scene=18#wechat_redirect
+//实用干货-培训干货, 跳转网页 http://mp.weixin.qq.com/mp/homepage?__biz=MzkzMTgxMTQyMA==&hid=2&sn=75d459321e3ebbbd40c85eed519a3c10&scene=18#wechat_redirect
+
+        JSONObject button2 = new JSONObject();
+        button2.put("type", "view");
+        button2.put("name", "兼职报名");
+        button2.put("url", "http://mp.weixin.qq.com/mp/homepage?__biz=MzkzMTgxMTQyMA==&hid=1&sn=c95cc0b78a5ef32d55766202737ec79e&scene=18#wechat_redirect");
+
+        JSONObject button3 = new JSONObject();
+        button3.put("name", "实用干货");
+
+        JSONObject subButton1 = new JSONObject();
+        subButton1.put("type", "view");
+        subButton1.put("name", "培训干货");
+        subButton1.put("url", "http://mp.weixin.qq.com/mp/homepage?__biz=MzkzMTgxMTQyMA==&hid=2&sn=75d459321e3ebbbd40c85eed519a3c10&scene=18#wechat_redirect");
+
+        button3.put("sub_button", new JSONObject[]{ subButton1});
+
+        menu.put("button", new JSONObject[]{button1,button2,button3});
+
+        return menu.toJSONString();
+    }
+
     /**
      * 构建包含小程序链接的菜单JSON
      */

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

@@ -66,7 +66,7 @@ public class WechatAccountServiceImpl extends ServiceImpl<WechatAccountMapper, W
     /**
      * 刷新AccessToken
      */
-    private String refreshAccessToken(WechatAccount account) {
+    public String refreshAccessToken(WechatAccount account) {
         String url = String.format(
                 "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",
                 account.getAppId(), account.getAppSecret());

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ProjectController.java

@@ -767,8 +767,8 @@ public class ProjectController {
         return projectService.getUserReportTimelinessRate(request,startDate,endDate,departmentId,userId,pageIndex,pageSize);
     }
     @RequestMapping("/exportReportTimelinessRate")
-    public HttpRespMsg exportReportTimelinessRate(HttpServletRequest request,String startDate,String endDate){
-        return projectService.exportReportTimelinessRate(request,startDate,endDate);
+    public HttpRespMsg exportReportTimelinessRate(HttpServletRequest request,String startDate,String endDate, Integer departmentId){
+        return projectService.exportReportTimelinessRate(request,startDate,endDate, departmentId);
     }
     @RequestMapping("/exportReportTimelinessRateByQuarter")
     public HttpRespMsg exportReportTimelinessRateByQuarter(HttpServletRequest request,String year,Integer quarter){

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

@@ -171,7 +171,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getUserReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId, String userId,Integer pageIndex,Integer pageSize);
 
-    HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate);
+    HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId);
 
     HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate,Integer departmentId);
 

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

@@ -10254,12 +10254,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate) {
+    public HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId) {
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
-        HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, null, null, null, null);
+        HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, departmentId, null, null, null);
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
         //String[] s={"人员","工号","部门","填报及时率","填报及时率(含请假)"};

File diff suppressed because it is too large
+ 298 - 1733
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java


+ 0 - 4
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -1745,10 +1745,6 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                             timeDelta += ct.getOutdoorTime();
                         }
                         double workHours = 0;
-                        if (corpInfo.getCompanyId() == 469) {
-                            timeDelta = DateTimeUtil.getHoursFromDouble(timeDelta);
-                        }
-                        System.out.println("上下班间隔时长======="+timeDelta);
                         if (needRecaculate) {
                             workHours = timeDelta - ct.getAskLeaveTime();
                         } else {

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/config/Config.java

@@ -26,6 +26,7 @@ import javax.net.ssl.SSLContext;
 import java.security.KeyManagementException;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
+import java.time.LocalDateTime;
 
 @Configuration
 public class Config {
@@ -34,8 +35,8 @@ public class Config {
   public RestTemplate restTemplate()
   {
     ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());
-    System.out.println("@@@===初始化RestRemplate===@@");
-    return new RestTemplate(requestFactory);
+    RestTemplate restTemplate = new RestTemplate(requestFactory);
+    return restTemplate;
   }
   /**
    * Apache HttpClient

+ 6 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -667,7 +667,7 @@ public class ReportController {
                             shouldCheck = Arrays.asList(deptIds).contains(currentUserDeptId);
                         }
                         
-                        if (shouldCheck && content[i].indexOf(maskWord.getWordName()) != -1) {
+                        if (shouldCheck && content[i].toLowerCase().indexOf(maskWord.getWordName().toLowerCase()) != -1) {
                             HttpRespMsg msg = new HttpRespMsg();
                             // 使用自定义的报错提示语,如果没有则使用默认提示
                             String alertMsg = !StringUtils.isEmpty(maskWord.getAlertMsg()) 
@@ -693,7 +693,7 @@ public class ReportController {
                         shouldCheck = Arrays.asList(deptIds).contains(currentUserDeptId);
                     }
 
-                    if (shouldCheck && summary.indexOf(maskWord.getWordName()) != -1) {
+                    if (shouldCheck && summary.toLowerCase().indexOf(maskWord.getWordName().toLowerCase()) != -1) {
                         HttpRespMsg msg = new HttpRespMsg();
                         // 使用自定义的报错提示语,如果没有则使用默认提示
                         String alertMsg = !StringUtils.isEmpty(maskWord.getAlertMsg())
@@ -1646,8 +1646,8 @@ public class ReportController {
 
                 //HardCode:对于正北两家公司,校验填报工时不得少于考勤时长。(代填的不校验)
                 if ((SysConstant.ZhengBeiCompIds.contains(company.getId())) && (report.getFillUserid() == null || creatorId.equals(report.getFillUserid()))) {
-                    if (company.getId() == 8138) {
-                        //苏州正北, 用钉钉
+                    //正北精密制造 排除在外
+                    if (company.getId() != 8264) {
                         List<UserDingdingTime> userDingdingTimes = userDingdingTimeMapper.selectList(new QueryWrapper<UserDingdingTime>().eq("user_id", creatorId).eq("work_date", cDate));
                         if (userDingdingTimes.size() > 0) {
                             UserDingdingTime userDingdingTime = userDingdingTimes.get(0);
@@ -1657,20 +1657,8 @@ public class ReportController {
                                 return httpRespMsg;
                             }
                         }
-                    } else {
-                        //广州正北,企业微信,导入的考勤
-                        List<UserCorpwxTime> userCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("corpwx_userid", creatorId).eq("create_date", cDate));
-                        if (userCorpwxTimes.size() > 0) {
-                            UserCorpwxTime userCorpwxTime = userCorpwxTimes.get(0);
-                            if (Math.abs(userCorpwxTime.getWorkHours() - dailyWorktime) > 0.01) {
-                                HttpRespMsg httpRespMsg = new HttpRespMsg();
-                                httpRespMsg.setError("每日填报工作时长("+dailyWorktime+"h)必须与考勤时长("+userCorpwxTime.getWorkHours()+"h)一致");
-                                return httpRespMsg;
-                            }
-                        }
                     }
                 }
-
             }
         }
         //校验,分组是否属于该项目下
@@ -2809,8 +2797,8 @@ public class ReportController {
 
     @RequestMapping("/importNewDataZhengbei")
     public HttpRespMsg importNewDataZhengbei(Integer companyId,
-                                     MultipartFile file, HttpServletRequest request) {
-        return reportService.importNewDataZhengbei(companyId, file, request);
+                                     MultipartFile file, @RequestParam(required = false, defaultValue = "false" ) Boolean isPass, HttpServletRequest request) {
+        return reportService.importNewDataZhengbei(companyId, file, isPass, request);
     }
 
     @RequestMapping("/listImportByState")

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

@@ -190,5 +190,5 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg updateJingYuOldReport(String startDate, String endDate);
 
-    HttpRespMsg importNewDataZhengbei(Integer companyId, MultipartFile file, HttpServletRequest request);
+    HttpRespMsg importNewDataZhengbei(Integer companyId, MultipartFile file, Boolean isPass, HttpServletRequest request);
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ErpOrderInfoServiceImpl.java

@@ -139,6 +139,7 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
         String listUrl = DataCollectTask.PREFIX_URL+"/dataCollect/getSqlServerDataList";
 
         try {
+            System.out.println("发起请求===="+sumUrl);
             ResponseEntity<String> sumResponse = restTemplate.exchange(
                     sumUrl,
                     HttpMethod.GET,
@@ -151,6 +152,7 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
             } else {
                 System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
             }
+            System.out.println("totalNum===="+totalNum);
             if(totalNum > 0){
                 int pageSize = 1000;
                 int offset = 0;
@@ -163,6 +165,7 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
                     requestBody.put("pageNo", offset);
                     requestBody.put("pageSize", pageSize);
                     HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    System.out.println("发起数据请求===="+listUrl);
                     ResponseEntity<List<ErpOrderInfo>> listResponse = restTemplate.exchange(
                             listUrl,
                             HttpMethod.POST,
@@ -183,6 +186,7 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
                                     toAddList.add(item);
                                 }
                             }
+                            System.out.println("新增数据:"+toAddList.size()+",更新数据:"+toUpdateList.size());
                             if(!org.springframework.util.CollectionUtils.isEmpty(toAddList)){
                                 saveBatch(toAddList);
                             }
@@ -192,6 +196,8 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
                             toUpdateList.clear();
                             toAddList.clear();
                         }
+                    } else {
+                        System.out.println("请求失败,状态码: " + listResponse.getStatusCode());
                     }
                     offset += pageSize;
                 }

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

@@ -10740,7 +10740,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         double workingTime = Double.valueOf(String.valueOf(map.get("workingTime")));
                         if (user.getRoleName().equals("财务管理员")) {
                             if (workingTime > 8.0) {
-                                System.out.println("修正工时++"+map.get("userId")+","+map.get("name")+","+map.get("createDate")+","+map.get("workingTime"));
+//                                System.out.println("修正工时++"+map.get("userId")+","+map.get("name")+","+map.get("createDate")+","+map.get("workingTime"));
                                 map.put("workingTime", 8);
                             }
                         }
@@ -12465,7 +12465,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg importNewDataZhengbei(Integer companyId, MultipartFile multipartFile, HttpServletRequest request) {
+    public HttpRespMsg importNewDataZhengbei(Integer companyId, MultipartFile multipartFile, Boolean isPass, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
@@ -12662,7 +12662,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                     report.setDepartmentAuditState(1);//部门已审核,到上层领导审核
                                 }
                             } else {
-                                report.setState(0);//待审核
+                                report.setState(isPass?1:0);//正北,前端勾选了审核通过,直接设置为通过
                                 //目前仅支持项目审核人审核的模式
                                 if (timeType.getReportAuditType() == 0) {
                                     int mode = 0;

+ 9 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserWithBeisenServiceImpl.java

@@ -156,8 +156,13 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
             List<JSONObject> swipingCardDateList = swipingCardsStream.filter(i -> LocalDateTime.parse(i.getString("SwipingCardDate"),df1).toLocalDate().equals(localDate)).collect(Collectors.toList());
             for (JSONObject item : swipingCardDateList) {
                 //获取当前数据下的人员工号对应到工时管家
-                String cardNumber = item.getString("CardNumber");
-                Optional<User> first = userList.stream().filter(f -> f.getJobNumber().equals(cardNumber)).findFirst();
+                String beisengUserId = item.getString("UserId");
+                Optional<UserWithBeisen> ubOptinal = userWithBeisenList.stream().filter(a->a.getUserId().equals(beisengUserId)).findFirst();
+                if (!ubOptinal.isPresent()) {
+                    continue;
+                }
+                String jobNumber = ubOptinal.get().getJobNumber();
+                Optional<User> first = userList.stream().filter(f -> f.getJobNumber().equals(jobNumber)).findFirst();
                 //todo: 获取考勤打卡时间集合
                 JSONArray times = item.getJSONArray("Times");
                 Stream<JSONObject> timeStream = times.stream().map(time -> (JSONObject) time);
@@ -290,8 +295,8 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
                     }
                     UserFvTime userFvTime=new UserFvTime();
                     userFvTime.setWorkDate(localDate);
-                    userFvTime.setStartTime(df2.format(min));
-                    userFvTime.setEndTime(df2.format(max));
+                    userFvTime.setStartTime(df4.format(min));
+                    userFvTime.setEndTime(df4.format(max));
                     userFvTime.setUserId(first.get().getId());
                     userFvTime.setCompanyId(companyId);
                     userFvTime.setWorkHours(workTime.floatValue());

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

@@ -1752,7 +1752,6 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                         if (corpInfo.getCompanyId() == 469) {
                             timeDelta = DateTimeUtil.getHoursFromDouble(timeDelta);
                         }
-                        System.out.println("上下班间隔时长======="+timeDelta);
                         if (needRecaculate) {
                             workHours = timeDelta - ct.getAskLeaveTime();
                         } else {

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
 @EnableScheduling
 @Component
 public class DataCollectTask {
-    public static final String PREFIX_URL = "http://58.210.104.138:10020";
+    public static final String PREFIX_URL = "http://112.80.46.162:10020";
     public static final int HONGHU_COMP_ID = 7536;
     @Value("${configEnv.isDev}")
     public boolean isDev;
@@ -49,6 +49,7 @@ public class DataCollectTask {
     private UserFvTimeService userFvTimeService;
 
     @Scheduled(cron = "30 10 8,12,20 * * ?")
+//    @Scheduled(cron = "30 08 21 * * ?")
     public void sqlServerTask() {
         if(isDev){return;}
         if(isPrivateDeploy) return;

+ 1 - 24
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/BeiSenUtils.java

@@ -128,17 +128,15 @@ public class BeiSenUtils {
         requestMap.put("empStatus",empStatus);
         requestMap.put("isWithDeleted",true);
         requestMap.put("enableTranslate",true);
-        System.out.println("--------headers请求头数据-------"+headers);
         if(!StringUtils.isEmpty(scrollId)){
             requestMap.put("scrollId",scrollId);
         }
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         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 respJson = JSONObject.parseObject(resp);
-            System.out.println("--------返回数据-------"+respJson);
+//            System.out.println("--------返回数据-------"+respJson);
             if(respJson.getIntValue("code")==200){
                 resultList.add(respJson.getJSONArray("data"));
                 String nextScrollId = respJson.getString("scrollId");
@@ -161,14 +159,11 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("PunchCardDate",createDate);
         requestMap.put("PageIndex",pageIndex+"");
         requestMap.put("PageSize",pageSize+"");
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         JSONArray lastJSONArray=new JSONArray();
@@ -201,14 +196,11 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("OverTimeDate",createDate);
         requestMap.put("PageIndex",pageIndex+"");
         requestMap.put("PageSize",pageSize+"");
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
 
 
@@ -245,15 +237,12 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("StartDate",startDate);
         requestMap.put("StopDate",endDate);
         requestMap.put("PageIndex",pageIndex+"");
         requestMap.put("PageSize",pageSize+"");
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         JSONArray lastJSONArray=new JSONArray();
@@ -285,13 +274,10 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("date",date);
         requestMap.put("staffId",userId);
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         String resp= ResponseEntity.getBody();
@@ -311,7 +297,6 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("startDate",startDate);
@@ -319,8 +304,6 @@ public class BeiSenUtils {
         staffIds.add(Integer.valueOf(userId));
         requestMap.put("stopDate",endDate);
         requestMap.put("staffIds",staffIds);
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         String resp= ResponseEntity.getBody();
@@ -339,14 +322,11 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("Day",day);
         requestMap.put("PageIndex",pageIndex);
         requestMap.put("PageSize",pageSize);
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         JSONArray lastJSONArray=new JSONArray();
@@ -377,14 +357,11 @@ public class BeiSenUtils {
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         String accessToken = getToken(appkey,appSecret);
-        System.out.println("--------Bearer TOKEN--------"+accessToken);
         headers.add("Authorization","Bearer "+accessToken);
         JSONObject requestMap = new JSONObject();
         requestMap.put("Day",day);
         requestMap.put("PageIndex",pageIndex);
         requestMap.put("PageSize",pageSize);
-        System.out.println("--------headers请求头数据-------"+headers);
-        System.out.println("--------requestMap请求参数-------"+requestMap);
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         JSONArray lastJSONArray=new JSONArray();

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SysConstant.java

@@ -4,5 +4,5 @@ import java.util.Arrays;
 import java.util.List;
 
 public class SysConstant {
-    public static final List<Integer> ZhengBeiCompIds = Arrays.asList(new Integer[]{7703, 8138, 8261,8264,8268});
+    public static final List<Integer> ZhengBeiCompIds = Arrays.asList(new Integer[]{8138, 8261,8264,8268});
 }

+ 5 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceStaffServiceImpl.java

@@ -1418,6 +1418,11 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                     }
                 }
             }
+        } else {
+            //非工作日,需要减去午休时间
+            if (startHour <= 12 && endHour >= 13) {
+                hours -= 1;
+            }
         }
         double minPart = hours - (int)hours;
         //始终按0.5小时对齐

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -885,7 +885,8 @@
                     highlight-current  :filter-node-method="filterNode">
                         <span class="custom-tree-node" slot-scope="{ node, data }">
                             <span v-if="user.userNameNeedTranslate == '1'">
-                                <span v-if="node.data.children">
+                                <!--标签短的是部门名称-->
+                                <span v-if="node.label.length < 10">
                                     <TranslationOpenDataText type='departmentName' :openid='node.label'></TranslationOpenDataText>
                                 </span>
                                 <span v-else>
@@ -1845,7 +1846,7 @@
                             this.haveUsersList(list)
                         }
                         this.whiteListAll = JSON.parse(JSON.stringify(list))
-
+                        console.log('2', this)
                         if(this.specialHolidays != 0) {
                             this.setspecialHolidaysNodes()
                         }

File diff suppressed because it is too large
+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue


+ 1 - 0
fhKeeper/formulahousekeeper/timesheet_mld/src/views/corpreport/list.vue

@@ -2947,6 +2947,7 @@ export default {
           url += "/exportReportTimelinessRate"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
+          sl.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1];
         } else if (this.ins == 10) {
           fName = this.$t('dailyreporttobereviewedstatistics')  + '.xlsx'
           url += "/exportWaitingReviewList"

+ 6 - 14
fhKeeper/formulahousekeeper/timesheet_mld/src/views/team/index.vue

@@ -221,15 +221,7 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column prop="superiorName" :label="$t('immediatesuperior')" width="120" v-if="user.timeType.reportAuditType == 5 || user.timeType.reportAuditType == 6">
-                  <template slot-scope="scope">
-                    <div>
-                      <div v-if="user.userNameNeedTranslate == 1">
-                        <TranslationOpenDataText type='userName' :openid='scope.row.superiorCorpwxUserid'></TranslationOpenDataText>
-                      </div>
-                      <div v-else>{{scope.row.superiorName}}</div>
-                    </div>
-                  </template>
+                <el-table-column prop="superiorName" :label="$t('immediatesuperior')" width="120" >
                 </el-table-column>
                 <el-table-column v-if="user.companyId==4374" :label="$t('yuanGongLeiXing')" width="100">
                     <template slot-scope="scope">{{findValue($t('yuanGongLeiXing'),scope.row.plateMap)}}</template>
@@ -484,15 +476,15 @@
                       <el-radio  :label="1">{{ $t('yiCengShenHe') }}</el-radio>
                       </el-radio-group>
                   </el-form-item>
-                  <el-form-item v-if="user.timeType.reportAuditType == 5 || user.timeType.reportAuditType == 6 || (user.timeType.reportAuditType == 0 && user.company.nonProjectSimple == 1)">
+                  <el-form-item>
                       <span slot="label">
-                        <span>{{ (user.timeType.reportAuditType == 0 && user.company.nonProjectSimple == 1)?'非项目审核人':$t('immediatesuperior') }}</span>
-                        <el-tooltip effect="dark" :content="$t('weiSheZhiShiYouSuoShuBuMenFuZeRenShenHe')" placement="top-start">
+                        <span>{{ $t('immediatesuperior') }}</span>
+                        <el-tooltip effect="dark" content="设置此项后将忽略审批流中的部门节点,由该直属审核人直接审核。(项目审核节点不受影响)" placement="top-start">
                           <i class="el-icon-question" style="color:#606266"></i>
                         </el-tooltip>
                       </span>
-                      <el-select v-model="insertForm.superiorId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" filterable clearable v-if="user.userNameNeedTranslate != 1">
-                          <el-option v-for="item in users" :label="item.name" :value="item.id" :key="item.id" :disabled="item.id == insertForm.id">
+                      <el-select v-model="insertForm.superiorId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" filterable clearable >
+                          <el-option v-for="item in users" :label="item.name" :value="item.id" :key="item.id" >
                               <span style="float: left">{{item.name}}</span>
                               <span style="float: right; color: #8492a6; font-size: 13px">{{item.departmentName}}</span>
                           </el-option>