Ver código fonte

add. 工时统计

caozixuan 9 meses atrás
pai
commit
931dcc5592

+ 149 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCrmDto.java

@@ -0,0 +1,149 @@
+package com.qmth.sop.business.bean.dto;
+
+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 io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 工时统计-按人员统计
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+@ColumnWidth(value = 30)
+@HeadStyle(fillForegroundColor = 11)
+@HeadFontStyle(color = 1)
+public class DingStatisticByCrmDto {
+    @ExcelProperty(value = "服务单元")
+    @ApiModelProperty(value = "服务单元")
+    private String serviceName;
+
+    @ExcelProperty(value = "派单号")
+    @ApiModelProperty(value = "派单号")
+    private String crmNo;
+
+    @ExcelProperty(value = "项目名称")
+    @ApiModelProperty(value = "项目名称")
+    private String crmName;
+
+    @ExcelProperty(value = "实际出勤(天)")
+    @ApiModelProperty(value = "实际出勤(天)")
+    private Integer actualDays;
+
+    @ExcelProperty(value = "工作日(天)")
+    @ApiModelProperty(value = "工作日(天)")
+    private Integer weekdays;
+
+    @ExcelProperty(value = "周末(天)")
+    @ApiModelProperty(value = "周末(天)")
+    private Integer weekends;
+
+    @ExcelProperty(value = "法定节假日(天)")
+    @ApiModelProperty(value = "法定节假日(天)")
+    private Integer legalHolidays;
+
+    @ExcelProperty(value = "扫描周期(天)")
+    @ApiModelProperty(value = "扫描周期(天)")
+    private Integer scanPeriod;
+
+    @ExcelProperty(value = "阅卷周期(天)")
+    @ApiModelProperty(value = "阅卷周期(天)")
+    private Integer markPaperPeriod;
+
+    @ExcelProperty(value = "累计工时(小时)")
+    @ApiModelProperty(value = "累计工时(小时)")
+    private Double workHours;
+
+    @ExcelProperty(value = "违规工时(天)")
+    @ApiModelProperty(value = "违规工时(天)")
+    private Integer violationDays;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getCrmNo() {
+        return crmNo;
+    }
+
+    public void setCrmNo(String crmNo) {
+        this.crmNo = crmNo;
+    }
+
+    public String getCrmName() {
+        return crmName;
+    }
+
+    public void setCrmName(String crmName) {
+        this.crmName = crmName;
+    }
+
+    public Integer getActualDays() {
+        return actualDays;
+    }
+
+    public void setActualDays(Integer actualDays) {
+        this.actualDays = actualDays;
+    }
+
+    public Integer getWeekdays() {
+        return weekdays;
+    }
+
+    public void setWeekdays(Integer weekdays) {
+        this.weekdays = weekdays;
+    }
+
+    public Integer getWeekends() {
+        return weekends;
+    }
+
+    public void setWeekends(Integer weekends) {
+        this.weekends = weekends;
+    }
+
+    public Integer getLegalHolidays() {
+        return legalHolidays;
+    }
+
+    public void setLegalHolidays(Integer legalHolidays) {
+        this.legalHolidays = legalHolidays;
+    }
+
+    public Integer getScanPeriod() {
+        return scanPeriod;
+    }
+
+    public void setScanPeriod(Integer scanPeriod) {
+        this.scanPeriod = scanPeriod;
+    }
+
+    public Integer getMarkPaperPeriod() {
+        return markPaperPeriod;
+    }
+
+    public void setMarkPaperPeriod(Integer markPaperPeriod) {
+        this.markPaperPeriod = markPaperPeriod;
+    }
+
+    public Double getWorkHours() {
+        return workHours;
+    }
+
+    public void setWorkHours(Double workHours) {
+        this.workHours = workHours;
+    }
+
+    public Integer getViolationDays() {
+        return violationDays;
+    }
+
+    public void setViolationDays(Integer violationDays) {
+        this.violationDays = violationDays;
+    }
+}

+ 138 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCustomDto.java

