From 56638c01bb2cc61a92f5e03c9a1001be5b5d3699 Mon Sep 17 00:00:00 2001
From: P15GEN2\59518 <lilith@highdatas.com>
Date: 星期六, 18 十月 2025 12:39:31 +0800
Subject: [PATCH] dev 数据清洗

---
 foundation.biz/src/biz/clean/CleanEngine.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/foundation.biz/src/biz/clean/CleanEngine.java b/foundation.biz/src/biz/clean/CleanEngine.java
index 53e10b7..7a4b934 100644
--- a/foundation.biz/src/biz/clean/CleanEngine.java
+++ b/foundation.biz/src/biz/clean/CleanEngine.java
@@ -1,29 +1,46 @@
 package biz.clean;
 
+import java.util.Date;
+
 import foundation.data.entity.Entity;
+import foundation.data.entity.EntitySet;
+import foundation.data.entity.Filter;
+import foundation.data.object.DataObject;
 import foundation.json.JSONReader;
 import foundation.preload.Bucket;
 
 public class CleanEngine {
 	private String id;
+	private String field;
 	private String name;
 	private Bucket<Rule> ruleBucket;
 	private String remark;
+	private Date lastUpdateTime;
 
 	public void load(Entity entity) throws Exception {
 		id = entity.getString("id");
+		field = entity.getString("field_name");
 		name = entity.getString("name");
 		remark = entity.getString("remark");
+		
+		lastUpdateTime = new Date();
 	}
 	
 	public void loadOneRule(Entity entity) throws Exception {
-		Rule oneRule = new Rule();
-		oneRule.load(entity);
-		
 		if (ruleBucket == null) {
 			ruleBucket = new Bucket<Rule>();
 		}
-		ruleBucket.loadOne(entity.getId(), oneRule);
+		
+		String ruleId = entity.getId();
+		boolean active = entity.getBoolean("is_active", true);
+		if (!active) {
+			ruleBucket.remove(ruleId);
+			return ;
+		}
+		
+		Rule oneRule = new Rule();
+		oneRule.load(entity);
+		ruleBucket.loadOne(ruleId, oneRule);
 	}
 
 	public String modify(String value) throws Exception {
@@ -36,6 +53,22 @@
 			}
 		}
 		return null;
+	}
+
+	public void checkUpdate() throws Exception {
+		DataObject dataObject = DataObject.getInstance("sys_clean_detail");
+		Filter filter = new Filter("last_update_time", ">=" , lastUpdateTime);
+		EntitySet detailSet = dataObject.getTableEntitySet(filter);
+		
+		for (Entity detail : detailSet) {
+			String parentId = detail.getParentId();
+			
+			if (id.equalsIgnoreCase(parentId)) {
+				loadOneRule(detail);
+			}
+		}
+		
+		lastUpdateTime = new Date();
 	}
 
 	public JSONReader modify(JSONReader data, String field) throws Exception {
@@ -71,6 +104,24 @@
 		return null;
 	}
 
+	public Entity modify(Entity entity) throws Exception {
+		Entity data = entity;
+		
+		String value = data.getString(field);
+		
+		for (Rule rule: ruleBucket) {
+			String result = rule.match(value);
+			
+			if (result != null) {
+				// return entity value if match anyone rule
+				data.set(field, result);
+				return data;
+			}
+		}
+		
+		return null;
+	}
+
 	public String getId() {
 		return id;
 	}
@@ -86,5 +137,4 @@
 	public String getRemark() {
 		return remark;
 	}
-	
 }

--
Gitblit v1.8.0