chengf
2025-08-04 1aed87083c1153c1ff2e559e01100213dd5bfa43
service-common/src/main/java/com/java110/common/dao/impl/CarInoutServiceDaoImpl.java
@@ -3,13 +3,17 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.common.dao.ICarInoutServiceDao;
import com.java110.core.base.dao.BaseServiceDao;
import com.java110.po.car.CarInoutPo;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.DAOException;
import com.java110.utils.util.DateUtil;
import org.activiti.engine.impl.util.CollectionUtil;
import org.slf4j.Logger;
import com.java110.core.log.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -131,4 +135,45 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int[] batchSaveCarInout(List<CarInoutPo> successRecords) {
        if (CollectionUtil.isEmpty(successRecords)) {
            return new int[0];
        }
        int totalSize = successRecords.size();
        int[] result = new int[totalSize]; // 存储每条记录的插入结果(默认 0 表示失败)
        int batchSize = 500; // 每批插入 500 条
        int batchCount = 0;  // 记录当前处理到第几批
        for (int i = 0; i < totalSize; i += batchSize) {
            // 截取当前批次数据
            List<CarInoutPo> batchList = successRecords.subList(i, Math.min(i + batchSize, totalSize));
            // 执行批量插入,返回当前批次总影响行数
            int batchAffectedRows = sqlSessionTemplate.insert(
                    "carInoutServiceDaoImpl.batchInsert",
                    batchList
            );
            // 标记当前批次记录为成功(简单处理:假设要么全成功,要么全失败)
            if (batchAffectedRows == batchList.size()) {
                for (int j = i; j < i + batchSize && j < totalSize; j++) {
                    result[j] = 1; // 1 表示插入成功
                }
            } else {
                // 批次插入失败(如主键冲突、字段错误),标记为 0
                for (int j = i; j < i + batchSize && j < totalSize; j++) {
                    result[j] = 0; // 0 表示插入失败
                }
            }
            batchCount++;
        }
        return result;
    }
}