@@ -0,0 +1,138 @@
+package com.qmth.sop.business.bean.dto;
+
+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 io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 工时统计-按客户统计
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+@ColumnWidth(value = 30)
+@HeadStyle(fillForegroundColor = 11)
+@HeadFontStyle(color = 1)
+public class DingStatisticByCustomDto {
+
+    @ExcelProperty(value = "服务单元")
+    @ApiModelProperty(value = "服务单元")
+    private String serviceName;
+
+    @ExcelProperty(value = "客户名称")
+    @ApiModelProperty(value = "客户名称")
+    private String customName;
+
+    @ExcelProperty(value = "实际出勤(天)")
+    @ApiModelProperty(value = "实际出勤(天)")
+    private Integer actualDays;
+
+    @ExcelProperty(value = "工作日(天)")
+    @ApiModelProperty(value = "工作日(天)")
+    private Integer weekdays;
+
+    @ExcelProperty(value = "周末(天)")
+    @ApiModelProperty(value = "周末(天)")
+    private Integer weekends;
+
+    @ExcelProperty(value = "法定节假日(天)")
+    @ApiModelProperty(value = "法定节假日(天)")
+    private Integer legalHolidays;
+
+    @ExcelProperty(value = "扫描周期(天)")
+    @ApiModelProperty(value = "扫描周期(天)")
+    private Integer scanPeriod;
+
+    @ExcelProperty(value = "阅卷周期(天)")
+    @ApiModelProperty(value = "阅卷周期(天)")
+    private Integer markPaperPeriod;
+
+    @ExcelProperty(value = "累计工时(小时)")
+    @ApiModelProperty(value = "累计工时(小时)")
+    private Double workHours;
+
+    @ExcelProperty(value = "违规工时(天)")
+    @ApiModelProperty(value = "违规工时(天)")
+    private Integer violationDays;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getCustomName() {
+        return customName;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+
+    public Integer getActualDays() {
+        return actualDays;
+    }
+
+    public void setActualDays(Integer actualDays) {
+        this.actualDays = actualDays;
+    }
+
+    public Integer getWeekdays() {
+        return weekdays;
+    }
+
+    public void setWeekdays(Integer weekdays) {
+        this.weekdays = weekdays;
+    }
+
+    public Integer getWeekends() {
+        return weekends;
+    }
+
+    public void setWeekends(Integer weekends) {
+        this.weekends = weekends;
+    }
+
+    public Integer getLegalHolidays() {
+        return legalHolidays;
+    }
+
+    public void setLegalHolidays(Integer legalHolidays) {
+        this.legalHolidays = legalHolidays;
+    }
+
+    public Integer getScanPeriod() {
+        return scanPeriod;
+    }
+
+    public void setScanPeriod(Integer scanPeriod) {
+        this.scanPeriod = scanPeriod;
+    }
+
+    public Integer getMarkPaperPeriod() {
+        return markPaperPeriod;
+    }
+
+    public void setMarkPaperPeriod(Integer markPaperPeriod) {
+        this.markPaperPeriod = markPaperPeriod;
+    }
+
+    public Double getWorkHours() {
+        return workHours;
+    }
+
+    public void setWorkHours(Double workHours) {
+        this.workHours = workHours;
+    }
+
+    public Integer getViolationDays() {
+        return violationDays;
+    }
+
+    public void setViolationDays(Integer violationDays) {
+        this.violationDays = violationDays;
+    }
+}

+ 125 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByPersonDto.java

@@ -0,0 +1,125 @@
+package com.qmth.sop.business.bean.dto;
+
+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 io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 工时统计-按人员统计
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+@ColumnWidth(value = 30)
+@HeadStyle(fillForegroundColor = 11)
+@HeadFontStyle(color = 1)
+public class DingStatisticByPersonDto {
+    @ExcelProperty(value = "服务单元")
+    @ApiModelProperty(value = "服务单元")
+    private String serviceName;
+
+    @ExcelProperty(value = "姓名(人员档案号)")
+    @ApiModelProperty(value = "姓名(人员档案号)")
+    private String userInfo;
+
+    @ExcelProperty(value = "供应商")
+    @ApiModelProperty(value = "供应商")
+    private String supplierName;
+
+    @ExcelProperty(value = "实际出勤(天)")
+    @ApiModelProperty(value = "实际出勤(天)")
+    private Integer actualDays;
+
+    @ExcelProperty(value = "工作日(天)")
+    @ApiModelProperty(value = "工作日(天)")
+    private Integer weekdays;
+
+    @ExcelProperty(value = "周末(天)")
+    @ApiModelProperty(value = "周末(天)")
+    private Integer weekends;
+
+    @ExcelProperty(value = "法定节假日(天)")
+    @ApiModelProperty(value = "法定节假日(天)")
+    private Integer legalHolidays;
+
+    @ExcelProperty(value = "累计工时(小时)")
+    @ApiModelProperty(value = "累计工时(小时)")
+    private Double workHours;
+
+    @ExcelProperty(value = "违规工时(天)")
+    @ApiModelProperty(value = "违规工时(天)")
+    private Integer violationDays;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getUserInfo() {
+        return userInfo;
+    }
+
+    public void setUserInfo(String userInfo) {
+        this.userInfo = userInfo;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+
+    public Integer getActualDays() {
+        return actualDays;
+    }
+
+    public void setActualDays(Integer actualDays) {
+        this.actualDays = actualDays;
+    }
+
+    public Integer getWeekdays() {
+        return weekdays;
+    }
+
+    public void setWeekdays(Integer weekdays) {
+        this.weekdays = weekdays;
+    }
+
+    public Integer getWeekends() {
+        return weekends;
+    }
+
+    public void setWeekends(Integer weekends) {
+        this.weekends = weekends;
+    }
+
+    public Integer getLegalHolidays() {
+        return legalHolidays;
+    }
+
+    public void setLegalHolidays(Integer legalHolidays) {
+        this.legalHolidays = legalHolidays;
+    }
+
+    public Double getWorkHours() {
+        return workHours;
+    }
+
+    public void setWorkHours(Double workHours) {
+        this.workHours = workHours;
+    }
+
+    public Integer getViolationDays() {
+        return violationDays;
+    }
+
+    public void setViolationDays(Integer violationDays) {
+        this.violationDays = violationDays;
+    }
+}

+ 150 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySopDto.java

@@ -0,0 +1,150 @@
+package com.qmth.sop.business.bean.dto;
+
+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 io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 工时统计-按sop统计
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+@ColumnWidth(value = 30)
+@HeadStyle(fillForegroundColor = 11)
+@HeadFontStyle(color = 1)
+public class DingStatisticBySopDto {
+
+    @ExcelProperty(value = "服务单元")
+    @ApiModelProperty(value = "服务单元")
+    private String serviceName;
+
+    @ExcelProperty(value = "sop流水号")
+    @ApiModelProperty(value = "sop流水号")
+    private String sopNo;
+
+    @ExcelProperty(value = "科目名称")
+    @ApiModelProperty(value = "科目名称")
+    private String courseName;
+
+    @ExcelProperty(value = "实际出勤(天)")
+    @ApiModelProperty(value = "实际出勤(天)")
+    private Integer actualDays;
+
+    @ExcelProperty(value = "工作日(天)")
+    @ApiModelProperty(value = "工作日(天)")
+    private Integer weekdays;
+
+    @ExcelProperty(value = "周末(天)")
+    @ApiModelProperty(value = "周末(天)")
+    private Integer weekends;
+
+    @ExcelProperty(value = "法定节假日(天)")
+    @ApiModelProperty(value = "法定节假日(天)")
+    private Integer legalHolidays;
+
+    @ExcelProperty(value = "扫描周期(天)")
+    @ApiModelProperty(value = "扫描周期(天)")
+    private Integer scanPeriod;
+
+    @ExcelProperty(value = "阅卷周期(天)")
+    @ApiModelProperty(value = "阅卷周期(天)")
+    private Integer markPaperPeriod;
+
+    @ExcelProperty(value = "累计工时(小时)")
+    @ApiModelProperty(value = "累计工时(小时)")
+    private Double workHours;
+
+    @ExcelProperty(value = "违规工时(天)")
+    @ApiModelProperty(value = "违规工时(天)")
+    private Integer violationDays;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getSopNo() {
+        return sopNo;
+    }
+
+    public void setSopNo(String sopNo) {
+        this.sopNo = sopNo;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public Integer getActualDays() {
+        return actualDays;
+    }
+
+    public void setActualDays(Integer actualDays) {
+        this.actualDays = actualDays;
+    }
+
+    public Integer getWeekdays() {
+        return weekdays;
+    }
+
+    public void setWeekdays(Integer weekdays) {
+        this.weekdays = weekdays;
+    }
+
+    public Integer getWeekends() {
+        return weekends;
+    }
+
+    public void setWeekends(Integer weekends) {
+        this.weekends = weekends;
+    }
+
+    public Integer getLegalHolidays() {
+        return legalHolidays;
+    }
+
+    public void setLegalHolidays(Integer legalHolidays) {
+        this.legalHolidays = legalHolidays;
+    }
+
+    public Integer getScanPeriod() {
+        return scanPeriod;
+    }
+
+    public void setScanPeriod(Integer scanPeriod) {
+        this.scanPeriod = scanPeriod;
+    }
+
+    public Integer getMarkPaperPeriod() {
+        return markPaperPeriod;
+    }
+
+    public void setMarkPaperPeriod(Integer markPaperPeriod) {
+        this.markPaperPeriod = markPaperPeriod;
+    }
+
+    public Double getWorkHours() {
+        return workHours;
+    }
+
+    public void setWorkHours(Double workHours) {
+        this.workHours = workHours;
+    }
+
+    public Integer getViolationDays() {
+        return violationDays;
+    }
+
+    public void setViolationDays(Integer violationDays) {
+        this.violationDays = violationDays;
+    }
+}

+ 114 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySupplierDto.java

@@ -0,0 +1,114 @@
+package com.qmth.sop.business.bean.dto;
+
+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 io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 工时统计-按人员统计
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+@ColumnWidth(value = 30)
+@HeadStyle(fillForegroundColor = 11)
+@HeadFontStyle(color = 1)
+public class DingStatisticBySupplierDto {
+
+    @ExcelProperty(value = "服务单元")
+    @ApiModelProperty(value = "服务单元")
+    private String serviceName;
+
+    @ExcelProperty(value = "供应商")
+    @ApiModelProperty(value = "供应商")
+    private String supplierName;
+
+    @ExcelProperty(value = "实际出勤(天)")
+    @ApiModelProperty(value = "实际出勤(天)")
+    private Integer actualDays;
+
+    @ExcelProperty(value = "工作日(天)")
+    @ApiModelProperty(value = "工作日(天)")
+    private Integer weekdays;
+
+    @ExcelProperty(value = "周末(天)")
+    @ApiModelProperty(value = "周末(天)")
+    private Integer weekends;
+
+    @ExcelProperty(value = "法定节假日(天)")
+    @ApiModelProperty(value = "法定节假日(天)")
+    private Integer legalHolidays;
+
+    @ExcelProperty(value = "累计工时(小时)")
+    @ApiModelProperty(value = "累计工时(小时)")
+    private Double workHours;
+
+    @ExcelProperty(value = "违规工时(天)")
+    @ApiModelProperty(value = "违规工时(天)")
+    private Integer violationDays;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+
+    public Integer getActualDays() {
+        return actualDays;
+    }
+
+    public void setActualDays(Integer actualDays) {
+        this.actualDays = actualDays;
+    }
+
+    public Integer getWeekdays() {
+        return weekdays;
+    }
+
+    public void setWeekdays(Integer weekdays) {
+        this.weekdays = weekdays;
+    }
+
+    public Integer getWeekends() {
+        return weekends;
+    }
+
+    public void setWeekends(Integer weekends) {
+        this.weekends = weekends;
+    }
+
+    public Integer getLegalHolidays() {
+        return legalHolidays;
+    }
+
+    public void setLegalHolidays(Integer legalHolidays) {
+        this.legalHolidays = legalHolidays;
+    }
+
+    public Double getWorkHours() {
+        return workHours;
+    }
+
+    public void setWorkHours(Double workHours) {
+        this.workHours = workHours;
+    }
+
+    public Integer getViolationDays() {
+        return violationDays;
+    }
+
+    public void setViolationDays(Integer violationDays) {
+        this.violationDays = violationDays;
+    }
+}

+ 32 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/SopPeriodDto.java

@@ -0,0 +1,32 @@
+package com.qmth.sop.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: sop周期
+ * @Author: CaoZixuan
+ * @Date: 2024-09-06
+ */
+public class SopPeriodDto {
+    @ApiModelProperty("扫描周期")
+    private Integer scanPeriod;
+
+    @ApiModelProperty("阅卷周期")
+    private Integer markPaperPeriod;
+
+    public Integer getScanPeriod() {
+        return scanPeriod;
+    }
+
+    public void setScanPeriod(Integer scanPeriod) {
+        this.scanPeriod = scanPeriod;
+    }
+
+    public Integer getMarkPaperPeriod() {
+        return markPaperPeriod;
+    }
+
+    public void setMarkPaperPeriod(Integer markPaperPeriod) {
+        this.markPaperPeriod = markPaperPeriod;
+    }
+}

+ 23 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBDingStatistic.java

@@ -25,12 +25,19 @@ public class TBDingStatistic extends BaseEntity {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long serviceId;
 
+    @ApiModelProperty(value = "服务单元名称")
+    private String serviceName;
+
     @ApiModelProperty(value = "sop单号")
     private String sopNo;
 
     @ApiModelProperty(value = "crm单号")
     private String crmNo;
 
+    @ApiModelProperty(value = "客户id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long customId;
+
     @ApiModelProperty(value = "客户名称")
     private String customName;
 
@@ -111,6 +118,14 @@ public class TBDingStatistic extends BaseEntity {
         this.serviceId = serviceId;
     }
 
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
     public String getSopNo() {
         return sopNo;
     }
@@ -127,6 +142,14 @@ public class TBDingStatistic extends BaseEntity {
         this.crmNo = crmNo;
     }
 
+    public Long getCustomId() {
+        return customId;
+    }
+
+    public void setCustomId(Long customId) {
+        this.customId = customId;
+    }
+
     public String getCustomName() {
         return customName;
     }

+ 10 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBCrmDetailMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.sop.business.entity.TBCrmDetail;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,4 +26,13 @@ public interface TBCrmDetailMapper extends BaseMapper<TBCrmDetail> {
      * @return
      */
     IPage<TBCrmDetail> list(IPage<Map> iPage, @Param("crmNo") String crmNo);
+
+    /**
+     * 根据服务单元和客户id查询派单详情
+     *
+     * @param serviceId 服务单元id
+     * @param customId  客户id
+     * @return 结果
+     */
+    List<TBCrmDetail> findByServiceIdAndCustomId(@Param("serviceId") Long serviceId, @Param("customId") Long customId);
 }

+ 10 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBCrmDetailService.java

@@ -10,6 +10,7 @@ import com.qmth.sop.business.entity.TFCustomFlow;
 import com.qmth.sop.common.enums.FlowStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -119,4 +120,13 @@ public interface TBCrmDetailService extends IService<TBCrmDetail> {
      * @return
      */
     public FlowStatusEnum findById(Long id);
+
+    /**
+     * 根据服务单元id和客户id查询派单明细
+     *
+     * @param serviceId 服务单元id
+     * @param customId  客户id
+     * @return 派单明细
+     */
+    List<TBCrmDetail> findByServiceIdAndCustomId(Long serviceId, Long customId);
 }

+ 41 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBDingStatisticService.java

@@ -1,6 +1,7 @@
 package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.dto.*;
 import com.qmth.sop.business.entity.TBDing;
 import com.qmth.sop.business.entity.TBDingStatistic;
 
@@ -63,4 +64,44 @@ public interface TBDingStatisticService extends IService<TBDingStatistic> {
      * @param requestUserId 创建人
      */
     void buildDingStatisticByService(Long serviceId, List<TBDing> datasource, Long requestUserId);
+
+    /**
+     * 按人员统计(统计区协数据)
+     *
+     * @param serviceId 服务单元id
+     * @return 统计结果
+     */
+    List<DingStatisticByPersonDto> findStatisticByPerson(Long serviceId);
+
+    /**
+     * 按sop统计(不统计区协数据)
+     *
+     * @param serviceId 服务单元id
+     * @return 统计结果
+     */
+    List<DingStatisticBySopDto> findStatisticBySop(Long serviceId);
+
+    /**
+     * 按crm统计(不统计区协数据)
+     *
+     * @param serviceId 服务单元id
+     * @return 统计结果
+     */
+    List<DingStatisticByCrmDto> findStatisticByCrm(Long serviceId);
+
+    /**
+     * 按客户统计(不统计区协数据)
+     *
+     * @param serviceId 服务单元id
+     * @return 统计结果
+     */
+    List<DingStatisticByCustomDto> findStatisticByCustom(Long serviceId);
+
+    /**
+     * 按供应商统计(统计区协数据)
+     *
+     * @param serviceId 服务单元id
+     * @return 统计结果
+     */
+    List<DingStatisticBySupplierDto> findStatisticBySupplier(Long serviceId);
 }

+ 5 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmDetailServiceImpl.java

@@ -583,4 +583,9 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
         }
         return Objects.nonNull(tfFlowApprove) ? tfFlowApprove.getStatus() : null;
     }
+
+    @Override
+    public List<TBCrmDetail> findByServiceIdAndCustomId(Long serviceId, Long customId) {
+        return this.baseMapper.findByServiceIdAndCustomId(serviceId, customId);
+    }
 }

+ 279 - 7
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticServiceImpl.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.sop.business.bean.dto.RegionCoordinatorDingTimeDto;
+import com.qmth.sop.business.bean.dto.*;
 import com.qmth.sop.business.bean.result.CrmProjectResult;
 import com.qmth.sop.business.bean.result.UserArchivesResult;
 import com.qmth.sop.business.entity.*;
@@ -17,6 +17,7 @@ import com.qmth.sop.common.enums.SopRoleTypeEnum;
 import com.qmth.sop.common.util.DateDisposeUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -59,6 +60,15 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
     @Resource
     private TBDingSubmitService tbDingSubmitService;
 
+    @Resource
+    private TBServiceService tbServiceService;
+
+    @Resource
+    private SysCustomService sysCustomService;
+
+    @Resource
+    private SysSupplierService sysSupplierService;
+
     @Override
     public TBDingStatistic findBySopNoAndUserArchivesId(Long serviceId, String sopNo, Long userArchivesId) {
         QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
@@ -124,11 +134,22 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
                 return true;
             }
         }).collect(Collectors.toList());
