GradeTaskNodeInstWholeCommentFileService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.kingdee.eas.custom.perfweb.service;
  2. import com.kingdee.bos.Context;
  3. import com.kingdee.bos.metadata.entity.SelectorItemCollection;
  4. import com.kingdee.eas.framework.CoreBaseInfo;
  5. import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseRowInfo;
  6. import com.kingdee.shr.base.syssetting.app.io.fileImport.ImportException;
  7. import com.kingdee.shr.perfweb.app.base.evalrule.IsNeedEnum;
  8. import com.kingdee.shr.perfweb.app.base.evalrule.WFNodeDefInfo;
  9. import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException;
  10. import com.kingdee.shr.perfweb.app.workflow.GradeTaskNodeInstFactory;
  11. import com.kingdee.shr.perfweb.app.workflow.GradeTaskNodeInstInfo;
  12. import com.kingdee.shr.perfweb.app.workflow.IGradeTaskNodeInst;
  13. import com.kingdee.shr.perfweb.app.workflow.IWholeComment;
  14. import com.kingdee.shr.perfweb.app.workflow.WholeCommentCollection;
  15. import com.kingdee.shr.perfweb.app.workflow.WholeCommentFactory;
  16. import com.kingdee.shr.perfweb.app.workflow.WholeCommentInfo;
  17. import com.kingdee.shr.perfweb.service.GradeTaskNodeInstFileService;
  18. import com.kingdee.util.StringUtils;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. /**
  22. * 评分任务节点实例 Excel 导入:仅更新整体评价(wholeComment)。
  23. * <p>
  24. * 导出逻辑继承 {@link GradeTaskNodeInstFileService};导入时不走 saveNodeSumScoreAndGrade,
  25. * 避免改写节点分数、等级。
  26. * <p>
  27. * 导入模板配置中将「业务实现类」指向本类即可。
  28. */
  29. public class GradeTaskNodeInstWholeCommentFileService extends GradeTaskNodeInstFileService {
  30. private static final Logger logger = LoggerFactory.getLogger(GradeTaskNodeInstWholeCommentFileService.class);
  31. @Override
  32. protected void verifyRowBiz(CoreBaseInfo info) throws ImportException {
  33. try {
  34. String id = info.getString("ID");
  35. checkStatus(id);
  36. validateWholeComment(info.getString("wholeComment"), id);
  37. } catch (ImportException e) {
  38. throw e;
  39. } catch (Exception e) {
  40. logger.error(e.getMessage(), e);
  41. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  42. }
  43. }
  44. /**
  45. * 按节点配置校验整体评价:强制必填时 comment 不能为空。
  46. */
  47. private void validateWholeComment(String comment, String gradeTaskNodeInstId) throws ImportException {
  48. try {
  49. Context ctx = getContext();
  50. IGradeTaskNodeInst gradeTaskNodeInst = GradeTaskNodeInstFactory.getLocalInstance(ctx);
  51. GradeTaskNodeInstInfo nodeInstInfo = gradeTaskNodeInst.getGradeTaskNodeInstInfo(
  52. " select wfNode.* where id='" + gradeTaskNodeInstId + "'");
  53. if (nodeInstInfo == null || nodeInstInfo.getWfNode() == null) {
  54. logger.error("GradeTaskNodeInstWholeCommentFileService#validateWholeComment: wfNode is NULL, id={}", gradeTaskNodeInstId);
  55. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  56. }
  57. WFNodeDefInfo wfNode = nodeInstInfo.getWfNode();
  58. IsNeedEnum wholeCommentNeed = wfNode.getWholeComment();
  59. if (wholeCommentNeed == IsNeedEnum.NEEDMUST && StringUtils.isEmpty(comment)) {
  60. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  61. }
  62. } catch (ImportException e) {
  63. throw e;
  64. } catch (Exception e) {
  65. logger.error(e.getMessage(), e);
  66. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  67. }
  68. }
  69. @Override
  70. protected void importUpdateOnly(BaseRowInfo row) throws ImportException {
  71. CoreBaseInfo info = transRowToObejct(row);
  72. String gradeTaskNodeInstId = info.getString("ID");
  73. String comment = info.getString("wholeComment");
  74. try {
  75. Context ctx = getContext();
  76. IWholeComment iWholeComment = WholeCommentFactory.getLocalInstance(ctx);
  77. WholeCommentCollection coll = iWholeComment.getWholeCommentCollection(
  78. " where gradeTaskNodeInst='" + gradeTaskNodeInstId + "'");
  79. WholeCommentInfo wholeCommentInfo;
  80. if (coll == null || coll.isEmpty()) {
  81. wholeCommentInfo = createWholeComment(ctx, gradeTaskNodeInstId);
  82. } else {
  83. wholeCommentInfo = coll.get(0);
  84. }
  85. wholeCommentInfo.setComment(comment == null ? "" : comment);
  86. SelectorItemCollection sic = new SelectorItemCollection();
  87. sic.add("comment");
  88. iWholeComment.updatePartial(wholeCommentInfo, sic);
  89. } catch (ImportException e) {
  90. throw e;
  91. } catch (Exception e) {
  92. logger.error(e.getMessage(), e);
  93. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  94. }
  95. }
  96. private WholeCommentInfo createWholeComment(Context ctx, String gradeTaskNodeInstId) throws ImportException {
  97. try {
  98. IGradeTaskNodeInst gradeTaskNodeInst = GradeTaskNodeInstFactory.getLocalInstance(ctx);
  99. GradeTaskNodeInstInfo nodeInstInfo = gradeTaskNodeInst.getGradeTaskNodeInstInfo(
  100. " select evaObj.id, wfNode.nodeWeight where id='" + gradeTaskNodeInstId + "'");
  101. if (nodeInstInfo == null || nodeInstInfo.getEvaObj() == null) {
  102. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  103. }
  104. IWholeComment iWholeComment = WholeCommentFactory.getLocalInstance(ctx);
  105. WholeCommentInfo wholeCommentInfo = new WholeCommentInfo();
  106. if (nodeInstInfo.getWfNode() != null) {
  107. wholeCommentInfo.setWeight(nodeInstInfo.getWfNode().getNodeWeight());
  108. }
  109. wholeCommentInfo.put("evaObj", nodeInstInfo.getEvaObj().getId().toString());
  110. wholeCommentInfo.put("gradeTaskNodeInst", gradeTaskNodeInstId);
  111. iWholeComment.addnew(wholeCommentInfo);
  112. WholeCommentCollection coll = iWholeComment.getWholeCommentCollection(
  113. " where gradeTaskNodeInst='" + gradeTaskNodeInstId + "'");
  114. if (coll == null || coll.isEmpty()) {
  115. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  116. }
  117. return coll.get(0);
  118. } catch (ImportException e) {
  119. throw e;
  120. } catch (Exception e) {
  121. logger.error(e.getMessage(), e);
  122. throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.IMPORTEXCELERR));
  123. }
  124. }
  125. }