Преглед на файлове

签到判断 2023-04-09

donggaosheng преди 2 години
родител
ревизия
f00041cbc3

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java

@@ -219,4 +219,9 @@ public interface RemoteDutyService {
      */
     @PostMapping("/XxpInspection/updateInspection")
     ResultData updateInspection(@RequestParam("labId") Long labId,@RequestParam("userId") Long userId);
+
+
+    @PostMapping("/XxpInspection/isSignInType")
+    ResultData isSignInType(@RequestParam("labId") Long labId,@RequestParam("userId") Long userId);
+
     }

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java

@@ -131,6 +131,11 @@ public class RemoteDutyFailback implements FallbackFactory<RemoteDutyService> {
             public ResultData updateInspection(Long labId, Long userId) {
                 return ResultData.fail("修改巡查记录失败:" + cause.getMessage());
             }
+
+            @Override
+            public ResultData isSignInType(Long labId, Long userId) {
+                return ResultData.fail("获取签到方式失败:" + cause.getMessage());
+            }
         };
     }
 }

+ 7 - 0
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java

@@ -18,6 +18,7 @@ import com.zd.system.api.feign.RemoteUserService;
 import com.zd.system.api.vo.SysLogoConfigVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -534,4 +535,10 @@ public class LabBoardApi {
         return remoteDutyService.updateInspection(labId,userId);
     }
 
+    @ApiOperation(value = "判断是巡查签到还是准入签到 1巡查 2准入")
+    @PostMapping(value = "/XxpInspection/isSignInType")
+    public ResultData isSignInType(@RequestParam("labId") Long labId,@RequestParam("userId") Long userId) {
+        return remoteDutyService.isSignInType(labId,userId);
+    }
+
 }

+ 31 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpInspectionController.java

@@ -13,6 +13,7 @@ import com.zd.laboratory.domain.XxpCardInfo;
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.vo.XxpInspectionVO;
+import com.zd.laboratory.service.ILabSubjectAccessRecordService;
 import com.zd.laboratory.service.IXxpCardInfoService;
 import com.zd.laboratory.service.IXxpInspectionService;
 import com.zd.model.constant.HttpStatus;
@@ -57,6 +58,9 @@ public class LabXxpInspectionController extends BaseController
     @Autowired
     private RemoteUserService remoteUserService;
 
+    @Autowired
+    private ILabSubjectAccessRecordService iLabSubjectAccessRecordService;
+
 
     /**
      * 查询巡查列表
@@ -257,7 +261,11 @@ public class LabXxpInspectionController extends BaseController
         }
         int num=xxpInspectionService.selectNoSignOut(xxpCardInfo.getSubjectId(),xxpInspectionVo.getUserId());
         if(num>0){
-            return ResultData.fail("已签到,请勿重复签到,请签出后再签到!");
+            return ResultData.fail("请你先签退后再进行签到!");
+        }
+        int numAccess=iLabSubjectAccessRecordService.getSignOutRecordNoOut(xxpCardInfo.getSubjectId(),xxpInspectionVo.getUserId());
+        if(numAccess>0){
+            return ResultData.fail("请你先签退后再进行签到!");
         }
         ResultData resultData=remoteUserService.getUserMapInfoByUserId(xxpInspectionVo.getUserId());
         if(null==resultData ||resultData.getCode()!= HttpStatus.SUCCESS){
@@ -293,4 +301,26 @@ public class LabXxpInspectionController extends BaseController
         return ResultData.result(xxpInspectionService.updateXxpInspectionSignOut(labId,userId));
     }
 
+
+    /**
+     * 判断是巡查签到还是准入签到
+     */
+    @ApiOperation(value = "判断是巡查签到还是准入签到 1巡查 2准入")
+    @PostMapping("/isSignInType")
+    public ResultData isSignInType(@RequestParam("labId") Long labId,@RequestParam("userId") Long userId) {
+        int type=0;
+        int num=xxpInspectionService.selectNoSignOut(labId,userId);
+        if(num>0){
+            type=1;
+        }
+        int numAccess=iLabSubjectAccessRecordService.getSignOutRecordNoOut(labId,userId);
+        if(numAccess>0){
+            type=2;
+        }
+        if(type==0){
+            return ResultData.fail("未查到签到签到记录");
+        }
+        return ResultData.success(type);
+    }
+
 }