-        List<String> sopNoList = datasource.stream().map(TBDing::getSopNo).distinct().collect(Collectors.toList());
+        // 工程师考勤统计(sopNo不为空的 按照sopNo统计)
+        List<String> sopNoList = datasource.stream().map(TBDing::getSopNo).filter(SystemConstant::strNotNull).distinct()
+                .collect(Collectors.toList());
         for (String sopNo : sopNoList) {
-            List<TBDing> sopDingInfo = datasource.stream().filter(e -> e.getSopNo().equals(sopNo)).collect(Collectors.toList());
+            List<TBDing> sopDingInfo = datasource.stream().filter(e -> SystemConstant.strNotNull(e.getSopNo()) && e.getSopNo().equals(sopNo))
+                    .collect(Collectors.toList());
             this.buildDingStatisticBySop(sopNo, sopDingInfo, -1L);
         }
+
+        // 区协考勤统计 (sopNo为空的 按照服务单元统计)
+        List<Long> serviceIdList = datasource.stream().filter(e -> !SystemConstant.strNotNull(e.getSopNo())).map(TBDing::getServiceId).distinct().collect(Collectors.toList());
+        for (Long serviceId : serviceIdList) {
+            List<TBDing> serviceDingInfo = datasource.stream().filter(e -> e.getServiceId().equals(serviceId) && !SystemConstant.strNotNull(e.getSopNo()))
+                    .collect(Collectors.toList());
+            this.buildDingStatisticByService(serviceId, serviceDingInfo, -1L);
+        }
     }
 
     @Transactional
