|
|
@@ -0,0 +1,449 @@
|
|
|
+package com.fs.company.controller.qw;
|
|
|
+
|
|
|
+import com.fs.common.annotation.Log;
|
|
|
+import com.fs.common.core.controller.BaseController;
|
|
|
+import com.fs.common.core.domain.AjaxResult;
|
|
|
+import com.fs.common.core.domain.R;
|
|
|
+import com.fs.common.core.page.TableDataInfo;
|
|
|
+import com.fs.common.enums.BusinessType;
|
|
|
+import com.fs.common.exception.CustomException;
|
|
|
+import com.fs.common.utils.ServletUtils;
|
|
|
+import com.fs.common.utils.StringUtils;
|
|
|
+import com.fs.common.utils.poi.ExcelUtil;
|
|
|
+import com.fs.company.mapper.CompanyUserRoleMapper;
|
|
|
+import com.fs.framework.security.LoginUser;
|
|
|
+import com.fs.framework.service.TokenService;
|
|
|
+import com.fs.his.dto.SendResultDetailDTO;
|
|
|
+import com.fs.qw.bo.SendMsgLogBo;
|
|
|
+import com.fs.qw.domain.QwAcquisitionLinkInfo;
|
|
|
+import com.fs.qw.dto.BatchAddAcquisitionLinkDTO;
|
|
|
+import com.fs.qw.dto.IpadBlindAddDto;
|
|
|
+import com.fs.qw.service.IQwAcquisitionLinkInfoService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获客链接-号码链接生成记录Controller
|
|
|
+ *
|
|
|
+ * @author fs
|
|
|
+ * @date 2026-03-27
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@RestController
|
|
|
+@RequestMapping("/qw/linkInfo")
|
|
|
+public class QwAcquisitionLinkInfoController extends BaseController
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private TokenService tokenService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompanyUserRoleMapper roleMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IQwAcquisitionLinkInfoService qwAcquisitionLinkInfoService;
|
|
|
+
|
|
|
+ // 定义手机号正则表达式
|
|
|
+ private static final Pattern PHONE_PATTERN = Pattern.compile("^1[3-9]\\d{9}$");
|
|
|
+ /**
|
|
|
+ * 查询获客链接-号码链接生成记录列表
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:list')")
|
|
|
+ @GetMapping("/list")
|
|
|
+ public TableDataInfo list(QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
|
|
|
+ {
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ qwAcquisitionLinkInfo.setCreateBy(loginUser.getUser().getUserId());
|
|
|
+ //管理员查看所有数据
|
|
|
+ Long isAdmin = roleMapper.companyUserIsAdmin(loginUser.getUser().getUserId());
|
|
|
+ if (isAdmin != null) {
|
|
|
+ qwAcquisitionLinkInfo.setCreateBy(null);
|
|
|
+ }
|
|
|
+ startPage();
|
|
|
+ List<QwAcquisitionLinkInfo> list = qwAcquisitionLinkInfoService.selectQwAcquisitionLinkInfoList(qwAcquisitionLinkInfo);
|
|
|
+ return getDataTable(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出获客链接-号码链接生成记录列表
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:export')")
|
|
|
+ @Log(title = "获客链接-号码链接生成记录", businessType = BusinessType.EXPORT)
|
|
|
+ @PostMapping("/export")
|
|
|
+ public void export(HttpServletResponse response, QwAcquisitionLinkInfo qwAcquisitionLinkInfo) throws IOException {
|
|
|
+ List<QwAcquisitionLinkInfo> list = qwAcquisitionLinkInfoService.selectQwAcquisitionLinkInfoList(qwAcquisitionLinkInfo);
|
|
|
+ ExcelUtil<QwAcquisitionLinkInfo> util = new ExcelUtil<QwAcquisitionLinkInfo>(QwAcquisitionLinkInfo.class);
|
|
|
+ util.exportExcel(response, list, "获客链接-号码链接生成记录数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取获客链接-号码链接生成记录详细信息
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:query')")
|
|
|
+ @GetMapping(value = "/{id}")
|
|
|
+ public AjaxResult getInfo(@PathVariable("id") Long id)
|
|
|
+ {
|
|
|
+ return AjaxResult.success(qwAcquisitionLinkInfoService.selectQwAcquisitionLinkInfoById(id));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增获客链接-号码链接生成记录
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:add')")
|
|
|
+ @Log(title = "获客链接-号码链接生成记录", businessType = BusinessType.INSERT)
|
|
|
+ @PostMapping
|
|
|
+ public AjaxResult add(@RequestBody QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
|
|
|
+ {
|
|
|
+ return toAjax(qwAcquisitionLinkInfoService.insertQwAcquisitionLinkInfo(qwAcquisitionLinkInfo));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改获客链接-号码链接生成记录
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:edit')")
|
|
|
+ @Log(title = "获客链接-号码链接生成记录", businessType = BusinessType.UPDATE)
|
|
|
+ @PutMapping
|
|
|
+ public AjaxResult edit(@RequestBody QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
|
|
|
+ {
|
|
|
+ return toAjax(qwAcquisitionLinkInfoService.updateQwAcquisitionLinkInfo(qwAcquisitionLinkInfo));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除获客链接-号码链接生成记录
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('qw:linkInfo:remove')")
|
|
|
+ @Log(title = "获客链接-号码链接生成记录", businessType = BusinessType.DELETE)
|
|
|
+ @DeleteMapping("/{ids}")
|
|
|
+ public AjaxResult remove(@PathVariable Long[] ids)
|
|
|
+ {
|
|
|
+ return toAjax(qwAcquisitionLinkInfoService.deleteQwAcquisitionLinkInfoByIds(ids));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送获客链接短信
|
|
|
+ */
|
|
|
+ @GetMapping("/sendMessageLink/{id}/{phone}")
|
|
|
+ public AjaxResult sendMessageLink(@PathVariable Long id,@PathVariable String phone) {
|
|
|
+ try {
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ if (loginUser==null||loginUser.getCompany()==null){
|
|
|
+ throw new CustomException("请登录");
|
|
|
+ }
|
|
|
+ SendMsgLogBo sendMsgLogBo=new SendMsgLogBo();
|
|
|
+ sendMsgLogBo.setCompanyId(loginUser.getCompany().getCompanyId());
|
|
|
+ sendMsgLogBo.setCompanyUserId(loginUser.getCompany().getUserId());
|
|
|
+ validatePhone(phone);
|
|
|
+ SendResultDetailDTO sendResultDetailDTO = qwAcquisitionLinkInfoService.sendMessageLink(phone, id,sendMsgLogBo);
|
|
|
+ if (sendResultDetailDTO.isSuccess()){
|
|
|
+ return AjaxResult.success("发送成功");
|
|
|
+ }else {
|
|
|
+ return AjaxResult.error(sendResultDetailDTO.getFailReason());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("发送失败:" + e.getMessage());
|
|
|
+ return AjaxResult.error("网络异常,请稍后再试");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提取链接 - 根据手机号生成短链接文本
|
|
|
+ *
|
|
|
+ * @param params 包含 id, phone, url 的参数
|
|
|
+ * @return 生成的文本内容
|
|
|
+ */
|
|
|
+ @PostMapping("/extractLink")
|
|
|
+ public AjaxResult extractLink(@RequestBody Map<String, Object> params) {
|
|
|
+ try {
|
|
|
+ // 参数校验
|
|
|
+ Long qwAcquisitionAssistantId = null;
|
|
|
+ String phone = null;
|
|
|
+ String url = null;
|
|
|
+
|
|
|
+ if (params.get("id") != null) {
|
|
|
+ qwAcquisitionAssistantId = Long.valueOf(params.get("id").toString());
|
|
|
+ }
|
|
|
+ if (params.get("phone") != null) {
|
|
|
+ phone = params.get("phone").toString();
|
|
|
+ }
|
|
|
+ if (params.get("url") != null) {
|
|
|
+ url = params.get("url").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (qwAcquisitionAssistantId == null) {
|
|
|
+ return AjaxResult.error("获客链接ID不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(phone)) {
|
|
|
+ return AjaxResult.error("手机号码不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(url)) {
|
|
|
+ return AjaxResult.error("获客链接URL不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证手机号格式
|
|
|
+ if (!phone.matches("^1[3-9]\\d{9}$")) {
|
|
|
+ return AjaxResult.error("请输入正确的11位手机号码");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前登录用户信息
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ if (loginUser == null || loginUser.getCompany() == null) {
|
|
|
+ throw new CustomException("请登录");
|
|
|
+ }
|
|
|
+ // 调用服务层方法生成短链接文本
|
|
|
+ String resultText = qwAcquisitionLinkInfoService.extractLink(qwAcquisitionAssistantId, phone, url,loginUser.getCompany().getCompanyId());
|
|
|
+
|
|
|
+ return AjaxResult.success(resultText);
|
|
|
+
|
|
|
+ } catch (CustomException e) {
|
|
|
+ log.error("提取链接失败: {}", e.getMessage());
|
|
|
+ return AjaxResult.error(e.getMessage());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("提取链接异常", e);
|
|
|
+ return AjaxResult.error("服务器内部错误: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提取链接 -正常的获客
|
|
|
+ *
|
|
|
+ * @param params 包含 id, url 的参数
|
|
|
+ * @return 生成的文本内容
|
|
|
+ */
|
|
|
+ @PostMapping("/extractLinkNol")
|
|
|
+ public R extractLinkNol(@RequestBody Map<String, Object> params) {
|
|
|
+ try {
|
|
|
+ // 参数校验
|
|
|
+ Long qwAcquisitionAssistantId = null;
|
|
|
+ String phone = null;
|
|
|
+ String url = null;
|
|
|
+
|
|
|
+ if (params.get("id") != null) {
|
|
|
+ qwAcquisitionAssistantId = Long.valueOf(params.get("id").toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (params.get("url") != null) {
|
|
|
+ url = params.get("url").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (qwAcquisitionAssistantId == null) {
|
|
|
+ return R.error("获客链接ID不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(url)) {
|
|
|
+ return R.error("获客链接URL不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前登录用户信息
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ if (loginUser == null || loginUser.getCompany() == null) {
|
|
|
+ throw new CustomException("请登录");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用服务层方法生成短链接文本
|
|
|
+ return qwAcquisitionLinkInfoService.extractLinkNol(qwAcquisitionAssistantId, url,loginUser.getCompany().getCompanyId());
|
|
|
+
|
|
|
+ } catch (CustomException e) {
|
|
|
+ log.error("提取链接失败: {}", e.getMessage());
|
|
|
+ return R.error(e.getMessage());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("提取链接异常", e);
|
|
|
+ return R.error("服务器内部错误: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量生成多手机号短链
|
|
|
+ * */
|
|
|
+ @PostMapping("/batchCreateMessageLink")
|
|
|
+ public AjaxResult batchCreateMessageLink(@RequestParam("file") MultipartFile file,
|
|
|
+ @RequestParam("qwAcquisitionAssistantId") Long qwAcquisitionAssistantId,
|
|
|
+ @RequestParam("qwAcquisitionAssistantUrl") String qwAcquisitionAssistantUrl) {
|
|
|
+
|
|
|
+ // 获取当前登录用户信息
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ if (loginUser == null || loginUser.getCompany() == null) {
|
|
|
+ throw new CustomException("请登录");
|
|
|
+ }
|
|
|
+ // 1. 参数校验
|
|
|
+ if (file == null || file.isEmpty()) {
|
|
|
+ return AjaxResult.error("上传的文件不能为空");
|
|
|
+ }
|
|
|
+ if (qwAcquisitionAssistantId == null) {
|
|
|
+ return AjaxResult.error("获客链接ID不能为空");
|
|
|
+ }
|
|
|
+ if (qwAcquisitionAssistantUrl == null || qwAcquisitionAssistantUrl.trim().isEmpty()) {
|
|
|
+ return AjaxResult.error("获客链接URL不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 检查文件类型
|
|
|
+ String originalFilename = file.getOriginalFilename();
|
|
|
+ if (originalFilename == null || !originalFilename.toLowerCase().endsWith(".xls")) {
|
|
|
+ return AjaxResult.error("仅支持上传 .xls 格式的文件");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 3. 读取Excel文件并解析出电话号码列表
|
|
|
+ List<String> phoneList = readPhonesFromXls(file.getInputStream());
|
|
|
+ if (CollectionUtils.isEmpty(phoneList)) {
|
|
|
+ return AjaxResult.error("上传的Excel文件中未找到有效的电话号码数据");
|
|
|
+ }
|
|
|
+ if (phoneList.size()>500) {
|
|
|
+ return AjaxResult.error("单次上传的号码不能超过500个");
|
|
|
+ }
|
|
|
+ // 4. 构建DTO对象
|
|
|
+ BatchAddAcquisitionLinkDTO batchAddAcquisitionLinkDTO = new BatchAddAcquisitionLinkDTO();
|
|
|
+ batchAddAcquisitionLinkDTO.setQwAcquisitionAssistantId(qwAcquisitionAssistantId);
|
|
|
+ batchAddAcquisitionLinkDTO.setQwAcquisitionAssistantUrl(qwAcquisitionAssistantUrl);
|
|
|
+ batchAddAcquisitionLinkDTO.setPhoneList(phoneList);
|
|
|
+ batchAddAcquisitionLinkDTO.setCreateBy(loginUser.getCompany().getUserId());
|
|
|
+ batchAddAcquisitionLinkDTO.setCompanyId(loginUser.getCompany().getCompanyId());
|
|
|
+ // 5. 调用服务层方法处理
|
|
|
+ int count = qwAcquisitionLinkInfoService.batchCreateMessageLink(batchAddAcquisitionLinkDTO);
|
|
|
+
|
|
|
+ return AjaxResult.success("成功处理 " + count + " 条记录");
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传Excel并生成短链失败", e);
|
|
|
+ return AjaxResult.error("服务器内部错误: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * iPad获客链接加好友
|
|
|
+ *
|
|
|
+ * @param dto 请求参数
|
|
|
+ * @return 操作结果
|
|
|
+ */
|
|
|
+ @PostMapping("/ipadBlindAdd")
|
|
|
+ public AjaxResult ipadBlindAdd(@Valid @RequestBody IpadBlindAddDto dto) {
|
|
|
+ try {
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ if (loginUser == null || loginUser.getCompany() == null) {
|
|
|
+ throw new CustomException("请登录");
|
|
|
+ }
|
|
|
+ SendMsgLogBo sendMsgLogBo = new SendMsgLogBo();
|
|
|
+ sendMsgLogBo.setCompanyId(loginUser.getCompany().getCompanyId());
|
|
|
+ sendMsgLogBo.setCompanyUserId(loginUser.getCompany().getUserId());
|
|
|
+ validatePhone(dto.getPhone());
|
|
|
+ // 调用业务逻辑
|
|
|
+ qwAcquisitionLinkInfoService.ipadBlindAdd(dto, sendMsgLogBo);
|
|
|
+ return AjaxResult.success("添加成功");
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("iPad盲加失败", e);
|
|
|
+ return AjaxResult.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验电话
|
|
|
+ */
|
|
|
+ private void validatePhone(String phone) {
|
|
|
+ if (StringUtils.isEmpty(phone)) {
|
|
|
+ throw new CustomException("发送短信的电话号码不能为空", 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 支持手机号或固话
|
|
|
+ if (!phone.matches("^1[3-9]\\d{9}$") && !phone.matches("^\\d{3,4}-?\\d{7,8}$")) {
|
|
|
+ throw new CustomException("电话号码格式不正确,请输入正确的手机号或固定电话", 400);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 从.xls文件流中读取电话号码列表
|
|
|
+ * 假设第一行为表头,第一列开始为电话号码
|
|
|
+ * @param inputStream 文件输入流
|
|
|
+ * @return 电话号码列表
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public static List<String> readPhonesFromXls(InputStream inputStream) throws IOException {
|
|
|
+ List<String> phoneList = new ArrayList<>();
|
|
|
+ HSSFWorkbook workbook = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ workbook = new HSSFWorkbook(inputStream);
|
|
|
+ HSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
|
|
|
+
|
|
|
+ int lastRowNum = sheet.getLastRowNum();
|
|
|
+
|
|
|
+ // 从第二行开始遍历 (i=1),第一行是表头
|
|
|
+ for (int i = 1; i <= lastRowNum; i++) {
|
|
|
+ HSSFRow row = sheet.getRow(i);
|
|
|
+ if (row != null) {
|
|
|
+ // 修改:获取第一列 (index=0) 的单元格
|
|
|
+ HSSFCell cell = row.getCell(0);
|
|
|
+ if (cell != null) {
|
|
|
+ // 获取单元格内容并转为字符串
|
|
|
+ String phoneValue = getCellValueAsString(cell);
|
|
|
+ if (phoneValue != null && !phoneValue.trim().isEmpty()) {
|
|
|
+ // 进行格式校验
|
|
|
+ if (PHONE_PATTERN.matcher(phoneValue.trim()).matches()) {
|
|
|
+ phoneList.add(phoneValue.trim());
|
|
|
+ } else {
|
|
|
+ log.warn("发现格式不正确的电话号码,已跳过: {}", phoneValue.trim());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ if (workbook != null) {
|
|
|
+ try {
|
|
|
+ workbook.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("关闭Excel工作簿时发生错误", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return phoneList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将HSSFCell的值转为String
|
|
|
+ * @param cell 单元格
|
|
|
+ * @return 单元格的字符串值
|
|
|
+ */
|
|
|
+ private static String getCellValueAsString(HSSFCell cell) {
|
|
|
+ if (cell == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ switch (cell.getCellType()) {
|
|
|
+ case STRING:
|
|
|
+ return cell.getStringCellValue();
|
|
|
+ case NUMERIC:
|
|
|
+ // 如果是数字,通常电话号码是字符串,这里转为长整型再转为字符串,避免科学计数法
|
|
|
+ if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
|
|
|
+ return String.valueOf(cell.getDateCellValue());
|
|
|
+ } else {
|
|
|
+ Double numericValue = cell.getNumericCellValue();
|
|
|
+ // 尝试转为Long,适用于大部分电话号码
|
|
|
+ return String.valueOf(numericValue.longValue());
|
|
|
+ }
|
|
|
+ case BOOLEAN:
|
|
|
+ return String.valueOf(cell.getBooleanCellValue());
|
|
|
+ case FORMULA:
|
|
|
+ return cell.getCellFormula();
|
|
|
+ case BLANK:
|
|
|
+ return "";
|
|
|
+ case ERROR:
|
|
|
+ return "ERROR";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|