@Transactional public boolean update(EventForm form, UserInfo userInfo) { logger.infoCode("I0001"); try { EvEventTbl entity = new EvEventTbl(); if (form.getPageMode().equals(CommonConst.PAGE_MODE_EDIT)) { entity = findOne(userInfo, form); if (entity == null) { throw new Exception(); } } entity.setUpdUserKey(userInfo.getLoginUserKey()); entity.setPartyCode(userInfo.getLoginPartyCode()); entity.setPartyName(userInfo.getLoginPartyName()); // entity.setEventKey(form.getEventKey()); entity.setEventMemo(form.getEventMemo()); entity.setEventPlace(form.getEventPlace()); entity.setEventRecruit(form.getEventRecruit()); entity.setEventSendDate(form.getEventSendDateAsTimestamp()); entity.setEventStartDate(form.getEventStartDateAsTimestamp()); entity.setEventTelno(form.getEventTelno()); entity.setEventTitle(form.getEventTitle()); entity.setEventUnit(form.getEventUnit()); entity.setSubjectInsKbn(form.getSubjectInsKbn()); entity.setPublicFlag(form.getPublicFlag()); entity.setUpdDate(DateUtil.getNowTimestamp()); // 更新テーブル:イベント公開範囲テーブル if (form.getPageMode().equals(CommonConst.PAGE_MODE_EDIT)) { // イベント公開範囲テーブルから対象データをDELETEする。 evEventPublicTblRepository.delete(entity.getEvEventPublicTbls()); } entity = evEventTblRepository.save(entity); List<EvEventPublicTbl> publicList = new ArrayList<>(); int count = 1; // 企業・研究所などがチェックONの場合、1件出力する。 if (form.checkHasPublicItem("1")) { EvEventPublicTbl tbl = new EvEventPublicTbl(); EvEventPublicTblPK pk = new EvEventPublicTblPK(); pk.setEventKey(entity.getEventKey()); pk.setSeqNo(count); tbl.setId(pk); // 企業・研究所等が、設定されている分の出力を行う場合、1:ROLE。 tbl.setPublicKbn("1"); // 企業・研究所等が、設定されている分の出力を行う場合、1:ROLE。 tbl.setRole("1"); // 企業・研究所等が、設定されている分の出力を行う場合、NULL。 tbl.setPartyCode(null); // 現在時刻を設定する。 tbl.setUpdDate(DateUtil.getNowTimestamp()); // ログイン者のユーザキーの値を設定する。 tbl.setUpdUserKey(userInfo.getLoginUserKey()); publicList.add(tbl); count = count + 1; } if (form.checkHasPublicItem("2")) { // 大學がチェックONの場合、公開範囲(公開)で選択されている件数出力する。 for (int i = 0; i < form.getPublicPartyArray().length; i++) { EvEventPublicTbl tbl = new EvEventPublicTbl(); EvEventPublicTblPK pk = new EvEventPublicTblPK(); pk.setEventKey(entity.getEventKey()); pk.setSeqNo(count); tbl.setId(pk); // 大學が、設定されている分の出力を行う場合、2:組織。 tbl.setPublicKbn("2"); // 大學が、設定されている分の出力を行う場合、NULL。 tbl.setRole(null); // 大學が、設定されている分の出力を行う場合、対象大学の組織コード。 tbl.setPartyCode(form.getPublicPartyArray()[i]); // 現在時刻を設定する。 tbl.setUpdDate(DateUtil.getNowTimestamp()); // ログイン者のユーザキーの値を設定する。 tbl.setUpdUserKey(userInfo.getLoginUserKey()); publicList.add(tbl); count = count + 1; } } if (form.getPageMode().equals(CommonConst.PAGE_MODE_ADD) || form.getPageMode().equals(CommonConst.PAGE_MODE_COPY)) { // お知らせ情報、お知らせ情報公開範囲登録 this.insertCmInfo(userInfo, form, "201", userInfo.getTargetRole().getAuthority(), null); } evEventPublicTblRepository.save(publicList); if (entity != null) { logger.infoCode("I0002"); return true; } } catch (Exception e) { logger.errorCode("E1007", e); // E1007=登録に失敗しました。{0} } return false; }
@SuppressWarnings("unchecked") public List<EventDto> findAllEvent( UserInfo userInfo, Boolean publicFlag, Boolean partyCodeFlag, Boolean roleFlag, boolean past) { logger.infoCode("I0001"); String partyCode = null; String roleCode = null; StringBuilder sb = new StringBuilder(); sb.append("SELECT"); sb.append(" A.EVENT_KEY"); sb.append(" , A.EVENT_TITLE"); sb.append(" , A.EVENT_SEND_DATE"); sb.append(" , A.EVENT_RECRUIT"); sb.append(" , A.EVENT_TELNO"); sb.append(" , A.PARTY_CODE"); sb.append(" , A.PARTY_NAME"); sb.append(" , A.EVENT_START_DATE"); sb.append(" , A.EVENT_PLACE"); sb.append(" , A.EVENT_MEMO"); sb.append(" , A.EVENT_UNIT"); sb.append(" , A.SUBJECT_INS_KBN"); sb.append(" , A.PUBLIC_FLAG"); sb.append(" , A.UPD_DATE"); sb.append(" , A.UPD_USER_KEY"); sb.append(" , ARRAY_TO_STRING(ARRAY_AGG(C.PARTY_NAME), ',') AS PARTY_NAME"); sb.append(" , ARRAY_TO_STRING(ARRAY_AGG(C.PARTY_NAME_EN), ',') AS PARTY_NAME_EN"); sb.append(" FROM"); sb.append(" EV_EVENT_TBL A "); sb.append(" INNER JOIN EV_EVENT_PUBLIC_TBL B "); sb.append(" ON A.EVENT_KEY = B.EVENT_KEY "); sb.append(" INNER JOIN MS_PARTY_TBL C "); sb.append(" ON B.PARTY_CODE = C.PARTY_CODE "); sb.append(" WHERE"); if (past) { sb.append(" CURRENT_DATE < A.EVENT_START_DATE "); } else { sb.append(" CURRENT_DATE >= A.EVENT_START_DATE "); sb.append(" AND CURRENT_DATE <= A.EVENT_SEND_DATE "); } if (publicFlag) { sb.append(" AND A.PUBLIC_FLAG = '1' "); } if (partyCodeFlag) { sb.append(" AND (B.PARTY_CODE = :partyCode "); sb.append(" OR"); sb.append(" A.PARTY_CODE = :partyCode )"); } if (roleFlag) { sb.append(" AND (B.ROLE = :role "); sb.append(" OR"); sb.append(" A.PARTY_CODE = :partyCode )"); } sb.append(" GROUP BY"); sb.append(" A.EVENT_KEY"); sb.append(" , A.EVENT_TITLE"); sb.append(" , A.EVENT_SEND_DATE"); sb.append(" , A.EVENT_RECRUIT"); sb.append(" , A.EVENT_TELNO"); sb.append(" , A.PARTY_CODE"); sb.append(" , A.PARTY_NAME"); sb.append(" , A.EVENT_START_DATE"); sb.append(" , A.EVENT_PLACE"); sb.append(" , A.EVENT_MEMO"); sb.append(" , A.EVENT_UNIT"); sb.append(" , A.SUBJECT_INS_KBN"); sb.append(" , A.PUBLIC_FLAG"); sb.append(" , A.UPD_DATE"); sb.append(" , A.UPD_USER_KEY"); sb.append(" ORDER BY"); sb.append(" A.EVENT_SEND_DATE DESC"); String sql = sb.toString(); Query query = entityManager.createNativeQuery(sql); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); if (partyCodeFlag) { query.setParameter("partyCode", userInfo.getTargetPartyCode()); } if (roleFlag) { query.setParameter("partyCode", userInfo.getTargetPartyCode()); query.setParameter("role", userInfo.getTargetRole()); } List<EventDto> list = new ArrayList<>(); List<Map> resultList = new ArrayList<>(); resultList = query.getResultList(); for (int i = 0; i < resultList.size(); i++) { EventDto dto = new EventDto(); dto = (EventDto) objectUtil.setMapCopyValue(dto, resultList.get(i)); list.add(dto); } logger.infoCode("I0002"); return list; }