Parcourir la source

增加reportCc字段用于项目是否显示抄送人,抄送人可以看到该项目下员工提交的日报内容

seyason il y a 2 ans
Parent
commit
a13bef8aa3

+ 1 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -148,10 +148,9 @@ public class UserCorpwxTimeController {
                     }
                     return true;
                 }).map(Project::getProjectName).collect(Collectors.toList());
-
             }
             //添加公共项目
-            List<Project> publicProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
+            List<Project> publicProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()).eq("is_public", 1));
             if (publicProjects.size() > 0) {
                 List<String> collect = publicProjects.stream().filter(p->{
                     if (p.getPlanStartDate() != null) {

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-06-12
+ * @since 2023-06-27
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -474,6 +474,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("sync_ad")
     private Integer syncAd;
 
+    /**
+     * 是否日报审核人变为日报抄送人,当report_audit_type=5时,可以设置该字段为1
+     */
+    @TableField("report_cc")
+    private Integer reportCc;
+
 
     @Override
     protected Serializable pkVal() {

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -172,4 +172,8 @@ public interface ReportMapper extends BaseMapper<Report> {
     Map<String, Object> selectCostTimeByProject(String startDate, String endDate, Integer projectId);
 
     List<HashMap<String, Object>> selectFill(String userId,LocalDate startDate, LocalDate endDate);
+
+    List<Map<String, Object>> getCcReportNameByDate(String date, Integer companyId, String leaderId);
+
+    List<Map<String, Object>> getCcReportByDate(@Param("date") String date, @Param("id") String id, @Param("state") Integer state);
 }

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

@@ -331,7 +331,37 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     //担任项目经理或者日报审核人,查找相关的人员的日报
                     List<Map<String, Object>> puserNames = reportMapper.getReportNameByDate(date, user.getCompanyId(), leaderId);
                     List<Map<String, Object>> inchargeReportList= reportMapper.getInchargeReportByDate(date, leaderId, null);
+                    TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
+                    if (timeType.getReportAuditType() == 5 && timeType.getReportCc() == 1) {
+                        //存在抄送人的设置,需要把抄送人的项目相关日报也加上
+                        List<Map<String, Object>> viewUserNames = reportMapper.getCcReportNameByDate(date, user.getCompanyId(),leaderId);
+                        for (Map<String, Object> viewItem : viewUserNames) {
+                            boolean exists = false;
+                            for (Map<String, Object> u : puserNames) {
+                                if (u.get("id").equals(viewItem.get("id"))) {
+                                    exists = true;
+                                    break;
+                                }
+                            }
+                            if (!exists) {
+                                puserNames.add(viewItem);
+                            }
+                        }
 
+                        List<Map<String, Object>> viewReportList = reportMapper.getCcReportByDate(date, leaderId, null);
+                        for (Map<String, Object> viewItem : viewReportList) {
+                            boolean exists = false;
+                            for (Map<String, Object> u : inchargeReportList) {
+                                if (u.get("id").equals(viewItem.get("id"))) {
+                                    exists = true;
+                                    break;
+                                }
+                            }
+                            if (!exists) {
+                                inchargeReportList.add(viewItem);
+                            }
+                        }
+                    }
                     for (Map<String, Object> map2 : puserNames) {
 
                         if (nameList.size() > 0) {

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

@@ -463,6 +463,37 @@
         ORDER BY a.creator_id ASC
     </select>
 
+    <!-- 根据抄送人id,日期获取相关项目的全部报告信息 -->
+    <select id="getCcReportByDate" resultType="java.util.Map">
+        SELECT a.id, a.project_id as projectId, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType,
+        a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
+        a.end_time as endTime, b.incharger_id as inchargerId,
+        a.creator_id as creatorId, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
+        a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
+        , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,
+        department.department_name as auditDeptName, a.is_dept_audit as isDeptAudit, a.project_audit_state as projectAuditState,task_group.name as groupName,a.group_id as groupId, a.custom_data as customData
+        ,u.name as projectAuditorName, a.project_auditor_id as projectAuditorId, a.overtime_hours as overtimeHours, a.custom_text as customText, dept_manager.name as deptAuditorName,a.evaluate as evaluate
+        FROM report AS a
+        JOIN project AS b ON a.project_id=b.id
+        left join project_auditor on project_auditor.project_id = a.project_id
+        left join sub_project as d on d.id = a.sub_project_id
+        left join task on task.id = a.task_id
+        left join report_extra_degree on report_extra_degree.id = a.degree_id
+        left join department on department.department_id = a.audit_deptid
+        left join user dept_manager on dept_manager.id = a.audit_dept_managerid
+        left join task_group on task_group.id = a.group_id
+        left join user u on u.id = a.project_auditor_id
+        WHERE 1=1
+        <if test="date != null and date != ''">
+            AND a.create_date=#{date}
+        </if>
+        <if test="state != null">
+            AND a.state=#{state}
+        </if>
+        AND (project_auditor.auditor_id = #{id})
+        ORDER BY a.creator_id ASC
+    </select>
+
     <!--新版获取待审核的列表,一次性获取全部 -->
     <select id="getAuditReportList" resultType="java.util.Map">
         SELECT a.id, user.id as userId,user.corpwx_userid as corpwxUserid, user.name, DATE_FORMAT(a.create_date, '%Y-%m-%d') as date, a.project_id as projectId, b.project_code AS projectCode, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType,
@@ -593,6 +624,24 @@
         group by a.creator_id
     </select>
 
+    <select id="getCcReportNameByDate" resultType="java.util.Map">
+        SELECT DISTINCT b.id, b.name, IF (MAX(state) = 1, MIN(state), MAX(state)) AS state, a.department_audit_state as departmentAuditState, IFNULL(sum(a.working_time),0) as workingTime,a.evaluate as evaluate
+        FROM report AS a
+        JOIN user AS b ON a.creator_id=b.id
+        LEFT JOIN project_auditor ON a.project_id = project_auditor.project_id
+        WHERE 1=1
+        <if test="date != null and date != ''">
+            AND a.create_date=#{date}
+        </if>
+        <if test="companyId != null and companyId != ''">
+            AND b.company_id=#{companyId}
+        </if>
+        <if test="leaderId != null and leaderId != ''">
+            AND project_auditor.`auditor_id` = #{leaderId}
+        </if>
+        group by a.creator_id
+    </select>
+
     <!--根据日期,部门,指定人员获取报告上传人-->
     <select id="getReportNameByDateAndDept" resultType="java.util.Map">
         SELECT DISTINCT b.id, b.name ,a.evaluate as evaluate

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -1139,7 +1139,7 @@
   "ordinaryprojectsareopen": "普通项目只对参与人员开放,公共项目对所有成员开放",
   "supplier": "供应商",
   "newspaperauditor": "日报审核人",
-  "defaultistheprojectleader": "默认为项目负责人",
+  "defaultistheprojectleader": "默认为项目经理",
   "zheng-shu": "整数",
   "modifythereason": "修改原因",
   "contractamountasd": "合同金额修改原因",

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -116,7 +116,7 @@
                         <span v-if="user.userNameNeedTranslate != 1">{{project.inchargerName}}</span>
                         <span v-else><ww-open-data type='userName' :openid='project.inchargerName'></ww-open-data></span>
                     </el-link></div>
-                    <div style="margin-top:10px;color:#999;">{{ $t('newspaperauditor') }}</div>
+                    <div style="margin-top:10px;color:#999;">{{ user.timeType.reportCc == 1?'日报抄送人':$t('newspaperauditor') }}</div>
                     <div>
                         <span v-if="project.auditorList.length == 0" style="margin:10px;">-</span>
                         <el-link v-for="item in project.auditorList" :key="item.id" style="margin:10px;" @click="showUser(item.auditorId)">

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

@@ -545,7 +545,7 @@
                         </el-select>
                         <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="addForm.inchargerId" :distinction="'3'" @selectCal="selectCal" :disabled="canOnlyModParticipator || projectManagerEdit"></selectCat>
                     </el-form-item>
-                    <el-form-item :label="$t('newspaperauditor')" v-show="user.timeType.reportAuditType == 0 || user.timeType.reportAuditType == 4">
+                    <el-form-item :label="user.timeType.reportCc == 1?'日报抄送人':$t('newspaperauditor')" v-show="user.timeType.reportAuditType == 0 || user.timeType.reportAuditType == 4 || user.timeType.reportCc == 1">
                         <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.auditUserIds" multiple="true" :disabled="!(permissions.projectManagement|| user.id == addForm.inchargerId || user.id == addForm.creatorId)" filterable :placeholder="$t('defaultistheprojectleader')" style="width:100%;" >
                             <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>