+ 9 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectAccessRecordMapper.java

@@ -163,6 +163,15 @@ public interface LabSubjectAccessRecordMapper {
      */
     public int getRecordNoOut(@Param("userId") Long userId,@Param("dateTime") String dateTime);
 
+    /**
+     * 查询当前用户没有签退的记录
+     * @param labId
+     * @param userId
+     * @param dateTime
+     * @return
+     */
+    int getSignOutRecordNoOut(@Param("labId") Long labId,@Param("userId") Long userId,@Param("dateTime") String dateTime);
+
     List<Map<String, Long>> selectJoinUsers(@Param("subs") List<Long> subs, @Param("date") Date date);
 
     List<LabSubjectAccessRecord> selectSubIdByUserId(Long userId);

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/onemachine/service/OneMachineService.java

@@ -112,6 +112,9 @@ public class OneMachineService implements ValidationSignInPerInfo {
     @Autowired
     private LabSubjectMapper labSubjectMapper;
 
+    @Autowired
+    private IXxpInspectionService xxpInspectionService;
+
         private Map<SignEnum, Function<SignInfoVO, SignInPerInfoVO>> validMap;
 
     @PostConstruct
@@ -135,6 +138,10 @@ public class OneMachineService implements ValidationSignInPerInfo {
             if (subject.getIsDel()) {
                 messages.add("实验室当前已禁用,请联系负责人开启!");
             }
+            int num=xxpInspectionService.selectNoSignOut(signInfoVO.getSubId(),signInfoVO.getSingInUser().getUserId());
+            if(num>0){
+                messages.add("请你先签退后再进行签到!");
+            }
             //1、判断是否有安全准入资格,如没有准入资格进行提示(语音+浮层):验证失败,您需要通过小程序申请实验室准入资格后才能签到。
             if(UserConstants.USER_TYPE_STUDENT.equals(signInPerInfoVO.getSingInUser().getType())){
                 if (signInPerInfoVO.getSingInUser().getExpirationDate() != null) {

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectAccessRecordService.java

@@ -165,6 +165,14 @@ public interface ILabSubjectAccessRecordService {
     public int getRecordNoOut(Long userId);
 
     /**
+     * 获取没有签退的人
+     * @param labId
+     * @param userId
+     * @return
+     */
+    int getSignOutRecordNoOut(Long labId,Long userId);
+
+    /**
      * 更新签到记录
      * @param accessRecord
      * @return

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectAccessRecordServiceImpl.java

@@ -28,6 +28,7 @@ import com.zd.laboratory.service.ILabPhotoInspectionService;
 import com.zd.laboratory.service.ILabSubjectAccessRecordService;
 import com.zd.system.api.feign.RemoteUserService;
 import com.zd.model.entity.SysUser;
+import org.apache.ibatis.annotations.Param;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -489,6 +490,12 @@ public class LabSubjectAccessRecordServiceImpl implements ILabSubjectAccessRecor
     }
 
     @Override
+    public int getSignOutRecordNoOut(Long labId,Long userId) {
+        String dateTime=DateUtils.getDate();
+        return labSubjectAccessRecordMapper.getSignOutRecordNoOut(labId,userId,dateTime);
+    }
+
+    @Override
     public int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord) {
         return labSubjectAccessRecordMapper.updateLabSubjectAccessRecordById(accessRecord);
     }

+ 6 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectAccessRecordMapper.xml

@@ -508,4 +508,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where lsar.subject_id=#{subjectId} and lsar.access_status=1
         and init_flag=0
     </select>
+
+    <select id="getSignOutRecordNoOut" resultType="java.lang.Integer">
+     SELECT count(*) FROM  `lab_subject_access_record`
+        WHERE join_user_id=#{userId}  and
+        DATE_FORMAT(create_time,'%Y-%m-%d')=#{dateTime} and access_status=1 and subject_id=#{labId} AND init_flag=0
+    </select>
 </mapper>