浏览代码

feature: 自助服务
1.教职工自助卡处理

luoyb 1 年之前
父节点
当前提交
6a95e27888

+ 30 - 23
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/card/CardBusiness.java

@@ -130,13 +130,16 @@ public class CardBusiness {
         List<PtCardVo> uesrCardList = ptCardService.queryList(queryBo);
         result = switch (cardBo.getOperateType()) {
             // 发卡
-            case 2 -> checkUserNewCard(uesrCardList, cardBo);
+            case ISSUE -> checkUserNewCard(uesrCardList, cardBo);
             // 换卡
-            case 3 -> checkUserChangeCard(uesrCardList, cardBo);
+            case CHANGE -> checkUserChangeCard(uesrCardList, cardBo);
             // 补卡
-            case 4 -> checkUserReIssueCard(uesrCardList, cardBo);
+            case REISSUE -> checkUserReIssueCard(uesrCardList, cardBo);
             default -> R.ok(new ResultInfo(ResultCodeEnum.SUCCESS));
         };
+        if(R.isError(result)){
+            return R.fail(result.getData());
+        }
         // 所有逻辑校验通过,入库
         cardBo.setCardNo(cardNoBusiness.getCardNo());
         cardBo.setStatus(CardStatusEnum.NORMAL.code().toString());
@@ -182,7 +185,7 @@ public class CardBusiness {
         Long userId = cardBo.getUserId();
         String mainCard = cardBo.getMainCard();
         Long stationNumb = cardBo.getStationNumb();
-        Integer operateType = cardBo.getOperateType();
+        CardOperateEnum operateType = cardBo.getOperateType();
         String tenantId = cardBo.getTenantId() == null ? DefaultConstants.TENANT_ID : cardBo.getTenantId();
 
         if (ObjectUtil.isEmpty(factoryId) || factoryId == 0) {
@@ -288,9 +291,10 @@ public class CardBusiness {
         }
         Long oldCardNo = cardBo.getOldCardNo();
         Long oldFactoryId = cardBo.getOldFactoryId();
+        Long oldCardId = cardBo.getOldCardId();
         PtCardVo oldCardVo = new PtCardVo();
         // 换卡时,必须有原卡的发卡记录
-        R<ResultInfo> result = checkUserOldCard(userCardList, oldCardNo, oldFactoryId, oldCardVo);
+        R<ResultInfo> result = checkUserOldCard(userCardList, oldCardNo, oldFactoryId, oldCardId, oldCardVo);
         if (R.isError(result)) {
             return R.fail(MessageFormat.format("无法换卡,{0}", result.getData()));
         }
@@ -317,14 +321,15 @@ public class CardBusiness {
         }
         Long oldCardNo = cardBo.getOldCardNo();
         Long oldFactoryId = cardBo.getOldFactoryId();
+        Long oldCardId = cardBo.getOldCardId();
         PtCardVo oldCardVo = new PtCardVo();
         // 补卡时,必须有原卡的发卡记录
-        R<ResultInfo> result = checkUserOldCard(userCardList, oldCardNo, oldFactoryId, oldCardVo);
+        R<ResultInfo> result = checkUserOldCard(userCardList, oldCardNo, oldFactoryId, oldCardId, oldCardVo);
         if (R.isError(result)) {
-            return R.fail(MessageFormat.format("无法补卡,{0}", result.getData()));
+            return R.fail(result.getData());
         }
         // 补卡时,原卡必须是挂失状态
-        if (ObjectUtil.notEqual(oldCardVo.getStatus(), CardStatusEnum.LOCK.code())) {
+        if (ObjectUtil.notEqual(oldCardVo.getStatus(), CardStatusEnum.LOCK.code().toString())) {
             return R.fail(
                 new ResultInfo(ResultCodeEnum.DATA_NOT_FOUND,
                                MessageFormat.format("没有物理卡号[{0}]和卡流水号[{1}]对应的挂失卡片", oldFactoryId, oldCardNo)));
@@ -341,23 +346,25 @@ public class CardBusiness {
         return R.ok(new ResultInfo(ResultCodeEnum.SUCCESS));
     }
 
-    private R<ResultInfo> checkUserOldCard(List<PtCardVo> userCardList, Long oldCardNo, Long oldFactoryId, PtCardVo oldCardVo) {
-        if (ObjectUtil.isEmpty(oldCardNo) || oldCardNo == 0) {
-            return R.fail(new ResultInfo(ResultCodeEnum.PARAM_IS_INVALID, "旧卡的卡流水号必须大于0"));
-        }
-        if (ObjectUtil.isEmpty(oldFactoryId) || oldFactoryId == 0) {
-            return R.fail(new ResultInfo(ResultCodeEnum.PARAM_IS_INVALID, "旧卡的物理卡号必须大于0"));
-        }
-        if (userCardList.stream().noneMatch(p -> ObjectUtil.equals(p.getCardNo(), oldCardNo) && ObjectUtil.equals(p.getFactoryId(), oldFactoryId))) {
-            return R.fail(
-                new ResultInfo(ResultCodeEnum.DATA_NOT_FOUND,
-                               MessageFormat.format("无物理卡号[{0}]和卡流水号[{1}]对应的旧卡记录", oldFactoryId, oldCardNo)));
+    private R<ResultInfo> checkUserOldCard(List<PtCardVo> userCardList, Long oldCardNo, Long oldFactoryId, Long oldCardId, PtCardVo oldCardVo) {
+        //if (ObjectUtil.isEmpty(oldCardNo) || oldCardNo == 0) {
+        //    return R.fail(new ResultInfo(ResultCodeEnum.PARAM_IS_INVALID, "旧卡的卡流水号必须大于0"));
+        //}
+        //if (ObjectUtil.isEmpty(oldFactoryId) || oldFactoryId == 0) {
+        //    return R.fail(new ResultInfo(ResultCodeEnum.PARAM_IS_INVALID, "旧卡的物理卡号必须大于0"));
+        //}
+        if(oldCardId>0) {
+            if (userCardList.stream().noneMatch(p -> ObjectUtil.equals(p.getCardId(), oldCardId))) {
+                return R.fail(
+                    new ResultInfo(ResultCodeEnum.DATA_NOT_FOUND,
+                        MessageFormat.format("无物卡片Id[{0}]对应的旧卡记录", oldCardId)));
+            }
+            // 取出旧卡信息
+            PtCardVo oldCard = userCardList.stream().filter(
+                p -> ObjectUtil.equals(p.getCardId(), oldCardId)).findFirst().orElse(null);
+            BeanUtil.copyProperties(oldCard, oldCardVo);
         }
-        // 取出旧卡信息
-        PtCardVo oldCard = userCardList.stream().filter(
-            p -> ObjectUtil.equals(p.getCardNo(), oldCardNo) && ObjectUtil.equals(p.getFactoryId(), oldFactoryId)).findFirst().orElse(null);
 
-        BeanUtil.copyProperties(oldCard, oldCardVo);
         return R.ok(new ResultInfo(ResultCodeEnum.SUCCESS));
     }
 }

+ 20 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/CardApiController.java

@@ -15,6 +15,7 @@ import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ResultInfo;
+import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.exception.ApiException;
 import org.dromara.common.web.core.BaseController;
@@ -121,12 +122,29 @@ public class CardApiController extends BaseController {
         }
         bo.setCardNo(ObjectUtil.isNotEmpty(initParam.get("cardNo")) ? Long.parseLong(initParam.get("cardNo").toString()) : 0);
         // 默认为发新卡
-        bo.setOperateType(ObjUtil.isNotEmpty(initParam.get("cardOperate")) ? Integer.parseInt(initParam.get("cardOperate").toString()) : 2);
+        String temp = initParam.get("cardOperate").toString();
+        if(ObjUtil.isNotEmpty(temp)){
+            bo.setOperateType(CardOperateEnum.valueOf(temp));
+        } else {
+            bo.setOperateType(CardOperateEnum.ISSUE);
+        }
         bo.setStationNumb(ObjUtil.isNotEmpty(initParam.get("workStationNumb")) ? Long.parseLong(initParam.get("workStationNumb").toString()) : 0);
         bo.setTenantId(ObjUtil.isNotEmpty(initParam.get("tenantId")) ? initParam.get("tenantId").toString() : DefaultConstants.TENANT_ID);
         bo.setOldCardNo(ObjUtil.isNotEmpty(initParam.get("oldCardNo")) ? Long.parseLong(initParam.get("oldCardNo").toString()) : 0);
         bo.setOldFactoryId(ObjUtil.isNotEmpty(initParam.get("oldFactoryFixId")) ? Long.parseLong(initParam.get("oldFactoryFixId").toString()) : 0);
-
+        bo.setOldCardId(ObjUtil.isNotEmpty(initParam.get("oldCardId")) ? Long.parseLong(initParam.get("oldCardId").toString()) : 0);
         return bo;
     }
+
+    @PostMapping("/api/v1/init")
+    public ReturnResult initSefNewCard(@RequestBody Map<String, Object> initParam) {
+        PtCardBo bo = getInitInfo(initParam);
+        InitCardVo initCardVo = new InitCardVo();
+        R<ResultInfo> result = cardBusiness.initEntityCard(bo, initCardVo);
+        if (R.isSuccess(result)) {
+            PtCardVo cardVo = initCardVo.getCard();
+            return ReturnResult.success(YcVoConvert.cardVoConvert(cardVo));
+        }
+        throw new ApiException(result.getData().getDetail(), result.getData().getCode());
+    }
 }

+ 6 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtCardBo.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.dromara.backstage.cardCenter.domain.PtCard;
+import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 
 import java.util.Date;
@@ -103,7 +104,7 @@ public class PtCardBo extends BaseEntity {
     * 卡片操作类型
     * {@link org.dromara.common.core.enums.CardOperateEnum}
     */
-    private Integer operateType;
+    private CardOperateEnum operateType;
     /**
      * 工作站编号,发卡时需要
      */
@@ -121,5 +122,9 @@ public class PtCardBo extends BaseEntity {
      * 原卡物理卡号
      */
     private Long oldFactoryId;
+    /**
+     * 原cardId
+     */
+    private Long oldCardId;
     // endregion
 }

+ 4 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java

@@ -400,7 +400,10 @@ public class PtCardServiceImpl implements IPtCardService {
         boolean flag = baseMapper.insertOrUpdate(entity);
         if (flag) {
             if (entity != null) {
-                return baseMapper.selectVoById(entity.getCardId());
+                PtCardVo vo = baseMapper.selectVoById(entity.getCardId());
+                PtCardtypeVo cardTypeVo = cardTypeService.queryByCode(vo.getCardType());
+                vo.setCardTypeName(cardTypeVo.getTypeName());
+                return vo;
             }
         }
         return null;