소스 검색

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

Lijy 10 달 전
부모
커밋
299f5bb9a2
15개의 변경된 파일374개의 추가작업 그리고 13개의 파일을 삭제
  1. 24 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 66 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportWriteOffController.java
  3. 66 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportWriteOff.java
  4. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OvertimeListVO.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  6. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportWriteOffMapper.java
  8. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  9. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportWriteOffService.java
  10. 5 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 50 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  12. 26 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportWriteOffServiceImpl.java
  13. 15 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  14. 60 7
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  15. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportWriteOffMapper.xml

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

@@ -2737,5 +2737,29 @@ public class ReportController {
     public HttpRespMsg cancelReminder(String createDate,String userId) throws Exception {
         return reportService.cancelReminder(request,createDate,userId);
     }
+
+    /**
+    * @Description:获取转移工时数据的列表
+    * @Param: [startDate, endDate, userId, projectId, pageIndex, pageSize]
+    * @return: com.management.platform.util.HttpRespMsg
+    * @Author: yurk
+    * @Date: 2024/7/17
+    */
+    @RequestMapping("/getReportListWithTransfer")
+    public HttpRespMsg getReportListWithTransfer(String startDate,String endDate,String userIds,Integer projectId,Integer pageIndex,Integer pageSize){
+        return reportService.getReportListWithTransfer(startDate,endDate,userIds,projectId,pageIndex,pageSize);
+    }
+
+    /**
+    * @Description:提供转移工时数据
+    * @Param: [reportIds, projectId, groupId, stageId]
+    * @return: com.management.platform.util.HttpRespMsg
+    * @Author: yurk
+    * @Date: 2024/7/17
+    */
+    @RequestMapping("/transferReport")
+    public HttpRespMsg transferReport(String reportIds,@RequestParam Integer projectId,@RequestParam Integer groupId,@RequestParam Integer stageId){
+        return reportService.transferReport(reportIds,projectId,groupId,stageId);
+    }
 }
 

+ 66 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportWriteOffController.java

@@ -0,0 +1,66 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.ReportWriteOff;
+import com.management.platform.entity.User;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ReportWriteOffService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+@RestController
+@RequestMapping("/report-write-off")
+public class ReportWriteOffController {
+
+    @Resource
+    private ReportWriteOffService reportWriteOffService;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private UserMapper userMapper;
+
+
+    /**
+     * @Description:核销日报加班 传值 1-表示核销操作 0-恢复操作
+     * @Param: [reportId, type]
+     * @return: com.management.platform.util.HttpRespMsg
+     * @Author: yurk
+     * @Date: 2024/7/17
+     */
+    @RequestMapping("/writeOffReport")
+    public HttpRespMsg writeOffReport(@RequestParam Integer reportId, @RequestParam Integer type,String reason){
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        ReportWriteOff reportWriteOff = reportWriteOffService.getById(reportId);
+        if(reportWriteOff==null){
+            reportWriteOff=new ReportWriteOff();
+            reportWriteOff.setReportId(reportId);
+            reportWriteOff.setCreatorId(user.getId());
+            reportWriteOff.setCreatorName(user.getName());
+        }
+        reportWriteOff.setWriteOff(type);
+        reportWriteOff.setReason(reason);
+        reportWriteOff.setCreateTime(LocalDateTime.now());
+        if(!reportWriteOffService.saveOrUpdate(reportWriteOff)){
+            msg.setError("验证失败");
+        }
+        return msg;
+    }
+
+}
+

+ 66 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportWriteOff.java

@@ -0,0 +1,66 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+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-07-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportWriteOff extends Model<ReportWriteOff> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("report_id")
+    private Integer reportId;
+
+    /**
+     * 0-正常 1-已核销
+     */
+    @TableField("write_off")
+    private Integer writeOff;
+
+    /**
+     * 核销人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 核销人
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 核销时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 核销原因
+     */
+    @TableField("reason")
+    private String reason;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.reportId;
+    }
+
+}

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OvertimeListVO.java

