Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

recovery
zhizhi wu 4 years ago
parent
commit
aab38e9e69
  1. 5
      signin/src/main/java/com/ccsens/signin/api/UserController.java
  2. 2
      signin/src/main/java/com/ccsens/signin/bean/dto/UserDto.java
  3. 3
      signin/src/main/java/com/ccsens/signin/service/UserService.java
  4. 3
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  5. 9
      tall/src/main/java/com/ccsens/tall/bean/vo/DeliverVo.java
  6. 8
      tall/src/main/java/com/ccsens/tall/bean/vo/InputDocVo.java
  7. 4
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  8. 21
      tall/src/main/java/com/ccsens/tall/persist/dao/ProTaskInputDocDao.java
  9. 7
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java
  10. 16
      tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
  11. 27
      tall/src/main/java/com/ccsens/tall/service/InputDocService.java
  12. 12
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  13. 38
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  14. 2
      tall/src/main/java/com/ccsens/tall/service/UserService.java
  15. 5
      tall/src/main/java/com/ccsens/tall/web/LwbsController.java
  16. 10
      tall/src/main/resources/mapper_dao/DeliverDao.xml
  17. 15
      tall/src/main/resources/mapper_dao/ProTaskInputDocDao.xml
  18. 6
      util/src/main/java/com/ccsens/util/CodeEnum.java
  19. 2
      util/src/main/java/com/ccsens/util/PoiUtil.java

5
signin/src/main/java/com/ccsens/signin/api/UserController.java

