Kaynağa Gözat

修改wbs树元素同步到实体表

liuyc 3 yıl önce
ebeveyn
işleme
d9b615e95c

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsFormElement.java

@@ -28,6 +28,10 @@ public class WbsFormElement extends BaseEntity {
     @JsonProperty(value = "fId")
     private String fId;
 
+    /**
+     * 元素key
+     */
+    private String eKey;
     /**
      * 元素名称
      */

+ 9 - 1
blade-service/blade-manager/pom.xml

@@ -70,7 +70,6 @@
             <version>2.9.1.RELEASE</version>
             <scope>compile</scope>
         </dependency>
-
         <!--Oss-->
         <dependency>
             <groupId>org.springblade</groupId>
@@ -92,6 +91,15 @@
             <artifactId>jsoup</artifactId>
             <version>1.10.2</version>
         </dependency>
+        <!--汉字转全拼-->
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+
+
+
 
     </dependencies>
 

+ 24 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -29,6 +29,7 @@ import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormElement;
+import org.springblade.manager.excel.WbsExcelUtil;
 import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.excel.WbsFormElementImporter;
 import org.springblade.manager.excel.WbsTreeExcel;
@@ -38,6 +39,8 @@ import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -57,16 +60,16 @@ public class WbsFormElementController extends BladeController {
     private final IWbsFormElementService wbsFormElementService;
 
     /**
-     * 新增 wbs表单元素
+     * 新增或同步 wbs表单元素
      */
     @PostMapping("/save")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "新增", notes = "传入wbsFormElement")
-    public R save(@Valid @RequestBody WbsFormElement wbsFormElement) {
-        boolean result = wbsFormElementService.save(wbsFormElement);
-        Long id = wbsFormElement.getId();
-        if (result) {
-            return R.data(id, "新增成功");
+    public R save(@Valid @RequestBody WbsFormElementDTO wbsFormElement) {
+        //新增同步元素字段到实体表
+        boolean b = wbsFormElementService.saveAndSyn(wbsFormElement, wbsFormElement.getInitTableName());
+        if (b) {
+            return R.data(wbsFormElement, "新增成功");
         }
         return R.fail("新增失败");
     }
@@ -94,13 +97,19 @@ public class WbsFormElementController extends BladeController {
     }
 
     /**
-     * 删除 wbs表单元素
+     * 删除 wbs表单元素 同步删除实体表字段
      */
     @PostMapping("/remove")
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
-    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        return R.status(wbsFormElementService.deleteLogic(Func.toLongList(ids)));
+    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam("ids") String ids,
+                    @RequestParam("eKey") String eKey, @RequestParam("initTableName") String initTableName) {
+        //同步删除实体表元素字段
+        boolean b = wbsFormElementService.deleteAndSyn(ids, eKey, initTableName);
+        if (b) {
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
     }
 
     /**
@@ -119,11 +128,12 @@ public class WbsFormElementController extends BladeController {
      */
     @PostMapping("/import-wbsElement")
     @ApiOperationSupport(order = 6)
-    @ApiOperation(value = "导入WBS元素", notes = "传入excel")
-    public R importRegion(MultipartFile file, Integer isCovered, String tableId) {
-        WbsFormElementImporter importer = new WbsFormElementImporter(wbsFormElementService, isCovered == 1, tableId);
-        ExcelUtil.save(file, importer, WbsFormElementExcel.class);
-        return R.success("操作成功");
+    @ApiOperation(value = "导入WBS元素数据", notes = "传入excel")
+    public R importRegion(MultipartFile file) {
+        List<WbsFormElementExcel> list = ExcelUtil.read(file, WbsFormElementExcel.class);
+        /*WbsFormElementImporter importer = new WbsFormElementImporter(wbsFormElementService, isCovered == 1, tableId);
+        ExcelUtil.save(file, importer, WbsFormElementExcel.class);*/
+        return R.data(list, "操作成功");
     }
 
 

+ 4 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -223,16 +223,6 @@ public class WbsTreeController extends BladeController {
         return wbsTreeService.saveFormElement(formElementDTO);
     }
 
-    /**
-     * 新增元素同步到实体表
-     */
-    @PostMapping("/saveEntityTableField")
-    @ApiOperationSupport(order = 10)
-    @ApiOperation(value = "新增元素同步到实体表", notes = "传入FormElementDTO")
-    public R saveEntityTableField(@RequestBody WbsFormElementDTO wbsFormElementDTO) {
-        return wbsTreeService.saveEntityTableField(wbsFormElementDTO);
-    }
-
 
     /**
      * 编辑表单元素批量修改
@@ -241,9 +231,12 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "编辑表单元素批量修改", notes = "传入WbsFormElement")
     @ApiImplicitParam(name = "ids", value = "元素的id集合", required = true)
-    public R updateBatchElements(@RequestBody List<WbsFormElement> wbsFormElementList) {
+    @Transactional(rollbackFor = Exception.class)
+    public R updateBatchElements(@RequestBody List<WbsFormElement> wbsFormElementList,@RequestParam("initTableName") String initTableName) {
         boolean b = wbsFormElementService.updateBatchById(wbsFormElementList);
         if (b) {
+            //同步修改实体表类型字段类型
+            wbsFormElementService.updateAndSyn(wbsFormElementList,initTableName);
             return R.success("修改成功");
         }
         return R.fail("修改失败");

+ 16 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java

@@ -34,15 +34,22 @@ import java.util.List;
  */
 public interface WbsFormElementMapper extends BaseMapper<WbsFormElement> {
 
-	/**
-	 * 自定义分页
-	 *
-	 * @param page
-	 * @param wbsFormElement
-	 * @return
-	 */
-	List<WbsFormElementVO> selectWbsFormElementPage(IPage page, WbsFormElementVO wbsFormElement);
+    /**
+     * 自定义分页
+     *
+     * @param page
+     * @param wbsFormElement
+     * @return
+     */
+    List<WbsFormElementVO> selectWbsFormElementPage(IPage page, WbsFormElementVO wbsFormElement);
 
 
-    Integer createTable(@Param("sqlStr") String sqlStr,@Param("newTableName")String newTableName);
+    Integer createTable(@Param("sqlStr") String sqlStr, @Param("newTableName") String newTableName);
+
+    int alterAddFiled(@Param("sqlStr") String sqlStr, @Param("tableName") String tableName);
+
+    int deleteTableFiled(@Param("eKey") String eKey, @Param("tableName") String tableName);
+
+    void updateFiledType(String initTableName, String eKey, String eType, Integer eLength);
+
 }

+ 12 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml

@@ -13,6 +13,7 @@
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
         <result column="f_id" property="fId"/>
+        <result column="e_key" property="eKey"/>
         <result column="e_name" property="eName"/>
         <result column="e_type" property="eType"/>
         <result column="e_length" property="eLength"/>
@@ -27,6 +28,17 @@
          PRIMARY KEY (`id`) USING BTREE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     </update>
+    <update id="alterAddFiled">
+        alter table ${tableName} add ${sqlStr}
+    </update>
+
+    <update id="deleteTableFiled">
+        alter table ${tableName} drop column ${eKey}
+    </update>
+
+    <update id="updateFiledType">
+        ALTER TABLE ${initTableName} MODIFY ${eKey} ${eType}(${eLength})
+    </update>
 
 
     <select id="selectWbsFormElementPage" resultMap="wbsFormElementResultMap">

+ 8 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml

@@ -27,19 +27,20 @@
     </select>
     <select id="selectAll" resultMap="resultMap2">
         SELECT
-        id,
-        wbs_name,
-        wbs_type,
-        status
+            id,
+            wbs_name,
+            wbs_type,
+            `STATUS`
         FROM
-        m_wbs_info
+            m_wbs_info
         WHERE
-        is_deleted = 0
+            is_deleted = 0
+        AND `STATUS` = 1
         <if test="type != null and type != ''">
             AND wbs_type = #{type}
         </if>
         GROUP BY
-        wbs_name
+            wbs_name
     </select>
 
 </mapper>

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -56,6 +56,7 @@
     <resultMap id="wbsFormElementMap" type="org.springblade.manager.entity.WbsFormElement">
         <id column="id" property="id"/>
         <result column="fId" property="fId"/>
+        <result column="e_key" property="eKey"/>
         <result column="e_name" property="eName"/>
         <result column="e_type" property="eType"/>
         <result column="e_length" property="eLength"/>
@@ -187,7 +188,7 @@
 
     <select id="selectFormElements" resultMap="wbsFormElementMap">
         SELECT
-            w.f_id as fId,w.id,w.e_name,e_type,e_length,e_allow_deviation,e_Inspection_method
+            w.f_id as fId,w.e_key,w.id,w.e_name,e_type,e_length,e_allow_deviation,e_Inspection_method
         FROM
             m_wbs_form_element w
         WHERE

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java

@@ -45,4 +45,11 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
 	List<WbsFormElement> selectElementListByFid(String tableId);
 
     void importElement(List<WbsFormElementExcel> data, Boolean isCovered,String tableId);
+
+    boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName);
+
+    boolean deleteAndSyn(String ids, String elementName, String tableName);
+
+    boolean updateAndSyn(List<WbsFormElement> wbsFormElementList,String initTableName);
+
 }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -98,6 +98,5 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     R saveFormElement(FormElementDTO formElementDTO);
 
-    R saveEntityTableField(WbsFormElementDTO wbsFormElementDTO);
 
 }

+ 69 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -19,6 +19,7 @@ package org.springblade.manager.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormInitEntity;
 import org.springblade.manager.excel.WbsFormElementExcel;
@@ -30,6 +31,7 @@ import org.springblade.manager.vo.WbsFormElementVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -93,10 +95,10 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         StringBuffer sbr = new StringBuffer();
         for (WbsFormElement wbsFormElement : elementList) {
             //获取字段名、类型、长度
-            String fieldName = wbsFormElement.getEName();
+            String fieldNameKey = wbsFormElement.getEKey();
             String fieldType = judgeDataType(wbsFormElement.getEType());
             String fieldLength = String.valueOf(wbsFormElement.getELength());
-            sbr.append("" + fieldName + "");
+            sbr.append("" + fieldNameKey + "");
             if ("varchar".equals(fieldType)) {
                 sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
             } else if ("bigint".equals(fieldType)) {
@@ -157,4 +159,69 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
+        //新增元素字段
+        //查询当前元素表中元素的最后一个key_?值
+        QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("f_id", wbsFormElement.getFId());
+        List<WbsFormElement> wbsFormElements = baseMapper.selectList(queryWrapper);
+        String substring = "";
+        for (WbsFormElement formElement : wbsFormElements) {
+            String eKey = formElement.getEKey();
+            substring = eKey.substring(eKey.length() - 1);
+        }
+        long newFiled = Long.parseLong(substring) + 1;
+        String substring1 = "key_" + newFiled;
+        wbsFormElement.setEKey(substring1);
+
+        int insert = baseMapper.insert(wbsFormElement);
+        if (insert > 0) {
+            String newName = wbsFormElement.getEKey();
+            //同步
+            StringBuffer sbr1 = new StringBuffer();
+            String fieldType = judgeDataType(wbsFormElement.getEType());
+            if ("varchar".equals(fieldType)) {
+                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
+            } else if ("bigint".equals(fieldType)) {
+                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
+            } else if ("decimal".equals(fieldType)) {
+                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
+            } else if ("datetime".equals(fieldType)) {
+                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
+            }
+            String sql = newName + " " + sbr1;
+            baseMapper.alterAddFiled(sql, tableName);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteAndSyn(String ids, String eKey, String tableName) {
+        deleteLogic(Func.toLongList(ids));
+        //同步删除实体表字段 TODO 删除前判断实体表是否关联数据
+        baseMapper.deleteTableFiled(eKey, tableName);
+        return true;
+    }
+
+    @Override
+    public boolean updateAndSyn(List<WbsFormElement> wbsFormElementList,String initTableName) {
+        QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
+        String fId = "";
+        for (WbsFormElement wbsFormElement : wbsFormElementList) {
+            fId = wbsFormElement.getFId();
+        }
+        queryWrapper.eq("f_id",fId);
+        List<WbsFormElement> wbsFormElements = baseMapper.selectList(queryWrapper);
+        for (WbsFormElement wbsFormElement : wbsFormElements) {
+            String eKey = wbsFormElement.getEKey();
+            Integer eLength = wbsFormElement.getELength();
+            String eType = judgeDataType(wbsFormElement.getEType());
+            baseMapper.updateFiledType(initTableName,eKey,eType,eLength);
+        }
+        return true;
+    }
 }

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -46,7 +46,7 @@ public class WbsTreeContractServiceImpl
         //查找合同段wbs私有库的节点树
         List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
         for (WbsTreeContract wbsTreeContract : list) {
-            idList2.add(String.valueOf(wbsTreeContract.getPKeyId()));
+            idList2.add(String.valueOf(wbsTreeContract.getId()));
         }
         //比较项目wbs私有树与合同段wbs树是否相同,相同则不修改,不同则修改
         List<String> diffrent = getDiffrent(idList1, idList2);
@@ -67,8 +67,9 @@ public class WbsTreeContractServiceImpl
                         Integer wbsType = wbsInfo.getWbsType();
                         Long snowId = SnowFlakeUtil.getId();
                         baseMapper.insertWbsTreeContract1(snowId, wbsType, pawDTO.getContractId(), wbsTreePrivate);
-                        //初始化施工台账
-                        if (wbsTreePrivate.getDeptCategory() == 6) {
+                        //初始化施工台账 TODO 此处会空指针未解决
+                        if (wbsTreePrivate.getDeptCategory() == 6
+                                && wbsTreePrivate.getDeptCategory() != null) {
                             ConstructionLedger constructionLedger = new ConstructionLedger();
                             constructionLedger.setIsBeton(0);
                             constructionLedger.setWbsId(snowId);

+ 50 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -18,6 +18,12 @@ package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
@@ -40,7 +46,6 @@ import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeAllListVO;
-import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeVO;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -237,7 +242,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             }
             baseMapper.insert(wbsTreeZi);
         }
-        //TODO 暂想到好的处理方法来判断重复条新增问题
+        //TODO 暂未处理重复条新增问题
         return wbsTrees;
     }
 
@@ -350,7 +355,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId());
                             pawDTO.setTemplateProjectId(pawDTO.getWbsId());
                         }
