|
|
@@ -409,20 +409,25 @@ public class WorkKnowledgeBaseShareController extends BaseController {
|
|
|
}
|
|
|
|
|
|
// 编辑时回显主审专家姓名(expertReviewerNames 为非数据库字段,需根据ID反查)
|
|
|
- if (StringUtils.isNotBlank(shareInfo.getExpertReviewerIds())) {
|
|
|
- StringBuilder namesBuilder = new StringBuilder();
|
|
|
- for (String eid : shareInfo.getExpertReviewerIds().split(",")) {
|
|
|
- if (StringUtils.isNotBlank(eid)) {
|
|
|
- com.jeeplus.modules.sys.entity.User expertUser = UserUtils.get(eid.trim());
|
|
|
- if (expertUser != null && StringUtils.isNotBlank(expertUser.getName())) {
|
|
|
- if (namesBuilder.length() > 0) {
|
|
|
- namesBuilder.append(",");
|
|
|
+ // 注意:shareInfo由URL参数绑定,expertReviewerIds不在URL中,需从DB加载完整实体获取
|
|
|
+ if (StringUtils.isNotBlank(shareInfo.getId())) {
|
|
|
+ WorkKnowledgeBaseShareInfo dbEntity = shareService.get(shareInfo.getId());
|
|
|
+ if (dbEntity != null && StringUtils.isNotBlank(dbEntity.getExpertReviewerIds())) {
|
|
|
+ shareInfo.setExpertReviewerIds(dbEntity.getExpertReviewerIds());
|
|
|
+ StringBuilder namesBuilder = new StringBuilder();
|
|
|
+ for (String eid : dbEntity.getExpertReviewerIds().split(",")) {
|
|
|
+ if (StringUtils.isNotBlank(eid)) {
|
|
|
+ com.jeeplus.modules.sys.entity.User expertUser = UserUtils.get(eid.trim());
|
|
|
+ if (expertUser != null && StringUtils.isNotBlank(expertUser.getName())) {
|
|
|
+ if (namesBuilder.length() > 0) {
|
|
|
+ namesBuilder.append(",");
|
|
|
+ }
|
|
|
+ namesBuilder.append(expertUser.getName());
|
|
|
}
|
|
|
- namesBuilder.append(expertUser.getName());
|
|
|
}
|
|
|
}
|
|
|
+ shareInfo.setExpertReviewerNames(namesBuilder.toString());
|
|
|
}
|
|
|
- shareInfo.setExpertReviewerNames(namesBuilder.toString());
|
|
|
}
|
|
|
|
|
|
// 判断是否为问答答疑分类
|
|
|
@@ -1449,4 +1454,146 @@ public class WorkKnowledgeBaseShareController extends BaseController {
|
|
|
}
|
|
|
return userList;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 违规处理页面
|
|
|
+ */
|
|
|
+ @RequiresPermissions("workKnowledgeBase:share:violationHandle")
|
|
|
+ @RequestMapping(value = "violationHandleForm")
|
|
|
+ public String violationHandleForm(@RequestParam String id, Model model) {
|
|
|
+ WorkKnowledgeBaseShareInfo entity = shareService.get(id);
|
|
|
+ if (entity == null) {
|
|
|
+ addMessage(model, "记录不存在!");
|
|
|
+ return "error";
|
|
|
+ }
|
|
|
+ if (!"5".equals(entity.getAuditStatus())) {
|
|
|
+ addMessage(model, "只有审核通过的文件才能进行违规处理");
|
|
|
+ return "error";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询该文件的违规处理历史
|
|
|
+ List<com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseViolationRecord> historyRecords =
|
|
|
+ shareService.getViolationRecords(id);
|
|
|
+
|
|
|
+ // 确定文件创建人/提交人信息
|
|
|
+ String targetUserId = entity.getSubmitAuditUserId();
|
|
|
+ if (StringUtils.isBlank(targetUserId) && entity.getCreateBy() != null) {
|
|
|
+ targetUserId = entity.getCreateBy().getId();
|
|
|
+ }
|
|
|
+ String targetUserName = "";
|
|
|
+ if (StringUtils.isNotBlank(targetUserId)) {
|
|
|
+ com.jeeplus.modules.sys.entity.User targetUser = UserUtils.get(targetUserId);
|
|
|
+ if (targetUser != null) {
|
|
|
+ targetUserName = targetUser.getName();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ model.addAttribute("entity", entity);
|
|
|
+ model.addAttribute("targetUserId", targetUserId);
|
|
|
+ model.addAttribute("targetUserName", targetUserName);
|
|
|
+ model.addAttribute("historyRecords", historyRecords);
|
|
|
+
|
|
|
+ // 计算该文件给目标用户带来的创建积分(change_type=1),用于前端扣分预览
|
|
|
+ int originalPoints = 0;
|
|
|
+ if (StringUtils.isNotBlank(targetUserId)) {
|
|
|
+ com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail query =
|
|
|
+ new com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail();
|
|
|
+ query.setUserId(targetUserId);
|
|
|
+ query.setShareId(id);
|
|
|
+ query.setChangeType(1); // 只统计创建积分
|
|
|
+ // 使用Service的pointDetailDao查询
|
|
|
+ java.util.List<com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail> details =
|
|
|
+ shareService.getPointDetailList(query);
|
|
|
+ if (details != null) {
|
|
|
+ for (com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail d : details) {
|
|
|
+ if (d.getPoint() != null && d.getPoint() > 0) {
|
|
|
+ originalPoints += d.getPoint();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ model.addAttribute("originalPoints", originalPoints);
|
|
|
+
|
|
|
+ return "modules/WorkKnowledgeBase/workKnowledgeBaseViolationHandle";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 违规处理提交(Ajax)
|
|
|
+ */
|
|
|
+ @RequiresPermissions("workKnowledgeBase:share:violationHandle")
|
|
|
+ @RequestMapping(value = "violationHandleSave")
|
|
|
+ @ResponseBody
|
|
|
+ public Map<String, Object> violationHandleSave(@RequestParam String id,
|
|
|
+ @RequestParam String handleType,
|
|
|
+ @RequestParam java.math.BigDecimal pointMultiplier,
|
|
|
+ @RequestParam(required = false) String handleReason) {
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ try {
|
|
|
+ String currentUserId = UserUtils.getUser().getId();
|
|
|
+ shareService.handleViolation(id, handleType, pointMultiplier, handleReason, currentUserId);
|
|
|
+ result.put("success", true);
|
|
|
+ result.put("message", "违规处理成功");
|
|
|
+ } catch (Exception e) {
|
|
|
+ result.put("success", false);
|
|
|
+ result.put("message", e.getMessage());
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询文件最新的作废原因(公开接口,所有登录用户可访问)
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "getInvalidationReason")
|
|
|
+ @ResponseBody
|
|
|
+ public Map<String, Object> getInvalidationReason(@RequestParam String fileId) {
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ try {
|
|
|
+ com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseViolationRecord record =
|
|
|
+ shareService.getLatestViolationRecord(fileId);
|
|
|
+ if (record != null) {
|
|
|
+ result.put("handleReason", record.getHandleReason() != null ? record.getHandleReason() : "");
|
|
|
+ result.put("handleUserName", record.getHandleUserName() != null ? record.getHandleUserName() : "");
|
|
|
+ result.put("handleTime", record.getHandleTime() != null ?
|
|
|
+ DateUtils.formatDateTime(record.getHandleTime()) : "");
|
|
|
+ result.put("deductedPoints", record.getDeductedPoints());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // ignore
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询文件的违规处理记录(Ajax)
|
|
|
+ */
|
|
|
+ @RequiresPermissions("workKnowledgeBase:share:violationHandle")
|
|
|
+ @RequestMapping(value = "getViolationRecords")
|
|
|
+ @ResponseBody
|
|
|
+ public List<Map<String, Object>> getViolationRecords(@RequestParam String fileId) {
|
|
|
+ List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ List<com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseViolationRecord> records =
|
|
|
+ shareService.getViolationRecords(fileId);
|
|
|
+ if (records != null) {
|
|
|
+ for (com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseViolationRecord r : records) {
|
|
|
+ Map<String, Object> item = new HashMap<>();
|
|
|
+ item.put("id", r.getId());
|
|
|
+ item.put("handleType", r.getHandleType());
|
|
|
+ item.put("handleTypeName", "invalid".equals(r.getHandleType()) ? "作废" : "退回");
|
|
|
+ item.put("originalPoints", r.getOriginalPoints());
|
|
|
+ item.put("pointMultiplier", r.getPointMultiplier());
|
|
|
+ item.put("deductedPoints", r.getDeductedPoints());
|
|
|
+ item.put("handleReason", r.getHandleReason());
|
|
|
+ item.put("handleUserName", r.getHandleUserName());
|
|
|
+ item.put("handleTime", r.getHandleTime() != null ?
|
|
|
+ DateUtils.formatDateTime(r.getHandleTime()) : "");
|
|
|
+ item.put("targetUserName", r.getTargetUserName());
|
|
|
+ resultList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // ignore
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
}
|