Explorar el Código

add:工时管理

caozixuan hace 1 año
padre
commit
f1127e5f52

+ 11 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DateFormDto.java

@@ -13,6 +13,9 @@ public class DateFormDto {
     @ApiModelProperty("sop已经结束?")
     private Boolean sopIsEnd;
 
+    @ApiModelProperty("日期表单结束日期")
+    private String endDate;
+
     @ApiModelProperty("日期表单")
     private List<String> dateFormList;
 
@@ -24,6 +27,14 @@ public class DateFormDto {
         this.sopIsEnd = sopIsEnd;
     }
 
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
     public List<String> getDateFormList() {
         return dateFormList;
     }

+ 5 - 5
sop-business/src/main/java/com/qmth/sop/business/bean/result/DingStatisticResult.java

@@ -20,7 +20,7 @@ public class DingStatisticResult {
     private Integer exceptionCount;
 
     @ApiModelProperty(value = "剩余补卡次数")
-    private Integer remainCont;
+    private Integer remainCount;
 
     @ApiModelProperty(value = "打卡表单")
     private List<DingFormResult> dingFormList;
@@ -49,12 +49,12 @@ public class DingStatisticResult {
         this.exceptionCount = exceptionCount;
     }
 
-    public Integer getRemainCont() {
-        return remainCont;
+    public Integer getRemainCount() {
+        return remainCount;
     }
 
-    public void setRemainCont(Integer remainCont) {
-        this.remainCont = remainCont;
+    public void setRemainCount(Integer remainCount) {
+        this.remainCount = remainCount;
     }
 
     public List<DingFormResult> getDingFormList() {

+ 36 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/DingSubmitResult.java

@@ -107,6 +107,18 @@ public class DingSubmitResult {
     @ApiModelProperty(value = "提交时间")
     private Long submitTime;
 
+    @ApiModelProperty(value = "业务线负责人id(数据权限用)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long serviceUnitLeaderId;
+
+    @ApiModelProperty(value = "大区经理id(数据权限用)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long regionManagerId;
+
+    @ApiModelProperty(value = "区域协调人id(数据权限用)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long coordinatorId;
+
     public Long getServiceUnitId() {
         return serviceUnitId;
     }
@@ -346,4 +358,28 @@ public class DingSubmitResult {
     public void setSubmitTime(Long submitTime) {
         this.submitTime = submitTime;
     }
+
+    public Long getServiceUnitLeaderId() {
+        return serviceUnitLeaderId;
+    }
+
+    public void setServiceUnitLeaderId(Long serviceUnitLeaderId) {
+        this.serviceUnitLeaderId = serviceUnitLeaderId;
+    }
+
+    public Long getRegionManagerId() {
+        return regionManagerId;
+    }
+
+    public void setRegionManagerId(Long regionManagerId) {
+        this.regionManagerId = regionManagerId;
+    }
+
+    public Long getCoordinatorId() {
+        return coordinatorId;
+    }
+
+    public void setCoordinatorId(Long coordinatorId) {
+        this.coordinatorId = coordinatorId;
+    }
 }

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

@@ -3,6 +3,7 @@ package com.qmth.sop.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.result.DingSubmitResult;
 import com.qmth.sop.business.entity.TBDingSubmit;
 import com.qmth.sop.common.enums.DingSubmitStatusEnum;
@@ -32,6 +33,7 @@ public interface TBDingSubmitMapper extends BaseMapper<TBDingSubmit> {
      * @param dingExceptionLimit   需处理异常考勤限制
      * @param remainLimit          补卡限制
      * @param exceptionLimit       异常限制
+     * @param dpr                  数据权限
      * @return 考勤提交分页查询结果
      */
     IPage<DingSubmitResult> findDingSubmitPage(@Param("iPage") Page<DingSubmitResult> iPage,
@@ -45,7 +47,8 @@ public interface TBDingSubmitMapper extends BaseMapper<TBDingSubmit> {
                                                @Param("violationHoursLimit") Integer violationHoursLimit,
                                                @Param("dingExceptionLimit") Integer dingExceptionLimit,
                                                @Param("remainLimit") Integer remainLimit,
-                                               @Param("exceptionLimit") Integer exceptionLimit);
+                                               @Param("exceptionLimit") Integer exceptionLimit,
+                                               @Param("dpr") DataPermissionDto dpr);
 
     /**
      * 考勤提交列表查询
@@ -62,6 +65,7 @@ public interface TBDingSubmitMapper extends BaseMapper<TBDingSubmit> {
      * @param dingExceptionLimit   需处理异常考勤限制
      * @param remainLimit          补卡限制
      * @param exceptionLimit       异常限制
+     * @param dpr                  数据权限
      * @return 考勤提交分页查询结果
      */
     List<DingSubmitResult> findDingSubmitList(@Param("serviceUnitId") Long serviceUnitId,
@@ -75,5 +79,6 @@ public interface TBDingSubmitMapper extends BaseMapper<TBDingSubmit> {
                                               @Param("violationHoursLimit") Integer violationHoursLimit,
                                               @Param("dingExceptionLimit") Integer dingExceptionLimit,
                                               @Param("remainLimit") Integer remainLimit,
-                                              @Param("exceptionLimit") Integer exceptionLimit);
+                                              @Param("exceptionLimit") Integer exceptionLimit,
+                                              @Param("dpr") DataPermissionDto dpr);
 }

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

@@ -95,10 +95,11 @@ public interface TBDingSubmitService extends IService<TBDingSubmit> {
      * @param dingExceptionLimit   需处理异常考勤限制
      * @param remainLimit          补卡限制
      * @param exceptionLimit       异常限制
+     * @param requestUserId        请求的用户id
      * @return 考勤提交小计结果
      */
     List<DingSubmitExportDto> findDingSubmitExportList(Long serviceUnitId, String dingSubmitStatusDesc, Long submitUserId,
                                                        String archivesName, Long supplierId, String customName, String sopNo,
                                                        Integer violationHoursLimit, Integer dingExceptionLimit,
-                                                       Integer remainLimit, Integer exceptionLimit);
+                                                       Integer remainLimit, Integer exceptionLimit, Long requestUserId);
 }

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

@@ -107,11 +107,11 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
         DateFormDto dateFormDto = this.buildSignDateFormBySop(sopNo);
         List<String> dateFormList = dateFormDto.getDateFormList();
 
+
         int workCount = 0;
         int exceptionCount = 0;
         List<DingFormResult> formList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(dateFormList)) {
-            Boolean sopIsEnd = dateFormDto.getSopIsEnd();
 
             List<TBDing> tbDingList = this.list(new QueryWrapper<TBDing>().lambda()
                     .eq(TBDing::getSopNo, sopNo)
@@ -130,11 +130,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
 
                 DingInfoResult signInInfo = new DingInfoResult();
                 if (signInTime == null || signInTime == 0) {
-                    if (sopIsEnd) {
-                        signInInfo.setStatus(DingStatusEnum.RE_SIGN);
-                    } else {
-                        signInInfo.setStatus(DingStatusEnum.NO_SIGN);
-                    }
+                    signInInfo.setStatus(DingStatusEnum.NO_SIGN);
                 } else {
                     if (sopNo.equals(dingSopNo)) {
                         signInInfo.setStatus(DingStatusEnum.SIGN);
@@ -149,17 +145,13 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 }
 
                 Long signOutTime = tbDing.getSignOutTime();
-                String signOutAddress = tbDing.getSignInAddress();
-                String axisOutX = tbDing.getAxisInX();
-                String axisOutY = tbDing.getAxisInY();
+                String signOutAddress = tbDing.getSignOutAddress();
+                String axisOutX = tbDing.getAxisOutX();
+                String axisOutY = tbDing.getAxisOutY();
 
                 DingInfoResult signOutInfo = new DingInfoResult();
                 if (signOutTime == null || signOutTime == 0) {
-                    if (sopIsEnd) {
-                        signOutInfo.setStatus(DingStatusEnum.RE_SIGN);
-                    } else {
-                        signOutInfo.setStatus(DingStatusEnum.NO_SIGN);
-                    }
+                    signOutInfo.setStatus(DingStatusEnum.NO_SIGN);
                 } else {
                     if (sopNo.equals(dingSopNo)) {
                         signOutInfo.setStatus(DingStatusEnum.SIGN);
@@ -180,6 +172,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 formDingList.add(formResult);
             }
 
+            String endDate = dateFormDto.getEndDate();
 
             for (String date : dateFormList) {
                 List<DingFormResult> dingFormResultList = formDingList.stream()
@@ -190,11 +183,19 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 dingFormResult.setSignDate(date);
                 if (CollectionUtils.isNotEmpty(dingFormResultList)) {
                     // 有这一天的打卡记录
-
                     dingFormResult = dingFormResultList.get(0);
                     // 考勤异常天数增加
-                    if (dingFormResult.getSignInInfo().getStatus().equals(DingStatusEnum.RE_SIGN) || dingFormResult.getSignOutInfo().getStatus().equals(DingStatusEnum.RE_SIGN)) {
-                        exceptionCount++;
+                    if (dingFormResult.getSignInInfo().getStatus().equals(DingStatusEnum.NO_SIGN)) {
+                        if (!endDate.equals(date)) {
+                            exceptionCount++;
+                            dingFormResult.getSignInInfo().setStatus(DingStatusEnum.RE_SIGN);
+                        }
+                    }
+                    if (dingFormResult.getSignOutInfo().getStatus().equals(DingStatusEnum.NO_SIGN)) {
+                        if (!endDate.equals(date)) {
+                            exceptionCount++;
+                            dingFormResult.getSignOutInfo().setStatus(DingStatusEnum.RE_SIGN);
+                        }
                     }
                     // 出勤天数增加
                     if ((dingFormResult.getSignInInfo().getStatus().equals(DingStatusEnum.SIGN) && dingFormResult.getSignOutInfo().getStatus().equals(DingStatusEnum.SIGN)) ||
@@ -204,12 +205,12 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 } else {
                     // 完全没有这天的打卡记录
                     DingInfoResult in = new DingInfoResult();
-                    in.setStatus(DingStatusEnum.NO_SIGN);
+                    in.setStatus(DingStatusEnum.RE_SIGN);
                     DingInfoResult out = new DingInfoResult();
-                    out.setStatus(DingStatusEnum.NO_SIGN);
+                    out.setStatus(DingStatusEnum.RE_SIGN);
                     dingFormResult.setSignInInfo(in);
                     dingFormResult.setSignOutInfo(out);
-                    exceptionCount++;
+                    exceptionCount = exceptionCount + 2;
                 }
                 formList.add(dingFormResult);
             }
@@ -224,7 +225,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
         dingStatisticResult.setDingFormList(formList);
         dingStatisticResult.setWorkDays(workCount);
         dingStatisticResult.setExceptionCount(exceptionCount);
-        dingStatisticResult.setRemainCont(reissueCardCount - applyCount);
+        dingStatisticResult.setRemainCount(reissueCardCount - applyCount);
         return dingStatisticResult;
     }
 
@@ -419,7 +420,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
     @Override
     public DateFormDto buildSignDateFormBySop(String sopNo) {
         DateFormDto result = new DateFormDto();
-        List<String> dateList;
+        List<String> dateList = new ArrayList<>();
         if (sopNo != null && sopNo.length() > 0) {
             List<TFFlowApprove> tfFlowApproves = this.baseMapper.findDateAndStatusBySopNo(sopNo);
             if (CollectionUtils.isNotEmpty(tfFlowApproves)) {
@@ -442,6 +443,9 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 result.setDateFormList(dateList);
             }
         }
+        if (CollectionUtils.isNotEmpty(dateList)) {
+            result.setEndDate(dateList.get(dateList.size() - 1));
+        }
         return result;
     }
 }

+ 22 - 7
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingSubmitServiceImpl.java

@@ -3,6 +3,7 @@ package com.qmth.sop.business.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.dto.DingSubmitExportDto;
 import com.qmth.sop.business.bean.params.DingSubmitParam;
 import com.qmth.sop.business.bean.result.DingSubmitResult;
@@ -10,6 +11,7 @@ import com.qmth.sop.business.bean.result.DingSubmitSubTotalResult;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBDingSubmit;
 import com.qmth.sop.business.mapper.TBDingSubmitMapper;
+import com.qmth.sop.business.service.SysUserService;
 import com.qmth.sop.business.service.TBDingSubmitService;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.DingSubmitStatusEnum;
@@ -19,6 +21,7 @@ import com.qmth.sop.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -32,6 +35,9 @@ import java.util.stream.Stream;
  */
 @Service
 public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBDingSubmit> implements TBDingSubmitService {
+    @Resource
+    private SysUserService sysUserService;
+
     @Override
     public IPage<DingSubmitResult> findDingSubmitPage(Long serviceUnitId, String dingSubmitStatusDesc, Long submitUserId,
                                                       String archivesName, Long supplierId, String customName, String sopNo,
@@ -46,8 +52,11 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         }
         archivesName = SystemConstant.translateSpecificSign(archivesName);
         customName = SystemConstant.translateSpecificSign(customName);
+
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
         return this.baseMapper.findDingSubmitPage(new Page<>(pageNumber, pageSize), serviceUnitId, dingSubmitStatusEnumList,
-                submitUserId, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit);
+                submitUserId, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit, dpr);
     }
 
     @Override
@@ -63,8 +72,12 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         }
         archivesName = SystemConstant.translateSpecificSign(archivesName);
         customName = SystemConstant.translateSpecificSign(customName);
+
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+
         List<DingSubmitResult> dingSubmitResultList = this.baseMapper.findDingSubmitList(serviceUnitId, dingSubmitStatusEnumList,
-                submitUserId, null, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit);
+                submitUserId, null, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit, dpr);
 
         Integer dingCount = dingSubmitResultList.size();
         Integer willSubmitCount = Math.toIntExact(dingSubmitResultList.stream().filter(e -> e.getSubmitStatus().getSubmitDesc().equals("待提交")).count());
@@ -96,7 +109,7 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
             Long userArchivesId = dingSubmitParam.getUserArchivesId();
             List<DingSubmitResult> dingSubmitResultList = this.baseMapper.findDingSubmitList(serviceUnitId, null,
                     null, userArchivesId, null, null, null, sopNo,
-                    null, null, null, null);
+                    null, null, null, null, null);
 
             if (dingSubmitResultList.size() != 1) {
                 throw ExceptionResultEnum.ERROR.exception(String.format("未找到服务单元id为[%s],sop流水号为[%s],用户档案号为[%s]的考勤信息", serviceUnitId, sopNo, userArchivesId));
@@ -155,7 +168,7 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         Long userArchivesId = dingSubmitParam.getUserArchivesId();
         List<DingSubmitResult> dingSubmitResultList = this.baseMapper.findDingSubmitList(serviceUnitId, null,
                 null, userArchivesId, null, null, null, sopNo,
-                null, null, null, null);
+                null, null, null, null, null);
 
         if (dingSubmitResultList.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception(String.format("未找到服务单元id为[%s],sop流水号为[%s],用户档案号为[%s]的考勤信息", serviceUnitId, sopNo, userArchivesId));
@@ -205,7 +218,7 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         Long userArchivesId = dingSubmitParam.getUserArchivesId();
         List<DingSubmitResult> dingSubmitResultList = this.baseMapper.findDingSubmitList(serviceUnitId, null,
                 null, userArchivesId, null, null, null, sopNo,
-                null, null, null, null);
+                null, null, null, null, null);
 
         if (dingSubmitResultList.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception(String.format("未找到服务单元id为[%s],sop流水号为[%s],用户档案号为[%s]的考勤信息", serviceUnitId, sopNo, userArchivesId));
@@ -246,7 +259,7 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
     }
 
     @Override
-    public List<DingSubmitExportDto> findDingSubmitExportList(Long serviceUnitId, String dingSubmitStatusDesc, Long submitUserId, String archivesName, Long supplierId, String customName, String sopNo, Integer violationHoursLimit, Integer dingExceptionLimit, Integer remainLimit, Integer exceptionLimit) {
+    public List<DingSubmitExportDto> findDingSubmitExportList(Long serviceUnitId, String dingSubmitStatusDesc, Long submitUserId, String archivesName, Long supplierId, String customName, String sopNo, Integer violationHoursLimit, Integer dingExceptionLimit, Integer remainLimit, Integer exceptionLimit, Long requestUserId) {
         List<DingSubmitStatusEnum> dingSubmitStatusEnumList = new ArrayList<>();
         if (dingSubmitStatusDesc != null && dingSubmitStatusDesc.length() > 0) {
             dingSubmitStatusEnumList = Arrays.stream(DingSubmitStatusEnum.values())
@@ -255,9 +268,11 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         }
         archivesName = SystemConstant.translateSpecificSign(archivesName);
         customName = SystemConstant.translateSpecificSign(customName);
+
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUserId);
         List<DingSubmitResult> dingSubmitResultList = this.baseMapper.findDingSubmitList(serviceUnitId, dingSubmitStatusEnumList,
                 submitUserId, null, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit,
-                remainLimit, exceptionLimit);
+                remainLimit, exceptionLimit, dpr);
 
         return dingSubmitResultList.stream().flatMap(e -> {
             DingSubmitExportDto dto = new DingSubmitExportDto();

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

@@ -184,11 +184,11 @@ public class TBUserArchivesAllocationServiceImpl extends ServiceImpl<TBUserArchi
         }
 
         // 更新区域负责人
-        if (regionUserId != null && regionUserId > 0) {
-            tbCrm.setRegionCoordinatorId(regionUserId);
-            tbCrmService.updateById(tbCrm);
-        }
-
+        UpdateWrapper<TBCrm> coordinatorUpdateWrapper = new UpdateWrapper<>();
+        coordinatorUpdateWrapper.lambda()
+                .set(TBCrm::getRegionCoordinatorId,regionUserId)
+                .eq(TBCrm::getId,tbCrm.getId());
+        tbCrmService.update(coordinatorUpdateWrapper);
 
         // 新增前删除派单关系
         if (CollectionUtils.isNotEmpty(dbList)) {

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

@@ -434,8 +434,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             Integer dingExceptionLimit = query.getDingExceptionLimit();
             Integer remainLimit = query.getRemainLimit();
             Integer exceptionLimit = query.getExceptionLimit();
+
+            SysUser requestUser = (SysUser) map.get(SystemConstant.USER);
+
             List<DingSubmitExportDto> dingSubmitExportDtoList = tbDingSubmitService.findDingSubmitExportList(serviceUnitId, dingSubmitStatusDesc,
-                    submitUserId, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit);
+                    submitUserId, archivesName, supplierId, customName, sopNo, violationHoursLimit, dingExceptionLimit, remainLimit, exceptionLimit, requestUser.getId());
             //数据读取逻辑end
             EasyExcel.write(fileTemp, DingSubmitExportDto.class).sheet("考勤提交导出").doWrite(dingSubmitExportDtoList);
 

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

@@ -147,7 +147,7 @@
         d.sign_date,
         d.type,
         d.sign_time,
-        CASE WHEN d.sign_time IS NOT NULL THEN 'NORMAL' ELSE 'abnormal' END STATUS,
+        CASE WHEN d.sign_time IS NOT NULL THEN 'NORMAL' ELSE 'ABNORMAL' END STATUS,
         c.address,
         d.service_id,
         s.id supplier_id ,

+ 50 - 2
sop-business/src/main/resources/mapper/TBDingSubmitMapper.xml

@@ -36,7 +36,10 @@
                  IFNULL(tbds.submit_status, 'WILL_SUBMIT') AS submitStatus,
                  tbds.submit_user_id AS submitUserId,
                  su.real_name AS submitUserName,
-                 tbds.submit_time AS submitTime
+                 tbds.submit_time AS submitTime,
+                 tbs.service_lead_id AS serviceUnitLeaderId,
+                 tbc.lead_id AS regionManagerId,
+                 tbc.region_coordinator_id AS coordinatorId
              FROM
                  (SELECT
                       service_id,
@@ -119,6 +122,27 @@
             <if test="exceptionLimit != null">
                 AND main.exceptionCount > #{exceptionLimit}
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <choose>
+                    <when test="dpr.hasBusiness">
+                        AND main.serviceUnitLeaderId = #{dpr.requestUserId}
+                    </when>
+                    <otherwise>
+                        <choose>
+                            <when test="dpr.hasRegionManager">
+                                AND main.regionManagerId = #{dpr.requestUserId}
+                            </when>
+                            <otherwise>
+                                <choose>
+                                    <when test="dpr.hasRegionCoordinator">
+                                        AND main.coordinatorId = #{dpr.requestUserId}
+                                    </when>
+                                </choose>
+                            </otherwise>
+                        </choose>
+                    </otherwise>
+                </choose>
+            </if>
         </where>
     </select>
 
@@ -156,7 +180,10 @@
                  IFNULL(tbds.submit_status, 'WILL_SUBMIT') AS submitStatus,
                  tbds.submit_user_id AS submitUserId,
                  su.real_name AS submitUserName,
-                 tbds.submit_time AS submitTime
+                 tbds.submit_time AS submitTime,
+                tbs.service_lead_id AS serviceUnitLeaderId,
+                tbc.lead_id AS regionManagerId,
+                tbc.region_coordinator_id AS coordinatorId
              FROM
                  (SELECT
                       service_id,
@@ -242,6 +269,27 @@
             <if test="exceptionLimit != null">
                 AND main.exceptionCount > #{exceptionLimit}
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <choose>
+                    <when test="dpr.hasBusiness">
+                        AND main.serviceUnitLeaderId = #{dpr.requestUserId}
+                    </when>
+                    <otherwise>
+                        <choose>
+                            <when test="dpr.hasRegionManager">
+                                AND main.regionManagerId = #{dpr.requestUserId}
+                            </when>
+                            <otherwise>
+                                <choose>
+                                    <when test="dpr.hasRegionCoordinator">
+                                        AND main.coordinatorId = #{dpr.requestUserId}
+                                    </when>
+                                </choose>
+                            </otherwise>
+                        </choose>
+                    </otherwise>
+                </choose>
+            </if>
         </where>
     </select>
 </mapper>

+ 1 - 0
sop-common/src/main/java/com/qmth/sop/common/enums/DingStatusEnum.java

@@ -9,6 +9,7 @@ public enum DingStatusEnum {
     SIGN("已打卡", "正常打卡,显示时间和打卡地点"),
     NO_SIGN("未打卡", "未打卡,显示未打卡"),
     RE_SIGN("补卡", "补卡,显示补卡"),
+    RE_SIGN_ING("补卡中","显示补卡中"),
     OTHER("在其他sop打卡", "显示'--'");
 
     DingStatusEnum(String title, String desc) {

+ 4 - 4
sop-common/src/main/java/com/qmth/sop/common/util/DateDisposeUtils.java

@@ -189,8 +189,8 @@ public class DateDisposeUtils extends DateUtils {
 
             Calendar tempEnd = Calendar.getInstance();
             tempEnd.setTime(end);
-            tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
-            while (tempStart.before(tempEnd)) {
+//            tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
+            while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) {
                 days.add(dateFormat.format(tempStart.getTime()));
                 tempStart.add(Calendar.DAY_OF_YEAR, 1);
             }
@@ -223,8 +223,8 @@ public class DateDisposeUtils extends DateUtils {
 
         Calendar tempEnd = Calendar.getInstance();
         tempEnd.setTime(end);
-        tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
-        while (tempStart.before(tempEnd)) {
+//        tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
+        while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) {
             days.add(dateFormat.format(tempStart.getTime()));
             tempStart.add(Calendar.DAY_OF_YEAR, 1);
         }