-
                         //引用项目WBS私有库节点
                         WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getTemplateProjectId());
                         if (wbsTreePrivate1 != null) {
@@ -384,9 +388,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 }
             } else {
                 for (String id : diffrent) {
-                    //逻辑删除当前节点
+                    //删除当前节点
                     wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
-                    //逻辑删除当前节点下元素表 id = parentId
+                    //删除节点下元素表 id = parentId
                     wbsTreePrivateMapper.deleteByCondition2(id, pawDTO.getWbsId(), pawDTO.getProjectId());
                 }
             }
@@ -425,7 +429,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         String filedType = "";
         String filedLength = "";
         for (WbsFormElement wbsFormElement : formElementDTO.getElementList()) {
-            filedName = wbsFormElement.getEName();
+            filedName = getPinyin(wbsFormElement.getEName(), "");
             filedType = String.valueOf(wbsFormElement.getEType());
             filedLength = String.valueOf(wbsFormElement.getELength());
         }
@@ -433,39 +437,68 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             return R.fail("操作失败,请完整填写元素参数");
         }
         //初始化表名
-        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + formElementDTO.getDeptName();
+        String realName = getPinyin(formElementDTO.getDeptName(), "");
+        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + realName;
         formElementDTO.setInitTableName(newTableName);
