Index: src/main/java/com/napa/pulse/dao/impl/ParametersDAOImpl.java =================================================================== diff -u -rf5689fd404435e7988594a73cbef4a452ce988e5 -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/dao/impl/ParametersDAOImpl.java (.../ParametersDAOImpl.java) (revision f5689fd404435e7988594a73cbef4a452ce988e5) +++ src/main/java/com/napa/pulse/dao/impl/ParametersDAOImpl.java (.../ParametersDAOImpl.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -641,7 +641,7 @@ messageHandler.sendIspChangedMessage(siteId, isp, getResponsibleUsers(siteId)); } - private List getResponsibleUsers ( int siteId ) { + public List getResponsibleUsers ( int siteId ) { String sql = "select distinct user_id from user_site_access x left join site_group_mapping y on x.access_id = site_group_id and SITE_OR_GROUP='G'" + "and x.site_or_group = 'S' where access_type = 'R' and access_id = ? or site_id = ?" + "union select distinct user_id from user_site_access x left join site_group_mapping y on x.access_id = site_group_id and ACCESS_TYPE='R'" Index: src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java =================================================================== diff -u -raeba56532d770671f94ea4703be479bc07cf13ba -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java (.../SessionDAOImpl.java) (revision aeba56532d770671f94ea4703be479bc07cf13ba) +++ src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java (.../SessionDAOImpl.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -2291,7 +2291,7 @@ @Override public List getFailedTransmissions ( User user ) { List transmissions = jdbcTemplate.query ( - "SELECT transmission_id AS transmissionId, session_id AS sessionId, " + "SELECT transmission_id AS transmissionId, session_id AS sessionId, t.site_id as siteId" + " CASE WHEN tso.TRANSMISSION_STATUS_CD IN ('MFR', 'MFP', 'MFL') OR tsr.TRANSMISSION_STATUS_CD IN ('MFR', 'MFP', 'MFL') THEN 'MIO' ELSE 'TAMS' END AS system, " + " CASE WHEN (tso.TRANSMISSION_STATUS_CD IN ('MFR', 'MFP', 'MFL') OR (tso.TRANSMISSION_STATUS_CD IN ('PP', 'S') and order_status_date < sysdate-1)) AND order_notification_date is null THEN 1 ELSE 0 END AS isOrder, " + " CASE WHEN (tsr.TRANSMISSION_STATUS_CD IN ('MFR', 'MFP', 'MFL') OR (tsr.TRANSMISSION_STATUS_CD IN ('PP', 'S') and return_status_date < sysdate -1)) AND return_notification_date is null THEN 1 ELSE 0 END AS isReturn, " @@ -2305,6 +2305,7 @@ FailedTransmission transmission = new FailedTransmission ( ); transmission.setTransmissionId ( rs.getInt ( "transmissionId" ) ); transmission.setSessionId ( rs.getInt ( "sessionId" ) ); + transmission.setSiteId (rs.getInt ( "siteId" ) ); transmission.setOrder ( rs.getInt ( "isOrder" ) == 1 ); transmission.setReturn ( rs.getInt ( "isReturn" ) == 1 ); transmission.setSystem ( rs.getString ( "system" ) ); Index: src/main/java/com/napa/pulse/dao/impl/UserDAOImpl.java =================================================================== diff -u -r425616995f25e4beb8e83e07237c92ff00ccd49d -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/dao/impl/UserDAOImpl.java (.../UserDAOImpl.java) (revision 425616995f25e4beb8e83e07237c92ff00ccd49d) +++ src/main/java/com/napa/pulse/dao/impl/UserDAOImpl.java (.../UserDAOImpl.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Repository public class UserDAOImpl implements UserDAO { @@ -21,6 +22,8 @@ @Autowired private PulseSystemRepository pulseSystemRepository; + @Autowired + private ParametersDAOImpl parametersDAO; @Autowired private JdbcTemplate jdbcTemplate; @@ -56,10 +59,10 @@ return user; } - + public User getUserByUserId(int userId) { User user = null; - + SqlRowSet rs = jdbcTemplate.queryForRowSet("select FIRST_NAME, LAST_NAME FROM pulse_user where USER_ID=?", userId); while(rs.next()) { user = new User(); @@ -68,7 +71,6 @@ } return user; } - @Override public boolean isSystemLocked() { return pulseSystemRepository.existsPulseSystemByFeatureTypeAndFeatureEnabled("PULSE_LOCKOUT_SPRING_BOOT", 1); @@ -101,5 +103,40 @@ } return users; } + public List getNotifyUsers ( List siteId ) { + String config = jdbcTemplate.queryForObject ( "select config_value from pulse_config where config_code = 'Alert for Finalization'" , String.class ); + List users = new ArrayList<> ( ); + String userIdList = ""; + for (Integer siteIds : siteId) { + List userIds = parametersDAO.getResponsibleUsers(siteIds); + if(userIds.size ()>0) { + userIdList = userIds.stream ( ) + .map ( i -> i.toString ( ) ) + .collect ( Collectors.joining ( "," ) ); + String sql = "select USER_ID, FIRST_NAME, LAST_NAME, ROLE_ID, USER_TYPE, LOGIN, LANGUAGE, " + + "CERTIFICATION_DT, CERTIFICATION_DT, COUNTRY_CODE, DEACTIVATED from pulse_user where role_id in (" + config + ") and user_id in (" + userIdList + ")"; + SqlRowSet rs = jdbcTemplate.queryForRowSet ( sql ); + while (rs.next ( )) { + User user = new User ( ); + + user.setUserId ( rs.getInt ( "USER_ID" ) ); + user.setFirstName ( rs.getString ( "FIRST_NAME" ) ); + user.setLastName ( rs.getString ( "LAST_NAME" ) ); + user.setRoleId ( rs.getInt ( "ROLE_ID" ) ); + user.setUserType ( rs.getString ( "USER_TYPE" ) ); + user.setLanguage ( rs.getString ( "LANGUAGE" ) ); + user.setDeactivated ( rs.getString ( "DEACTIVATED" ) ); + user.setLogin ( rs.getString ( "LOGIN" ) ); + + users.add ( user ); + } + }else{return null;} + + } + + return users; + } + + } \ No newline at end of file Index: src/main/java/com/napa/pulse/dao/interfaces/UserDAO.java =================================================================== diff -u -r04ca3521d39aed48c5849907503e4f9733b891e9 -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/dao/interfaces/UserDAO.java (.../UserDAO.java) (revision 04ca3521d39aed48c5849907503e4f9733b891e9) +++ src/main/java/com/napa/pulse/dao/interfaces/UserDAO.java (.../UserDAO.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -15,4 +15,6 @@ List getAllAdminUsers(); User getUserByUserId(int userId); + + List getNotifyUsers(List siteId ); } \ No newline at end of file Index: src/main/java/com/napa/pulse/entity/pulseui/FailedTransmission.java =================================================================== diff -u -r2e80f396c9f148c045cb5c736dc137f67b6c1ebe -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/entity/pulseui/FailedTransmission.java (.../FailedTransmission.java) (revision 2e80f396c9f148c045cb5c736dc137f67b6c1ebe) +++ src/main/java/com/napa/pulse/entity/pulseui/FailedTransmission.java (.../FailedTransmission.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -12,6 +12,17 @@ private boolean isReturn; private String system; + + public Integer getSiteId ( ) { + return siteId; + } + + public void setSiteId ( Integer siteId ) { + this.siteId = siteId; + } + + private Integer siteId; + public Integer getTransmissionId() { return transmissionId; } Index: src/main/java/com/napa/pulse/service/impl/UserServiceImpl.java =================================================================== diff -u -rbe92f77f11e0334ea9b3a6ad6df77288d58fbfee -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/service/impl/UserServiceImpl.java (.../UserServiceImpl.java) (revision be92f77f11e0334ea9b3a6ad6df77288d58fbfee) +++ src/main/java/com/napa/pulse/service/impl/UserServiceImpl.java (.../UserServiceImpl.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -52,4 +52,9 @@ return userDAO.getAllAdminUsers(); } + @Override + public List getNotifyUsers ( List siteId ) { + return userDAO.getNotifyUsers (siteId); + } + } \ No newline at end of file Index: src/main/java/com/napa/pulse/service/interfaces/UserService.java =================================================================== diff -u -ra189a7d62fb2ea4c9cdef16d4cbb8583a929d80b -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/service/interfaces/UserService.java (.../UserService.java) (revision a189a7d62fb2ea4c9cdef16d4cbb8583a929d80b) +++ src/main/java/com/napa/pulse/service/interfaces/UserService.java (.../UserService.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -16,4 +16,5 @@ List getAllAdminUsers(); + List getNotifyUsers ( List siteId ); } \ No newline at end of file Index: src/main/java/com/napa/pulse/utils/schedulers/NotifyFailedTransmissionScheduler.java =================================================================== diff -u -r94d62fc3367a950f14ff8df806d1d53127919320 -r4ae0b00cbed1a31a18e2574083f8f84a0490af7f --- src/main/java/com/napa/pulse/utils/schedulers/NotifyFailedTransmissionScheduler.java (.../NotifyFailedTransmissionScheduler.java) (revision 94d62fc3367a950f14ff8df806d1d53127919320) +++ src/main/java/com/napa/pulse/utils/schedulers/NotifyFailedTransmissionScheduler.java (.../NotifyFailedTransmissionScheduler.java) (revision 4ae0b00cbed1a31a18e2574083f8f84a0490af7f) @@ -23,6 +23,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -62,16 +63,16 @@ @Scheduled(cron = "${notify.failed.interval}") public void notifyFailedTransmission() throws Exception { LOGGER.info("Checking for failed transmissions"); - Integer[] adminUsers = null; + Integer[] Users = null; List transmissions = sessionService.getFailedTransmissions(user); for (FailedTransmission transmission : transmissions) { - if (adminUsers == null) { - adminUsers = userService.getAllAdminUsers().stream().map(User::getUserId) + if (Users == null) { + Users =userService.getNotifyUsers ( Collections.singletonList ( transmission.getSiteId ( ) ) ).stream().map(User::getUserId) .collect(Collectors.toList()) .toArray(new Integer[]{}); } - sendNotification(adminUsers, transmission); + sendNotification(Users, transmission); // update transmission so we don't repeat the notification on a subsequent run if (transmission.isOrder()) { jdbcTemplate.update( @@ -86,14 +87,13 @@ } } - private void sendNotification(Integer[] adminUsers, FailedTransmission transmission) { + private void sendNotification(Integer[] users, FailedTransmission transmission) { Messages message = new Messages(); message.setBroadcast(false); List sessions = sessionService.getSessionDetails(user, transmission.getSessionId()); - if (sessions.size() == 1) { SessionDetailsDTO session = sessions.get(0); - message.setUserIdArray(adminUsers); + message.setUserIdArray(users); Calendar calendar = Calendar.getInstance(); calendar.roll(Calendar.DATE, 30); message.setFromUser("0"); // the system user