浏览代码

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

ggooalice 2 年之前
父节点
当前提交
e88f15a808
共有 13 个文件被更改,包括 249 次插入30 次删除
  1. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ThirdPartyInterfaceController.java
  3. 46 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ThirdPartyInterface.java
  4. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ThirdPartyInterfaceMapper.java
  5. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  6. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ThirdPartyInterfaceService.java
  7. 27 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  8. 42 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  9. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ThirdPartyInterfaceServiceImpl.java
  10. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  11. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ThirdPartyInterfaceMapper.xml
  12. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml
  13. 34 19
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

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

@@ -16,6 +16,7 @@ import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.WorkDayCalculateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -1180,5 +1181,10 @@ public class ReportController {
     public HttpRespMsg getlastWeekFillTime(String userId) {
         return reportService.getlastWeekFillTime(userId);
     }
+
+    @GetMapping("/getReportListByToken")
+    public HttpRespMsg getReportListByToken(@RequestParam String token, @RequestParam String startDate, @RequestParam String endDate){
+        return reportService.getReportListByToken(token,startDate,endDate);
+    }
 }
 

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ThirdPartyInterfaceController.java

@@ -0,0 +1,20 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-04
+ */
+@RestController
+@RequestMapping("/third-party-interface")
+public class ThirdPartyInterfaceController {
+
+}
+

+ 46 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ThirdPartyInterface.java

@@ -0,0 +1,46 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ThirdPartyInterface extends Model<ThirdPartyInterface> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("comapny_id")
+    private Integer comapnyId;
+
+    @TableField("token")
+    private String token;
+
+    /**
+     * token过期时间
+     */
+    @TableField("expire_time")
+    private LocalDateTime expireTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.comapnyId;
+    }
+
+}

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

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ThirdPartyInterface;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-04
+ */
+public interface ThirdPartyInterfaceMapper extends BaseMapper<ThirdPartyInterface> {
+
+}

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

@@ -86,4 +86,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg approveAllImport(HttpServletRequest request);
 
     HttpRespMsg denyHisReport(Integer hisId, String reason, HttpServletRequest request);
+
+    HttpRespMsg getReportListByToken(String token, String startDate, String endDate);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ThirdPartyInterfaceService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ThirdPartyInterface;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-04
+ */
+public interface ThirdPartyInterfaceService extends IService<ThirdPartyInterface> {
+
+}

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

@@ -2,9 +2,7 @@ package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.entity.AuditWorkflowTimeSetting;
-import com.management.platform.entity.Department;
-import com.management.platform.entity.User;
+import com.management.platform.entity.*;
 import com.management.platform.entity.vo.DepartmentMasterVO;
 import com.management.platform.entity.vo.DepartmentVO;
 import com.management.platform.entity.vo.SysRichFunction;
@@ -50,6 +48,12 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     private ParticipationMapper participationMapper;
     @Resource
     private AuditWorkflowTimeSettingMapper auditWorkflowTimeSettingMapper;
+    @Resource
+    private ReportMapper reportMapper;
+    @Resource
+    private LeaveSheetMapper leaveSheetMapper;
+    @Resource
+    private AuditWorkflowSetting auditWorkflowSetting;
     //新增部门
     @Override
     public HttpRespMsg insertDepartment(String departmentName, Integer superiorId, String managerId, String reportAuditUserid,  HttpServletRequest request) {
@@ -178,6 +182,26 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                             .eq("manage_dept_id", departmentId));
                 }
             }
