0.00.0100005050NY50000YN1000100-2024/01/10 11:03:15.382-2024/01/10 11:03:15.382H4sIAAAAAAAAAAMAAAAAAAAAAAA=NMOM${mysql_host}MYSQLNative${mysql_dbname}3306${mysql_username}${mysql_password}EXTRA_OPTION_MYSQL.characterEncodingutf-8EXTRA_OPTION_MYSQL.defaultFetchSize5000EXTRA_OPTION_MYSQL.rewriteBatchedStatementstrueEXTRA_OPTION_MYSQL.useCompressiontrueEXTRA_OPTION_MYSQL.useCursorFetchtrueEXTRA_OPTION_MYSQL.useServerPrepStmtstrueFORCE_IDENTIFIERS_TO_LOWERCASENFORCE_IDENTIFIERS_TO_UPPERCASENIS_CLUSTEREDNPORT_NUMBER3306PRESERVE_RESERVED_WORD_CASEYQUOTE_ALL_FIELDSNSTREAM_RESULTSNSUPPORTS_BOOLEAN_DATA_TYPEYSUPPORTS_TIMESTAMP_DATA_TYPEYUSE_POOLINGNU8${U8DB_HOST}GENERICNative${U8DB_NAME}1433${sqlserver_username}${sqlserver_password}CUSTOM_DRIVER_CLASS${sqlserver_driverclassname}CUSTOM_URL${sqlserver_url}DATABASE_DIALECT_IDGeneric databaseFORCE_IDENTIFIERS_TO_LOWERCASENFORCE_IDENTIFIERS_TO_UPPERCASENIS_CLUSTEREDNPORT_NUMBER1433PRESERVE_RESERVED_WORD_CASEYQUOTE_ALL_FIELDSNSUPPORTS_BOOLEAN_DATA_TYPEYSUPPORTS_TIMESTAMP_DATA_TYPEYUSE_POOLINGN表输入Java 代码-idY表输入-mom物料档案流查询-物料档案Y表输入-mom入库任务流查询-入库任务Y流查询-入库任务插入 / 更新Y流查询-物料档案流查询-入库任务Y插入 / 更新执行SQL脚本-更新任务入库退数量Y表输入-主id流查询-主idYJava 代码-id流查询-主idY流查询-主id流查询-物料档案Y获取变量表输入Y获取变量表输入-主idN获取变量表输入-mom物料档案Y获取变量表输入-mom入库任务YJava 代码-idUserDefinedJavaClassY1noneTRANSFORM_CLASSProcessorpublic 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();
}
}idString-1-1N176128Y执行SQL脚本-更新任务入库退数量ExecSQLY1noneMOMYNYNUPDATE wms_task_ins SET
back_task_qty = IFNULL(back_task_qty,0) + ?
WHERE id = '?';Ntask_qtymom_task_ins_id880128Y插入 / 更新InsertUpdateY1noneMOM1000Y
wms_task_ins
interface_idinterface_id=interface_idinterface_idNinterface_rowinterface_rowNididNtask_in_idmom_task_in_idN`row_number`row_numberNmaterial_codematerial_codeNtask_qtytask_qtyNunit_codeunit_codeNexcess_ratio_inmom_excess_ratio_inNwarehouse_codemom_warehouse_codeNlocation_codemom_location_codeNbatch1batch1Nbatch2batch2Ntask_ins_idmom_task_ins_idNstatusstatusNis_closeis_closeNcreate_idsync_idNcreate_bysync_nameNcreate_timesync_timeNaudit_bysync_nameNaudit_timesync_timeN720128Y流查询-主idStreamLookupY1none表输入-主idNNNNmaster_interface_idmaster_interface_idmom_task_in_idmom_task_in_idString304128Y流查询-入库任务StreamLookupY1none表输入-mom入库任务NNNNinterface_pidinterface_pidmom_bill_typemom_bill_typemom_task_ins_idmom_task_ins_idString592128Y流查询-物料档案StreamLookupY1none表输入-mom物料档案NNNNmaterial_codemom_material_codemom_warehouse_codemom_warehouse_codeStringmom_location_codemom_location_codeStringmom_excess_ratio_inmom_excess_ratio_inBigNumber432128Y表输入TableInputY1noneU8DECLARE @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.Autoid AS interface_id
,T2.iVouchRowNo AS interface_row
,T2.iVouchRowNo AS row_number
--,ROW_NUMBER()OVER(ORDER BY T2.iVouchRowNo) 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 3
WHEN ISNULL(T2.icorid,0) =0 AND ISNULL(T2.iposid,0)<>0 THEN 2 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.iposid,0)<>0 THEN T2.iposid ELSE 0 END AS interface_pid
FROM PU_ArrivalVouch T1
LEFT JOIN PU_ArrivalVouchs T2 ON T1.ID =T2.ID
LEFT JOIN Inventory T6 ON T2.cInvCode =T6.cInvCode
WHERE 1=1
AND T1.ID =0${interface_id}
0NYNNIntegernormalmaster_interface_id90表输入master_interface_id####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalinterface_id90表输入interface_id####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalinterface_row90表输入interface_row####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalrow_number90表输入row_number####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalmaterial_code60-1表输入material_code.,noneNY0NNNzh_CNAsia/ShanghaiNBigNumbernormaltask_qty206表输入task_qty######0.0###################;-######0.0###################.noneNY0NNNzh_CNAsia/ShanghaiNStringnormalunit_code35-1表输入unit_code.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalbatch160-1表输入batch1.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalbatch2120-1表输入batch2.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalstatus90表输入status####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalis_close90表输入is_close####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalsync_name50-1表输入sync_name.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalsync_id90表输入sync_id####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNTimestampnormalsync_time3-1表输入sync_time.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalmom_bill_type90表输入mom_bill_type####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalinterface_pid90表输入interface_pid####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiN64128Y表输入-mom入库任务TableInputY1noneMOMSELECT
T2.interface_id AS interface_pid,
T1.bill_type_code AS mom_bill_type,
T2.id AS mom_task_ins_id
FROM wms_task_in T1
LEFT JOIN wms_task_ins T2 ON T1.id =T2.task_in_id
WHERE 1=1
AND T1.task_type =1
AND T1.bill_type_code IN ('2','3')
AND IFNULL(T2.interface_id,'')<>''0NNNNIntegernormalinterface_pid90表输入-mom入库任务interface_pid####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNIntegernormalmom_bill_type90表输入-mom入库任务mom_bill_type####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalmom_task_ins_id20-1表输入-mom入库任务mom_task_ins_id.,noneNY0NNNzh_CNAsia/ShanghaiN464224Y表输入-mom物料档案TableInputY1noneMOMSELECT
material_code AS mom_material_code
,excess_ratio_in AS mom_excess_ratio_in
,warehouse_code_in AS mom_warehouse_code
,location_code_in AS mom_location_code
FROM base_material0NNNNStringnormalmaterial_code50-1表输入-mom物料档案material_code.,noneNY0NNNzh_CNAsia/ShanghaiNBigNumbernormalexcess_ratio_in246表输入-mom物料档案excess_ratio_in######0.0###################;-######0.0###################.noneNY0NNNzh_CNAsia/ShanghaiNStringnormalwarehouse_code50-1表输入-mom物料档案warehouse_code.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormallocation_code50-1表输入-mom物料档案location_code.,noneNY0NNNzh_CNAsia/ShanghaiN304224Y表输入-主idTableInputY1noneMOMSELECT
0${interface_id} as master_interface_id,
id as mom_task_in_id
FROM wms_task_in
WHERE interface_id =0${interface_id} AND bill_type_code ='3' ORDER BY create_time DESC LIMIT 1
0NYNNIntegernormalmaster_interface_id150表输入-主idmaster_interface_id####0;-####0.,noneNY0NNNzh_CNAsia/ShanghaiNStringnormalmom_task_in_id20-1表输入-主idmom_task_in_id.,noneNY0NNNzh_CNAsia/ShanghaiN160224Y获取变量GetVariableY1nonemysql_driverclassname${mysql_driverclassname}String-1-1nonemysql_password${mysql_password}String-1-1nonemysql_url${mysql_url}String-1-1nonemysql_username${mysql_username}String-1-1noneUSER_ID${USER_ID}String-1-1nonesqlserver_driverclassname${sqlserver_driverclassname}String-1-1nonesqlserver_password${sqlserver_password}String-1-1nonesqlserver_url${sqlserver_url}String-1-1nonesqlserver_username${sqlserver_username}String-1-1noneUSER_NAME${USER_NAME}String-1-1noneBEGIN_DATE${BEGIN_DATE}String-1-1noneEND_DATE${END_DATE}String-1-1noneDEPT_CODE${DEPT_CODE}String-1-1nonemysql_host${mysql_host}String-1-1nonemysql_dbname${mysql_dbname}String-1-1none119511YN