sgj
2026-03-27 878b6958363308a7d07b7b8197dc19662f3e1198
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -244,7 +244,7 @@
        InoutRecord record = new InoutRecord();
        BeanUtils.copyProperties(data, record);
        //保存
        int num = this.addInoutRecord(record);
        int num = this.addInoutRecord(record,true);
        //附件处理
        fileService.saveInoutFiles(data.getFiles(), record.getId(), null, "INOUT");
@@ -262,13 +262,13 @@
     * @param list
     * @return
     */
    public String addInoutRecordList(List<InoutRecord> list) {
    public String addInoutRecordList(List<InoutRecord> list,boolean isCache) {
        if (null == list || list.isEmpty()) {
            return "新增失败";
        }
        for (InoutRecord inoutRecord : list) {
            addInoutRecord(inoutRecord);
            addInoutRecord(inoutRecord,isCache);
        }
        return null;
@@ -280,10 +280,10 @@
     * @param data
     * @return
     */
    public int addInoutRecord(InoutRecord data) {
    public int addInoutRecord(InoutRecord data,boolean isCache) {
        if (StringUtils.isBlank(data.getId())) {
            String id = this.createId(data.getRegisterTime(), data.getCompanyId());
            String id = this.createId(data.getRegisterTime(), data.getCompanyId(),isCache);
            if (Constant.TYPE_IN.equals(data.getType())) {
                data.setId("R_" + id);
            } else if (Constant.TYPE_OUT.equals(data.getType())) {
@@ -595,7 +595,7 @@
     * @param companyId
     * @return
     */
    public String createId(Date registerTime, String companyId) {
    public String createId(Date registerTime, String companyId,boolean isCache) {
        // 时间戳标签
        String timeKey = DateFormatUtils.format(registerTime, "yyyyMMdd");
@@ -603,7 +603,10 @@
        // 从缓存中获取已有的组织编码
        String cacheKey = RedisConst.buildKey(companyId, Constant.CACHE_RECORD_ID);
        String cacheId = (String) redisCache.getCacheObject(cacheKey);
        String cacheId = null;
        if (isCache) {
            cacheId=(String) redisCache.getCacheObject(cacheKey);
        }
        if (null != cacheId && cacheId.indexOf(timeKey) >= 0) {
            String temp = cacheId.substring(cacheId.length() - 4);
@@ -646,10 +649,52 @@
            }
        }
        // 数据库 ID 重复校验,确保新生成的 ID 在数据库中不存在
        while (this.checkIdExists(companyId, cacheId)) {
            String temp = cacheId.substring(cacheId.length() - 4);
            Integer i = Integer.valueOf(temp);
            i++;
            temp = String.valueOf(i);
            if (temp.length() == 1) {
                cacheId = timeKey + "000" + temp;
            }
            if (temp.length() == 2) {
                cacheId = timeKey + "00" + temp;
            }
            if (temp.length() == 3) {
                cacheId = timeKey + "0" + temp;
            }
            if (temp.length() == 4) {
                cacheId = timeKey + temp;
            }
        }
        // 更新缓存
        redisCache.setCacheObject(cacheKey, cacheId);
        if(isCache){
            redisCache.setCacheObject(cacheKey, cacheId);
        }
        return cacheId;
    }
    /**
     * 检查 ID 是否在数据库中已存在
     *
     * @param companyId
     * @param id
     * @return true-已存在,false-不存在
     */
    public boolean checkIdExists(String companyId, String id) {
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id", companyId);
        //使用likeleft
        queryWrapper.likeLeft("id", id);
        List<InoutRecord> inoutRecords = inoutRecordMapper.selectList(queryWrapper);
        if( null != inoutRecords && inoutRecords.size() > 0){
            return true;
        }
        return false;
    }
    /**
@@ -668,8 +713,7 @@
        queryWrapper.eq("company_id", companyId);
        queryWrapper.like("id", timeKey);
        queryWrapper.orderByDesc("create_time");
        queryWrapper.orderByDesc("register_time");
        List<InoutRecord> inoutRecords = inoutRecordMapper.selectList(queryWrapper);
        if (null == inoutRecords || inoutRecords.isEmpty()) {
            return null;