@@ -16,4 +16,5 @@ public class OvertimeListVO {
     private String startDate;
     private String endDate;
     private Integer[] departmentId;
+    private Integer writeOffValue;
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -90,7 +90,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     //获取按照项目分组导出的项目数据
     List<HashMap<String, Object>> getExportGroupData(String projectCategorySub,Integer companyId);
 
-    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,List<Integer> branchDepartment,List<Integer> deptIds);
+    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,List<Integer> branchDepartment,List<Integer> deptIds,Integer writeOffValue);
 
     //获取项目的成本预警和实际工时表
     List<HashMap> getProjectCostAlarm(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);

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

@@ -219,4 +219,7 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String, Object>> getUserDailyWorkTimeReminder(Integer companyId,String startDate, String endDate,@Param("list") List<Integer> deptIds,Integer deptId,String leaderId);
 
+    List<Map<String, Object>> getReportListWithTransfer(Integer companyId, String startDate, String endDate,@Param("list") List<String> userIdList, Integer projectId, Integer start, Integer size);
+
+    Integer getReportListWithTransferCount(Integer companyId, String startDate, String endDate,@Param("list") List<String> userIdList, Integer projectId);
 }

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

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

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

@@ -161,4 +161,8 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg cancelReminder(HttpServletRequest request, String createDate, String userId);
 
     HttpRespMsg cancelHasPushForSap(String uuids);
+
+    HttpRespMsg getReportListWithTransfer(String startDate, String endDate, String userIds, Integer projectId, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg transferReport(String reportIds, Integer projectId, Integer groupId, Integer stageId);
 }

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportWriteOffService.java

@@ -0,0 +1,17 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ReportWriteOff;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+public interface ReportWriteOffService extends IService<ReportWriteOff> {
+
+}

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

@@ -4097,6 +4097,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String endDate = overtimeListVO.getEndDate();
         String userId = overtimeListVO.getUserId();
         Integer[] deptId = overtimeListVO.getDepartmentId();
+        Integer writeOffValue = overtimeListVO.getWriteOffValue();
         ArrayList<Integer> departmentId = null;
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
@@ -4129,7 +4130,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 branchDepartment.addAll(getBranchDepartment(dept, allDepartmentList));
             }
         }
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds);
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds,writeOffValue);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限
@@ -4158,6 +4159,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String endDate = overtimeListVO.getEndDate();
         Integer projectId = overtimeListVO.getProjectId();
         Integer[] deptId = overtimeListVO.getDepartmentId();
+        Integer writeOffValue = overtimeListVO.getWriteOffValue();
         try {
             String token = request.getHeader("TOKEN");
             User user = userMapper.selectById(token);
@@ -4192,7 +4194,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     branchDepartment.addAll(getBranchDepartment(dept, allDepartmentList));
                 }
             }
-            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds);
+            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds,writeOffValue);
             boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<String> headList = new ArrayList<String>();
@@ -7487,7 +7489,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
             }
         }
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds,null);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限

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

@@ -5608,6 +5608,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titles.add("部门主要负责人");
             titles.add(MessageUtils.message("entry.projectId"));
             titles.add(MessageUtils.message("entry.projectName"));