-        //创建表
+        //创建元素
         boolean b1 = submit2(formElementDTO);
-        //判重
         String tableId = selectTableIdByTableName(formElementDTO.getDeptName());
         if (("-1").equals(tableId)) {
             return R.fail("表单名已经存在,请重新填写表单名");
         }
-        //赋值
         List<WbsFormElement> elementList = formElementDTO.getElementList();
+        int i = 1;
         for (WbsFormElement wbsFormElement : elementList) {
+            //当前元素表中元素对应实体表唯一key值
+            wbsFormElement.setEKey("key_" + i++);
             wbsFormElement.setFId(tableId);
         }
         //新增元素
         boolean b2 = wbsFormElementService.saveBatch(elementList);
-        //通过fId查找当前表下的所有元素
         List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(tableId);
         //初始化实体表单
         Boolean b3 = wbsFormElementService.initTable(list, newTableName);
         if (b1 && b2 && b3) {
-            return R.data(formElementDTO, "新增表单,元素,初始化实体表成功");
+            return R.data(formElementDTO, "新增表单、元素、初始化实体表成功");
         } else {
             throw new RuntimeException("操作失败");
         }
-        //TODO 初始化元素(动态更新元素-就是当用户编辑新增元素时,实体表也要同步新增一个字段,编辑、删除一样需要同步,需要在写3个接口)
     }
 