@ -12,6 +12,7 @@ import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.JwtUtil;
import com.ccsens.util.WebConstant;
import com.ccsens.util.exception.BaseException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.SignatureException;
@ -76,8 +77,8 @@ public class UserController {
case Email:
case Account: {
if (StrUtil.isEmpty(credential)) {
String msg = "credential is required when type is %1$d(%2$s)";
throw new UserLoginException(-2, String.format(msg, identify_type.value, identify_type.phase));
String msg = "请输入%1$";
throw new UserLoginException(-2, String.format(msg,identify_type.phase));
}
break;
}

2
signin/src/main/java/com/ccsens/signin/bean/dto/UserDto.java

@ -29,7 +29,7 @@ public class UserDto {
@ApiModelProperty("登录客户端:0-wxmp,1-H5,2-Android,3-IOS,4-WxEnterprise")
@NotNull(message = "client is required.")
private Integer client;
@ApiModelProperty("登录类型:0-wxmp,1-phone,2-email,3-accounts,4-OAUTH2_Wx,5-Wx_H5,6-OAUTH2_WeiBo, 7-Wx_Enterprise")
@ApiModelProperty("登录类型:0-wxmp(小程序),1-phone(手机),2-email(邮箱),3-accounts(账号),4-OAUTH2_Wx(公众号),5-Wx_H5(网页微信),6-OAUTH2_WeiBo, 7-Wx_Enterprise(企业微信)")
@NotNull(message = "type is required.")
private Integer type;
@ApiModelProperty("登录信息")

3
signin/src/main/java/com/ccsens/signin/service/UserService.java

@ -368,7 +368,7 @@ public class UserService implements IUserService {
throw new BaseException(CodeEnum.PASSWORD_ERROR);
}
} else {
throw new BaseException(CodeEnum.NOT_ACCOUNT);
throw new BaseException(CodeEnum.PASSWORD_ERROR);
}
long end = System.currentTimeMillis();
log.info("查询并验证账号用时:{}",end - start);
@ -1170,6 +1170,7 @@ public class UserService implements IUserService {
}
long end1 = System.currentTimeMillis();
log.info("查询用户信息用了:{}",end1 - start);
//获取token
UserVo.TokenBean tokenBean1 = generateToken(clientType, userSignVo.getUserId(), theMap);
tokenBean.setToken(tokenBean1.getToken());
tokenBean.setRefresh_token(tokenBean1.getRefresh_token());

3
tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java

@ -191,6 +191,7 @@ public class TaskDto {
@Data
@ApiModel("修改任务详细信息")
public static class UpdateTaskInfo{
@NotNull
@ApiModelProperty("任务id")
private Long id;
@ApiModelProperty("任务名")
@ -223,6 +224,8 @@ public class TaskDto {
private List<Long> plugins;
@ApiModelProperty("任务提醒信息")
private List<TaskRemind> taskRemindList;
@ApiModelProperty("父任务id")
private Long parentId;
}
@Data
@ApiModel("修改任务时修改交付物名称")

9
tall/src/main/java/com/ccsens/tall/bean/vo/DeliverVo.java

@ -189,4 +189,13 @@ public class DeliverVo {
private List<FileVo.FilePosition> fileList = new ArrayList<>();
}
@ApiModel
@Data
public static class OutputDocInfo{
@ApiModelProperty("输出文档id")
private Long id;
@ApiModelProperty("输出文档名称")
private String name;
}
}

8
tall/src/main/java/com/ccsens/tall/bean/vo/InputDocVo.java

@ -117,5 +117,13 @@ public class InputDocVo {
private String fileIds;
}
@Data
@ApiModel
public static class InputDocInfo{
@ApiModelProperty("输入文档id")
private Long id;
@ApiModelProperty("输入文档名称")
private String name;
}
}

4
tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java

@ -157,6 +157,10 @@ public class TaskVo {
private Byte priority;
@ApiModelProperty("是否是里程碑 0否 1里程碑 2普通任务 3关键任务")
private String milestone;
@ApiModelProperty("输入文档的信息")
private List<InputDocVo.InputDocInfo> inputDoc;
@ApiModelProperty("输出文档的信息")
private List<DeliverVo.OutputDocInfo> outputDoc;
@ApiModelProperty("提醒的信息")
private List<RemindInfo> remindInfoList;
public Long getDuration(){

21
tall/src/main/java/com/ccsens/tall/persist/dao/ProTaskInputDocDao.java

@ -0,0 +1,21 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author mz
*/
@Repository
public interface ProTaskInputDocDao extends ProTaskInputDocMapper {
/**
* 根据任务详情id查询输入文档
* @param taskId
* @return 输入文档
*/
List<InputDocVo.InputDocInfo> selectDocByTaskId(Long taskId);
}

7
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java

@ -33,4 +33,11 @@ public interface TaskDeliverDao extends ProTaskDeliverMapper{
* @return 返回交付物详情
*/
List<DeliverVo.QueryDeliverByTaskId> queryDeliverByTaskId(@Param("userId")Long userId, @Param("subTimeId")Long subTimeId, @Param("taskDetailId")Long taskDetailId);
/**
* 根据任务详情id查询输出文档的列表
* @param taskId
* @return
*/
List<DeliverVo.OutputDocInfo> selectOutputDocByTaskId(Long taskId);
}

16
tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java

@ -735,14 +735,14 @@ public class ExportWbsService implements IExportWbsService{
int index = 1;
for(WbsVo.ChecklistByProjectId checklist : checklists){
//获取任务的完成状态和完成时间
Long subTimeId = taskDeliverService.isTaskOrSubTime(checklist.getTaskId());
if(ObjectUtil.isNotNull(subTimeId)) {
ProSubTimeMember subTimeMember = taskDetailService.getProcessByUserIdAndTask(userId, subTimeId);
if (ObjectUtil.isNotNull(subTimeMember)) {
checklist.setCompleteTime(subTimeMember.getRealFinishTime());
checklist.setProcess(WebConstant.EVENT_PROCESS.valueOf(subTimeMember.getComplatedStatus()).phase);
}
}
// Long subTimeId = taskDeliverService.isTaskOrSubTime(checklist.getTaskId());
// if(ObjectUtil.isNotNull(subTimeId)) {
// ProSubTimeMember subTimeMember = taskDetailService.getProcessByUserIdAndTask(userId, subTimeId);
// if (ObjectUtil.isNotNull(subTimeMember)) {
// checklist.setCompleteTime(subTimeMember.getRealFinishTime());
// checklist.setProcess(WebConstant.EVENT_PROCESS.valueOf(subTimeMember.getComplatedStatus()).phase);
// }
// }
List<PoiUtil.PoiUtilCell> checkList = new ArrayList<>();
checkList.add(new PoiUtil.PoiUtilCell(String.valueOf(index)));
checkList.add(new PoiUtil.PoiUtilCell(checklist.getTaskName()));

27
tall/src/main/java/com/ccsens/tall/service/InputDocService.java

@ -67,6 +67,8 @@ public class InputDocService implements IInputDocService {
private ProDeliverHistoryRecordDao deliverHistoryRecordDao;
@Resource
private IProMemberService iProMemberService;
@Resource
private ProPluginConfigDao pluginConfigDao;
@ -101,11 +103,23 @@ public class InputDocService implements IInputDocService {
return selByUserIdToComProjectVos;
}
public TaskVo.ProTaskInfo queryLwbs(LwbsDto.SelByProjectIdToTaskDto param, Long userId) {
if(ObjectUtil.isNotNull(param.getId())){
//如果项目id为空。则查询所有
}else {
//项目id不为空。查询单个项目
}
return null;
}
@Override
public TaskVo.ProTaskInfo selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId) {
TaskVo.ProTaskInfo taskInfo=new TaskVo.ProTaskInfo();
//普通的任务和全局的
List<TaskVo.NormalTask> normalTaskList1= iInputDocDao.selectByCompany(param,userId);
//给二级任务下添加子任务
//遍历项目
if(param.getId()!=null){
@ -164,6 +178,19 @@ public class InputDocService implements IInputDocService {
}
taskInfo.setGlobalTaskList(globalTaskList);
taskInfo.setNormalTaskList(normalTaskList);
for (TaskVo.NormalTask normalTask : taskInfo.getNormalTaskList()) {
if (null != normalTask.getDetailId()){
ProPluginConfigExample configExample = new ProPluginConfigExample();
configExample.createCriteria().andTaskIdEqualTo(normalTask.getDetailId()).andPlaceLocationEqualTo((byte) 0);
List<ProPluginConfig> proPluginConfigs = pluginConfigDao.selectByExample(configExample);
if (CollectionUtil.isNotEmpty(proPluginConfigs)){
ProPluginConfig config = proPluginConfigs.get(0);
normalTask.setImportParam(config.getImportParam());
normalTask.setRoutineLocation(config.getRoutineLocation());
normalTask.setWebPath(config.getWebPath());
}
}
}
return taskInfo;
}

12
tall/src/main/java/com/ccsens/tall/service/ProRoleService.java

@ -432,11 +432,13 @@ public class ProRoleService implements IProRoleService {
@Override
public ProRole getAllMember(Long projectId) {
ProRole role = null;
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId).andNameEqualTo(WebConstant.ROLE_NAME.AllMember.phase);
List<ProRole> roleList = proRoleDao.selectByExample(roleExample);
if (CollectionUtil.isNotEmpty(roleList)) {
role = roleList.get(0);
if(ObjectUtil.isNotNull(projectId)) {
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId).andNameEqualTo(WebConstant.ROLE_NAME.AllMember.phase);
List<ProRole> roleList = proRoleDao.selectByExample(roleExample);
if (CollectionUtil.isNotEmpty(roleList)) {
role = roleList.get(0);
}
}
return role;
}

38
tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java

@ -10,10 +10,7 @@ import com.ccsens.cloudutil.feign.MtFeignClient;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.MemberVo;
import com.ccsens.tall.bean.vo.PluginVo;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.bean.vo.*;
import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.persist.dao.ProTaskShowDao;
import com.ccsens.tall.persist.mapper.ProPluginConfigMapper;
@ -95,7 +92,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
@Resource
private ProTaskDeliverMapper proTaskDeliverMapper;
@Resource
private ProTaskInputDocMapper proTaskInputDocMapper;
private ProTaskInputDocDao proTaskInputDocDao;
@Override
public void saveTaskDetail(ProTaskDetail taskDetail) {
@ -204,7 +201,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
normalTask.setDetailId(firstTaskDetail.getId());
normalTask.setId(taskDeliverService.isTaskOrSubTime(firstTaskDetail.getId()));
normalTask.setSequence(sequence);
// 查询任务对应的配置
// 查询任务对应的配置
ProPluginConfigExample configExample = new ProPluginConfigExample();
configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte) 0);
List<ProPluginConfig> proPluginConfigs = pluginConfigDao.selectByExample(configExample);
@ -788,6 +785,16 @@ public class ProTaskDetailService implements IProTaskDetailService {
taskDetail.getSecondTasks().addAll(groupTaskList);
}
}
//查询此任务下的输入文档
List<InputDocVo.InputDocInfo> inputDocInfos = proTaskInputDocDao.selectDocByTaskId(taskDetail.getDetailId());
if (CollectionUtil.isNotEmpty(inputDocInfos)){
taskDetail.setInputDoc(inputDocInfos);
}
//查询此任务下的输出文档
List<DeliverVo.OutputDocInfo> outputDocInfos = taskDeliverDao.selectOutputDocByTaskId(taskDetail.getDetailId());
if (CollectionUtil.isNotEmpty(outputDocInfos)){
taskDetail.setOutputDoc(outputDocInfos);
}
return taskDetail;
}
@ -1215,8 +1222,6 @@ public class ProTaskDetailService implements IProTaskDetailService {
if (ObjectUtil.isNull(taskDetail)) {
throw new BaseException(CodeEnum.NOT_TASK);
}
// //本用户在项目中的角色
// List<ProRole> proRoles = proRoleService.getProRoleByProjectIdAndUserId(taskDetail.getProjectId(), currentUserId);
//用户在项目中的最高权限
int power = proRoleService.selectPowerByRoleName(currentUserId, taskDetail.getProjectId());
if (power > 1) {
@ -1224,8 +1229,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
//修改任务删除状态
taskDetail.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
taskDetailDao.updateByPrimaryKeySelective(taskDetail);
// //彻底删除任务
// deleteTaskByTaskId(taskDetail.getId());
//TODO 删除任务下的子任务
}
} else {
throw new BaseException(CodeEnum.NOT_POWER);
@ -1342,6 +1346,10 @@ public class ProTaskDetailService implements IProTaskDetailService {
if (ObjectUtil.isNotNull(updateTaskInfo.getMilestone())) {
taskDetail.setMilestone(updateTaskInfo.getMilestone());
}
//父任务id
if(null != updateTaskInfo.getParentId()){
taskDetail.setParentId(updateTaskInfo.getParentId());
}
//时间
if (ObjectUtil.isNotNull(updateTaskInfo.getBeginTime()) ||
ObjectUtil.isNotNull(updateTaskInfo.getEndTime()) ||
@ -1419,10 +1427,10 @@ public class ProTaskDetailService implements IProTaskDetailService {
updateTaskInfo.getInputList().forEach(taskDeliver -> {
if (StrUtil.isNotEmpty(taskDeliver.getDeliverName())) {
if (ObjectUtil.isNotNull(taskDeliver.getDeliverId())) {
ProTaskInputDoc deliver = proTaskInputDocMapper.selectByPrimaryKey(taskDeliver.getDeliverId());
ProTaskInputDoc deliver = proTaskInputDocDao.selectByPrimaryKey(taskDeliver.getDeliverId());
if (ObjectUtil.isNotNull(deliver)) {
deliver.setName(taskDeliver.getDeliverName());
proTaskInputDocMapper.updateByPrimaryKeySelective(deliver);
proTaskInputDocDao.updateByPrimaryKeySelective(deliver);
}
} else {
ProTaskInputDoc deliver = new ProTaskInputDoc();
@ -1430,7 +1438,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
deliver.setTaskDetailId(taskDetail.getId());
deliver.setName(taskDeliver.getDeliverName());
deliver.setIsUpload(0);
proTaskInputDocMapper.insertSelective(deliver);
proTaskInputDocDao.insertSelective(deliver);
}
}
});
@ -1701,12 +1709,12 @@ public class ProTaskDetailService implements IProTaskDetailService {
proTaskDeliver.setId(jiaoFuWu.getId());
proTaskDeliver.setName(jiaoFuWu.getNames());
proTaskDeliverExample.createCriteria().andIdEqualTo(jiaoFuWu.getId()).andRecStatusEqualTo((byte) 0);
proTaskInputDocMapper.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample);
proTaskInputDocDao.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample);
}else if(jiaoFuWu.getId()==null && StringUtils.isNotBlank(jiaoFuWu.getNames())) {
//新增
proTaskDeliver.setId(snowflake.nextId());
proTaskDeliver.setName(jiaoFuWu.getNames());
proTaskInputDocMapper.insertSelective(proTaskDeliver);
proTaskInputDocDao.insertSelective(proTaskDeliver);
}
}
}

2
tall/src/main/java/com/ccsens/tall/service/UserService.java

@ -366,7 +366,7 @@ public class UserService implements IUserService {
throw new BaseException(CodeEnum.PASSWORD_ERROR);
}
} else {
throw new BaseException(CodeEnum.NOT_ACCOUNT);
throw new BaseException(CodeEnum.PASSWORD_ERROR);
}
long end = System.currentTimeMillis();
log.info("查询并验证账号用时:{}",end - start);

5
tall/src/main/java/com/ccsens/tall/web/LwbsController.java

@ -31,7 +31,7 @@ public class LwbsController {
private IInputDocService iInputDocService;
@MustLoginTall
@ApiOperation(value = "查询人下参加的所有的项目", notes = "1007:输出")
@ApiOperation(value = "查询当前用户参加的所有的项目", notes = "1007:输出")
@RequestMapping(value = "/selByUserIdToComProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<LwbsVo.SelByUserIdToComProjectVo>> selByUserIdToComProject(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByUserIdToComProject> params) {
log.info("输出某人下的所有的项目:{}",params);
@ -40,7 +40,7 @@ public class LwbsController {
return JsonResponse.newInstance().ok(selBylwbs);
}
@MustLoginTall
@ApiOperation(value = "查询某人下参加的项目的所有的任务", notes = "1007:输出")
@ApiOperation(value = "查询当前用户参加的项目的所有的任务", notes = "1007:输出")
@RequestMapping(value = "/selByProjectIdToTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.ProTaskInfo> selByProjectIdToTask(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByProjectIdToTaskDto> params) {
log.info("查询某人下参加的项目的所有的任务:{}",params);
@ -48,6 +48,7 @@ public class LwbsController {
log.info("查询某人下参加的项目的所有的任务");
return JsonResponse.newInstance().ok(selBylwbs);
}
@MustLoginTall
@ApiOperation(value = "test", notes = "1007:输出")
@RequestMapping(value = "/test", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})

10
tall/src/main/resources/mapper_dao/DeliverDao.xml

@ -290,4 +290,14 @@
d.task_detail_id = #{taskDetailId}
and d.rec_status = 0
</select>
<select id="selectOutputDocByTaskId" resultType="com.ccsens.tall.bean.vo.DeliverVo$OutputDocInfo">
SELECT
ptd.id,
ptd.`name`
FROM
t_pro_task_deliver AS ptd
WHERE
ptd.task_detail_id = #{taskId}
</select>
</mapper>

15
tall/src/main/resources/mapper_dao/ProTaskInputDocDao.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.tall.persist.dao.ProTaskInputDocDao">
<select id="selectDocByTaskId" resultType="com.ccsens.tall.bean.vo.InputDocVo$InputDocInfo">
SELECT
tid.id,
tid.`name`
FROM
t_pro_task_input_doc AS tid
WHERE
tid.task_detail_id = #{taskId}
</select>
</mapper>

6
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -28,7 +28,7 @@ public enum CodeEnum {
WSB_NOT_TASK_HEADER(14,"没有项目任务分解的表头",true),
WBS_PROJECT_TIME_ERROR(15,"时间格式异常",true),
WBS_NOT_PROJECT_TIME(16,"项目时间不能为空",true),
WBS_NOT_PROJECT_NAME(17,"找不到项目信息",true),
WBS_NOT_PROJECT_NAME(17,"项目名称不能为空",true),
WBS_NOT_MEMBER_SHEET(18,"未找到项目成员表",true),
WBS_NOT_PHONE(19,"手机号为空",true),
WBS_STAKEHOLDER_PHONE(20,"奖惩干系人和手机号不匹配",true),
@ -57,7 +57,7 @@ public enum CodeEnum {
SUB_TASK_IS_NOT_FINISH(43,"分组内任务未全部完成,无法完成任务",true),
IS_NOT_CHECKER(44,"您不是该交付物的检查人",true),
NOT_POWER(45,"对不起,您的权限不足,无法进行此操作",true),
SMS_CODE_CORRECT(46,"验证信息错误",true),
SMS_CODE_CORRECT(46,"验证错误",true),
QUESTION_RULE_NOT_FOUND(47,"该评测规则未知,请联系开发人员。", true),
REPORT_DOCTOR_ERROR(48, "对不起,您没有修改报告单结果的权限。", true),
@ -124,7 +124,7 @@ public enum CodeEnum {
NICKNAME_REPEAT(102,"该名字已经存在,请换一个再试",true),
NEW_PASSWORD_REPEAT_OLD(103,"新密码不能和旧密码相同",true),
PASSWORD_ERROR(104,"密码错误",true),
PASSWORD_ERROR(104,"用户名或密码错误",true),
NOT_ACCOUNT(105,"未找到该账号",true),
FILE_NOT_FOUND(106,"未找到对应的文件,请检查后操作",true),

2
util/src/main/java/com/ccsens/util/PoiUtil.java

@ -184,7 +184,7 @@ public class PoiUtil {
// newCell.setCellValue(cell.value);
// }
if(ObjectUtil.isNull(cell.value)) {
log.info("单元格内容为空:{}", cell.value);
// log.info("单元格内容为空:{}", cell.value);
}else {
if (cell.value.length() <= 14 && cell.value.matches("\\d+")) {
newCell.setCellValue(Long.parseLong(cell.value));

Loading…
Cancel
Save