+            Integer reportCut = reportMapper.selectCount(new QueryWrapper<Report>().eq("dept_id", departmentId));
+            if(reportCut>0){
+                httpRespMsg.setError("当前部门已被日报数据使用");
+                return httpRespMsg;
+            }
+            Integer auditDeptidCut = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("audit_deptid", departmentId));
+            if(auditDeptidCut>0){
+                httpRespMsg.setError("当前部门已被请假数据使用");
+                return httpRespMsg;
+            }
+            Integer auditWorkflowTimeSettingCut = auditWorkflowTimeSettingMapper.selectCount(new QueryWrapper<AuditWorkflowTimeSetting>().eq("audit_dept_id", departmentId));
+            if(auditWorkflowTimeSettingCut>0){
+                httpRespMsg.setError("当前部门已被工时审批流数据使用");
+                return httpRespMsg;
+            }
+            Integer auditWorkflowSettingCut = auditWorkflowSetting.selectCount(new QueryWrapper<AuditWorkflowSetting>().eq("audit_dept_id", departmentId));
+            if(auditWorkflowSettingCut>0){
+                httpRespMsg.setError("当前部门已被请假出差审批流数据使用");
+                return httpRespMsg;
+            }
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");
             return httpRespMsg;

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

@@ -156,6 +156,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private GroupParticipatorMapper groupParticipatorMapper;
     @Resource
     private ReportLogMapper reportLogMapper;
+    @Resource
+    private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
 
     @Value(value = "${upload.path}")
     private String path;
@@ -1656,11 +1658,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             user.put("id", u.getId());
             user.put("name", u.getName());
             user.put("departmentId", u.getDepartmentId());
+            List<Map<String, Object>> mapList = reportNameByDate.stream().filter(r -> r.get("id").equals(u.getId())).collect(Collectors.toList());
             Optional<Map<String, Object>> first = reportNameByDate.stream().filter(r -> r.get("id").equals(u.getId())).findFirst();
-            
-            if (first.isPresent()) {
-                user.put("state", first.get().get("state"));
-                user.put("workingTime", first.get().get("workingTime"));
+            BigDecimal bigDecimal=new BigDecimal(0);
+            for (Map<String, Object> map : mapList) {
+                bigDecimal=bigDecimal.add(BigDecimal.valueOf((Double) map.get("workingTime")));
+            }
+            boolean b = reportNameByDate.stream().anyMatch(r -> r.get("state").equals(1));
+            if (b) {
+                user.put("state",1);
+                user.put("workingTime",bigDecimal);
+            }
+            if(first.isPresent()&&!b){
+                user.put("state",first.get().get("state"));
+                user.put("workingTime",bigDecimal);
             }
             userMapList.add(user);
         }
@@ -2270,6 +2281,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //管理员看全公司所有人
             allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
         }
+        List<User> needRangeUserList=new ArrayList<>();
+        for (User u : allRangeUserList) {
+            if(u.getInactiveDate()==null||(u.getInactiveDate()!=null&&u.getInactiveDate().isAfter(LocalDate.parse(startDate))||u.getIsActive()==1)){
+                needRangeUserList.add(u);
+            }
+        }
         List<UserMonthWork> userMonthWorks = new ArrayList<UserMonthWork>();
         //准备部门数据
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
@@ -2308,7 +2325,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         LocalDateTime c=LocalDateTime.now();
         //计算未填的人员
-        List<User> noReportUserList = allRangeUserList.stream()
+        List<User> noReportUserList = needRangeUserList.stream()
                 .filter(au->!userMonthWorks.stream().anyMatch(mon->mon.userId.equals(au.getId())))
                 .collect(Collectors.toList());
 
