Преглед изворни кода

用户和工作卡建立关系

车车 пре 5 месеци
родитељ
комит
19772d2970

+ 3 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java

@@ -33,6 +33,9 @@ public class UserSaveReqVO {
     @DiffLogField(name = "用户昵称")
     private String nickname;
 
+    @Schema(description = "工作卡NFC", example = "ASC12AS")
+    private String cardNfc;
+
     @Schema(description = "备注", example = "我是一个用户")
     @DiffLogField(name = "备注")
     private String remark;

+ 67 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/iscs/SysJobCardDO.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.iscs;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 工作卡 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_card")
+@KeySequence("isc_job_card_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysJobCardDO extends BaseDO {
+
+    /**
+     * 工作卡ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 工作卡编号
+     */
+    private String cardCode;
+    /**
+     * 硬件ID
+     */
+    private Long hardwareId;
+    /**
+     * 工作卡NFC
+     */
+    private String cardNfc;
+    /**
+     * 1: 员工卡;2: 临时卡
+     */
+    private Integer cardType;
+    /**
+     * 绑定用户ID
+     */
+    private Long userId;
+    /**
+     * 用户名称或临时用户ID
+     */
+    private String userName;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 异常状态(0-异常 1-正常)
+     */
+    private String exStatus;
+    /**
+     * 异常备注
+     */
+    private String exRemark;
+
+
+}

+ 6 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@@ -47,6 +47,12 @@ public class AdminUserDO extends TenantBaseDO {
      * 用户昵称
      */
     private String nickname;
+
+    /**
+     * 工作卡
+     */
+    private String cardNfc;
+
     /**
      * 备注
      */

+ 15 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/iscs/IscsMapper.java

@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.module.system.dal.mysql.iscs;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.system.dal.dataobject.iscs.SysJobCardDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工作卡 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface IscsMapper extends BaseMapperX<SysJobCardDO> {
+
+}

+ 23 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/iscs/IscsService.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.system.service.iscs;
+
+import cn.iocoder.yudao.module.system.dal.dataobject.iscs.SysJobCardDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+/**
+ * 工作卡 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface IscsService extends IService<SysJobCardDO> {
+
+    /**
+     * 创建工作卡
+     *
+     * @param cardNfc 创建信息
+     * @return 编号
+     */
+    Long createJobCard(Long userId, String cardNfc);
+
+
+}

+ 53 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/iscs/IscsServiceImpl.java

@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.system.service.iscs;
+
+import cn.iocoder.yudao.module.system.dal.dataobject.iscs.SysJobCardDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.mysql.iscs.IscsMapper;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.generator.IFill;
+import jakarta.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+
+/**
+ * 工作卡 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class IscsServiceImpl extends ServiceImpl<IscsMapper, SysJobCardDO> implements IscsService {
+
+    @Lazy
+    @Autowired
+    private AdminUserService adminUserService;
+
+    @Override
+    public Long createJobCard(Long userId, String cardNfc) {
+        // 修改的判断
+        List<AdminUserDO> list1 = adminUserService.list(Wrappers.<AdminUserDO>lambdaQuery()
+                .ne(AdminUserDO::getId, userId).eq(AdminUserDO::getCardNfc, cardNfc));
+        Assert.isTrue(list1.isEmpty(), "该卡号已被使用");
+        if (StringUtils.isBlank(cardNfc)) {
+            return null;
+        }
+        List<SysJobCardDO> list = list(Wrappers.<SysJobCardDO>lambdaQuery().eq(SysJobCardDO::getCardNfc, cardNfc));
+        if (list.isEmpty()) {
+            SysJobCardDO sysJobCardDO = new SysJobCardDO().setCardNfc(cardNfc);
+            save(sysJobCardDO);
+            return sysJobCardDO.getId();
+        } else {
+            return list.get(0).getId();
+        }
+    }
+
+}

+ 9 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -30,6 +30,8 @@ import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
+import cn.iocoder.yudao.module.system.service.iscs.IscsService;
+import cn.iocoder.yudao.module.system.service.iscs.IscsServiceImpl;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.RoleService;
 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
@@ -102,6 +104,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
     @Lazy
     @Resource
     private UserWorkstationService userWorkstationService;
+    @Lazy
+    @Resource
+    private IscsService iscsService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -133,6 +138,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
             userWorkstationService.saveBatch(convertList(createReqVO.getWorkstationIds(),
                     workstationId -> new UserWorkstationDO().setUserId(user.getId()).setWorkstationId(workstationId)));
         }
+        // 2.4 插入card
+        iscsService.createJobCard(user.getId(), createReqVO.getCardNfc());
         // 3. 记录操作日志上下文
         LogRecordContext.putVariable("user", user);
         return user.getId();
@@ -183,6 +190,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
             userWorkstationService.saveBatch(convertList(updateReqVO.getWorkstationIds(),
                     workstationId -> new UserWorkstationDO().setUserId(updateReqVO.getId()).setWorkstationId(workstationId)));
         }
+        // 2.4 更新card
+        iscsService.createJobCard(oldUser.getId(), updateReqVO.getCardNfc());
         // 3. 记录操作日志上下文
         LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(oldUser, UserSaveReqVO.class));
         LogRecordContext.putVariable("user", oldUser);