-    @Override
-    public R saveEntityTableField(WbsFormElementDTO wbsFormElementDTO) {
-        //TODO 新增元素后更新同步wbs元素到实体表
 
-        return null;
+    public static String getPinyin(String text, String separator) {
+        //text 文本, separator 转换后添加的分隔符
+        char[] chars = text.toCharArray();
+        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+        // 设置大小写
+        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        // 设置声调表示方法
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        // 设置字母u表示方法
+        format.setVCharType(HanyuPinyinVCharType.WITH_V);
+        String[] s;
+        String rs = "";
+        try {
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < chars.length; i++) {
+                // 判断是否为汉字字符
+                if (String.valueOf(chars[i]).matches("[\\u4E00-\\u9FA5]+")) {
+                    s = PinyinHelper.toHanyuPinyinStringArray(chars[i], format);
+                    if (s != null) {
+                        sb.append(s[0]).append(separator);
+                        continue;
+                    }
+                }
+                sb.append(chars[i]);
+                if ((i + 1 >= chars.length) || String.valueOf(chars[i + 1]).matches("[\\u4E00-\\u9FA5]+")) {
+                    sb.append(separator);
+                }
+            }
+            rs = sb.substring(0, sb.length());
+        } catch (BadHanyuPinyinOutputFormatCombination e) {
+            e.printStackTrace();
+        }
+        return rs;
     }