@@ -3485,4 +3502,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg getReportListByToken(String token, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        List<ThirdPartyInterface> thirdPartyInterfaceList = thirdPartyInterfaceMapper.selectList(new QueryWrapper<ThirdPartyInterface>().eq("token", token));
+        if(thirdPartyInterfaceList.size()==0){
+            msg.setError("token错误");
+        }
+        for (ThirdPartyInterface thirdPartyInterface : thirdPartyInterfaceList){
+            if(LocalDateTime.now().isAfter(thirdPartyInterface.getExpireTime())){
+                msg.setError("token过期失效");
+                return msg;
+            }
+            if(token.equals(thirdPartyInterface.getToken())){
+                List<HashMap<String, Object>> allReportByDate = reportMapper.getAllReportByDate(startDate,thirdPartyInterface.getComapnyId(), null, endDate, null, null, null);
+                msg.data=allReportByDate;
+            }
+        }
+        return msg;
+    }
+
 }

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ThirdPartyInterfaceServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ThirdPartyInterface;
+import com.management.platform.mapper.ThirdPartyInterfaceMapper;
+import com.management.platform.service.ThirdPartyInterfaceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-04
+ */
+@Service
+public class ThirdPartyInterfaceServiceImpl extends ServiceImpl<ThirdPartyInterfaceMapper, ThirdPartyInterface> implements ThirdPartyInterfaceService {
+
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -388,7 +388,7 @@
         <if test="leaderId != null and leaderId != ''">
             AND (a.project_auditor_id = #{leaderId} or project.incharger_id = #{leaderId})
         </if>
-        group by a.creator_id
+        group by a.creator_id,a.id
     </select>
 
     <!--根据日期,部门,指定人员获取报告上传人-->

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ThirdPartyInterfaceMapper.xml

@@ -0,0 +1,17 @@
+<?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.ThirdPartyInterfaceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ThirdPartyInterface">
+        <id column="comapny_id" property="comapnyId" />
+        <result column="token" property="token" />
+        <result column="expire_time" property="expireTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        comapny_id, token, expire_time
+    </sql>
+
+</mapper>

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -52,7 +52,7 @@
     <select id="getUserByDepartment" resultType="java.util.Map">
         SELECT a.id, a.role_id as roleId, a.role_name as roleName, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId}
@@ -74,7 +74,7 @@
     <select id="getUserByDepartmentList" resultType="java.util.Map">
         SELECT a.id,  a.role_id as roleId, a.role_name as roleName,  a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId} AND a.department_id IN

+ 34 - 19
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -1,9 +1,10 @@
 <template>
   <section>
-    <div>
-    <div class="sidebars" ref="sidebars" style="width: 200px;display: block;background: #fff;">
-      <div ref="abbisd" style="width: 100%;overflow: hidden;">
-        <div :style="'height: '+(windowHeight - 60)+'px; overflow: auto;overflow-x: hidden'">
+    <div style=" display: flex;">
+    <!-- <div class="sidebars" ref="sidebars" style="width: 200px;display: block;background: #fff;"> -->
+    <div ref="sidebars" style="width: 200px;display: block;background: #fff;border-right: 1px solid #E6E6E6;">
+      <div ref="abbisd" style="width: 200px;overflow: hidden;">
+        <!-- <div :style="'height: '+(windowHeight - 60)+'px; overflow: auto;overflow-x: hidden'"> -->
           <el-col :span="12">
             <el-menu
               :default-active="defaultActive"
@@ -12,7 +13,7 @@
               background-color="#ffffff"
               text-color="#666666"
               active-text-color="#20A0FF"
-              style="width:100%">
+              style="width:200px">
               <el-submenu index="1">
                 <template slot="title">
                   <i class="iconfont firerock-iconbaobiao"></i>
@@ -33,9 +34,9 @@
                 </el-submenu>
               </el-menu>
           </el-col>
-        </div>
+        <!-- </div> -->
       </div>
-      <div class="side" @click="side" ref="sid" style="left: 200px">
+      <div class="side" @click="side" ref="sid" style="left: 400px">
         <div class="spans" ref="side" style="left: -19px;"><i  ref="sideI" class="el-icon-arrow-left"></i></div>
       </div>
     </div>
@@ -45,8 +46,8 @@
       </div> -->
     <!-- 内容主体区域 -->
   <div class="contents" v-if="allWrong">
-    <div class="headine" ref="headine">
-      <h3 ref="headHe" style="padding-left: 210px">{{shuz[ins]}}</h3>
+    <div class="headine headConCon" ref="headine" :style="'width:'+(windowWidth - 400)+'px'">
+      <h3 ref="headHe" style="padding-left: 10px">{{shuz[ins]}}</h3>
       <div class="headScreen">
       <!-- 客户项目利润表的筛选 -->
         <template v-if="ins == 4">
