Bläddra i källkod

增加用户工作台自定义接口

seyason 9 månader sedan
förälder
incheckning
43ea00533d

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

@@ -0,0 +1,36 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.UserWorkbench;
+import com.management.platform.service.UserWorkbenchService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-08-06
+ */
+@RestController
+@RequestMapping("/user-workbench")
+public class UserWorkbenchController {
+    @Resource
+    private UserWorkbenchService userWorkbenchService;
+
+    @RequestMapping("/saveWorkbench")
+    public HttpRespMsg saveWorkbench(String userId, String workbench) {
+        UserWorkbench userWorkbench = new UserWorkbench();
+        userWorkbench.setUserId(userId);
+        userWorkbench.setTableList(workbench);
+        userWorkbenchService.saveOrUpdate(userWorkbench);
+        return new HttpRespMsg();
+    }
+}
+

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

@@ -0,0 +1,44 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-08-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class UserWorkbench extends Model<UserWorkbench> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 用户id
+     */
+    @TableId("user_id")
+    private String userId;
+
+    /**
+     * 表集合,json array格式
+     */
+    @TableField("table_list")
+    private String tableList;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.userId;
+    }
+
+}

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserVO.java

@@ -1,5 +1,6 @@
 package com.management.platform.entity.vo;
 
+import com.alibaba.fastjson.JSONArray;
 import com.management.platform.entity.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -26,4 +27,6 @@ public class UserVO extends User {
 
     private boolean hasAuditDept;
 
+    private JSONArray userWorkbench;
+
 }

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

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

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserWorkbenchService.java

@@ -0,0 +1,19 @@
+package com.management.platform.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.management.platform.entity.UserWorkbench;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-08-06
+ */
+public interface UserWorkbenchService extends IService<UserWorkbench> {
+
+    public JSONArray getMyWorkbench(String userId);
+
+}

+ 14 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -318,7 +318,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     .mapToDouble(r->r.getWorkingTime()).sum();
             String rWorkTime=reallWorkTime==null ? "0":df.format(reallWorkTime);
             project.setReallyWorkTime(rWorkTime);
-            String pEstimatedWork=Integer.valueOf(String.valueOf(project.getManDay()))==null ? 0*allday+"": project.getManDay()*allday+"";
+            String pEstimatedWork=project.getManDay()==null? "0": (project.getManDay()*allday+"");
             project.setEstimatedWorkTime(pEstimatedWork);
             List<TaskGroup> taskGroupCollect = taskGroups.stream().filter(t -> t.getProjectId().equals(project.getId())).collect(Collectors.toList());
 
@@ -649,17 +649,20 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
             long end = System.currentTimeMillis();
             List<String> stringList = providerCategoryList.stream().map(ProviderCategory::getProviderCategoryName).distinct().collect(Collectors.toList());