+            titles.add(MessageUtils.message("entry.projectStage"));
             if(companyId==936){
                 titles.add("项目状态");
                 titles.add("自主项目类别");
@@ -5913,6 +5914,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 item.add((String) map.get("projectCode"));
                 item.add((String) map.get("project"));
+                item.add(map.get("stageName")==null?"":(String) map.get("stageName"));
                 if(companyId==936){
                     String projectStatus="";
                     switch (Integer.valueOf(String.valueOf(map.get("projectStatus")))){
@@ -9600,4 +9602,52 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         cancelReportPushSap(uuids,user);
         return msg;
     }
+
+    @Override
+    public HttpRespMsg getReportListWithTransfer(String startDate, String endDate, String userIds, Integer projectId, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        Integer start=null;
+        Integer size=null;
+        if(pageIndex!=null&&pageSize!=null){
+            size=pageSize;
+            start=(pageIndex-1)*size;
+        }
+        List<String> userIdList=new ArrayList<>();
+        if(!StringUtils.isEmpty(userIds)){
+            userIdList = Arrays.asList(userIds.split(","));
+        }
+        List<Map<String,Object>> resultList=reportMapper.getReportListWithTransfer(companyId,startDate,endDate,userIdList,projectId,start,size);
+        Integer count=reportMapper.getReportListWithTransferCount(companyId,startDate,endDate,userIdList,projectId);
+        Map<String,Object> map=new HashMap<>();
+        map.put("result",resultList);
+        map.put("count",count);
+        msg.setData(map);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg transferReport(String reportIds, Integer projectId, Integer groupId, Integer stageId) {
+        HttpRespMsg msg=new HttpRespMsg();
+        if(!StringUtils.isEmpty(reportIds)){
+            List<String> reportIdList = Arrays.asList(reportIds.split(","));
+            List<Report> transferReportList=new ArrayList<>();
+            String stagesName = stagesMapper.selectById(stageId).getStagesName();
+            for (String reportIdStr : reportIdList) {
+                Integer reportId = Integer.valueOf(reportIdStr);
+                Report report = new Report();
+                report.setId(reportId);
+                report.setProjectId(projectId);
+                report.setGroupId(groupId);
+                report.setStage(stagesName);
+                transferReportList.add(report);
+            }
+            if(transferReportList.size()>0){
+                if(!reportService.updateBatchById(transferReportList)){
+                    msg.setError("验证失败");
+                }
+            }
+        }
+        return msg;
+    }
 }

+ 26 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportWriteOffServiceImpl.java

@@ -0,0 +1,26 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ReportWriteOff;
+import com.management.platform.mapper.ReportWriteOffMapper;
+import com.management.platform.service.ReportWriteOffService;
+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-07-17
+ */
+@Service
+public class ReportWriteOffServiceImpl extends ServiceImpl<ReportWriteOffMapper, ReportWriteOff> implements ReportWriteOffService {
+
+    @Resource
+    private ReportWriteOffMapper reportWriteOffMapper;
+
+}

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

@@ -780,15 +780,18 @@
 
     <!-- 获取某个员工的某时间段内的加班详情 -->
     <select id="getOvertimeDetail" resultType="java.util.Map">
-        SELECT date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
+        SELECT report.id AS reportId,date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
         report.`creator_id` AS userId, user.`name` AS username,user.corpwx_userid as corpwxUserId,user.job_number as jobNumber, report.`working_time` AS workingTime,
         IFNULL(report.`overtime_hours`, 0) AS overtimeHours,project.id as projectId,department.corpwx_deptid as corpwxDeptId,
         project.project_name as projectName,project.project_code as projectCode,
         IFNULL(report.overtime_cost, 0) AS cost,
-        IFNULL(report_extra_degree.name,'') as degreeName, department.department_name as departmentName FROM report LEFT JOIN user ON user.id = report.`creator_id`
+        IFNULL(report_extra_degree.name,'') as degreeName, department.department_name as departmentName,
+        (CASE WHEN rwo.`write_off`=1 THEN 1 ELSE 0 END) AS writeOffValue,rwo.creator_name as writeOffUser,date_format(rwo.`create_time`, '%Y-%m-%d %H:%i:%s') as writeOffTime,rwo.reason as writeOffReason
+        FROM report LEFT JOIN user ON user.id = report.`creator_id`
         left join project on project.id = report.project_id
         left join report_extra_degree on report_extra_degree.id = report.degree_id
         left join department on department.department_id = report.dept_id
+        LEFT JOIN report_write_off rwo ON rwo.`report_id`=report.`id`
         WHERE report.is_overtime = 1
         and report.`state` = 1
         AND report.`create_date` BETWEEN #{startDate} and #{endDate}
@@ -811,6 +814,16 @@
                 #{item}
             </foreach>
         </if>
+        <if test="writeOffValue!=null">
+            <choose>
+                <when test="writeOffValue==1">
+                    and rwo.write_off=1
+                </when>
+                <otherwise>
+                    and (rwo.write_off is null or rwo.write_off=0)
+                </otherwise>
+            </choose>
+        </if>
         order by user.create_time asc, report.create_date desc
     </select>
 

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

@@ -70,7 +70,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName,
         a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -127,7 +127,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName,
         GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3,a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -211,7 +211,7 @@
         departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as
         projectAuditTime,project_main.name as projectMainName,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,
         DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -279,7 +279,7 @@
         departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as
         projectAuditTime,project_main.name as projectMainName,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub,
         GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3
-        , a.batch_id as batchId,a.sap_service_id as sapServiceId,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        , a.batch_id as batchId,a.sap_service_id as sapServiceId,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,project.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -342,7 +342,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId, a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as projectAuditTime,project_main.name as projectMainName
         ,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -966,14 +966,16 @@
         )
     </select>
     <select id="getMyOvertime"  resultType="java.lang.Double">
-        select IFNULL(sum(overtime_hours),0) from report where creator_id=#{userId}
+        SELECT IFNULL(SUM(overtime_hours),0) FROM report
+        LEFT JOIN report_write_off rwo ON rwo.`report_id`=report.id
+        WHERE report.creator_id=#{userId} AND (rwo.`write_off` IS NULL OR rwo.`write_off`=0)
         <if test="startDate != null">
             and create_date &gt;= #{startDate}
         </if>
     </select>
     <select id="getProWaitingApproveCnt" resultType="java.util.HashMap">
         select count(1) as num, user.dingding_userid as auditorDDId ,user.corpwx_userid as corpwxUserid from report
-                                                                                                                 left join `user` on `user`.id = project_auditor_id
+        left join `user` on `user`.id = project_auditor_id
         where state = 0 and project_audit_state = 0 and is_dept_audit = 0
           and report.company_id = #{companyId}
           and `user`.is_active=1
@@ -1287,4 +1289,55 @@
         GROUP BY r.create_date,r.creator_id
         order by u.id,r.create_date
     </select>
+
+    <select id="getReportListWithTransfer" resultType="java.util.Map">
+        SELECT r.id AS reportId,u.`job_number` AS jobNumber,u.name AS userName,d.`department_name` AS deptName,
+        p.`project_code` AS projectCode,p.`project_name` AS projectName,date_format(r.`create_date`,'%Y-%m-%d') AS createDate,r.`working_time` AS workingTime,
+        tg.`name` AS groupName,s.`stages_name` AS stageName FROM report r
+        LEFT JOIN `user` u ON r.`creator_id`=u.`id`
+        LEFT JOIN project p ON r.`project_id`=p.`id`
+        LEFT JOIN task_group tg ON tg.`project_id`=r.`group_id`
+        LEFT JOIN stages s ON s.`project_id`=p.id AND s.`group_id`=tg.`id`
+        LEFT JOIN department d ON d.`department_id`=u.`department_id`
+        WHERE r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="list!=null and list.size()>0">
+            AND r.creator_id in
+            <foreach collection="list" separator="," open="(" close="" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="projectId!=null">
+            AND p.id=#{projectId}
+        </if>
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="getReportListWithTransferCount" resultType="java.lang.Integer">
+        select count(1) from (
+        SELECT r.id AS reportId FROM report r
+        LEFT JOIN `user` u ON r.`creator_id`=u.`id`
+        LEFT JOIN project p ON r.`project_id`=p.`id`
+        LEFT JOIN task_group tg ON tg.`project_id`=r.`group_id`
+        LEFT JOIN stages s ON s.`project_id`=p.id AND s.`group_id`=tg.`id`
+        LEFT JOIN department d ON d.`department_id`=u.`department_id`
+        WHERE r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="list!=null and list.size()>0">
+            AND r.creator_id in
+            <foreach collection="list" separator="," open="(" close="" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="projectId!=null">
+            AND p.id=#{projectId}
+        </if>
+        ) as total
+    </select>
 </mapper>

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportWriteOffMapper.xml

@@ -0,0 +1,20 @@
+<?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.ReportWriteOffMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportWriteOff">
+        <id column="report_id" property="reportId" />
+        <result column="write_off" property="writeOff" />
+        <result column="creator_id" property="creatorId" />
+        <result column="creator_name" property="creatorName" />
+        <result column="create_time" property="createTime" />
+        <result column="reason" property="reason" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        report_id, write_off, creator_id, creator_name, create_time, reason
+    </sql>
+
+</mapper>