@@ -93,8 +94,8 @@
       </div>
       <p style="float: right;margin-right: 25px;" ><el-button type="primary" @click="exportExcel" size="mini">报表导出</el-button></p>
     </div>
-    <div ref="staff" style="margin: 5px 0px 0px 200px; width: 84%">
-        <div class="staff">
+    <div ref="staff" style="margin: 5px 0px 0px 10px; width: 98%">
+        <div class="staff" ref="tabless" :style="'width:'+(windowWidth - 410)+'px'">
             <!--项目报表 -->
             <el-table v-if="ins == 0" key="0" border :data="list0" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column  prop="projectCode" label="项目编号"  width="120"></el-table-column>
@@ -618,6 +619,7 @@ export default {
       listPosition1:0,
       listPosition2:0,
       windowHeight: document.documentElement.clientHeight,
+      windowWidth: document.documentElement.clientWidth,
 
 
       list2: [],
@@ -674,7 +676,7 @@ export default {
   watch: {},
   created() {
     let height = window.innerHeight;
-    this.tableHeight = height - 200;
+    this.tableHeight = height - 170;
     const that = this;
     window.onresize = function temp() {
         that.tableHeight = window.innerHeight - 175;
@@ -1475,20 +1477,24 @@ export default {
     side() {
       if(this.$refs.side.style.left < '1px') {
         this.$refs.sidebars.style.width = '1px'
-        this.$refs.sid.style.left = '1px'
+        this.$refs.sid.style.left = '201px'
         this.$refs.side.style.left = '1px'
         this.$refs.sideI.className = 'el-icon-arrow-right'
         this.$refs.staff.style.margin = '5px 0px 0px 5px'
         this.$refs.staff.style.width = '100%'
-        this.$refs.headHe.style.paddingLeft = '20px'
+        this.$refs.headHe.style.paddingLeft = '10px'
+        this.$refs.headine.style.width = (this.windowWidth - 200)+'px'
+        this.$refs.tabless.style.width = (this.windowWidth - 200)+'px'
       } else {
         this.$refs.sidebars.style.width = '200px'
-        this.$refs.sid.style.left = '200px'
+        this.$refs.sid.style.left = '400px'
         this.$refs.side.style.left = '-19px'
         this.$refs.sideI.className = 'el-icon-arrow-left'
-        this.$refs.staff.style.margin = '5px 0px 0px 200px'
-        this.$refs.staff.style.width = '84%'
-        this.$refs.headHe.style.paddingLeft = '210px'
+        this.$refs.staff.style.margin = '5px 0px 0px 10px'
+        this.$refs.staff.style.width = '98%'
+        this.$refs.headHe.style.paddingLeft = '10px'
+        this.$refs.headine.style.width = (this.windowWidth - 400)+'px'
+        this.$refs.tabless.style.width = (this.windowWidth - 400)+'px'
       }
     },
     picks() {
@@ -1570,8 +1576,13 @@ export default {
 };
 </script>
 <style scoped>
+.headConCon {
+  position: fixed;
+  /* width: 99%; */
+  top: 60px;
+}
 .headine {
-  width: 100%;
+  /* width: 100%; */
   height: 46.4px;
   line-height: 46.4px;
   background: #fff;
@@ -1659,6 +1670,8 @@ export default {
   border-top: 1px solid #fff;
   border-right: 1px solid #fff;
   background: #fff;
+  position: fixed;
+  top: 110px;
 }
 
 /*  */
@@ -1727,9 +1740,11 @@ export default {
 /* 右边整体页面 */
 .contents {
   height: 100%;
+  width: 100%;
   /* padding: 30px; */
   background: #F7F7F7;
   /* position: absolute; */
+  position: relative;
 }
 
 .submits {