@@ -166,10 +187,6 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
         CrmProjectResult crmProjectResult = tbCrmService.findCrmProjectInfo(null, null, crmNo);
         Long serviceUnitId = tbCrm.getServiceId();
 
-        Long scanStartTime = tbCrmDetail.getScanStartTime();
-        Long scanEndTime = tbCrmDetail.getScanEndTime();
-        Long markPaperStartTime = tbCrmDetail.getMarkPaperStartTime();
-        Long markPaperEndTime = tbCrmDetail.getMarkPaperEndTime();
         // 该sop计划有效的日期
         List<Long> userArchivesIdList = datasource.stream().map(TBDing::getUserArchivesId).distinct().collect(Collectors.toList());
 
@@ -283,8 +300,10 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
                 tbDingStatistic.updateInfo(requestUserId);
             }
             tbDingStatistic.setServiceId(serviceUnitId);
+            tbDingStatistic.setServiceName(crmProjectResult.getServiceUnitName());
             tbDingStatistic.setSopNo(sopNo);
             tbDingStatistic.setCrmNo(crmNo);
+            tbDingStatistic.setCustomId(crmProjectResult.getCustomId());
             tbDingStatistic.setCustomName(crmProjectResult.getCustomName());
             tbDingStatistic.setProvince(crmProjectResult.getCustomProvince());
             tbDingStatistic.setCity(crmProjectResult.getCustomCity());
