|  | @@ -15,11 +15,27 @@ func objectToStr(row mo.M) string {
 | 
	
		
			
				|  |  |  	return string(b)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func handleTypeFloat(fields []ii.FieldInfo, row mo.M) {
 | 
	
		
			
				|  |  | -	for _, field := range fields {
 | 
	
		
			
				|  |  | -		if field.Type != mo.TypeDouble {
 | 
	
		
			
				|  |  | +func handleRow(info *ii.ItemInfo, row mo.M) {
 | 
	
		
			
				|  |  | +	handleTypeDateTime(info, row)
 | 
	
		
			
				|  |  | +	handleTypeFloat(info, row)
 | 
	
		
			
				|  |  | +	handleFieldLookup(info, row)
 | 
	
		
			
				|  |  | +	handleTypeObject(info, row)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func handleTypeDateTime(info *ii.ItemInfo, row mo.M) {
 | 
	
		
			
				|  |  | +	for _, field := range info.FieldType(mo.TypeDate) {
 | 
	
		
			
				|  |  | +		oldValue, ok := row[field.Name].(mo.DateTime)
 | 
	
		
			
				|  |  | +		if !ok {
 | 
	
		
			
				|  |  |  			continue
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		if oldValue == 0 {
 | 
	
		
			
				|  |  | +			row[field.Name] = ""
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func handleTypeFloat(info *ii.ItemInfo, row mo.M) {
 | 
	
		
			
				|  |  | +	for _, field := range info.FieldType(mo.TypeDouble) {
 | 
	
		
			
				|  |  |  		if field.Decimal <= 0 {
 | 
	
		
			
				|  |  |  			continue
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -34,11 +50,8 @@ func handleTypeFloat(fields []ii.FieldInfo, row mo.M) {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func handleTypeObject(fields []ii.FieldInfo, row mo.M) {
 | 
	
		
			
				|  |  | -	for _, field := range fields {
 | 
	
		
			
				|  |  | -		if field.Type != mo.TypeObject {
 | 
	
		
			
				|  |  | -			continue
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +func handleTypeObject(info *ii.ItemInfo, row mo.M) {
 | 
	
		
			
				|  |  | +	for _, field := range info.FieldType(mo.TypeObject) {
 | 
	
		
			
				|  |  |  		oldMap, ok := row[field.Name].(mo.M)
 | 
	
		
			
				|  |  |  		if !ok {
 | 
	
		
			
				|  |  |  			continue
 | 
	
	
		
			
				|  | @@ -50,11 +63,8 @@ func handleTypeObject(fields []ii.FieldInfo, row mo.M) {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func handleFieldLookup(fields []ii.FieldInfo, row mo.M) {
 | 
	
		
			
				|  |  | -	for _, field := range fields {
 | 
	
		
			
				|  |  | -		if !field.HasLookup() {
 | 
	
		
			
				|  |  | -			continue
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +func handleFieldLookup(info *ii.ItemInfo, row mo.M) {
 | 
	
		
			
				|  |  | +	for _, field := range info.LookupField() {
 | 
	
		
			
				|  |  |  		oldList, ok := row[field.Lookup.AS].(mo.A)
 | 
	
		
			
				|  |  |  		if !ok {
 | 
	
		
			
				|  |  |  			continue
 |