-            //处理项目日报审核人
-            if(projectIds.size()>0){
-                List<ProjectAuditor> projectAuditorList = projectAuditorMapper.selectList(new LambdaQueryWrapper<ProjectAuditor>().in(ProjectAuditor::getProjectId, projectIds));
-                list.forEach(l->{
-                    Optional<ProjectAuditor> first = projectAuditorList.stream().filter(p -> p.getProjectId().equals(l.getId())).findFirst();
-                    if(first.isPresent()){
-                        l.setProjectAuditorName(first.get().getAuditorName());
-                        l.setProjectAuditorId(first.get().getAuditorId());
-                    }
-                });
+            //针对成都明夷电子科技有限公司,显示项目日报审核人
+            if (company.getCompanyName().equals("成都明夷电子科技有限公司")) {
+                if(projectIds.size()>0){
+                    List<ProjectAuditor> projectAuditorList = projectAuditorMapper.selectList(new LambdaQueryWrapper<ProjectAuditor>().in(ProjectAuditor::getProjectId, projectIds));
+                    list.forEach(l->{
+                        Optional<ProjectAuditor> first = projectAuditorList.stream().filter(p -> p.getProjectId().equals(l.getId())).findFirst();
+                        if(first.isPresent()){
+                            l.setProjectAuditorName(first.get().getAuditorName());
+                            l.setProjectAuditorId(first.get().getAuditorId());
+                        }
+                    });
+                }
             }
+
             //stringList.add("未分类");
             stringList.add(MessageUtils.message("excel.unclassified"));
             Long total = projectIPage.getTotal();
@@ -13554,8 +13557,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             item.put("corpwxDeptId",corpwxDeptid);
                             item.put("department_name",departmentName);
                             if(taskGroup.isPresent()){
-//                                List<Map<String, Object>> mapList = resultList.stream().filter(r -> Integer.valueOf(String.valueOf(r.get("projectId"))).equals(project.getId())
-//                                        && Integer.valueOf(String.valueOf(r.get("groupId"))).equals(taskGroup.get().getId()) && (Integer.valueOf(String.valueOf(r.get("deptId"))).equals(7458) || subDeptIds.contains(Integer.valueOf(String.valueOf(r.get("deptId")))))).collect(Collectors.toList());
                                 List<Map<String, Object>> mapList = resultList.stream().filter(r -> Integer.valueOf(String.valueOf(r.get("projectId"))).equals(project.getId())
                                         && Integer.valueOf(String.valueOf(r.get("groupId"))).equals(taskGroup.get().getId())).collect(Collectors.toList());
                                 if(mapList!=null&&mapList.size()>0){

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

@@ -113,6 +113,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Autowired
     private RestTemplate restTemplate;
     @Resource
+    private UserWorkbenchService userWorkbenchService;
+    @Resource
     ExpenseMainTypeService expenseMainTypeService;
     @Resource
     private SysRoleModuleMapper sysRoleModuleMapper;
@@ -726,6 +728,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         } else {
             user.setFunctionList(new ArrayList<>());
         }
+
+        //设置用户的工作台模块
+        user.setUserWorkbench(userWorkbenchService.getMyWorkbench(user.getId()));
     }
 
     private boolean judgeIsLeader(String userId) {

+ 73 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserWorkbenchServiceImpl.java

@@ -0,0 +1,73 @@
+package com.management.platform.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.UserWorkbench;
+import com.management.platform.mapper.UserWorkbenchMapper;
+import com.management.platform.service.UserWorkbenchService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-08-06
+ */
+@Service
+public class UserWorkbenchServiceImpl extends ServiceImpl<UserWorkbenchMapper, UserWorkbench> implements UserWorkbenchService {
+
+    @Resource
+    private UserWorkbenchMapper userWorkbenchMapper;
+
+    public final WorkBenchItem[] WORKBENCH_MODULES = new WorkBenchItem[]{
+            new WorkBenchItem(1, "我的工时日历", "basic"),
+            new WorkBenchItem(2, "我的工时统计", "basic"),
+            new WorkBenchItem(3, "团队项目工时统计", "basic"),//分为全部项目查看权限和负责项目查看权限
+            new WorkBenchItem(4, "工时状态统计", "basic"),
+            new WorkBenchItem(5, "我的近期执行任务", "project"),
+            new WorkBenchItem(6, "项目/非项目工时占比", "basic"),
+            new WorkBenchItem(7, "团队成员工时统计", "basic"),
+            new WorkBenchItem(9, "近期任务工时", "basic"),
+            new WorkBenchItem(10, "项目工时走势图", "basic")
+    };
+
+    class WorkBenchItem {
+        int id;
+        String name;
+        String module;
+
+        public WorkBenchItem(int id, String name, String module) {
+            this.id = id;
+            this.name = name;
+            this.module = module;
+        }
+    }
+    @Override
+    public JSONArray getMyWorkbench(String userId) {
+        UserWorkbench userWorkbench = userWorkbenchMapper.selectById(userId);
+        JSONArray array = new JSONArray();
+        if (userWorkbench == null) {
+            //返回默认的前四个模块
+            for (int i = 0; i < WORKBENCH_MODULES.length; i++) {
+                if (i < 4) {
+                    JSONObject object = new JSONObject();
+                    object.put("id", WORKBENCH_MODULES[i].id);
+                    object.put("position", i/2+","+(i)%2);
+                    object.put("size", 1);
+                    array.add(object);
+                }
+            }
+        } else {
+            String workbench = userWorkbench.getTableList();
+            array = JSONArray.parseArray(workbench);
+        }
+        return array;
+    }
+}

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -3,7 +3,7 @@ server:
   tomcat:
     uri-encoding: utf-8
     max-http-form-post-size: -1
-    connection-timeout: 18000000s
+    connection-timeout: 18000000
 spring:
   servlet:
     multipart:
@@ -22,7 +22,9 @@ spring:
     hikari:
       maximum-pool-size: 60
       minimum-idle: 10
-      max-lifetime: 180000
+      # 空闲连接超时时间,3分钟
+      idle-timeout: 180000
+      max-lifetime: 1800000
       # 数据库连接超时时间,默认30秒,即30000
       connection-timeout: 60000
       connection-test-query: SELECT 1

+ 6 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1907,10 +1907,11 @@
         SELECT p.project_name AS projectName,p.id AS projectId,tg.id AS groupId,d.department_name,d.department_id AS deptId,d.corpwx_deptid AS corpwxDeptId,tg.name AS groupName,
         IFNULL(r.realHour,0) AS realHour,IFNULL(r.realCost,0) AS realCost,IFNULL(r.normalHour,0) as normalHour,IFNULL(r.overHour,0) as overHour,
         IFNULL(tg.man_day*8,0) AS planHour,IFNULL((SELECT SUM(change_man_day*8) FROM `group_budget_review` WHERE group_id=tg.`id` AND `status`=1),0) AS afterSetPlanHour
-        FROM task_executor te
-        LEFT JOIN task t ON t.id=te.task_id
-        LEFT JOIN user u ON te.executor_id=u.id
-        LEFT JOIN task_group tg ON tg.id=t.group_id
+        FROM task_group tg
+        LEFT JOIN task t ON tg.id = t.group_id
+        LEFT JOIN task_executor te ON t.id = te.task_id
+        LEFT JOIN user u
+        ON te.executor_id = u.id
         LEFT JOIN project p ON p.id=tg.project_id
         LEFT JOIN department d ON d.department_id=u.department_id
         LEFT JOIN (
@@ -1920,7 +1921,7 @@
          AND create_date BETWEEN #{startDate} AND #{endDate}
         </if>
         AND project_id IS NOT NULL AND company_id=#{companyId} GROUP BY group_id,dept_id) r ON r.group_id=tg.`id` and r.dept_id=u.department_id
-        WHERE u.company_id=#{companyId}
+        WHERE p.company_id=#{companyId}
         AND tg.name IN ('生产部电气','生产部车间','工程部现场安装施工','工程部配合调试','研发部工艺设计','研发部结构设计','研发部BIM设计','研发部电气设计','研发部工艺调试验收','研发部电气调试验收')
         <if test="userId!=null and userId!=''">
             and t.executor_id=#{userId}

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

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