@@ -416,6 +435,7 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
                 tbDingStatistic.updateInfo(requestUserId);
             }
             tbDingStatistic.setServiceId(serviceId);
+            tbDingStatistic.setServiceName(tbServiceService.getById(serviceId).getName());
             tbDingStatistic.setUserId(userId);
             tbDingStatistic.setUserArchivesId(userArchivesId);
             tbDingStatistic.setUserArchivesName(tbUserArchives.getName());
@@ -436,4 +456,256 @@ public class TBDingStatisticServiceImpl extends ServiceImpl<TBDingStatisticMappe
         }
         this.saveOrUpdateBatch(tbDingStatisticList);
     }
+
+    @Override
+    public List<DingStatisticByPersonDto> findStatisticByPerson(Long serviceId) {
+        List<DingStatisticByPersonDto> result = new ArrayList<>();
+        QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
+        if (serviceId != null) {
+            queryWrapper.lambda().eq(TBDingStatistic::getServiceId, serviceId);
+        }
+        List<TBDingStatistic> datasource = this.list(queryWrapper);
+        for (TBDingStatistic tbDingStatistic : datasource) {
+            DingStatisticByPersonDto dto = new DingStatisticByPersonDto();
+            BeanUtils.copyProperties(tbDingStatistic, dto);
+            dto.setUserInfo(tbDingStatistic.getUserArchivesName() + "(" + tbDingStatistic.getUserArchivesCode() + ")");
+            result.add(dto);
+        }
+        return result;
+    }
+
+    @Override
+    public List<DingStatisticBySopDto> findStatisticBySop(Long serviceId) {
+        List<DingStatisticBySopDto> result = new ArrayList<>();
+        QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
+        if (serviceId != null) {
+            queryWrapper.lambda().eq(TBDingStatistic::getServiceId, serviceId);
+        }
+        queryWrapper.lambda().isNotNull(TBDingStatistic::getSopNo);
+        List<TBDingStatistic> datasource = this.list(queryWrapper);
+        List<String> sopNoList = datasource.stream().map(TBDingStatistic::getSopNo).distinct().collect(Collectors.toList());
+
+        for (String sopNo : sopNoList) {
+            TBCrmDetail tbCrmDetail = tbCrmDetailService.findBySopNo(sopNo);
+            SopPeriodDto sopPeriodDto = this.findSopPeriod(tbCrmDetail);
+
+            List<TBDingStatistic> tbDingStatisticList = datasource.stream().filter(e -> sopNo.equals(e.getSopNo())).collect(Collectors.toList());
+            String serviceName = "";
+            int actualDays = 0;
+            int weekdays = 0;
+            int weekends = 0;
+            int legalHolidays = 0;
+            BigDecimal workHours = new BigDecimal(0);
+            int violationDays = 0;
+
+            for (TBDingStatistic tbDingStatistic : tbDingStatisticList) {
+                serviceName = tbDingStatistic.getServiceName();
+                actualDays = actualDays + tbDingStatistic.getActualDays();
+                weekdays = weekdays + tbDingStatistic.getWeekdays();
+                weekends = weekends + tbDingStatistic.getWeekends();
+                legalHolidays = legalHolidays + tbDingStatistic.getLegalHolidays();
+                workHours = workHours.add(tbDingStatistic.getWorkHours());
+                violationDays = violationDays + tbDingStatistic.getViolationDays();
+            }
+            DingStatisticBySopDto dto = new DingStatisticBySopDto();
+            dto.setServiceName(serviceName);
+            dto.setSopNo(sopNo);
+            dto.setCourseName(tbCrmDetail.getCourseName());
+            dto.setActualDays(actualDays);
+            dto.setWeekdays(weekdays);
+            dto.setWeekends(weekends);
+            dto.setLegalHolidays(legalHolidays);
+            dto.setWorkHours(workHours.doubleValue());
+            dto.setViolationDays(violationDays);
+            dto.setScanPeriod(sopPeriodDto.getScanPeriod());
+            dto.setMarkPaperPeriod(sopPeriodDto.getMarkPaperPeriod());
+            result.add(dto);
+        }
+        return result;
+    }
+
+    @Override
+    public List<DingStatisticByCrmDto> findStatisticByCrm(Long serviceId) {
+        List<DingStatisticByCrmDto> result = new ArrayList<>();
+        QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
+        if (serviceId != null) {
+            queryWrapper.lambda().eq(TBDingStatistic::getServiceId, serviceId).isNotNull(TBDingStatistic::getSopNo);
+        }
+        queryWrapper.lambda().isNotNull(TBDingStatistic::getCrmNo);
+        List<TBDingStatistic> datasource = this.list(queryWrapper);
+        List<String> crmNoList = datasource.stream().map(TBDingStatistic::getCrmNo).distinct().collect(Collectors.toList());
+
+        for (String crmNo : crmNoList) {
+            TBCrm tbCrm = tbCrmService.findByCrmNo(crmNo);
+            List<TBCrmDetail> tbCrmDetailList = tbCrmDetailService.list(
+                    new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getCrmNo, crmNo));
+            int scanPeriod = 0;
+            int markPaperPeriod = 0;
+            for (TBCrmDetail tbCrmDetail : tbCrmDetailList) {
+                SopPeriodDto sopPeriodDto = this.findSopPeriod(tbCrmDetail);
+                scanPeriod = scanPeriod + sopPeriodDto.getScanPeriod();
+                markPaperPeriod = markPaperPeriod + sopPeriodDto.getMarkPaperPeriod();
+            }
+
+            List<TBDingStatistic> tbDingStatisticList = datasource.stream().filter(e -> crmNo.equals(e.getCrmNo())).collect(Collectors.toList());
+            String serviceName = "";
+            int actualDays = 0;
+            int weekdays = 0;
+            int weekends = 0;
+            int legalHolidays = 0;
+            BigDecimal workHours = new BigDecimal(0);
+            int violationDays = 0;
+
+            for (TBDingStatistic tbDingStatistic : tbDingStatisticList) {
+                serviceName = tbDingStatistic.getServiceName();
+                actualDays = actualDays + tbDingStatistic.getActualDays();
+                weekdays = weekdays + tbDingStatistic.getWeekdays();
+                weekends = weekends + tbDingStatistic.getWeekends();
+                legalHolidays = legalHolidays + tbDingStatistic.getLegalHolidays();
+                workHours = workHours.add(tbDingStatistic.getWorkHours());
+                violationDays = violationDays + tbDingStatistic.getViolationDays();
+            }
+            DingStatisticByCrmDto dto = new DingStatisticByCrmDto();
+            dto.setServiceName(serviceName);
+            dto.setCrmNo(crmNo);
+            dto.setCrmName(tbCrm.getName());
+            dto.setActualDays(actualDays);
+            dto.setWeekdays(weekdays);
+            dto.setWeekends(weekends);
+            dto.setLegalHolidays(legalHolidays);
+            dto.setWorkHours(workHours.doubleValue());
+            dto.setViolationDays(violationDays);
+            dto.setScanPeriod(scanPeriod);
+            dto.setMarkPaperPeriod(markPaperPeriod);
+            result.add(dto);
+        }
+        return result;
+    }
+
+    @Override
+    public List<DingStatisticByCustomDto> findStatisticByCustom(Long serviceId) {
+        List<DingStatisticByCustomDto> result = new ArrayList<>();
+        QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
+        if (serviceId != null) {
+            queryWrapper.lambda().eq(TBDingStatistic::getServiceId, serviceId);
+        }
+        queryWrapper.lambda().isNotNull(TBDingStatistic::getSopNo);
+        List<TBDingStatistic> datasource = this.list(queryWrapper);
+        List<Long> customIdList = datasource.stream().map(TBDingStatistic::getCustomId).distinct().collect(Collectors.toList());
+
+        for (Long customId : customIdList) {
+            List<TBCrmDetail> tbCrmDetailList = tbCrmDetailService.findByServiceIdAndCustomId(serviceId, customId);
+            int scanPeriod = 0;
+            int markPaperPeriod = 0;
+            for (TBCrmDetail tbCrmDetail : tbCrmDetailList) {
+                SopPeriodDto sopPeriodDto = this.findSopPeriod(tbCrmDetail);
+                scanPeriod = scanPeriod + sopPeriodDto.getScanPeriod();
+                markPaperPeriod = markPaperPeriod + sopPeriodDto.getMarkPaperPeriod();
+            }
+
+            List<TBDingStatistic> tbDingStatisticList = datasource.stream().filter(e -> customId.equals(e.getCustomId())).collect(Collectors.toList());
+            String serviceName = "";
+            String customName = sysCustomService.getById(customId).getName();
+            int actualDays = 0;
+            int weekdays = 0;
+            int weekends = 0;
+            int legalHolidays = 0;
+            BigDecimal workHours = new BigDecimal(0);
+            int violationDays = 0;
+
+            for (TBDingStatistic tbDingStatistic : tbDingStatisticList) {
+                serviceName = tbDingStatistic.getServiceName();
+                actualDays = actualDays + tbDingStatistic.getActualDays();
+                weekdays = weekdays + tbDingStatistic.getWeekdays();
+                weekends = weekends + tbDingStatistic.getWeekends();
+                legalHolidays = legalHolidays + tbDingStatistic.getLegalHolidays();
+                workHours = workHours.add(tbDingStatistic.getWorkHours());
+                violationDays = violationDays + tbDingStatistic.getViolationDays();
+            }
+            DingStatisticByCustomDto dto = new DingStatisticByCustomDto();
+            dto.setServiceName(serviceName);
+            dto.setCustomName(customName);
+            dto.setActualDays(actualDays);
+            dto.setWeekdays(weekdays);
+            dto.setWeekends(weekends);
+            dto.setLegalHolidays(legalHolidays);
+            dto.setWorkHours(workHours.doubleValue());
+            dto.setViolationDays(violationDays);
+            dto.setScanPeriod(scanPeriod);
+            dto.setMarkPaperPeriod(markPaperPeriod);
+            result.add(dto);
+        }
+        return result;
+    }
+
+    @Override
+    public List<DingStatisticBySupplierDto> findStatisticBySupplier(Long serviceId) {
+        List<DingStatisticBySupplierDto> result = new ArrayList<>();
+        QueryWrapper<TBDingStatistic> queryWrapper = new QueryWrapper<>();
+        if (serviceId != null) {
+            queryWrapper.lambda().eq(TBDingStatistic::getServiceId, serviceId);
+        }
+        List<TBDingStatistic> datasource = this.list(queryWrapper);
+        List<Long> supplierIdList = datasource.stream().map(TBDingStatistic::getSupplierId).distinct().collect(Collectors.toList());
+
+        for (Long supplierId : supplierIdList) {
+            List<TBDingStatistic> tbDingStatisticList = datasource.stream().filter(e -> supplierId.equals(e.getSupplierId())).collect(Collectors.toList());
+            String serviceName = "";
+            String supplierName = sysSupplierService.getById(supplierId).getName();
+            int actualDays = 0;
+            int weekdays = 0;
+            int weekends = 0;
+            int legalHolidays = 0;
+            BigDecimal workHours = new BigDecimal(0);
+            int violationDays = 0;
+
+            for (TBDingStatistic tbDingStatistic : tbDingStatisticList) {
+                serviceName = tbDingStatistic.getServiceName();
+                actualDays = actualDays + tbDingStatistic.getActualDays();
+                weekdays = weekdays + tbDingStatistic.getWeekdays();
+                weekends = weekends + tbDingStatistic.getWeekends();
+                legalHolidays = legalHolidays + tbDingStatistic.getLegalHolidays();
+                workHours = workHours.add(tbDingStatistic.getWorkHours());
+                violationDays = violationDays + tbDingStatistic.getViolationDays();
+            }
+            DingStatisticBySupplierDto dto = new DingStatisticBySupplierDto();
+            dto.setServiceName(serviceName);
+            dto.setSupplierName(supplierName);
+            dto.setActualDays(actualDays);
+            dto.setWeekdays(weekdays);
+            dto.setWeekends(weekends);
+            dto.setLegalHolidays(legalHolidays);
+            dto.setWorkHours(workHours.doubleValue());
+            dto.setViolationDays(violationDays);
+            result.add(dto);
+        }
+        return result;
+    }
+
+    /**
+     * 查询sop周期
+     *
+     * @param tbCrmDetail 派单详情
+     * @return 结果
+     */
+    private SopPeriodDto findSopPeriod(TBCrmDetail tbCrmDetail) {
+        Long scanActualStartTime = tbCrmDetail.getScanActualStartTime();
+        Long scanActualEndTime = tbCrmDetail.getScanActualEndTime();
+        Long markPaperActualStartTime = tbCrmDetail.getMarkPaperActualStartTime();
+        Long markPaperActualEndTime = tbCrmDetail.getMarkPaperActualEndTime();
+        int scanPeriod = 0;
+        int markPaperPeriod = 0;
+        if (SystemConstant.longNotNull(scanActualStartTime) && SystemConstant.longNotNull(scanActualEndTime)) {
+            scanPeriod = DateDisposeUtils.getDaysBetween(scanActualStartTime, scanActualEndTime, SystemConstant.DEFAULT_DATE_YMD_S_PATTERN).size();
+        }
+        if (SystemConstant.longNotNull(markPaperActualStartTime) && SystemConstant.longNotNull(
+                markPaperActualEndTime)) {
+            markPaperPeriod = DateDisposeUtils.getDaysBetween(markPaperActualStartTime, markPaperActualEndTime,
+                    SystemConstant.DEFAULT_DATE_YMD_S_PATTERN).size();
+        }
+        SopPeriodDto sopPeriodDto = new SopPeriodDto();
+        sopPeriodDto.setScanPeriod(scanPeriod);
+        sopPeriodDto.setMarkPaperPeriod(markPaperPeriod);
+        return sopPeriodDto;
+    }
 }

