private void setDTOInfo(Worksheet sheet, List<HcDTOInfo> dtoList)
        {
            var name = sheet.Name;
            if (name.Length > 3 && name.Substring(name.Length - 3, 3).Equals("DTO"))
            {
                var dtoInfo = new HcDTOInfo();
                Range range = null;
                range = (Range)sheet.Cells[2, 3];
                dtoInfo.Name = range.Value.ToString();

                range = (Range)sheet.Cells[1, 3];
                dtoInfo.Caption = range.Value.ToString();

                int iRow = 5;
                range = (Range)sheet.Cells[iRow, 3];
                var cellValue = range.Value;
                dtoInfo.FieldArray = new List<HcFieldInfo>();
                while (cellValue != null && !string.IsNullOrEmpty(cellValue.ToString()))
                {
                    var field = new HcFieldInfo();
                    field.name = cellValue.ToString();
                    range = (Range)sheet.Cells[iRow, 2];
                    field.caption = range.Value.ToString();
                    range = (Range)sheet.Cells[iRow, 4];
                    field.FieldTypeString = range.Value.ToString();

                    dtoInfo.FieldArray.Add(field);
                    iRow += 1;

                    range = (Range)sheet.Cells[iRow, 3];
                    cellValue = range.Value;
                }
                dtoList.Add(dtoInfo);
            }
        }
        private void setInDTO(Worksheet sheet, HcServiceInfo serviceInfo, ref int irow)
        {
            var inDto = new HcDTOInfo();
            inDto.Caption = serviceInfo.Caption + "的InDTO";

            var range = (Range)sheet.Cells[19, 2];
            inDto.Name = range.Value.ToString();

            range = (Range)sheet.Cells[20, 15];
            var cellValue = range.Value;
            inDto.FieldArray = new List<HcFieldInfo>();
            while (cellValue != null && !string.IsNullOrEmpty(cellValue.ToString()))
            {
                var field = new HcFieldInfo();
                field.name = cellValue.ToString();
                range = (Range)sheet.Cells[irow, 3];
                field.caption = range.Value.ToString();
                range = (Range)sheet.Cells[irow, 22];
                field.FieldTypeString = range.Value.ToString();

                inDto.FieldArray.Add(field);
                irow += 1;

                range = (Range)sheet.Cells[irow, 15];
                cellValue = range.Value;
            }

            serviceInfo.InDTO = inDto;
        }
        private void writeDTO(DirectoryInfo newFolder, HcDTOInfo dto)
        {
            var file = new FileStream(string.Format(@"{0}\{1}.java", newFolder.FullName, dto.Name), FileMode.Create, FileAccess.Write);
            using (StreamWriter writer = new StreamWriter(file, System.Text.Encoding.UTF8))
            {
                writer.WriteLine(@"/**");
                writer.WriteLine(@" * ");
                writer.WriteLine(@" */");
                writer.WriteLine(@"package com.xl.frame.entity;");
                writer.WriteLine(@"");
                if (dto.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTOArray).Count > 0)
                {
                    writer.WriteLine(@"import java.util.ArrayList;");
                }
                writer.WriteLine(@"import java.util.HashMap;");
                if (dto.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTOArray).Count > 0)
                {
                    writer.WriteLine(@"import java.util.List;");
                }
                writer.WriteLine(@"");
                dto.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTO).ForEach(item =>
                {
                    writer.WriteLine(@"import com.xl.frame.entity.{0};", item.FieldTypeString);
                });

                writer.WriteLine(@"");
                writer.WriteLine(@"public class {0} extends BaseEntity implements IBaseEntity {{", dto.Name);
                writer.WriteLine(@"");
                writer.WriteLine(@"	/**");
                writer.WriteLine(@"	 * ");
                writer.WriteLine(@"	 */");
                writer.WriteLine(@"	private static final long serialVersionUID = 1L;");
                writer.WriteLine(@"");
                foreach (var field in dto.FieldArray)
                {
                    writer.WriteLine(@"");
                    writer.WriteLine(@"	public {0} {1}; // {2}", getFieldTypeInString(field.FieldType, field.FieldTypeString), field.name.ToPrivateDefinition(), field.caption);
                }
                writer.WriteLine(@"");
                writer.WriteLine(@"	@Override");
                writer.WriteLine(@"	public HashMap<String, Object> buildRequestData() {");
                writer.WriteLine(@"		HashMap<String, Object> params = new HashMap<String, Object>({0});", dto.FieldArray.Count);

                var lstField = dto.FieldArray.FindAll(d => isBaseType(d.FieldType));
                if (lstField != null)
                {
                    foreach (var item in lstField)
                    {
                        writer.WriteLine(@"		params.put(""{0}"", this.{1});", item.name, item.name.ToPrivateDefinition());
                    }
                }

                lstField = dto.FieldArray.FindAll(d => isArrayType(d.FieldType));
                if (lstField != null)
                {
                    if (lstField.Count > 0)
                    {
                        foreach (var item in lstField)
                        {
                            if (item.FieldType == EmFieldType.DTOArray)
                            {
                                writer.WriteLine(@"     List<HashMap<String, Object>> array{0} = new ArrayList<HashMap<String, Object>>();", item.name);
                                writer.WriteLine(@"     for (IBaseEntity entity : this.{0}) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"         array{0}.add(entity.buildRequestData());", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"		}");
                                writer.WriteLine(@"     if (array{0}.size()>0) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"         params.put(""{0}"",array{1});", item.name, item.name.ToPrivateDefinition());
                                writer.WriteLine(@"     }");
                            }
                            else
                            {
                                writer.WriteLine(@"		if (this.{0}.length>0) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"         params.put(""{0}"", this.{1});", item.name, item.name.ToPrivateDefinition());
                                writer.WriteLine(@"		}");
                            }
                        }
                    }
                }

                lstField = dto.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTO);
                if (lstField != null)
                {
                    if (lstField.Count > 0)
                    {
                        foreach (var item in lstField)
                        {
                            writer.WriteLine(@"		HashMap<String, Object> map{0} = this.{1}.buildRequestData();", item.name, item.name.ToPrivateDefinition());
                            writer.WriteLine(@"		if (map{0} != null) {{", item.name);
                            writer.WriteLine(@"		    params.put(""{0}"", map{0});", item.name.ToPrivateDefinition());
                            writer.WriteLine(@"		}");
                        }
                    }
                }
                writer.WriteLine(@"		return params;");
                writer.WriteLine(@"	}");
                writer.WriteLine(@"");
                writer.WriteLine(@"	@Override");
                writer.WriteLine(@"	public Boolean checkInputData() {");
                foreach (var item in dto.FieldArray)
                {
                    if (item.FieldCheckType != null && item.FieldCheckType.Count > 0)
                    {
                        foreach (var chk in item.FieldCheckType)
                        {
                            switch (chk)
                            {
                                case EmCheckType.MustEnter:
                                    getMustInput(writer, item);
                                    break;
                                default:
                                    getMustInput(writer, item);
                                    break;
                            }
                        }
                    }
                }

                writer.WriteLine(@"		return true;");
                writer.WriteLine(@"	}");
                writer.WriteLine(@"}");
            }
        }
        private void writeDTO(DirectoryInfo newFolder, HcDTOInfo info)
        {
            var path = newFolder.FullName + @"\DTO";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            var fileName = string.Format(@"{0}", info.Name);
            var file = new FileStream(string.Format(@"{0}\{1}.h", path, fileName), FileMode.Create, FileAccess.Write);
            using (StreamWriter writer = new StreamWriter(file, System.Text.Encoding.UTF8))
            {
                writer.WriteLine(@"//");
                writer.WriteLine(@"//  {0}.h", fileName);
                writer.WriteLine(@"//  {0}", Constants.ProjectName);
                writer.WriteLine(@"//");
                writer.WriteLine(@"//  Created by xiao huama on {0}.", DateTime.Now.ToString("yy/MM/dd"));
                writer.WriteLine(@"//  {0}", Constants.CompanyName);
                writer.WriteLine(@"//");
                writer.WriteLine(@"#import ""ServiceBaseModel.h""");
                foreach (var item in info.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTO || d.FieldType == EmFieldType.DTOArray))
                {
                    if (item.FieldType == EmFieldType.DTO)
                    {
                        writer.WriteLine(@"#import ""{0}.h""", item.FieldTypeString);
                    }
                    else
                    {
                        writer.WriteLine(@"#import ""{0}.h""", item.FieldTypeString.Replace("[]", String.Empty));
                    }
                }
                writer.WriteLine(@"");
                writer.WriteLine(@"@interface {0} : ServiceBaseModel", fileName);
                writer.WriteLine(@"");
                foreach (var field in info.FieldArray)
                {
                    writer.WriteLine(@"@property(nonatomic,strong){0} *{1}; /**< {2}*/", getFieldTypeOutString(field.FieldType, field.FieldTypeString), field.name.ToPrivateDefinition(), field.caption);
                }
                writer.WriteLine(@"");
                writer.WriteLine(@"");
                writer.WriteLine(@"@end");
            }

            file = new FileStream(string.Format(@"{0}\{1}.m", path, fileName), FileMode.Create, FileAccess.Write);
            using (StreamWriter writer = new StreamWriter(file, System.Text.Encoding.UTF8))
            {
                writer.WriteLine(@"//");
                writer.WriteLine(@"//  {0}.m", fileName);
                writer.WriteLine(@"//  {0}", Constants.ProjectName);
                writer.WriteLine(@"//");
                writer.WriteLine(@"//  Created by xiao huama on {0}.", DateTime.Now.ToString("yy/MM/dd"));
                writer.WriteLine(@"//  {0}", Constants.CompanyName);
                writer.WriteLine(@"//");
                writer.WriteLine(@"");
                writer.WriteLine(@"#import ""{0}.h""", fileName);
                writer.WriteLine(@"");
                writer.WriteLine(@"@implementation {0}", fileName);
                writer.WriteLine(@"");
                writer.WriteLine(@"- (void)loadDataWithJsonData:(id)jsonData");
                writer.WriteLine(@"{");
                writer.WriteLine(@"    if (![jsonData isKindOfClass:[NSDictionary class]]) {");
                writer.WriteLine(@"        return;");
                writer.WriteLine(@"    }");
                writer.WriteLine(@"    if (!jsonData) {");
                writer.WriteLine(@"        return;");
                writer.WriteLine(@"    }");
                foreach (var field in info.FieldArray)
                {
                    if (isNumberType(field.FieldType))
                    {
                        writer.WriteLine(@"    if (![jsonData[@""{0}""] isKindOfClass:[NSNull class]]) {{", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"        self.{0} = jsonData[@""{0}""];", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"    }");
                    }
                    else if (field.FieldType == EmFieldType.DTO)
                    {
                        writer.WriteLine(@"    if ([jsonData[@""{0}""] isKindOfClass:[NSDictionary class]]) {{", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"        self.{0} = [[{1} alloc] init];", field.name.ToPrivateDefinition(), field.FieldTypeString);
                        writer.WriteLine(@"        [self.{0} loadDataWithJsonData:jsonData[@""{0}""]];", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"    }");
                    }
                    else
                    {
                        writer.WriteLine(@"    if ([jsonData[@""{0}""] isKindOfClass:[NSArray class]]) {{", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"        if ([jsonData[@""{0}""] count]>0) {{", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"            NSMutableArray *tempArray = [NSMutableArray array];");
                        writer.WriteLine(@"            for (id data in jsonData[@""{0}""]) {{", field.name.ToPrivateDefinition());
                        if (isStringArray(field.FieldTypeString.Replace("[]", "")))
                        {
                            writer.WriteLine(@"                [tempArray addObject:data];");
                        }
                        else
                        {
                            writer.WriteLine(@"                [tempArray addObject:[[{0} alloc]initWithJsonData:data]];", field.FieldTypeString.Replace("[]", ""));
                        }
                        writer.WriteLine(@"            }");
                        writer.WriteLine(@"            self.{0} = tempArray;", field.name.ToPrivateDefinition());
                        writer.WriteLine(@"        }");
                        writer.WriteLine(@"    }");
                    }
                }
                writer.WriteLine(@"}");
                writer.WriteLine(@"");
                writer.WriteLine(@"-(NSMutableDictionary *)buildRequestData");
                writer.WriteLine(@"{");
                var lstField = info.FieldArray.FindAll(d => isBaseType(d.FieldType));
                writer.WriteLine(@"    NSMutableDictionary *dic = [super buildVerificationData];");
                if (lstField != null)
                {
                    foreach (var item in lstField)
                    {
                        writer.WriteLine(@"    if (self.{0}) {{", item.name.ToPrivateDefinition());
                        writer.WriteLine(@"        dic[@""{0}""] = self.{0};", item.name.ToPrivateDefinition());
                        writer.WriteLine(@"    }");
                    }
                }

                lstField = info.FieldArray.FindAll(d => isArrayType(d.FieldType));
                if (lstField != null)
                {
                    if (lstField.Count > 0)
                    {
                        foreach (var item in lstField)
                        {
                            if (item.FieldType == EmFieldType.DTOArray)
                            {
                                writer.WriteLine(@"    NSMutableArray *array{0} =[NSMutableArray array];", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"    for (BaseModel *mode in self.{0}) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"        [array{0} addObject:[mode buildRequestData]];", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"    }");
                                writer.WriteLine(@"    if (array{0}.count>0) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"        dic[@""{0}""] = array{0};", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"    }");
                            }
                            else
                            {
                                writer.WriteLine(@"    if (self.{0}.count>0) {{", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"        dic[@""{0}""] = self.{0};", item.name.ToPrivateDefinition());
                                writer.WriteLine(@"    }");
                            }
                        }
                    }
                }

                lstField = info.FieldArray.FindAll(d => d.FieldType == EmFieldType.DTO);
                if (lstField != null)
                {
                    if (lstField.Count > 0)
                    {
                        foreach (var item in lstField)
                        {
                            writer.WriteLine(@"    NSDictionary *{0}Dic = [self.{0} buildRequestData];", item.name.ToPrivateDefinition());
                            writer.WriteLine(@"    if ({0}Dic) {{", item.name.ToPrivateDefinition());
                            writer.WriteLine(@"        dic[@""{0}""] = {0}Dic;", item.name.ToPrivateDefinition());
                            writer.WriteLine(@"    }");
                        }
                    }
                }

                writer.WriteLine(@"    return dic;");
                writer.WriteLine(@"}");
                writer.WriteLine(@"");
                writer.WriteLine(@"@end");
            }
        }
        private void writeDTO(String path, HcDTOInfo info, String subName)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            var file = new FileStream(string.Format(@"{0}\{1}.java", path, info.Name), FileMode.Create, FileAccess.Write);
            using (StreamWriter writer = new StreamWriter(file, System.Text.Encoding.UTF8))
            {
                writer.WriteLine(@"/**");
                writer.WriteLine(@" * {0}", Constants.ProjectName);
                writer.WriteLine(@" * {0}", Constants.CompanyName);
                writer.WriteLine(@" */");
                writer.WriteLine(@"package " + Constants.Package + @".main.biz." + subName + ".dto;");
                writer.WriteLine(@"");
                if (info.FieldArray != null && info.FieldArray.Count > 0)
                {
                    writer.WriteLine(@"import " + Constants.Package + @".fw.core.type.Alias;");
                }
                writer.WriteLine(@"");
                writer.WriteLine(@"/**");
                writer.WriteLine(@" * {0} DTO", info.Name);
                writer.WriteLine(@" *");
                writer.WriteLine(@" * History");
                writer.WriteLine(@" * REV.         Updated Date           Updater              Infomation");
                writer.WriteLine(@" * -------      ---------------        ----------------     ------------------");
                writer.WriteLine(@" * 1.0          {0}             TOOL                Create", DateTime.Now.ToString("yyyy/MM/dd"));
                writer.WriteLine(@" *");
                writer.WriteLine(@" */");
                writer.WriteLine(@"@" + Constants.Package + @".fw.core.type.AliasKanJi(""{0}"")", info.Caption);
                writer.WriteLine(@"public class {0} implements java.io.Serializable, Comparable<{0}> {{", info.Name);
                writer.WriteLine(@"	/**");
                writer.WriteLine(@"	 * System ID");
                writer.WriteLine(@"	 */");
                writer.WriteLine(@"	private static final long serialVersionUID = 1L;");
                writer.WriteLine(@"");

                foreach (var field in info.FieldArray)
                {
                    writer.WriteLine(@"	/**");
                    writer.WriteLine(@"	 * {0}  ", field.caption);
                    writer.WriteLine(@"	 */");
                    writer.WriteLine(@"	@Alias(""{0}"")", field.caption);
                    writeFieldCheck(writer, field);
                    writer.WriteLine(@"	private {0} {1} = null;", getFieldTypeString(field.FieldType, field.FieldTypeString), field.name.ToPrivateDefinition());
                    writer.WriteLine(@"");
                }

                foreach (var field in info.FieldArray)
                {
                    writer.WriteLine(@"	/**");
                    writer.WriteLine(@"	 * <code>{0}</code>返回", field.caption);
                    writer.WriteLine(@"	 * @return <code>{0}</code>", field.caption);
                    writer.WriteLine(@"	 */");
                    writer.WriteLine(@"	public {0} get{1}() {{", getFieldTypeString(field.FieldType, field.FieldTypeString), field.name.ToTitleCase());
                    writer.WriteLine(@"		return this.{0};", field.name.ToPrivateDefinition());
                    writer.WriteLine(@"	}");
                    writer.WriteLine(@"");
                    writer.WriteLine(@"	/**");
                    writer.WriteLine(@"	 * <code>{0}</code>设定", field.name);
                    writer.WriteLine(@"	 * @param {0} <code>{0}</code>设定值", field.name);
                    writer.WriteLine(@"	 */");
                    writer.WriteLine(@"	public void set{0}(", field.name.ToTitleCase());
                    writer.WriteLine(@"			{0} {1}) {{", getFieldTypeString(field.FieldType, field.FieldTypeString), field.name.ToPrivateDefinition());
                    writer.WriteLine(@"		this.{0} = {0};", field.name.ToPrivateDefinition());
                    writer.WriteLine(@"	}");
                    writer.WriteLine(@"");
                }

                writer.WriteLine(@"	/* (non-Javadoc)");
                writer.WriteLine(@"	 * @see java.lang.Comparable#compareTo(java.lang.Object)");
                writer.WriteLine(@"	 */");
                writer.WriteLine(@"	@Override");
                writer.WriteLine(@"	public int compareTo({0} compareToDTO) {{", info.Name);
                writer.WriteLine(@"		return this.equals(compareToDTO) ? 0 : -1;");
                writer.WriteLine(@"	}");
                writer.WriteLine(@"}");
            }
        }