销售退货单子表数据同步 Normal 0 / interface_id ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD EXECUTING_SERVER N EXECUTING_SERVER EXECUTING_USER N EXECUTING_USER CLIENT N CLIENT
ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE METRICS_DATE Y METRICS_DATE METRICS_CODE Y METRICS_CODE METRICS_DESCRIPTION Y METRICS_DESCRIPTION METRICS_SUBJECT Y METRICS_SUBJECT METRICS_TYPE Y METRICS_TYPE METRICS_VALUE Y METRICS_VALUE
0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 - 2024/01/10 11:03:15.382 - 2024/01/10 11:03:15.382 H4sIAAAAAAAAAAMAAAAAAAAAAAA= N MOM ${mysql_host} MYSQL Native ${mysql_dbname} 3306 ${mysql_username} ${mysql_password} EXTRA_OPTION_MYSQL.characterEncoding utf-8 EXTRA_OPTION_MYSQL.defaultFetchSize 5000 EXTRA_OPTION_MYSQL.rewriteBatchedStatements true EXTRA_OPTION_MYSQL.useCompression true EXTRA_OPTION_MYSQL.useCursorFetch true EXTRA_OPTION_MYSQL.useServerPrepStmts true FORCE_IDENTIFIERS_TO_LOWERCASE N FORCE_IDENTIFIERS_TO_UPPERCASE N IS_CLUSTERED N PORT_NUMBER 3306 PRESERVE_RESERVED_WORD_CASE Y QUOTE_ALL_FIELDS N STREAM_RESULTS N SUPPORTS_BOOLEAN_DATA_TYPE Y SUPPORTS_TIMESTAMP_DATA_TYPE Y USE_POOLING N U8 ${U8DB_HOST} GENERIC Native ${U8DB_NAME} 1433 ${sqlserver_username} ${sqlserver_password} CUSTOM_DRIVER_CLASS ${sqlserver_driverclassname} CUSTOM_URL ${sqlserver_url} DATABASE_DIALECT_ID Generic database FORCE_IDENTIFIERS_TO_LOWERCASE N FORCE_IDENTIFIERS_TO_UPPERCASE N IS_CLUSTERED N PORT_NUMBER 1433 PRESERVE_RESERVED_WORD_CASE Y QUOTE_ALL_FIELDS N SUPPORTS_BOOLEAN_DATA_TYPE Y SUPPORTS_TIMESTAMP_DATA_TYPE Y USE_POOLING N 表输入 Java 代码-id Y 表输入-mom物料档案 流查询-物料档案 Y 表输入-mom出库任务 流查询-出库任务 Y 流查询-物料档案 流查询-出库任务 Y 流查询-出库任务 插入 / 更新 Y 插入 / 更新 执行SQL脚本-更新任务出库退数量 Y 表输入-主id 流查询-主id Y Java 代码-id 流查询-主id Y 流查询-主id 流查询-物料档案 Y 获取变量 表输入 Y 获取变量 表输入-主id Y 获取变量 表输入-mom物料档案 Y 获取变量 表输入-mom出库任务 Y Java 代码-id UserDefinedJavaClass N 1 none TRANSFORM_CLASS Processor public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Object[] r = getRow(); if (r == null) { setOutputDone(); return false; } r = createOutputRow(r, data.outputRowMeta.size()); if (snowflakeIdWorker == null) { snowflakeIdWorker = new SnowflakeIdWorker(1, 1); // 设置你的workerId和datacenterId } String id = String.valueOf(snowflakeIdWorker.nextId()); get(Fields.Out, "id").setValue(r, id); putRow(data.outputRowMeta, r); return true; } // 定义全局变量(放在类顶部) private static SnowflakeIdWorker snowflakeIdWorker = null; // 内部类:雪花算法实现 public static class SnowflakeIdWorker { private final long twepoch = 1288834974657L; private final long workerIdBits = 5L; private final long datacenterIdBits = 5L; private final long maxWorkerId = -1L ^ (-1L << workerIdBits); private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); private final long sequenceBits = 12L; private final long workerIdShift = sequenceBits; private final long datacenterIdShift = sequenceBits + workerIdBits; private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; private final long sequenceMask = -1L ^ (-1L << sequenceBits); private long workerId; private long datacenterId; private long sequence = 0L; private long lastTimestamp = -1L; public SnowflakeIdWorker(long workerId, long datacenterId) { if (workerId > maxWorkerId || workerId < 0) { throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId)); } if (datacenterId > maxDatacenterId || datacenterId < 0) { throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId)); } this.workerId = workerId; this.datacenterId = datacenterId; } public synchronized long nextId() { long timestamp = timeGen(); if (timestamp < lastTimestamp) { throw new RuntimeException("Clock moved backwards. Refusing to generate id for " + (lastTimestamp - timestamp) + " milliseconds"); } if (lastTimestamp == timestamp) { sequence = (sequence + 1) & sequenceMask; if (sequence == 0) { timestamp = tilNextMillis(lastTimestamp); } } else { sequence = 0L; } lastTimestamp = timestamp; return ((timestamp - twepoch) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) | sequence; } private long tilNextMillis(long lastTimestamp) { long timestamp = timeGen(); while (timestamp <= lastTimestamp) { timestamp = timeGen(); } return timestamp; } private long timeGen() { return System.currentTimeMillis(); } } id String -1 -1 N 192 64 Y 执行SQL脚本-更新任务出库退数量 ExecSQL Y 1 none MOM Y N Y N UPDATE wms_task_outs SET back_task_qty = IFNULL(back_task_qty,0) + ? WHERE id = '?'; N task_qty mom_task_outs_id 880 64 Y 插入 / 更新 InsertUpdate Y 1 none MOM 1000 Y
wms_task_outs
interface_id interface_id = interface_id interface_id N interface_row interface_row N id id N task_out_id mom_task_out_id N `row_number` row_number N material_code material_code N task_qty task_qty N unit_code unit_code N excess_ratio_out mom_excess_ratio_out N warehouse_code mom_warehouse_code N location_code mom_location_code N batch1 batch1 N batch2 batch2 N task_outs_id mom_task_outs_id N status status N is_close is_close N create_id sync_id N create_by sync_name N create_time sync_time N audit_by sync_name N audit_time sync_time N 736 64 Y 流查询-主id StreamLookup Y 1 none 表输入-主id N N N N master_interface_id master_interface_id mom_task_out_id mom_task_out_id String 336 64 Y 流查询-出库任务 StreamLookup Y 1 none 表输入-mom出库任务 N N N N interface_pid interface_pid mom_bill_type mom_bill_type mom_task_outs_id mom_task_outs_id String 624 64 Y 流查询-物料档案 StreamLookup Y 1 none 表输入-mom物料档案 N N N N material_code mom_material_code mom_warehouse_code mom_warehouse_code String mom_location_code mom_location_code String mom_excess_ratio_out mom_excess_ratio_out BigNumber 464 64 Y 表输入 TableInput Y 1 none U8 DECLARE @USER_NAME VARCHAR(50),@USER_ID INT SET @USER_NAME = CASE '${USER_NAME}' WHEN '' THEN '管理员(kettle)' ELSE '${USER_NAME}' END SET @USER_ID = CASE 0${USER_ID} WHEN 0 THEN 1 ELSE 0${USER_ID} END SELECT 0${interface_id} AS master_interface_id ,T2.iDLsID AS interface_id ,T2.irowno AS interface_row ,T2.irowno AS row_number --,ROW_NUMBER()OVER(ORDER BY T2.irowno) AS row_number ,T2.cInvCode AS material_code ,ABS(T2.iQuantity) AS task_qty ,T6.cComUnitCode AS unit_code ,T2.cBatch AS batch1 ,T2.cBatchProperty6 AS batch2 ,0 AS status ,1 AS is_close ,@USER_NAME AS sync_name ,@USER_ID AS sync_id ,GETDATE() AS sync_time --1生产订单、2委外订单、3委外到货单、4采购订单、5采购到货单、6销售订单、7销售发货单 ,CASE WHEN ISNULL(T2.iCorID,0) <>0 THEN 7 WHEN ISNULL(T2.iCorID,0) =0 AND ISNULL(T2.iSOsID,0)<>0 THEN 6 ELSE 0 END AS mom_bill_type ,CASE WHEN ISNULL(T2.iCorID,0) <>0 THEN T2.iCorID WHEN ISNULL(T2.iCorID,0) =0 AND ISNULL(T2.iSOsID,0)<>0 THEN T2.iSOsID ELSE 0 END AS interface_pid FROM DispatchList T1 LEFT JOIN DispatchLists T2 ON T1.DLID =T2.DLID LEFT JOIN Inventory T6 ON T2.cInvCode =T6.cInvCode WHERE 1=1 AND T1.DLID =0${interface_id} 0 N Y N N Integer normal master_interface_id 9 0 表输入 master_interface_id ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal interface_id 9 0 表输入 interface_id ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal interface_row 15 0 表输入 interface_row ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal row_number 15 0 表输入 row_number ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal material_code 60 -1 表输入 material_code . , none N Y 0 N N N zh_CN Asia/Shanghai N BigNumber normal task_qty 30 10 表输入 task_qty ######0.0###################;-######0.0################### . none N Y 0 N N N zh_CN Asia/Shanghai N String normal unit_code 35 -1 表输入 unit_code . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal batch1 60 -1 表输入 batch1 . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal batch2 120 -1 表输入 batch2 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal status 9 0 表输入 status ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal is_close 9 0 表输入 is_close ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal sync_name 50 -1 表输入 sync_name . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal sync_id 9 0 表输入 sync_id ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Timestamp normal sync_time 3 -1 表输入 sync_time . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal mom_bill_type 9 0 表输入 mom_bill_type ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N Integer normal interface_pid 9 0 表输入 interface_pid ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N 64 64 Y 表输入-mom出库任务 TableInput Y 1 none MOM SELECT T2.interface_id AS interface_pid, T1.bill_type_code AS mom_bill_type, T2.id AS mom_task_outs_id FROM wms_task_out T1 LEFT JOIN wms_task_outs T2 ON T1.id =T2.task_out_id WHERE 1=1 AND T1.task_type =-1 AND T1.bill_type_code IN ('6','7') AND IFNULL(T2.interface_id,'')<>'' 0 N N N N Integer normal interface_pid 9 0 表输入-mom出库任务 interface_pid ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal mom_bill_type 50 -1 表输入-mom出库任务 mom_bill_type . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal mom_task_outs_id 20 -1 表输入-mom出库任务 mom_task_outs_id . , none N Y 0 N N N zh_CN Asia/Shanghai N 480 144 Y 表输入-mom物料档案 TableInput Y 1 none MOM SELECT material_code AS mom_material_code ,excess_ratio_out AS mom_excess_ratio_out ,warehouse_code_out AS mom_warehouse_code ,location_code_out AS mom_location_code FROM base_material 0 N N N N String normal mom_material_code 50 -1 表输入-mom物料档案 mom_material_code . , none N Y 0 N N N zh_CN Asia/Shanghai N BigNumber normal mom_excess_ratio_out 24 6 表输入-mom物料档案 mom_excess_ratio_out ######0.0###################;-######0.0################### . none N Y 0 N N N zh_CN Asia/Shanghai N String normal mom_warehouse_code 50 -1 表输入-mom物料档案 mom_warehouse_code . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal mom_location_code 50 -1 表输入-mom物料档案 mom_location_code . , none N Y 0 N N N zh_CN Asia/Shanghai N 352 144 Y 表输入-主id TableInput Y 1 none MOM SELECT interface_id as master_interface_id, id as mom_task_out_id FROM wms_task_out WHERE interface_id =0${interface_id} AND bill_type_code ='7' ORDER BY create_time DESC LIMIT 1 0 N Y N N Integer normal master_interface_id 9 0 表输入-主id master_interface_id ####0;-####0 . , none N Y 0 N N N zh_CN Asia/Shanghai N String normal mom_task_out_id 20 -1 表输入-主id mom_task_out_id . , none N Y 0 N N N zh_CN Asia/Shanghai N 208 144 Y 获取变量 GetVariable Y 1 none mysql_driverclassname ${mysql_driverclassname} String -1 -1 none mysql_password ${mysql_password} String -1 -1 none mysql_url ${mysql_url} String -1 -1 none mysql_username ${mysql_username} String -1 -1 none USER_ID ${USER_ID} String -1 -1 none sqlserver_driverclassname ${sqlserver_driverclassname} String -1 -1 none sqlserver_password ${sqlserver_password} String -1 -1 none sqlserver_url ${sqlserver_url} String -1 -1 none sqlserver_username ${sqlserver_username} String -1 -1 none USER_NAME ${USER_NAME} String -1 -1 none BEGIN_DATE ${BEGIN_DATE} String -1 -1 none END_DATE ${END_DATE} String -1 -1 none DEPT_CODE ${DEPT_CODE} String -1 -1 none mysql_host ${mysql_host} String -1 -1 none mysql_dbname ${mysql_dbname} String -1 -1 none 64 434 Y N