合同录入

环境复杂度

  • [合同编号重复]
    Snowflake snowflake = IdUtil.getSnowflake();
    String id = "HT"+snowlake.nextId();
  • [身份证号码格式不正确]
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/
    @PostMapping("/verify")
    public Result<Boolean> verify(@RequestBody Contract contract) {
        Map<String,Object> map = new HashMap<>();
        map.put("idNo", contract.getIdNo());
        map.put("name", contract.getName());
        String body = HttpRequest.post("https://idenauthen.market.alicloudapi.com/idenAuthentication")
                .header("Authorization", "APPCODE b30006ab97e44f33b9398fd90094e676")
                .form(map)
                .execute()
                .body();
        System.out.println(body);
        int index = body.indexOf("身份证信息匹配");
        return Result.ok(index>0);
    }
  • [计算合同金额精度缺失]
  • 主要涉及BigDecimal的计算。
        BigDecimal first = BigDecimal.valueOf(10.22);
        BigDecimal second = BigDecimal.valueOf(8);

        BigDecimal sum = first.add(second);
        BigDecimal subtract = first.subtract(second);
        BigDecimal subtract2 = second.subtract(first);
        BigDecimal multiply = first.multiply(second);
        BigDecimal divide = first.divide(second);

        boolean bigger = first.compareTo(second) > 0;
        boolean equal = first.compareTo(BigDecimal.valueOf(10.220)) == 0;
        boolean less = second.compareTo(first) < 0;
  • [reddssion 分布式锁]
    引入依赖:
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.15.5</version>
</dependency>

添加配置:

spring:
  redis:
    redisson:
      singleServerConfig:
        password: 123456
        address: "/redis:127.0.0.1:6379"

使用代码:

@GetMapping("/lock/test")
public boolean lock(int id) {
    RLock lock = redissonClient.getLock("test-lock-reddison" + id);
    try {
        lock.lock(1, TimeUnit.SECONDS);
        Thread.sleep(10000);
        return true;
    }catch (InterruptedException e) {

    }finally {
        lock.unlock();
    }
    return false;
}

收房合同录入功能

  • 合同信息录入
  • 合同录入选择房产
  • 附件处理
  • 付款单生成

表设计

合同信息录入