Эх сурвалжийг харах

fix:查询是否可以更改考勤配置

caozixuan 1 жил өмнө
parent
commit
1318385a04

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBDingSubmit.java

@@ -33,6 +33,10 @@ public class TBDingSubmit extends BaseEntity implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long userArchivesId;
 
+    @ApiModelProperty(value = "用户id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long userId;
+
     @ApiModelProperty(value = "扫描开始时间")
     private Long scanStartTime;
 
@@ -114,6 +118,14 @@ public class TBDingSubmit extends BaseEntity implements Serializable {
         this.userArchivesId = userArchivesId;
     }
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
     public Long getScanStartTime() {
         return scanStartTime;
     }

+ 17 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBDingSubmitService.java

@@ -100,4 +100,21 @@ public interface TBDingSubmitService extends IService<TBDingSubmit> {
      */
     List<DingSubmitExportDto> findDingSubmitExportList(Long serviceUnitId, String dingSubmitStatusDesc, Long submitUserId,
             String archivesName, Long supplierId, String customName, String sopNo, Integer violationHoursLimit, Integer dingExceptionLimit, Integer exceptionLimit, Long requestUserId);
+
+    /**
+     * 查询考勤设置是否可以更新
+     *
+     * @param sopNo sopNo
+     * @return true: 可以更新,false: 不可以更新
+     */
+    boolean canUpdateDingSetting(String sopNo);
+
+    /**
+     * 查询考勤设置是否可以更新
+     *
+     * @param sopNo  sopNo
+     * @param userId 打卡用户id
+     * @return true: 可以更新,false: 不可以更新
+     */
+    boolean canUpdateDingSetting(String sopNo, Long userId);
 }

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

@@ -1,6 +1,7 @@
 package com.qmth.sop.business.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -226,6 +227,37 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         }).collect(Collectors.toList());
     }
 
+    @Override
+    public boolean canUpdateDingSetting(String sopNo) {
+        boolean result = true;
+        TBDingSubmit tbDingSubmit = this.getOne(
+                new QueryWrapper<TBDingSubmit>().lambda().eq(TBDingSubmit::getSopNo, sopNo).last(SystemConstant.LIMIT1));
+        if (Objects.nonNull(tbDingSubmit)) {
+            DingSubmitStatusEnum submitStatus = tbDingSubmit.getSubmitStatus();
+            if (!DingSubmitStatusEnum.WILL_SUBMIT.equals(submitStatus) && !DingSubmitStatusEnum.AGREE_WITHDRAW.equals(
+                    submitStatus)) {
+                result = false;
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public boolean canUpdateDingSetting(String sopNo, Long userId) {
+        boolean result = true;
+        TBDingSubmit tbDingSubmit = this.getOne(
+                new QueryWrapper<TBDingSubmit>().lambda().eq(TBDingSubmit::getSopNo, sopNo)
+                        .eq(TBDingSubmit::getUserId, userId).last(SystemConstant.LIMIT1));
+        if (Objects.nonNull(tbDingSubmit)) {
+            DingSubmitStatusEnum submitStatus = tbDingSubmit.getSubmitStatus();
+            if (!DingSubmitStatusEnum.WILL_SUBMIT.equals(submitStatus) && !DingSubmitStatusEnum.AGREE_WITHDRAW.equals(
+                    submitStatus)) {
+                result = false;
+            }
+        }
+        return result;
+    }
+
     private void dingSubmitOperate(DingSubmitParam dingSubmitParam, DingSubmitOperateEnum dingSubmitOperateType) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         String sopNo = dingSubmitParam.getSopNo();
@@ -245,6 +277,7 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
         tbDingSubmit.setServiceId(dingSubmitResult.getServiceUnitId());
         tbDingSubmit.setSopNo(sopNo);
         tbDingSubmit.setCrmNo(dingSubmitResult.getCrmNo());
+        tbDingSubmit.setUserId(dingSubmitResult.getUserId());
         tbDingSubmit.setUserArchivesId(userArchivesId);
         tbDingSubmit.setScanStartTime(dingSubmitResult.getScanStartTime());
         tbDingSubmit.setScanEndTime(dingSubmitResult.getScanEndTime());
@@ -290,8 +323,8 @@ public class TBDingSubmitServiceImpl extends ServiceImpl<TBDingSubmitMapper, TBD
             FlowStatusEnum flowStatus = tfFlowApproves.getStatus();
             if (!FlowStatusEnum.FINISH.equals(flowStatus)) {
                 throw ExceptionResultEnum.ERROR.exception(
-                        String.format("服务单元为[%s],sop流水号为[%s],用户档案为[%s]的sop状态为[%s],sop结束后次日才能提交考勤", serviceUnitName, sopNo,
-                                userArchivesName, flowStatus.getTitle()));
+                        String.format("服务单元为[%s],sop流水号为[%s],用户档案为[%s]的sop状态为[%s],sop结束后次日才能提交考勤", serviceUnitName,
+                                sopNo, userArchivesName, flowStatus.getTitle()));
             }
             Long endTime = tfFlowApproves.getUpdateTime();
             Calendar calendar = Calendar.getInstance();

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

@@ -169,3 +169,9 @@ UPDATE sys_privilege SET name = '服务范围管理-划定派单和服务单元
 
 -- 2024-06-04
 UPDATE sys_privilege SET front_display = '0' WHERE (id = '230');
+
+-- 2024-06-07
+ALTER TABLE t_b_ding_submit
+    ADD COLUMN user_id BIGINT NOT NULL COMMENT '人员id' AFTER crm_no,
+    DROP INDEX t_b_ding_submit_un ,
+    ADD UNIQUE INDEX t_b_ding_submit_un USING BTREE (sop_no, user_id);