问题: - 导入成功条数显示为负数 - 原因:成功数量计算使用 validRecords.size() - failures.size() - 但没有使用实际的数据库操作返回值 修复: - saveBatchWithUpsert 和 saveBatch 方法现在返回 int - 累加实际的数据库影响行数 - 使用 actualSuccessCount 变量跟踪真实成功数量 影响范围: - CcdiIntermediaryPersonImportServiceImpl - CcdiIntermediaryEntityImportServiceImpl
78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
var utils = require("./utils");
|
|
|
|
/**
|
|
* The following functions come from pako, from pako/lib/zlib/crc32.js
|
|
* released under the MIT license, see pako https://github.com/nodeca/pako/
|
|
*/
|
|
|
|
// Use ordinary array, since untyped makes no boost here
|
|
function makeTable() {
|
|
var c, table = [];
|
|
|
|
for(var n =0; n < 256; n++){
|
|
c = n;
|
|
for(var k =0; k < 8; k++){
|
|
c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
|
|
}
|
|
table[n] = c;
|
|
}
|
|
|
|
return table;
|
|
}
|
|
|
|
// Create table on load. Just 255 signed longs. Not a problem.
|
|
var crcTable = makeTable();
|
|
|
|
|
|
function crc32(crc, buf, len, pos) {
|
|
var t = crcTable, end = pos + len;
|
|
|
|
crc = crc ^ (-1);
|
|
|
|
for (var i = pos; i < end; i++ ) {
|
|
crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
|
|
}
|
|
|
|
return (crc ^ (-1)); // >>> 0;
|
|
}
|
|
|
|
// That's all for the pako functions.
|
|
|
|
/**
|
|
* Compute the crc32 of a string.
|
|
* This is almost the same as the function crc32, but for strings. Using the
|
|
* same function for the two use cases leads to horrible performances.
|
|
* @param {Number} crc the starting value of the crc.
|
|
* @param {String} str the string to use.
|
|
* @param {Number} len the length of the string.
|
|
* @param {Number} pos the starting position for the crc32 computation.
|
|
* @return {Number} the computed crc32.
|
|
*/
|
|
function crc32str(crc, str, len, pos) {
|
|
var t = crcTable, end = pos + len;
|
|
|
|
crc = crc ^ (-1);
|
|
|
|
for (var i = pos; i < end; i++ ) {
|
|
crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];
|
|
}
|
|
|
|
return (crc ^ (-1)); // >>> 0;
|
|
}
|
|
|
|
module.exports = function crc32wrapper(input, crc) {
|
|
if (typeof input === "undefined" || !input.length) {
|
|
return 0;
|
|
}
|
|
|
|
var isArray = utils.getTypeOf(input) !== "string";
|
|
|
|
if(isArray) {
|
|
return crc32(crc|0, input, input.length, 0);
|
|
} else {
|
|
return crc32str(crc|0, input, input.length, 0);
|
|
}
|
|
};
|