+ 29 - 0
sop-business/src/main/resources/db/log/caozixuan_update_log.sql

@@ -35,3 +35,32 @@ ALTER TABLE t_b_ding_submit
 ALTER TABLE t_b_ding_statistic
     CHANGE COLUMN sop_no sop_no VARCHAR(100) CHARACTER SET 'utf8mb4' NULL COMMENT 'sop单号' ,
     CHANGE COLUMN crm_no crm_no VARCHAR(100) CHARACTER SET 'utf8mb4' NULL COMMENT 'crm单号' ;
+
+-- 2024-09-06
+ALTER TABLE t_b_ding_statistic 
+ADD COLUMN custom_id BIGINT NULL COMMENT '客户id' AFTER crm_no;
+
+UPDATE t_b_ding_statistic tbds
+SET
+    tbds.custom_id = (SELECT
+            tbc.custom_id
+        FROM
+            t_b_crm tbc
+        WHERE
+            tbds.crm_no = tbc.crm_no)
+WHERE
+    custom_id IS NULL;
+    
+ALTER TABLE t_b_ding_statistic
+ADD COLUMN service_name VARCHAR(100) NULL COMMENT '服务单元名称' AFTER service_id;
+
+UPDATE t_b_ding_statistic tbds
+SET
+    tbds.service_name = (SELECT
+            tbs.name
+        FROM
+            t_b_service tbs
+        WHERE
+            tbds.service_id = tbs.id)
+WHERE
+    service_name IS NULL;

