Lijy 7 hónapja
szülő
commit
910e4b66e9

+ 4 - 1
fhKeeper/formulahousekeeper/ArticleOperation/src/main/java/com/my/bigevent/controller/CommonUploadController.java

@@ -20,6 +20,9 @@ public class CommonUploadController {
     @Value(value = "${upload.path}")
     private String path;
 
+    @Value(value = "${upload.getPath}")
+    private String getPath;
+
 
     @RequestMapping(value="uploadFile")
     public Object uploadFile(MultipartFile multipartFile) {
@@ -48,7 +51,7 @@ public class CommonUploadController {
             inputStream.close();
             outputStream.close();
 
-            String url = path + serverName;
+            String url = getPath + serverName;
             return Result.success(url);
 
         } catch (Exception exception) {

+ 1 - 0
fhKeeper/formulahousekeeper/ArticleOperation/src/main/resources/application.yml

@@ -22,3 +22,4 @@ server:
 #  path: C:/Users/12871/Downloads/
 upload:
   path: /www/staticproject/Article/upload/
+  getPath: /upload/

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

@@ -10286,29 +10286,85 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //date格式为2024-09, 需要获取该月的第一天和最后一天
         LocalDate firstDay = LocalDate.parse(date + "-01");
         LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
-        if (user.getCorpwxUserid() != null) {
-            userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", firstDay, lastDay));
+        //检查权限,有查看全公司数值的权限
+        boolean canViewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全公司工时");
+        List<User> manageUserList = new ArrayList<>();
+        if (canViewAll) {
+            userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).between("create_date", firstDay, lastDay));
+            manageUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
         } else {
-            userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("name", user.getName()).between("create_date", firstDay, lastDay));
+            //是否是部门负责人
+            List<Integer> allDeptIds = getAllVisibleDeptIdList(user, departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId)));
+            if (allDeptIds.size() > 0) {
+                //有部门工时的查看权限
+                //取部门的人员
+                manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds));
+                //如果自己不在manageUserList中,加进去
+                if (!manageUserList.stream().anyMatch(u -> u.getId().equals(user.getId()))) {
+                    manageUserList.add(user);
+                }
+                List<String> userCorpwxidList = manageUserList.stream().filter(u->u.getCorpwxUserid() != null).map(User::getCorpwxUserid).collect(Collectors.toList());
+                if (userCorpwxidList.size() > 0) {
+                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", userCorpwxidList).between("create_date", firstDay, lastDay));
+                }
+                //如果存在corpwxUserid位空的用户,按姓名匹配
+                List<String> nameList = manageUserList.stream().filter(u->u.getCorpwxUserid() == null).map(User::getName).collect(Collectors.toList());
+                if (nameList.size() == 0) {
+                    userCorpwxTimeList.addAll(userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("name", nameList).between("create_date", firstDay, lastDay)));
+                }
+            } else {
+                //个人看自己的
+                if (user.getCorpwxUserid() != null) {
+                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", firstDay, lastDay));
+                } else {
+                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("name", user.getName()).between("create_date", firstDay, lastDay));
+                }
+                manageUserList.add(user);
+            }
+        }
+
+
+        //获取填报工时记录表
+        List<Report> reportList = new ArrayList<>();
+        if (canViewAll) {
+            reportList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id,create_date, sum(working_time) as working_time").eq("company_id", companyId).between("create_date", firstDay, lastDay).groupBy("creator_id,create_date"));
+        } else if (manageUserList.size() > 0) {
+            List<String> userIdList = manageUserList.stream().map(User::getId).collect(Collectors.toList());
+            reportList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id,create_date, sum(working_time) as working_time").in("creator_id", userIdList).between("create_date", firstDay, lastDay).groupBy("creator_id,create_date"));
+        } else {
+            reportList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id,create_date, sum(working_time) as working_time").eq("creator_id", user.getId()).between("create_date", firstDay, lastDay).groupBy("creator_id,create_date"));
         }
-        //获取个人每日填报工时记录表
-        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id,create_date, sum(working_time) as working_time").eq("creator_id", user.getId()).between("create_date", firstDay, lastDay).groupBy("create_date"));
         //比对userCorpwxTimeList和reportList,找出工时未填满的记录
         List<Map<String, Object>> resultList = new ArrayList<>();
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
             boolean isMatch = true;
             double reportTime = 0;
