Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa
| | |
| | | |
| | | ISSUE_ADD("issue.add.title", "issueAddEmail"), // 이슈 생성 |
| | | ISSUE_REMOVE("issue.remove.title", "issueRemoveEmail"), // 이슈 삭제 |
| | | ISSUE_SEND("issue.send.title", "issueSendEmail"); // 이슈 이메일 전달 |
| | | ISSUE_SEND("issue.send.title", "issueSendEmail"), // 이슈 이메일 전달 |
| | | ISSUE_SEND_1("issue.send1.title", "issueSend1Email"), // 이슈 이메일 전달 |
| | | ISSUE_SEND_2("issue.send2.title", "issueSend2Email"), // 이슈 이메일 전달 |
| | | ISSUE_SEND_3("issue.send3.title", "issueSend3Email"); // 이슈 이메일 전달 |
| | | // ISSUE_MODIFY("issue.modify.title", "issueModifyEmail"); // 이슈 수정 |
| | | |
| | | |
| | |
| | | public static final String ISSUE_REMOVE_NOT_SELECT = "ISSUE_REMOVE_NOT_SELECT"; // 삭제할 이슈가 선택되지 않았습니다. |
| | | public static final String ISSUE_NO_TITLE = "ISSUE_NO_TITLE"; // 이슈 제목이 입력되지 않았습니다. |
| | | public static final String ISSUE_NOT_SEND_USER = "ISSUE_NOT_SEND_USER"; // 이슈 발송 대상자를 선택하지 않았습니다. |
| | | public static final String ISSUE_NOT_SELECT_TEMPLATE = "ISSUE_NOT_SELECT_TEMPLATE"; // 이슈 발송 템플릿을 선택하지 않았습니다. |
| | | |
| | | public static final String ISSUE_COMMENT_REMOVE_NOT_SELECT = "ISSUE_COMMENT_REMOVE_NOT_SELECT"; // 삭제할 댓글을 선택하지 않았습니다. |
| | | public static final String ISSUE_COMMENT_NOT_EXIST = "ISSUE_COMMENT_NOT_EXIST"; // 댓글이 존재하지 않습니다. |
| | |
| | | ISSUE_MODIFY, // 이슈 수정 |
| | | ISSUE_REMOVE, // 이슈 삭제 |
| | | ISSUE_SEND, // 이슈 정보 이메일로 전달 |
| | | ISSUE_SEND_1, |
| | | ISSUE_SEND_2, |
| | | ISSUE_SEND_3, |
| | | PROJECT_ADD, // 프로젝트 생성 |
| | | PROJECT_MODIFY, // 프로젝트 수정 |
| | | PROJECT_REMOVE, // 프로젝트 삭제 |
| | |
| | | if (issueForm.getSendEmails().size() < 1) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SEND_USER)); |
| | | }else if (issueForm.getTemplate() != null){ |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SELECT_TEMPLATE)); |
| | | } |
| | | |
| | | Issue issue = this.getIssue(issueForm.getId()); |
| | |
| | | |
| | | // 사용자 시스템 기능 사용 정보 수집 |
| | | log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ANOTHER_USER_SEND_EMAIL)); |
| | | //this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null); |
| | | |
| | | this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null); |
| | | if(issueForm.getTemplate().equals("SEND1")){ |
| | | this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_1, issueMap, null); |
| | | }else if(issueForm.getTemplate().equals("SEND2")){ |
| | | this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_2, issueMap, null); |
| | | }else if(issueForm.getTemplate().equals("SEND3")){ |
| | | this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_3, issueMap, null); |
| | | } |
| | | } |
| | | |
| | | // 예약 발생 이슈를 실행한다 |
| | |
| | | StringBuilder sb = new StringBuilder(); |
| | | |
| | | if (newParentIssueId != null) { // 추가 할 경우 |
| | | // todo 이전 하위 일감 히스토리기록 필요 |
| | | parentIssue = this.getIssue(newParentIssueId); //상위이슈(myIssue) |
| | | issue.setParentIssue(parentIssue); //myIssue를 하위이슈의 상위이슈로 set |
| | | this.issueHistoryService.detectDownIssues(IssueHistoryType.ADD, issue, sb); //issue = 하위이슈 |
| | |
| | | content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context); |
| | | break; |
| | | |
| | | case ISSUE_SEND_1: // 이슈 이메일로 대상자에게 발송 |
| | | mailConstants = MailConstants.ISSUE_SEND_1; |
| | | context = StringTemplateUtil.makeContext(params, locale); |
| | | content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context); |
| | | break; |
| | | |
| | | case ISSUE_SEND_2: // 이슈 이메일로 대상자에게 발송 |
| | | mailConstants = MailConstants.ISSUE_SEND_2; |
| | | context = StringTemplateUtil.makeContext(params, locale); |
| | | content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context); |
| | | break; |
| | | |
| | | case ISSUE_SEND_3: // 이슈 이메일로 대상자에게 발송 |
| | | mailConstants = MailConstants.ISSUE_SEND_3; |
| | | context = StringTemplateUtil.makeContext(params, locale); |
| | | content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context); |
| | | break; |
| | | |
| | | case USER_JOIN_STATISTICS: // 일일 사용자 가입 정보 발송 |
| | | mailConstants = MailConstants.USER_JOIN_STATISTICS; |
| | | context = StringTemplateUtil.makeContext(params, locale); |
| | |
| | | List<Map<String, Object>> projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition); |
| | | |
| | | for (Map<String, Object> projectMemberIssue : projectMemberIssues) { |
| | | //String departmentName = MapUtil.getString(projectMemberIssue, "departmentName"); |
| | | Long completeCount = MapUtil.getLong(projectMemberIssue, "completeCount"); |
| | | Long remainCount = MapUtil.getLong(projectMemberIssue, "remainCount"); |
| | | //projectMemberIssue.put("account", CommonUtil.decryptAES128(MapUtil.getString(projectMemberIssue, "account"))); |
| | |
| | | excelInfo.setDatas(assigneeIssues); |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 번호 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("registerDate", this.messageAccessor.message("common.registerDate"), 8, ExportExcelAttrVo.ALIGN_CENTER)); // 등록일 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("completeDate", this.messageAccessor.message("common.endDate"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 종료일 |
| | |
| | | excelInfo.setDatas(riskIssues); |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 번호 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("riskType", this.messageAccessor.message("common.division"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 구분 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueUsers", this.messageAccessor.message("common.assignee"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 담당자 |
| | |
| | | excelInfo.setDatas(registerIssues); |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 번호 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 기간 |
| | | return excelInfo; |
| | |
| | | excelInfo.setDatas(delayIssues); |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 번호 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("delayDay", this.messageAccessor.message("common.delayDate"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 지연일 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 기간 |
| | |
| | | excelInfo.setFileName(this.messageAccessor.message("common.progressByMember")); // 멤버별 진행률 |
| | | excelInfo.setDatas(members); |
| | | |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("byName", this.messageAccessor.message("common.teamMember"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 팀원 |
| | | //excelInfo.addAttrInfos(new ExportExcelAttrVo("byName", this.messageAccessor.message("common.teamMember"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 팀원 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("departmentName", this.messageAccessor.message("common.teamDepartment"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 담당부서 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectProgressPercent", this.messageAccessor.message("common.progressPercent"), 6, ExportExcelAttrVo.ALIGN_LEFT)); // 진행률 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueCount", this.messageAccessor.message("common.assignedIssue"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 담당 이슈 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("delayCount", this.messageAccessor.message("common.delaying"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 지연중 |
| | |
| | | excelInfo.setDatas(severityIssue); |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 8, ExportExcelAttrVo.ALIGN_CENTER)); //이슈 번호 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("severityName", this.messageAccessor.message("common.importance"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 중요도 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈제목 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); //이슈 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 기간 |
| | |
| | | } |
| | | |
| | | // 메일 발송 대상자 목록 조회 |
| | | @RequestMapping(value = "/issue/findMailTargetAll", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) |
| | | /*@RequestMapping(value = "/issue/findMailTargetAll", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) |
| | | public |
| | | @ResponseBody |
| | | Map<String, Object> findMailTargetAll(@RequestBody Map<String, Map<String, Object>> params) { |
| | |
| | | // this.issueService.findMailTargetAll(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)), pageable); |
| | | |
| | | return this.setSuccessMessage(resJsonData); |
| | | } |
| | | }*/ |
| | | |
| | | |
| | | /*// 업체 담당자 메일 목록 조회 |
| | |
| | | private List<Long> userIds = Lists.newArrayList(); |
| | | private List<Long> departmentIds = Lists.newArrayList(); // 담당 부서 |
| | | private List<String> sendEmails = Lists.newArrayList(); // 이메일 발송 대상자 |
| | | private String template; |
| | | private List<Long> attachedFileIds = Lists.newArrayList(); |
| | | private Long relationIssue; // 연관 일감 |
| | | private List<Map<String, Object>> issueCustomFields = Lists.newArrayList(); |
| | |
| | | // 메일 발송자 정보 |
| | | if (MapUtil.getStrings(params, "sendEmails") != null) { |
| | | form.setSendEmails(MapUtil.getStrings(params, "sendEmails")); |
| | | } |
| | | |
| | | // 메일 템플릿 정보 |
| | | if (MapUtil.getString(params, "template") != null) { |
| | | form.setTemplate(MapUtil.getString(params, "template")); |
| | | } |
| | | |
| | | // 텍스트 에디터에 첨부된 파일을 이슈와 연결하는 정보 |
| | |
| | | public void setFiles(List<Map<String, Object>> files) { |
| | | this.files = files; |
| | | } |
| | | |
| | | public String getTemplate() { |
| | | return template; |
| | | } |
| | | |
| | | public void setTemplate(String template) { |
| | | this.template = template; |
| | | } |
| | | } |
| | |
| | | WHERE EXISTS(SELECT 1 FROM issue_status iss WHERE iss.issue_status_type != 'CLOSE' AND i.issue_status_id = |
| | | iss.id) |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | COUNT(i.id) FROM issue i where |
| | | exists(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE') |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | </choose> |
| | | ) AND EXISTS(SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE') |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | count(i.id) as todayCount from issue i where |
| | | i.register_id = #{loginUserId} |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | WHERE |
| | | EXISTS(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE') |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | where iss.issue_status_type = 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | where iss.issue_status_type = 'CLOSE' |
| | | and i.modify_date between #{searchStartDate} and #{searchEndDate} |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | where 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | left outer join issue_status iss on iss.id = i.issue_status_id |
| | | WHERE 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND p.id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | and id.register_date |
| | | BETWEEN (CURDATE()) AND (CURDATE() + INTERVAL 1 DAY)) |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | WHERE 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join project p on p.id = i.project_id |
| | | WHERE 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND p.id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | where iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | (case when ir.change_issue_status_count > 3 then true else false end) as changeIssueStatusType, |
| | | CONCAT(p.project_key, '-', i.issue_number) AS issueKey, |
| | | i.issue_number as issueNumber, |
| | | p.project_key as projectKey |
| | | p.project_key as projectKey, |
| | | p.name as projectName |
| | | from issue i |
| | | inner join issue_risk ir on ir.issue_id = i.id |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | inner join project p on p.id = i.project_id |
| | | where iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND p.id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | where iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | WHERE 1=1 |
| | | AND i.register_id = #{loginUserId} |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | AND EXISTS (SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id AND iss.issue_status_type != 'CLOSE') |
| | | </if> |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | </if> |
| | | WHERE 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | </if> |
| | | WHERE 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | | where 1=1 |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | parameterType="kr.wisestone.owl.web.condition.WidgetCondition"> |
| | | select |
| | | d.department_name as departmentName, |
| | | p.name as projectName, |
| | | (select count(*) from issue i |
| | | inner join issue_department id on id.issue_id = i.id |
| | | inner join issue_status iss on iss.id = i.issue_status_id |
| | |
| | | inner join project p on p.id = pr.project_id |
| | | WHERE |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | p.id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | 'CLOSE') AND |
| | | i.register_id = #{loginUserId} |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | 'CLOSE') |
| | | AND i.register_id = #{loginUserId} |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | </choose> |
| | | and iss.issue_status_type = 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | WHERE w.id = #{workspaceId} |
| | | AND iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | replace(i.complete_date, "-", ".") AS completeDate, |
| | | i.issue_number AS issueNumber, |
| | | p.project_key AS projectKey, |
| | | p.name AS projectName, |
| | | iss.name AS issueStatusName, |
| | | CONCAT(p.project_key, '-', i.issue_number) AS issueKey |
| | | FROM issue i |
| | |
| | | AND s.id = #{severityId} |
| | | AND iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | AND s.id = #{severityId} |
| | | AND iss.issue_status_type != 'CLOSE' |
| | | <choose> |
| | | <when test="meAndDownProjectIds.size != 0"> |
| | | <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0"> |
| | | AND i.project_id IN |
| | | <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | |
| | | common.registerDate=\uB4F1\uB85D\uC77C |
| | | common.admin=\uAD00\uB9AC\uC790 |
| | | common.teamMember=\uD300\uC6D0 |
| | | common.teamDepartment=\uB2F4\uB2F9\uBD80\uC11C |
| | | common.registration=\uB4F1\uB85D |
| | | common.assigned=\uB2F4\uB2F9 |
| | | common.progressPercent=\uC9C4\uD589\uB960 |
| | |
| | | ISSUE_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uC774\uC288\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NO_TITLE = \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NOT_SEND_USER = \uC774\uC288 \uBC1C\uC1A1 \uB300\uC0C1\uC790\uB97C \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NOT_SELECT_TEMPLATE = \uC774\uC288 \uBC1C\uC1A1 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | |
| | | ISSUE_COMMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uB313\uAE00\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_COMMENT_NOT_EXIST = \uB313\uAE00\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. |
| | |
| | | $scope.vm.riskIssueWidget = result.data.riskIssueWidget; |
| | | // 나의 이슈 현황 정보를 저장한다. |
| | | $scope.vm.myIssueWidget = result.data.myIssueWidget; |
| | | |
| | | const members = result.data.memberProgressWidget.members; |
| | | var filterMembers = members.filter(function(item, idx){ |
| | | return members.findIndex(function(item2, idx2){ |
| | | return item.departmentName === item2.departmentName |
| | | }) == idx; |
| | | }); |
| | | |
| | | var departmentNames = []; |
| | | angular.forEach(filterMembers, function (member) { |
| | | departmentNames.push(member.departmentName); |
| | | }); |
| | | var completeCounts = []; |
| | | var delayCounts = []; |
| | | var remainCounts = []; |
| | | |
| | | for(var j=0; j<departmentNames.length; j++){ //배열 초기값 선언 |
| | | completeCounts[j] = 0; |
| | | delayCounts[j] = 0; |
| | | remainCounts[j] = 0; |
| | | } |
| | | |
| | | for(var i=0; i<members.length; i++){ |
| | | for(var j=0; j<departmentNames.length; j++){ |
| | | if(members[i].departmentName === departmentNames[j]){ |
| | | completeCounts[j] += members[i].completeCount; |
| | | delayCounts[j] += members[i].delayCount; |
| | | remainCounts[j] += members[i].remainCount; |
| | | } |
| | | } |
| | | } |
| | | for(var i=0; i<filterMembers.length; i++){ |
| | | filterMembers[i].completeCount = completeCounts[i] |
| | | filterMembers[i].delayCount = delayCounts[i] |
| | | filterMembers[i].remainCount = remainCounts[i] |
| | | } |
| | | result.data.memberProgressWidget.members = filterMembers; |
| | | |
| | | // 멤버별 진행률을 저장한다. |
| | | $scope.vm.memberProgressWidget = result.data.memberProgressWidget; |
| | | // 전체 이슈 처리 현황 정보를 저장한다. |