shudonghui 1 éve
szülő
commit
9bf6ca34c3

+ 8 - 6
sop-api/src/main/java/com/qmth/sop/server/api/TBDingController.java

@@ -2,6 +2,7 @@ package com.qmth.sop.server.api;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.sop.business.activiti.service.ActivitiService;
 import com.qmth.sop.business.annotation.OperationLog;
@@ -30,6 +31,7 @@ import javax.validation.constraints.Min;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -65,14 +67,14 @@ public class TBDingController {
     @Resource
     TBSopInfoService tbSopInfoService;
 
-
+    @Aac(auth=false)
     @ApiOperation(value = "工时统计统计查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "工时统计统计查询结果", response = TBDingCountQueryResult.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "工时统计统计查询结果", response = TBDingSubmitQueryResult.class)})
     public Result query(
             @ApiParam(value = "服务单元", required = false) @RequestParam(required = false) Long serviceId,
-            @ApiParam(value = "提交状态", required = false) @RequestParam(required = false) String status,
-            @ApiParam(value = "提交人", required = false) @RequestParam(required = false) Long createId,
+            @ApiParam(value = "提交状态", required = false) @RequestParam(required = false) DingSubmitStatusEnum status,
+            @ApiParam(value = "提交人", required = false) @RequestParam(required = false) Long submitUserId,
             @ApiParam(value = "姓名(模糊查询)", required = false) @RequestParam(required = false) String userName,
             @ApiParam(value = "供应商", required = false) @RequestParam(required = false) Long supplierId,
             @ApiParam(value = "客户名称(模糊查询)", required = false) @RequestParam(required = false) String custom,
@@ -80,12 +82,12 @@ public class TBDingController {
             @ApiParam(value = "违规工时", required = false) @RequestParam(required = false) Long days,
             @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
             @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<TBDingCountQueryResult> resultIPage = tBDingService.query(new Page<>(pageNumber, pageSize), serviceId, status, createId, userName, supplierId, custom, sopNo, days);
+        IPage<TBDingSubmitQueryResult> resultIPage = tBDingService.query(new Page<>(pageNumber, pageSize), serviceId, Objects.nonNull(status)?status.name():"", submitUserId, userName, supplierId, custom, sopNo, days);
 
         return ResultUtil.ok(resultIPage);
     }
 
-
+    @Aac(auth=false)
     @ApiOperation(value = "工时统计统计接口")
     @RequestMapping(value = "/count", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "工时统计统计结果", response = TBDingCountResult.class)})

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/bean/result/TBDingAttendanceCountResult.java

@@ -24,9 +24,9 @@ public class TBDingAttendanceCountResult implements Serializable {
     Long total;
     @ApiModelProperty(value = "异常考勤")
     Long abnormal;
-    @ApiModelProperty(value = "累计人天")
+    @ApiModelProperty(value = "累计人天")
     Long allDays;
-    @ApiModelProperty(value = "累计工时")
+    @ApiModelProperty(value = "累计工时")
     Long allHours;
 
     public Long getTotal() {

+ 6 - 5
sop-business/src/main/java/com/qmth/sop/business/bean/result/TBDingCountQueryResult.java → sop-business/src/main/java/com/qmth/sop/business/bean/result/TBDingSubmitQueryResult.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.HeadFontStyle;
 import com.alibaba.excel.annotation.write.style.HeadStyle;
+import com.qmth.sop.common.enums.DingSubmitStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -17,11 +18,11 @@ import java.io.Serializable;
  * @author dhshu
  * @since 2023-08-01
  */
-@ApiModel(value = "TBDingCountQueryResult对象", description = "考勤打卡统计查询")
+@ApiModel(value = "TBDingSubmitQueryResult对象", description = "考勤打卡统计查询")
 @ColumnWidth(value = 30)
 @HeadStyle(fillForegroundColor = 11)
 @HeadFontStyle(color = 1)
-public class TBDingCountQueryResult implements Serializable {
+public class TBDingSubmitQueryResult implements Serializable {
 
 
     @ApiModelProperty(value = "服务单元")
@@ -83,7 +84,7 @@ public class TBDingCountQueryResult implements Serializable {
     private String submissionTime;
     @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
     @ExcelProperty(value = "提交状态")
-    private String status;
+    private DingSubmitStatusEnum status;
 
     public String getService() {
         return service;
@@ -237,11 +238,11 @@ public class TBDingCountQueryResult implements Serializable {
         this.submissionTime = submissionTime;
     }
 
-    public String getStatus() {
+    public DingSubmitStatusEnum getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(DingSubmitStatusEnum status) {
         this.status = status;
     }
 }

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/mapper/TBDingMapper.java

@@ -29,9 +29,9 @@ public interface TBDingMapper extends BaseMapper<TBDing> {
      * @return
      */
 
-    IPage<TBDingCountQueryResult> query(IPage<Map> iPage, @Param("serviceId") Long serviceId, @Param("status") String status, @Param("createId") Long createId, @Param("userName") String userName, @Param("supplierId") Long supplierId, @Param("custom") String custom, @Param("sopNo") String sopNo, @Param("days") Long days);
+    IPage<TBDingSubmitQueryResult> query(IPage<Map> iPage, @Param("serviceId") Long serviceId, @Param("status") String status, @Param("createId") Long createId, @Param("userName") String userName, @Param("supplierId") Long supplierId, @Param("custom") String custom, @Param("sopNo") String sopNo, @Param("days") Long days);
 
-    List<TBDingCountQueryResult> query(@Param("serviceId") Long serviceId, @Param("status") String status, @Param("createId") Long createId, @Param("userName") String userName, @Param("supplierId") Long supplierId, @Param("custom") String custom, @Param("sopNo") String sopNo, @Param("days") Long days);
+    List<TBDingSubmitQueryResult> query(@Param("serviceId") Long serviceId, @Param("status") String status, @Param("createId") Long createId, @Param("userName") String userName, @Param("supplierId") Long supplierId, @Param("custom") String custom, @Param("sopNo") String sopNo, @Param("days") Long days);
 
     TBDingCountResult count(@Param("serviceId") Long serviceId, @Param("createId") Long createId, @Param("userName") String userName, @Param("supplierId") Long supplierId, @Param("custom") String custom, @Param("sopNo") String sopNo);
 

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/TBDingService.java

@@ -58,9 +58,9 @@ public interface TBDingService extends IService<TBDing> {
      * @param iPage
      * @return
      */
-    IPage<TBDingCountQueryResult> query(IPage<Map> iPage, Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days);
+    IPage<TBDingSubmitQueryResult> query(IPage<Map> iPage, Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days);
 
-    List<TBDingCountQueryResult> query(Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days);
+    List<TBDingSubmitQueryResult> query(Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days);
 
     TBDingCountResult count(Long serviceId, Long createId, String userName, Long supplierId, String custom, String sopNo);
 

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -388,12 +388,12 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
      */
 
     @Override
-    public IPage<TBDingCountQueryResult> query(IPage<Map> iPage, Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days) {
+    public IPage<TBDingSubmitQueryResult> query(IPage<Map> iPage, Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days) {
         return this.baseMapper.query(iPage, serviceId, status, createId, userName, supplierId, custom, sopNo, days);
     }
 
     @Override
-    public List<TBDingCountQueryResult> query(Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days) {
+    public List<TBDingSubmitQueryResult> query(Long serviceId, String status, Long createId, String userName, Long supplierId, String custom, String sopNo, Long days) {
         return this.baseMapper.query(serviceId, status, createId, userName, supplierId, custom, sopNo, days);
     }
 

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/templete/execute/AsyncDingCountExportService.java

@@ -2,7 +2,7 @@ package com.qmth.sop.business.templete.execute;
 
 import cn.hutool.core.date.DateUtil;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.sop.business.bean.result.TBDingCountQueryResult;
+import com.qmth.sop.business.bean.result.TBDingSubmitQueryResult;
 import com.qmth.sop.business.entity.BasicAttachment;
 import com.qmth.sop.business.entity.TBTask;
 import com.qmth.sop.business.service.TBTaskService;
@@ -54,7 +54,7 @@ public class AsyncDingCountExportService extends AsyncExportTaskTemplete {
         tbTaskService.updateById(tbTask);
         try {
             Map<String, Object> result = taskLogicService.executeExportDingCountLogic(map);
-            List<TBDingCountQueryResult> archivesImportDtoList = (List<TBDingCountQueryResult>) result.get(SystemConstant.EXCEL_DATA);
+            List<TBDingSubmitQueryResult> archivesImportDtoList = (List<TBDingSubmitQueryResult>) result.get(SystemConstant.EXCEL_DATA);
             BasicAttachment basicAttachment = (BasicAttachment) result.get(SystemConstant.EXCEL_ATTACHMENT);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, !CollectionUtils.isEmpty(archivesImportDtoList) ? archivesImportDtoList.size() : 0, FINISH_SIZE));
 

+ 7 - 7
sop-business/src/main/java/com/qmth/sop/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -8,7 +8,7 @@ import com.qmth.sop.business.bean.query.DingSubmitQuery;
 import com.qmth.sop.business.bean.query.UserArchivesQuery;
 import com.qmth.sop.business.bean.result.SysMessageResult;
 import com.qmth.sop.business.bean.result.TBDingAttendanceResult;
-import com.qmth.sop.business.bean.result.TBDingCountQueryResult;
+import com.qmth.sop.business.bean.result.TBDingSubmitQueryResult;
 import com.qmth.sop.business.entity.*;
 import com.qmth.sop.business.service.*;
 import com.qmth.sop.business.templete.service.TaskLogicService;
@@ -315,11 +315,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         try {
             fileTemp = SystemConstant.getFileTempVar(SystemConstant.XLSX_PREFIX);
 
-            List<TBDingCountQueryResult> tbDingCountQueryResults = tbDingService.query((Long) map.get("serviceId"), (String) map.get("status"), (Long) map.get("createId"), (String) map.get("userName"), (Long) map.get("supplierId"), (String) map.get("String"), (String) map.get("sopNo"), (Long) map.get("days"));
-            tbDingCountQueryResults.forEach(e -> {
-                e.setStatus(FlowStatusEnum.convertToEnum(e.getStatus()).getTitle());
-            });
-            EasyExcel.write(fileTemp, TBDingCountQueryResult.class).sheet("考勤打卡统计导出").doWrite(tbDingCountQueryResults);
+            List<TBDingSubmitQueryResult> tbDingCountQueryResults = tbDingService.query((Long) map.get("serviceId"), (String) map.get("status"), (Long) map.get("createId"), (String) map.get("userName"), (Long) map.get("supplierId"), (String) map.get("String"), (String) map.get("sopNo"), (Long) map.get("days"));
+//            tbDingCountQueryResults.forEach(e -> {
+//                e.setStatus(FlowStatusEnum.convertToEnum(e.getStatus()).getTitle());
+//            });
+            EasyExcel.write(fileTemp, TBDingSubmitQueryResult.class).sheet("考勤打卡统计导出").doWrite(tbDingCountQueryResults);
 
             BasicAttachment basicAttachment = basicAttachmentService.saveAttachment(fileTemp, UploadFileEnum.FILE);
             map.computeIfAbsent(SystemConstant.EXCEL_DATA, v -> tbDingCountQueryResults);
@@ -342,7 +342,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 //            tbDingAttendanceResults.forEach(e -> {
 //                //e.setStatus(FlowStatusEnum.convertToEnum(e.getStatus()).getTitle());
 //            });
-            EasyExcel.write(fileTemp, TBDingCountQueryResult.class).sheet("考勤明细导出").doWrite(tbDingAttendanceResults);
+            EasyExcel.write(fileTemp, TBDingAttendanceResult.class).sheet("考勤明细导出").doWrite(tbDingAttendanceResults);
 
             BasicAttachment basicAttachment = basicAttachmentService.saveAttachment(fileTemp, UploadFileEnum.FILE);
             map.computeIfAbsent(SystemConstant.EXCEL_DATA, v -> tbDingAttendanceResults);

+ 172 - 113
sop-business/src/main/resources/mapper/TBDingMapper.xml

@@ -2,127 +2,190 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.sop.business.mapper.TBDingMapper">
 
-    <select id="query" resultType="com.qmth.sop.business.bean.result.TBDingCountQueryResult">
-        SELECT * from (
-        SELECT
-        bs.NAME service,
-        d.sop_no,
-        c.NAME custom,
-        ua.province,
-        ua.city,
-        crm.exam_start_time,
-        crm.exam_end_time,
-        u.real_name user_name,
-        ua.`code` user_no,
-        r.`name` role_name,
-        s.NAME supplier,
-        count( d.id ) attendance,
-        SUM( CASE WHEN d.date_type = 'WEEKDAY' THEN 1 ELSE 0 END ) weekdays,
-        SUM( CASE WHEN d.date_type = 'WEEKEND' THEN 1 ELSE 0 END ) weekends,
-        SUM( CASE WHEN d.date_type = 'LEGAL_HOLIDAYS' THEN 1 ELSE 0 END ) holidays,
-        SUM( CASE WHEN d.sign_out_time is not null and d.sign_in_time is not null   THEN TIMESTAMPDIFF(HOUR, DATE_FORMAT(FROM_UNIXTIME(d.sign_out_time), '%Y-%m-%d %H:%i:%s'), DATE_FORMAT(FROM_UNIXTIME(d.sign_in_time), '%Y-%m-%d %H:%i:%s')) ELSE 0 END ) work_hours,
-        DATEDIFF(DATE_FORMAT(FROM_UNIXTIME(crm.exam_start_time), '%Y-%m-%d'), DATE_FORMAT(FROM_UNIXTIME(crm.exam_end_time), '%Y-%m-%d'))-count( d.id )+1 violation_days,
-        f.`status`,
-        sub.real_name submitter,
-        f.create_time submission_time ,
-        d.service_id,
-        f.create_id,
-        s.id supplier_id
+        <select id="query" resultType="com.qmth.sop.business.bean.result.TBDingSubmitQueryResult">
 
-        FROM
-        t_b_ding d
-        LEFT JOIN sys_user u ON u.id = d.user_id
-        LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number
-        LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
-        LEFT JOIN t_b_service bs ON bs.id = d.service_id
-        LEFT JOIN t_b_sop_info sop ON sop.crm_no = d.crm_no
-        AND sop.sop_no = d.sop_no
-        LEFT JOIN t_b_engineer_allocation ea ON ea.crm_no = d.crm_no
-        AND ea.sop_no = d.sop_no
-        LEFT JOIN sys_role r ON ea.role_id = r.id
-        LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
-        LEFT JOIN sys_custom c ON c.id = sop.custom_id
-        LEFT JOIN t_f_flow_approve f ON f.flow_id = d.flow_id
-        LEFT JOIN sys_user sub ON sub.id = f.create_id
-        LEFT JOIN sys_supplier s ON s.id = us.supplier_id
-        GROUP BY
-        bs.NAME,
-        d.sop_no,
-        c.NAME,
-        ua.province,
-        ua.city,
-        crm.exam_start_time,
-        crm.exam_end_time,
-        u.real_name,
-        ua.`code`,
-        r.`name`,
-        s.NAME,
-        f.`status`,
-        f.create_id,
-        f.create_time,
-        d.service_id,
-        s.id  ) a
+            SELECT
+            bs.NAME service,
+            d.sop_no,
+            c.NAME custom,
+            ua.province,
+            ua.city,
+            d.approach_time exam_start_time,
+            d.departure_time exam_end_time,
+            ua.name user_name,
+            ua.`code` user_no,
+            r.`name` role_name,
+            s.NAME supplier,
+            d.actual_days attendance,
+            d.weekdays weekdays,
+            d.weekends weekends,
+            d.legal_holidays holidays,
+            d.work_hours work_hours,
+            d.violation_days violation_days,
+            d.submit_status `status`,
+            sub.real_name submitter,
+            d.submit_time submission_time
 
-        <where>
-            <if test="serviceId != null and serviceId != ''">
-                and a.service_id = #{serviceId}
-            </if>
-            <if test="status != null and status != ''">
-                and a.status = #{status}
-            </if>
-            <if test="createId != null and createId != ''">
-                and a.create_id = #{create_id}
-            </if>
-            <if test="userName != null and userName != ''">
-                and a.real_name like concat('%', #{userName} , '%')
-            </if>
-            <if test="supplierId != null and supplierId != ''">
-                and a.supplier_id = #{supplierId}
-            </if>
-            <if test="custom != null and custom != ''">
-                and a.name like concat('%', #{custom} , '%')
-            </if>
-            <if test="sopNo != null and sopNo != ''">
-                and a.sop_no like concat('%', #{sopNo} , '%')
-            </if>
-            <if test="days != null and days != '' ">
-                <![CDATA[
-               and a.days > #{days}
-               ]]>
-            </if>
-        </where>
+            FROM
+            t_b_ding_submit d
+            LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
+            LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
+            LEFT JOIN t_b_service bs ON bs.id = d.service_id
+            LEFT JOIN sys_role r ON r.type = d.role_type
+            LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
+            LEFT JOIN sys_custom c ON c.id = crm.custom_id
+            LEFT JOIN sys_user sub ON sub.id = d.submit_user_id
+            LEFT JOIN sys_supplier s ON s.id = us.supplier_id
 
-    </select>
+            <where>
+                <if test="serviceId != null and serviceId != ''">
+                    and d.service_id = #{serviceId}
+                </if>
+                <if test="status != null and status != ''">
+                    and d.submit_status = #{status}
+                </if>
+                <if test="createId != null and createId != ''">
+                    and d.submit_user_id = #{create_id}
+                </if>
+                <if test="userName != null and userName != ''">
+                    and ua.name like concat('%', #{userName} , '%')
+                </if>
+                <if test="supplierId != null and supplierId != ''">
+                    and us.supplier_id = #{supplierId}
+                </if>
+                <if test="custom != null and custom != ''">
+                    and c.NAME like concat('%', #{custom} , '%')
+                </if>
+                <if test="sopNo != null and sopNo != ''">
+                    and d.sop_no like concat('%', #{sopNo} , '%')
+                </if>
+                <if test="days != null and days != '' ">
+                    <![CDATA[
+                   and d.violation_days > #{days}
+                   ]]>
+                </if>
+            </where>
+
+        </select>
+
+<!--    <select id="query" resultType="com.qmth.sop.business.bean.result.TBDingCountQueryResult">-->
+<!--        SELECT * from (-->
+<!--        SELECT-->
+<!--        bs.NAME service,-->
+<!--        d.sop_no,-->
+<!--        c.NAME custom,-->
+<!--        ua.province,-->
+<!--        ua.city,-->
+<!--        crm.exam_start_time,-->
+<!--        crm.exam_end_time,-->
+<!--        u.real_name user_name,-->
+<!--        ua.`code` user_no,-->
+<!--        r.`name` role_name,-->
+<!--        s.NAME supplier,-->
+<!--        count( d.id ) attendance,-->
+<!--        SUM( CASE WHEN d.date_type = 'WEEKDAY' THEN 1 ELSE 0 END ) weekdays,-->
+<!--        SUM( CASE WHEN d.date_type = 'WEEKEND' THEN 1 ELSE 0 END ) weekends,-->
+<!--        SUM( CASE WHEN d.date_type = 'LEGAL_HOLIDAYS' THEN 1 ELSE 0 END ) holidays,-->
+<!--        SUM( CASE WHEN d.sign_out_time is not null and d.sign_in_time is not null   THEN TIMESTAMPDIFF(HOUR, DATE_FORMAT(FROM_UNIXTIME(d.sign_out_time), '%Y-%m-%d %H:%i:%s'), DATE_FORMAT(FROM_UNIXTIME(d.sign_in_time), '%Y-%m-%d %H:%i:%s')) ELSE 0 END ) work_hours,-->
+<!--        DATEDIFF(DATE_FORMAT(FROM_UNIXTIME(crm.exam_start_time), '%Y-%m-%d'), DATE_FORMAT(FROM_UNIXTIME(crm.exam_end_time), '%Y-%m-%d'))-count( d.id )+1 violation_days,-->
+<!--        f.`status`,-->
+<!--        sub.real_name submitter,-->
+<!--        f.create_time submission_time ,-->
+<!--        d.service_id,-->
+<!--        f.create_id,-->
+<!--        s.id supplier_id-->
+
+<!--        FROM-->
+<!--        t_b_ding d-->
+<!--        LEFT JOIN sys_user u ON u.id = d.user_id-->
+<!--        LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number-->
+<!--        LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id-->
+<!--        LEFT JOIN t_b_service bs ON bs.id = d.service_id-->
+<!--        LEFT JOIN t_b_sop_info sop ON sop.crm_no = d.crm_no-->
+<!--        AND sop.sop_no = d.sop_no-->
+<!--        LEFT JOIN t_b_engineer_allocation ea ON ea.crm_no = d.crm_no-->
+<!--        AND ea.sop_no = d.sop_no-->
+<!--        LEFT JOIN sys_role r ON ea.role_id = r.id-->
+<!--        LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no-->
+<!--        LEFT JOIN sys_custom c ON c.id = sop.custom_id-->
+<!--        LEFT JOIN t_f_flow_approve f ON f.flow_id = d.flow_id-->
+<!--        LEFT JOIN sys_user sub ON sub.id = f.create_id-->
+<!--        LEFT JOIN sys_supplier s ON s.id = us.supplier_id-->
+<!--        GROUP BY-->
+<!--        bs.NAME,-->
+<!--        d.sop_no,-->
+<!--        c.NAME,-->
+<!--        ua.province,-->
+<!--        ua.city,-->
+<!--        crm.exam_start_time,-->
+<!--        crm.exam_end_time,-->
+<!--        u.real_name,-->
+<!--        ua.`code`,-->
+<!--        r.`name`,-->
+<!--        s.NAME,-->
+<!--        f.`status`,-->
+<!--        f.create_id,-->
+<!--        f.create_time,-->
+<!--        d.service_id,-->
+<!--        s.id  ) a-->
+
+<!--        <where>-->
+<!--            <if test="serviceId != null and serviceId != ''">-->
+<!--                and a.service_id = #{serviceId}-->
+<!--            </if>-->
+<!--            <if test="status != null and status != ''">-->
+<!--                and a.status = #{status}-->
+<!--            </if>-->
+<!--            <if test="createId != null and createId != ''">-->
+<!--                and a.create_id = #{create_id}-->
+<!--            </if>-->
+<!--            <if test="userName != null and userName != ''">-->
+<!--                and a.real_name like concat('%', #{userName} , '%')-->
+<!--            </if>-->
+<!--            <if test="supplierId != null and supplierId != ''">-->
+<!--                and a.supplier_id = #{supplierId}-->
+<!--            </if>-->
+<!--            <if test="custom != null and custom != ''">-->
+<!--                and a.name like concat('%', #{custom} , '%')-->
+<!--            </if>-->
+<!--            <if test="sopNo != null and sopNo != ''">-->
+<!--                and a.sop_no like concat('%', #{sopNo} , '%')-->
+<!--            </if>-->
+<!--            <if test="days != null and days != '' ">-->
+<!--                <![CDATA[-->
+<!--               and a.days > #{days}-->
+<!--               ]]>-->
+<!--            </if>-->
+<!--        </where>-->
+
+<!--    </select>-->
 
 
     <select id="count" resultType="com.qmth.sop.business.bean.result.TBDingCountResult">
         SELECT
-        count( d.id ) total,
-        SUM( CASE WHEN f.`status`='FINISH' THEN 1 ELSE 0 END ) submitted,
-        SUM( CASE WHEN f.`status`!='FINISH' THEN 1 ELSE 0 END ) un_submitted,
-        SUM( CASE WHEN f.`status`='FINISH' THEN 1 ELSE 0 END ) all_days,
-        SUM( CASE WHEN f.`status`='FINISH'  THEN TIMESTAMPDIFF(HOUR, DATE_FORMAT(FROM_UNIXTIME(d.sign_out_time), '%Y-%m-%d %H:%i:%s'), DATE_FORMAT(FROM_UNIXTIME(d.sign_in_time), '%Y-%m-%d %H:%i:%s')) ELSE 0 END ) all_hours
+        sum( d.id ) total,
+        SUM( CASE WHEN d.submit_status='AGREE_DING' THEN 1 ELSE 0 END ) submitted,
+        SUM( CASE WHEN d.submit_status!='AGREE_DING' THEN 1 ELSE 0 END ) un_submitted,
+        SUM( CASE WHEN d.submit_status='AGREE_DING' THEN d.actual_days ELSE 0 END ) all_days,
+        SUM( CASE WHEN d.submit_status='AGREE_DING'  THEN d.work_hours ELSE 0 END ) all_hours
         FROM
-        t_b_ding d
-        LEFT JOIN sys_user u ON u.id = d.user_id
-        LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number
+        t_b_ding_submit d
+        LEFT JOIN t_b_user_archives ua ON d.user_archives_id = ua.id
         LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
-        LEFT JOIN t_b_sop_info sop ON sop.crm_no = d.crm_no
-        AND sop.sop_no = d.sop_no
-        LEFT JOIN sys_custom c ON c.id = sop.custom_id
-        LEFT JOIN t_f_flow_approve f ON f.flow_id = d.flow_id
+        LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
+        LEFT JOIN sys_custom c ON c.id = crm.custom_id
         <where>
             <if test="serviceId != null and serviceId != ''">
                 and d.service_id = #{serviceId}
             </if>
             <if test="createId != null and createId != ''">
-                and f.create_id = #{create_id}
+                and d.submit_user_id = #{create_id}
             </if>
             <if test="userName != null and userName != ''">
-                and u.real_name like concat('%', #{userName} , '%')
+                and ua.name like concat('%', #{userName} , '%')
             </if>
             <if test="supplierId != null and supplierId != ''">
-                and ud.supplier_id = #{supplierId}
+                and us.supplier_id = #{supplierId}
             </if>
             <if test="custom != null and custom != ''">
                 and c.name like concat('%', #{custom} , '%')
@@ -136,11 +199,12 @@
     <select id="attendanceQuery" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceResult">
         SELECT * from (
         SELECT
+        d.ding_sop_no sop_no,
         bs.NAME service,
         c.NAME custom,
         ua.province,
         ua.city,
-        u.real_name user_name,
+        ua.name user_name,
         ua.`code` user_no,
         r.`name` role_name,
         s.NAME supplier,
@@ -157,17 +221,12 @@
         SELECT d.*,d.sign_in_time sign_time,'IN' AS type FROM t_b_ding d UNION ALL
         SELECT d.*,d.sign_out_time sign_time,'OUT' AS type FROM t_b_ding d
         ) d
-        LEFT JOIN sys_user u ON u.id = d.user_id
-        LEFT JOIN t_b_user_archives ua ON u.mobile_number = ua.mobile_number
+        LEFT JOIN t_b_user_archives ua ON ua.id = d.user_archives_id
         LEFT JOIN t_b_user_archives_supplier us ON us.user_archives_id = ua.id
         LEFT JOIN t_b_service bs ON bs.id = d.service_id
-        LEFT JOIN t_b_sop_info sop ON sop.crm_no = d.crm_no
-        AND sop.sop_no = d.sop_no
-        LEFT JOIN t_b_engineer_allocation ea ON ea.crm_no = d.crm_no
-        AND ea.sop_no = d.sop_no
-        LEFT JOIN sys_role r ON ea.role_id = r.id
+        LEFT JOIN sys_role r ON r.type = d.role_type
         LEFT JOIN t_b_crm crm ON crm.crm_no = d.crm_no
-        LEFT JOIN sys_custom c ON c.id = sop.custom_id
+        LEFT JOIN sys_custom c ON c.id = crm.custom_id
         LEFT JOIN sys_supplier s ON s.id = us.supplier_id
 
         ) a
@@ -204,7 +263,7 @@
                 and a.status = #{status}
             </if>
         </where>
-
+        order by d.sign_date
     </select>
 
     <select id="attendanceCount" resultType="com.qmth.sop.business.bean.result.TBDingAttendanceCountResult">

+ 5 - 0
sop-common/src/main/java/com/qmth/sop/common/enums/DingSubmitStatusEnum.java

@@ -34,4 +34,9 @@ public enum DingSubmitStatusEnum {
     public String getAuditDesc() {
         return auditDesc;
     }
+
+    @Override
+    public String toString() {
+        return submitDesc;
+    }
 }