-            for (Report report : reportList) {
-                if (corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
-                    reportTime = report.getWorkingTime();
-                    //不一致
-                    if (Math.abs(corpwxTime.getWorkHours() - report.getWorkingTime()) > 0.01) {
-                        isMatch = false;
+            User targetUser = null;
+            if (corpwxTime.getCorpwxUserid() != null) {
+                Optional<User> first = manageUserList.stream().filter(u -> corpwxTime.getCorpwxUserid().equals(u.getCorpwxUserid())).findFirst();
+                if (first.isPresent()) {
+                    targetUser = first.get();
+                }
+            } else {
+                Optional<User> first = manageUserList.stream().filter(u -> u.getName().equals(corpwxTime.getName())).findFirst();
+                if (first.isPresent()) {
+                    targetUser = first.get();
+                }
+            }
+            if (targetUser != null) {
+                for (Report report : reportList) {
+                    if (report.getCreatorId().equals(targetUser.getId()) && corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
+                        reportTime = report.getWorkingTime();
+                        //不一致
+                        if (Math.abs(corpwxTime.getWorkHours() - report.getWorkingTime()) > 0.01) {
+                            isMatch = false;
+                        }
+                        break;
                     }
-                    break;
                 }
             }
+
             if (!isMatch) {
                 Map<String, Object> map = new HashMap<>();
                 map.put("name", corpwxTime.getName()==null?corpwxTime.getCorpwxUserid():corpwxTime.getName());
@@ -10321,12 +10377,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //反向,检测有填报日报但是没有考勤的数据
         for (Report report : reportList) {
             boolean hasCardTime = false;
+            Optional<User> first = manageUserList.stream().filter(u -> u.getId().equals(report.getCreatorId())).findFirst();
+            if (!first.isPresent()) {
+                continue;
+            }
+            User targetUser = first.get();
             for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
-                if (corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
-                    if (corpwxTime.getWorkHours() > 0) {
-                        hasCardTime = true;
+                if ((targetUser.getCorpwxUserid() != null && targetUser.getCorpwxUserid().equals(corpwxTime.getCorpwxUserid()))
+                    || (targetUser.getCorpwxUserid() == null && targetUser.getName().equals(corpwxTime.getName()))) {
+                    //人员匹配上了,匹配日期
+                    if (corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
+                        if (corpwxTime.getWorkHours() > 0) {
+                            hasCardTime = true;
+                        }
+                        break;
                     }
-                    break;
                 }
             }
             if (!hasCardTime) {

+ 1 - 0
fhKeeper/formulahousekeeper/webttkuaiban/src/main/java/com/firerock/webttkuaiban/demos/pojo/Article.java

@@ -36,6 +36,7 @@ public class Article {
 
     private String baseImage;
     private String productId;
+    private String coverImgUrl;
 
     @JsonFormat(pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")

+ 3 - 3
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/mapper/ArticleMapper.xml

@@ -6,7 +6,7 @@
 <mapper namespace="com.firerock.webttkuaiban.demos.mapper.ArticleMapper">
 
     <select id="pageList" resultType="com.firerock.webttkuaiban.demos.pojo.Article">
-        select a.id,a.title,a.`profile` ,aci.cover_img_data coverImg
+        select a.id,a.title,a.`profile` ,a.cover_img_url
         from article a
         left join  article_cover_img aci on a.id=aci.article_id
         <where>
@@ -33,7 +33,7 @@
         order by  update_time DESC
     </select>
     <select id="latestList" resultType="com.firerock.webttkuaiban.demos.pojo.Article">
-        select a.id,a.title,a.create_time ,aci.cover_img_data coverImg
+        select a.id,a.title,a.create_time ,a.cover_img_url
         from article a
                  left join  article_cover_img aci on a.id=aci.article_id
         where a.state='已发布'
@@ -41,7 +41,7 @@
             limit 3
     </select>
     <select id="relatedList" resultType="com.firerock.webttkuaiban.demos.pojo.Article">
-        select a.id,a.title,a.create_time ,aci.cover_img_data coverImg
+        select a.id,a.title,a.create_time ,a.cover_img_url
         from article a
         left join  article_cover_img aci on a.id=aci.article_id
         <where>

+ 1 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledge.ftl

@@ -45,7 +45,7 @@
           <#list knowledgeFieldTableList as item>
             <div>
               <div class="knowledgeField-content-item" onclick="triggerButtonClick(${item.id})">
-                <div class="image"><img src="data:image;base64,${item.baseImage}" class="wh100" class="wh100"></img>
+                <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
                 </div>
                 <div class="textContent">
                   <div>${ item.title }</div>

+ 2 - 2
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledgeDetails.ftl

@@ -90,7 +90,7 @@
             <#list latestList as item>
               <div class="latestList-item" data-item='${item.id}'>
                 <div class="latestList-item-image">
-                  <img src="data:image;base64,${item.baseImage}" class="wh100"></img>
+                  <img src="${item.coverImgUrl}" class="wh100"></img>
                 </div>
                 <div class="latestList-item-text">
                   <div class="latestList-item-text-title">${ item.title }</div>
@@ -110,7 +110,7 @@
             <#list relatedList as item>
               <div class="latestList-item" data-item='${item.id}'>
                 <div class="latestList-item-image">
-                  <img src="data:image;base64,${item.baseImage}" class="wh100"></img>
+                  <img src="${item.coverImgUrl}" class="wh100"></img>
                 </div>
                 <div class="latestList-item-text">
                   <div class="latestList-item-text-title">${ item.title }</div>

+ 1 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledge.ftl

@@ -45,7 +45,7 @@
           <#list knowledgeFieldTableList as item>
             <div>
               <div class="knowledgeField-content-item" onclick="triggerButtonClick(${item.id})">
-                <div class="image"><img src="data:image;base64,${item.baseImage}" class="wh100" class="wh100"></img>
+                <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
                 </div>
                 <div class="textContent">
                   <div>${ item.title }</div>

+ 2 - 2
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledgeDetails.ftl

@@ -90,7 +90,7 @@
             <#list latestList as item>
               <div class="latestList-item" data-item='${item.id}'>
                 <div class="latestList-item-image">
-                  <img src="data:image;base64,${item.baseImage}" class="wh100"></img>
+                  <img src="${item.coverImgUrl}" class="wh100"></img>
                 </div>
                 <div class="latestList-item-text">
                   <div class="latestList-item-text-title">${ item.title }</div>
@@ -110,7 +110,7 @@
             <#list relatedList as item>
               <div class="latestList-item" data-item='${item.id}'>
                 <div class="latestList-item-image">
-                  <img src="data:image;base64,${item.baseImage}" class="wh100"></img>
+                  <img src="${item.coverImgUrl}" class="wh100"></img>
                 </div>
                 <div class="latestList-item-text">
                   <div class="latestList-item-text-title">${ item.title }</div>