+ 17 - 0
sop-business/src/main/resources/mapper/TBCrmDetailMapper.xml

@@ -27,4 +27,21 @@
         where t.crm_no = #{crmNo}
         order by t.course_name
     </select>
+
+    <select id="findByServiceIdAndCustomId" resultType="com.qmth.sop.business.entity.TBCrmDetail">
+        SELECT
+            tbcd.*
+        FROM
+            t_b_crm_detail tbcd
+                LEFT JOIN
+            t_b_crm tbc ON tbcd.crm_no = tbc.crm_no
+        <where>
+            <if test="serviceId != null">
+                AND tbc.service_id = #{serviceId}
+            </if>
+            <if test="customId != null">
+                AND tbc.custom_id = #{customId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 7 - 7
sop-task/src/main/java/com/qmth/sop/task/start/StartRunning.java

@@ -58,12 +58,12 @@ public class StartRunning implements CommandLineRunner {
         quartzService.addJob(FlowTaskRemindJob.class, JobEnum.FLOW_TASK_REMIND_JOB.name(), JobEnum.FLOW_TASK_REMIND_JOB_GROUP.name(), sysConfig.getConfigValue(), flowTaskRemindJobMap);
         log.info("增加流程任务提醒定时任务 end");
 
-        log.info("fxxk派单同步定时任务 start");
-        Map<Object,Object> fxxkCrmSyncMap = new HashMap<>();
-        fxxkCrmSyncMap.put(SystemConstant.NAME, FxxkCrmSyncJob.class.getName());
+//        log.info("fxxk派单同步定时任务 start");
+//        Map<Object,Object> fxxkCrmSyncMap = new HashMap<>();
+//        fxxkCrmSyncMap.put(SystemConstant.NAME, FxxkCrmSyncJob.class.getName());
         quartzService.deleteJob(JobEnum.SYNC_FXXK_CRM.name(), JobEnum.SYNC_FXXK_CRM_GROUP.name());
-        quartzService.addJob(FxxkCrmSyncJob.class, JobEnum.SYNC_FXXK_CRM.name(), JobEnum.SYNC_FXXK_CRM_GROUP.name(), "0 0/5 6-23 * * ?", fxxkCrmSyncMap);
-        log.info("fxxk派单同步定时任务 end");
+//        quartzService.addJob(FxxkCrmSyncJob.class, JobEnum.SYNC_FXXK_CRM.name(), JobEnum.SYNC_FXXK_CRM_GROUP.name(), "0 0/5 6-23 * * ?", fxxkCrmSyncMap);
+//        log.info("fxxk派单同步定时任务 end");
 
 //        log.info("rtzf用户推送定时任务 start");
 //        Map<Object,Object> rtzfUserPushMap = new HashMap<>();
@@ -90,8 +90,8 @@ public class StartRunning implements CommandLineRunner {
         Map<Object,Object> dingStatisticMap = new HashMap<>();
         dingStatisticMap.put(SystemConstant.NAME, DingStatisticJob.class.getName());
         quartzService.deleteJob(JobEnum.DING_STATISTIC.name(), JobEnum.DING_STATISTIC_GROUP.name());
-        quartzService.addJob(DingStatisticJob.class, JobEnum.DING_STATISTIC.name(), JobEnum.DING_STATISTIC_GROUP.name(), "0 0 2 * * ?", dingStatisticMap);
-//        quartzService.addJob(DingStatisticJob.class, JobEnum.DING_STATISTIC.name(), JobEnum.DING_STATISTIC_GROUP.name(), "0 0/1 * * * ?", dingStatisticMap);
+//        quartzService.addJob(DingStatisticJob.class, JobEnum.DING_STATISTIC.name(), JobEnum.DING_STATISTIC_GROUP.name(), "0 0 2 * * ?", dingStatisticMap);
+        quartzService.addJob(DingStatisticJob.class, JobEnum.DING_STATISTIC.name(), JobEnum.DING_STATISTIC_GROUP.name(), "0 0/1 * * * ?", dingStatisticMap);
         log.info("考勤统计定时任务 end");
 
         log.info("服务器启动时执行 end");