diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index 257dd299..4cf92a77 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -22,6 +22,7 @@ import com.lz.modules.app.service.DepartmentsService; import com.lz.modules.app.service.DepartmentsStaffRelateService; import com.lz.modules.app.service.StaffOccupationService; import com.lz.modules.app.service.StaffService; +import com.lz.modules.flow.dao.FlowRecordMapper; import com.lz.modules.flow.entity.*; import com.lz.modules.flow.model.*; import com.lz.modules.flow.req.ResultDetailReq; @@ -30,6 +31,7 @@ import com.lz.modules.job.business.DingtalkBusiness; import com.lz.modules.performance.dto.ResultTaskDto; import com.lz.modules.performance.dto.StaffTypeDto; +import com.lz.modules.performance.dto.TaskListDto; import com.lz.modules.performance.req.ResultUpdateTaskReq; import com.lz.modules.performance.entity.ResultTask; @@ -141,11 +143,16 @@ public class ResultRecordController extends AbstractController { @Autowired private FlowStartService flowStartService; - @Autowired - private ResultTaskService resultTaskService; + @Autowired private StaffOccupationService staffOccupationService; + @Autowired + private FlowRecordMapper flowRecordMapper; + + @Autowired + private ResultTaskService resultTaskService; + private final static String TYPE = "H5_URL"; @@ -821,277 +828,28 @@ public class ResultRecordController extends AbstractController { @ApiOperation("保存绩效详情-吴林") public R saveDetail(@RequestBody @ApiParam ResultRecordDetailDto dto) { Long userId = getUserId(); + R r = resultRecordService.saveDetail(userId, dto); //ResultRecord resultRecord = new ResultRecord(); - ResultRecord resultRecord = resultRecordService.selectResultRecordById(dto.getId()); - - resultRecord.setAllScore(resultRecord.getLastScore()); - List inserts = new ArrayList<>(); - List updates = new ArrayList<>(); - - List insertScores = new ArrayList<>(); - List updateScores = new ArrayList<>(); - - List resultDetails = resultDetailService.selectByRecordId(dto.getId()); - Map mapDetails = - resultDetails.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); - - List updateResultDetails = new ArrayList<>(); - List editResultDetails = new ArrayList<>();//涉及到修改的指标保存,方便后面生成修改记录 - - //获取当前绩效的节点 - boolean isSetKeyResult = false; - List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(dto.getId(), 2); - if(flowRecords.size() > 0){ - if(flowRecords.get(0).getFlowProcess().intValue() < 1){ - log.info("制定目标中"); - isSetKeyResult = true; - } - } - - - for (ResultRecortModelDto model:dto.getRecortModelDtos() - ) { - int index = 0; - BigDecimal weight = BigDecimal.ZERO; - /*if(model.getMaxCount() != null && model.getDetailDtos().size() > model.getMaxCount().intValue()){ - return R.error(model.getName() + "维度指标数量不能超过" + model.getMaxCount()); - }*/ - - for (ResultDetailDto detailDto:model.getDetailDtos() - ) {//排序 - ResultDetail resultDetail = new ResultDetail(); - BeanUtils.copyProperties(detailDto, resultDetail); - if(!isSetKeyResult){ - if(resultDetail.getIsDelete() != null && resultDetail.getIsDelete().intValue() == 1){//被删除了 - log.info("指标被删除了"); - resultDetail.setIsBack(2); - resultDetail.setBackId(resultDetail.getId()); - updateResultDetails.add(resultDetail); - editResultDetails.add(resultDetail); - }else if(resultDetail.getId() == null){ - resultDetail.setIsBack(3);//新增 - editResultDetails.add(resultDetail);//插入数据库之后会生成id - log.info("新增指标"); - }else { - if(resultDetail.getId() != null && mapDetails.containsKey(resultDetail.getId())){ - //这里判断是否有更新,或者删除 - boolean isUp = false; - ResultDetail resultDetail1 = null; - resultDetail1 = mapDetails.get(resultDetail.getId()); - - - if(!resultDetail.getTarget().equals(resultDetail1.getTarget())){ - //打上标识 - log.info("修改名称"); - isUp = true; - } - if(!resultDetail.getKeyResult().equals(resultDetail1.getKeyResult())){ - //打上标识 - log.info("修改关键结果"); - isUp = true; - } - - if(!resultDetail.getCheckWeight().equals(resultDetail1.getCheckWeight())){ - //打上标识 - log.info("修改权重"); - isUp = true; - } - if(isUp){ - resultDetail1.setId(null); - resultDetail1.setIsBack(2); - resultDetail1.setBackId(resultDetail.getId()); - inserts.add(resultDetail1); - editResultDetails.add(resultDetail1);//插入数据库之后会生成id - } - } - } - } - - - resultDetail.setPriority(index); - - index++; - if(resultDetail.getId() != null){ - updates.add(resultDetail); - - - }else{ - resultDetail.setStaffId(resultRecord.getStaffId()); - resultDetail.setRecordId(resultRecord.getId()); - resultDetail.setType(model.getType()); - resultDetail.setModelId(model.getId()); - resultDetailService.insertResultDetail(resultDetail); - - //inserts.add(resultDetail); - } - if(resultDetail.getIsDelete() != null && resultDetail.getIsDelete().intValue() == 1){ - //删除任务 - resultTaskService.deleteResultTasksByDetailId(resultDetail.getId()); - }else{ - //更新任务 - if(getUserId().longValue() == resultRecord.getStaffId().longValue() && - detailDto.getTaskDtos() != null && detailDto.getTaskDtos().size() > 0){//本人编辑任务才允许提交 - log.info("任务个数{}", detailDto.getTaskDtos().size()); - int orderBy = 0; - for (ResultTaskDto taskDto:detailDto.getTaskDtos() - ) { - if(taskDto.getId() != null && taskDto.getIsDelete() != null && taskDto.getIsDelete().intValue() == 1){ - //删除 - resultTaskService.deleteTask(taskDto.getId(),userId); - }else{ - ResultUpdateTaskReq taskReq = new ResultUpdateTaskReq(); - taskReq.setDetailId(resultDetail.getId()); - taskReq.setTaskId(taskDto.getId()); - taskReq.setName(taskDto.getName()); - taskReq.setOrderBy(orderBy); - taskReq.setProcessRate(BigDecimal.valueOf(taskDto.getProcessRate())); - R r = resultTaskService.saveOrUpdateResultTask(taskReq,userId); - if((int)r.get("code") != 200){ - throw new RRException((String)r.get("msg")); - } - orderBy++; - } - - } - - } - // } - //if(resultDetail.getIsDelete() == null || resultDetail.getIsDelete().intValue() == 0){ - BigDecimal score = BigDecimal.ZERO; - if(detailDto.getScoreDtos() != null){ - for (ResultScoreDto scoreDto:detailDto.getScoreDtos() - ) { - //计算得分 - ResultScore resultScore = new ResultScore(); - BeanUtils.copyProperties(scoreDto, resultScore); - if(scoreDto.getAcquireScore() != null){ - score = score.add(scoreDto.getAcquireScore().multiply(scoreDto.getWeight())); - } - if(resultScore.getId() == null){ - insertScores.add(resultScore); - }else{ - updateScores.add(resultScore); - } - resultScore.setDetailId(detailDto.getId()); - } - resultDetail.setAcquireScore(score); - weight = weight.add(resultDetail.getCheckWeight()); + if((int)r.get("code") == 200){ + //这里查询是否有下一条待办实现 + Long nextRecordId = null; + int freeTime = 3; + List taskListDtos = flowRecordMapper.selectTodoTasksByApprovalStaffId(userId, null); + if (taskListDtos.size() > 0) { + for (TaskListDto task:taskListDtos + ) { + if(task.getRecordId().longValue() != dto.getId().longValue()){ + nextRecordId = task.getRecordId(); + break; } } } + return r.put("recordId", nextRecordId)//跳转下一个要处理的绩效 + .put("time", freeTime);//多少秒之后跳转 } - //下面更新指标记录 - if(inserts.size() > 0){ - resultDetailService.saveBatch(inserts); - } - if(updates.size() > 0){ - resultDetailService.updateBatchById(updates); - } + return r; - //下面更新评分记录 - if(insertScores.size() > 0){ - resultScoreService.saveBatch(insertScores); - } - if(updateScores.size() > 0){ - resultScoreService.updateBatchById(updateScores); - } - - resultRecordService.updateResultRecordById(resultRecord); - String commentId = null; - if(dto.getSave() == null){//非暂存 - //修改评论信息 - log.info("修改了多少个指标{}", editResultDetails.size()); - editResultDetails.addAll(resultDetailService.selectNotNoticeResultDetailByRecordId(dto.getId())) ; - log.info("可能需要写入评论的内容条数{}", editResultDetails.size()); - //去重 - mapDetails = editResultDetails.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); - editResultDetails = mapDetails.values().stream().collect(Collectors.toList()); - if(!isSetKeyResult){ - log.info("实际需要写入评论的内容条数{}", editResultDetails.size()); - if(editResultDetails.size() > 0){ - updates.addAll(inserts); - - mapDetails = updates.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); - - String commandValue = ""; - int commandIndex = 1; - for (ResultDetail resultDetail1:editResultDetails - ) { - log.info("修改的对象为{}", resultDetail1); - if(resultDetail1.getIsDelete() != null && resultDetail1.getIsDelete().intValue() == 1){ - commandValue += (commandIndex + ":(删除) 指标" + resultDetail1.getTarget() + "\n"); - commandIndex++; - resultDetail1.setIsBack(1); - }else if(resultDetail1.getIsBack().intValue() == 3){ - commandValue += (commandIndex + ":(新增) 指标" + resultDetail1.getTarget() + "\n"); - commandIndex++; - resultDetail1.setIsBack(0); - }else{ - - ResultDetail resultDetail = mapDetails.get(resultDetail1.getBackId()); - if(resultDetail != null){ - log.info("修改后的对象为{}", resultDetail1); - boolean isUp = false; - String value = ""; - String heard = ""; - if(!resultDetail.getTarget().equals(resultDetail1.getTarget())){ - //打上标识 - value += ("(修改) 名称:" + - resultDetail1.getTarget()+ " \n(为):\n" + resultDetail.getTarget() + "\n"); - isUp = true; - - }else{ - heard = "指标:" + resultDetail1.getTarget() + "\n"; - } - if(!resultDetail.getKeyResult().equals(resultDetail1.getKeyResult())){ - //打上标识 - value += ("(修改) 考核标准:" + - resultDetail1.getKeyResult() + "\n(为):\n" + resultDetail.getKeyResult() + "\n"); - isUp = true; - } - if(!resultDetail.getCheckWeight().equals(resultDetail1.getCheckWeight())){ - //打上标识 - value += ("(修改) 权重:" + - resultDetail1.getCheckWeight().multiply(new BigDecimal(100)).intValue() + "%\n(为):\n" - + resultDetail.getCheckWeight().multiply(new BigDecimal(100)).intValue() + - "%\n"); - isUp = true; - } - if(isUp){ - commandValue += (commandIndex + ":" + heard + value); - commandIndex++; - resultDetail1.setIsBack(1); - } - } - - } - } - if(commandValue.length() > 0){ - log.info("需要写入评论,具体呢容为{}", commandValue); - ResultComment resultComment = new ResultComment();//resultCommentService.selectResultCommentById(dto.getCommentId()); - log.info("resultComment的值{}", resultComment); - resultComment.setOptDesc("修改了目标"); - resultComment.setComment(commandValue); - - resultCommentService.insertResultComment(resultComment);//.updateResultCommentCommentById(dto.getCommentId(), commandValue); - commentId = resultComment.getId().toString(); - } - } - }else{ - for (ResultDetail resultDetail1:editResultDetails - ) { - if(resultDetail1.getIsBack().intValue() == 3){ - resultDetail1.setIsBack(0); - }else{ - resultDetail1.setIsBack(1); - } - } - } - resultDetailService.updateBatchById(editResultDetails); - } - - return R.ok().put("commentId", commentId); } /** diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index 01b041f0..dcaea363 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -14,6 +14,7 @@ import com.lz.modules.app.resp.OwnResultResp; import com.lz.modules.app.utils.t.TwoTuple; import com.lz.modules.flow.entity.Flow; import com.lz.modules.flow.entity.FlowApprovalRole; +import com.lz.modules.flow.model.ResultRecordDetailDto; import com.lz.modules.flow.model.StaffRoleDto; import com.lz.modules.performance.req.AssessDetailReq; import com.lz.modules.performance.req.OwnResultReq; @@ -136,4 +137,5 @@ public interface ResultRecordService extends IService { List selectStaffIdsByFlowProcess(List flowProcess); + R saveDetail(Long userId, ResultRecordDetailDto dto); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 8641c333..81645537 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -30,8 +30,11 @@ import com.lz.modules.flow.enums.FlowRecordEnum; import com.lz.modules.flow.model.*; import com.lz.modules.flow.service.*; import com.lz.modules.job.business.DingtalkBusiness; +import com.lz.modules.performance.dto.ResultTaskDto; import com.lz.modules.performance.req.OwnResultReq; +import com.lz.modules.performance.req.ResultUpdateTaskReq; import com.lz.modules.performance.res.ChartStatistical; +import com.lz.modules.performance.service.ResultTaskService; import com.lz.modules.sys.dao.app.ResultRecordMapper; import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.app.ResultComment; @@ -51,6 +54,7 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -143,6 +147,9 @@ public class ResultRecordServiceImpl extends ServiceImpl selectStaffIdsByFlowProcess(List flowProcess) { return resultRecordMapper.selectStaffIdsByFlowProcess(flowProcess); } + + @Override + public R saveDetail(Long userId,ResultRecordDetailDto dto){ + ResultRecord resultRecord = resultRecordService.selectResultRecordById(dto.getId()); + + resultRecord.setAllScore(resultRecord.getLastScore()); + List inserts = new ArrayList<>(); + List updates = new ArrayList<>(); + + List insertScores = new ArrayList<>(); + List updateScores = new ArrayList<>(); + + List resultDetails = resultDetailService.selectByRecordId(dto.getId()); + Map mapDetails = + resultDetails.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); + + List updateResultDetails = new ArrayList<>(); + List editResultDetails = new ArrayList<>();//涉及到修改的指标保存,方便后面生成修改记录 + + //获取当前绩效的节点 + boolean isSetKeyResult = false; + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(dto.getId(), 2); + if(flowRecords.size() > 0){ + if(flowRecords.get(0).getFlowProcess().intValue() < 1){ + log.info("制定目标中"); + isSetKeyResult = true; + } + } + + + for (ResultRecortModelDto model:dto.getRecortModelDtos() + ) { + int index = 0; + BigDecimal weight = BigDecimal.ZERO; + /*if(model.getMaxCount() != null && model.getDetailDtos().size() > model.getMaxCount().intValue()){ + return R.error(model.getName() + "维度指标数量不能超过" + model.getMaxCount()); + }*/ + + for (ResultDetailDto detailDto:model.getDetailDtos() + ) {//排序 + ResultDetail resultDetail = new ResultDetail(); + BeanUtils.copyProperties(detailDto, resultDetail); + if(!isSetKeyResult){ + if(resultDetail.getIsDelete() != null && resultDetail.getIsDelete().intValue() == 1){//被删除了 + log.info("指标被删除了"); + resultDetail.setIsBack(2); + resultDetail.setBackId(resultDetail.getId()); + updateResultDetails.add(resultDetail); + editResultDetails.add(resultDetail); + }else if(resultDetail.getId() == null){ + resultDetail.setIsBack(3);//新增 + editResultDetails.add(resultDetail);//插入数据库之后会生成id + log.info("新增指标"); + }else { + if(resultDetail.getId() != null && mapDetails.containsKey(resultDetail.getId())){ + //这里判断是否有更新,或者删除 + boolean isUp = false; + ResultDetail resultDetail1 = null; + resultDetail1 = mapDetails.get(resultDetail.getId()); + + + if(!resultDetail.getTarget().equals(resultDetail1.getTarget())){ + //打上标识 + log.info("修改名称"); + isUp = true; + } + if(!resultDetail.getKeyResult().equals(resultDetail1.getKeyResult())){ + //打上标识 + log.info("修改关键结果"); + isUp = true; + } + + if(!resultDetail.getCheckWeight().equals(resultDetail1.getCheckWeight())){ + //打上标识 + log.info("修改权重"); + isUp = true; + } + if(isUp){ + resultDetail1.setId(null); + resultDetail1.setIsBack(2); + resultDetail1.setBackId(resultDetail.getId()); + inserts.add(resultDetail1); + editResultDetails.add(resultDetail1);//插入数据库之后会生成id + } + } + } + } + + + resultDetail.setPriority(index); + + index++; + if(resultDetail.getId() != null){ + updates.add(resultDetail); + + + }else{ + resultDetail.setStaffId(resultRecord.getStaffId()); + resultDetail.setRecordId(resultRecord.getId()); + resultDetail.setType(model.getType()); + resultDetail.setModelId(model.getId()); + resultDetailService.insertResultDetail(resultDetail); + + //inserts.add(resultDetail); + } + if(resultDetail.getIsDelete() != null && resultDetail.getIsDelete().intValue() == 1){ + //删除任务 + resultTaskService.deleteResultTasksByDetailId(resultDetail.getId()); + }else{ + //更新任务 + if(userId.longValue() == resultRecord.getStaffId().longValue() && + detailDto.getTaskDtos() != null && detailDto.getTaskDtos().size() > 0){//本人编辑任务才允许提交 + log.info("任务个数{}", detailDto.getTaskDtos().size()); + int orderBy = 0; + for (ResultTaskDto taskDto:detailDto.getTaskDtos() + ) { + if(taskDto.getId() != null && taskDto.getIsDelete() != null && taskDto.getIsDelete().intValue() == 1){ + //删除 + resultTaskService.deleteTask(taskDto.getId(),userId); + }else{ + ResultUpdateTaskReq taskReq = new ResultUpdateTaskReq(); + taskReq.setDetailId(resultDetail.getId()); + taskReq.setTaskId(taskDto.getId()); + taskReq.setName(taskDto.getName()); + taskReq.setOrderBy(orderBy); + taskReq.setProcessRate(BigDecimal.valueOf(taskDto.getProcessRate())); + R r = resultTaskService.saveOrUpdateResultTask(taskReq,userId); + if((int)r.get("code") != 200){ + throw new RRException((String)r.get("msg")); + } + orderBy++; + } + + } + + } + // } + //if(resultDetail.getIsDelete() == null || resultDetail.getIsDelete().intValue() == 0){ + BigDecimal score = BigDecimal.ZERO; + if(detailDto.getScoreDtos() != null){ + for (ResultScoreDto scoreDto:detailDto.getScoreDtos() + ) { + //计算得分 + ResultScore resultScore = new ResultScore(); + BeanUtils.copyProperties(scoreDto, resultScore); + if(scoreDto.getAcquireScore() != null){ + score = score.add(scoreDto.getAcquireScore().multiply(scoreDto.getWeight())); + } + if(resultScore.getId() == null){ + insertScores.add(resultScore); + }else{ + updateScores.add(resultScore); + } + resultScore.setDetailId(detailDto.getId()); + } + resultDetail.setAcquireScore(score); + weight = weight.add(resultDetail.getCheckWeight()); + } + } + + } + } + //下面更新指标记录 + if(inserts.size() > 0){ + resultDetailService.saveBatch(inserts); + } + if(updates.size() > 0){ + resultDetailService.updateBatchById(updates); + } + + //下面更新评分记录 + if(insertScores.size() > 0){ + resultScoreService.saveBatch(insertScores); + } + if(updateScores.size() > 0){ + resultScoreService.updateBatchById(updateScores); + } + + resultRecordService.updateResultRecordById(resultRecord); + String commentId = null; + if(dto.getSave() == null){//非暂存 + //修改评论信息 + log.info("修改了多少个指标{}", editResultDetails.size()); + editResultDetails.addAll(resultDetailService.selectNotNoticeResultDetailByRecordId(dto.getId())) ; + log.info("可能需要写入评论的内容条数{}", editResultDetails.size()); + //去重 + mapDetails = editResultDetails.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); + editResultDetails = mapDetails.values().stream().collect(Collectors.toList()); + if(!isSetKeyResult){ + log.info("实际需要写入评论的内容条数{}", editResultDetails.size()); + if(editResultDetails.size() > 0){ + updates.addAll(inserts); + + mapDetails = updates.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); + + String commandValue = ""; + int commandIndex = 1; + for (ResultDetail resultDetail1:editResultDetails + ) { + log.info("修改的对象为{}", resultDetail1); + if(resultDetail1.getIsDelete() != null && resultDetail1.getIsDelete().intValue() == 1){ + commandValue += (commandIndex + ":(删除) 指标" + resultDetail1.getTarget() + "\n"); + commandIndex++; + resultDetail1.setIsBack(1); + }else if(resultDetail1.getIsBack().intValue() == 3){ + commandValue += (commandIndex + ":(新增) 指标" + resultDetail1.getTarget() + "\n"); + commandIndex++; + resultDetail1.setIsBack(0); + }else{ + + ResultDetail resultDetail = mapDetails.get(resultDetail1.getBackId()); + if(resultDetail != null){ + log.info("修改后的对象为{}", resultDetail1); + boolean isUp = false; + String value = ""; + String heard = ""; + if(!resultDetail.getTarget().equals(resultDetail1.getTarget())){ + //打上标识 + value += ("(修改) 名称:" + + resultDetail1.getTarget()+ " \n(为):\n" + resultDetail.getTarget() + "\n"); + isUp = true; + + }else{ + heard = "指标:" + resultDetail1.getTarget() + "\n"; + } + if(!resultDetail.getKeyResult().equals(resultDetail1.getKeyResult())){ + //打上标识 + value += ("(修改) 考核标准:" + + resultDetail1.getKeyResult() + "\n(为):\n" + resultDetail.getKeyResult() + "\n"); + isUp = true; + } + if(!resultDetail.getCheckWeight().equals(resultDetail1.getCheckWeight())){ + //打上标识 + value += ("(修改) 权重:" + + resultDetail1.getCheckWeight().multiply(new BigDecimal(100)).intValue() + "%\n(为):\n" + + resultDetail.getCheckWeight().multiply(new BigDecimal(100)).intValue() + + "%\n"); + isUp = true; + } + if(isUp){ + commandValue += (commandIndex + ":" + heard + value); + commandIndex++; + resultDetail1.setIsBack(1); + } + } + + } + } + if(commandValue.length() > 0){ + log.info("需要写入评论,具体呢容为{}", commandValue); + ResultComment resultComment = new ResultComment();//resultCommentService.selectResultCommentById(dto.getCommentId()); + log.info("resultComment的值{}", resultComment); + resultComment.setOptDesc("修改了目标"); + resultComment.setComment(commandValue); + + resultCommentService.insertResultComment(resultComment);//.updateResultCommentCommentById(dto.getCommentId(), commandValue); + commentId = resultComment.getId().toString(); + } + } + }else{ + for (ResultDetail resultDetail1:editResultDetails + ) { + if(resultDetail1.getIsBack().intValue() == 3){ + resultDetail1.setIsBack(0); + }else{ + resultDetail1.setIsBack(1); + } + } + } + resultDetailService.updateBatchById(editResultDetails); + } + return R.ok().put("commentId", commentId); + } } diff --git a/src/test/java/com/lz/mysql/AttributeDes.java b/src/test/java/com/lz/mysql/AttributeDes.java new file mode 100644 index 00000000..65da2ef6 --- /dev/null +++ b/src/test/java/com/lz/mysql/AttributeDes.java @@ -0,0 +1,4 @@ +package com.lz.mysql; + +public class AttributeDes extends Describer{ +} diff --git a/src/test/java/com/lz/mysql/ControlScanner.java b/src/test/java/com/lz/mysql/ControlScanner.java index 6ea3aed7..2f8cd031 100644 --- a/src/test/java/com/lz/mysql/ControlScanner.java +++ b/src/test/java/com/lz/mysql/ControlScanner.java @@ -1,7 +1,155 @@ package com.lz.mysql; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + public class ControlScanner { private String filePath;//文件地址 static final String[] notesSym = {"/*", "*/", "//", "\\n"};//注释符号,成对出现,偶数为起始符号,奇数为结束符号 + private String packageName;//包名 + private String name;//类名 + List importList = new ArrayList<>();//引入的包名 + List functionDesList = new ArrayList<>();//方法对象集合 + List attributeDesList = new ArrayList<>();//属性对象集合 + + public void startScanner(String filePath){ + File file = new File(filePath); + if(file.exists()){ + // + try { + BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); + String strLine = null; + int lineCount = 0; + while(null != (strLine = bufferedReader.readLine())){ + strLine = pretreatment(strLine); + CheckType checkType = checkLineStart(strLine); + strLine = strLine.substring(checkType.getStart()); + checkLineEnd(checkType, strLine); + + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + //文件异常 + } catch (IOException e) { + e.printStackTrace(); + //读取文件失败 + } + } + + } + + private String pretreatment(String strLine){ + strLine = strLine.replace("\t", " "); + strLine = removeMoreSpace(strLine); + strLine = strLine.replace("\r\n", "\n"); + + return strLine; + } + + private String removeMoreSpace(String strLine){ + int start = 0; + while(strLine.charAt(start) == ' '){ + start++; + } + if(start > 0){ + strLine = strLine.substring(start); + } + String newLine; + return strLine; + } + + private CheckType checkLineStart(String strLine){ + CheckType checkType = new CheckType(); + + switch (strLine.charAt(0)){ + case '/':// /* // + if(strLine.charAt(1) == '/'){ + checkType.setType(0); + //checkType.setEnd(true); + }else if(strLine.charAt(1) == '*'){ + checkType.setType(1); + /*if(strLine.length() > 3 && + strLine.charAt(strLine.length() - 1) == '/' && + strLine.charAt(strLine.length() - 2) == '*'){ + checkType.setEnd(true); + }*/ + } + checkType.setStart(2); + break; + case 'i'://import + if(strLine.startsWith("import ")){ + + checkType.setType(2); + checkType.setStart(7); + } + break; + case 'p':// public private proteced package + if(strLine.startsWith("public ")){ + checkType.setType(3); + checkType.setStart(7); + + }else if(strLine.startsWith("private ")){ + checkType.setType(4); + checkType.setStart(8); + }else if(strLine.startsWith("proteced ")){ + checkType.setType(5); + checkType.setStart(9); + }else if(strLine.startsWith("package ")){ + checkType.setType(6); + checkType.setStart(8); + } + break; + default: + checkType.setType(50); + checkType.setStart(0); + break; + } + /*if((type == 0 || type > 2) + && strLine.charAt(strLine.length() - 1) == ';'){ + checkType.setEnd(true); + }*/ + return checkType; + } + + private CheckType checkLineEnd(CheckType checkType, String strLine){ + if(checkType.getType() > 1){//处理非注释代码中的多余的空格替换成一个,引号内的不处理 + + } + return checkType; + } + + public class CheckType{ + //1:// 2:/* 3:import 4:public 5:private 6:proteced 7:package 50:未找到关键字 + private int type; + + private int start; + + private boolean isEnd;//一行代码是否读取完毕 + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getStart() { + return start; + } + + public void setStart(int start) { + this.start = start; + } + + public boolean isEnd() { + return isEnd; + } + + public void setEnd(boolean end) { + isEnd = end; + } + } } diff --git a/src/test/java/com/lz/mysql/Describer.java b/src/test/java/com/lz/mysql/Describer.java new file mode 100644 index 00000000..8f25f05a --- /dev/null +++ b/src/test/java/com/lz/mysql/Describer.java @@ -0,0 +1,11 @@ +package com.lz.mysql; + +public class Describer { + protected String auther;//作者 + protected String describe;//描述,说明 + protected String remark;//备注 + protected String name;//方法名称或者属性名称 + protected String date;//日期 + protected int viewType;//0 public 1 protected 2 private; + protected JavaType javaType;//类型,属性的类型,方法返回的类型 +} diff --git a/src/test/java/com/lz/mysql/FunctionDes.java b/src/test/java/com/lz/mysql/FunctionDes.java new file mode 100644 index 00000000..e56dd09a --- /dev/null +++ b/src/test/java/com/lz/mysql/FunctionDes.java @@ -0,0 +1,9 @@ +package com.lz.mysql; + +import java.util.ArrayList; +import java.util.List; + +public class FunctionDes extends Describer{ + private List params = new ArrayList<>();//参数 + +} diff --git a/src/test/java/com/lz/mysql/JavaType.java b/src/test/java/com/lz/mysql/JavaType.java new file mode 100644 index 00000000..41935e38 --- /dev/null +++ b/src/test/java/com/lz/mysql/JavaType.java @@ -0,0 +1,7 @@ +package com.lz.mysql; + +public class JavaType { + private String name;//type名称 + private String packageName;//包名,路径 + private int custom;//0自定义 1sdk自带 +} diff --git a/src/test/java/com/lz/mysql/ReqParamDes.java b/src/test/java/com/lz/mysql/ReqParamDes.java new file mode 100644 index 00000000..e1d346e5 --- /dev/null +++ b/src/test/java/com/lz/mysql/ReqParamDes.java @@ -0,0 +1,6 @@ +package com.lz.mysql; + +public class ReqParamDes extends AttributeDes{ + private int reqType;//参数请求类型0 get 1 post + private int mustReq;//0非必传,1必传 +}