Index: src/main/java/com/napa/pulse/controller/rest/SessionRestController.java =================================================================== diff -u -r6e664639dbd799fbeaf65977d9df0f187919503f -rfd14820db80bdbc924aa6ad712bcfa898edeb5c5 --- src/main/java/com/napa/pulse/controller/rest/SessionRestController.java (.../SessionRestController.java) (revision 6e664639dbd799fbeaf65977d9df0f187919503f) +++ src/main/java/com/napa/pulse/controller/rest/SessionRestController.java (.../SessionRestController.java) (revision fd14820db80bdbc924aa6ad712bcfa898edeb5c5) @@ -2009,6 +2009,10 @@ public String getMinMaxLeadTime() throws PulseException{ return gson.toJson(sessionService.getMinMaxLeadTime().getData()); } + @Track + @RequestMapping(value = "auth/sessions/flag", method = RequestMethod.GET) + public Boolean pulseDownTime() { + return sessionService.pulseDownTime(); + } - } Index: src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java =================================================================== diff -u -rb290e6cc7cf08087e4d173c7a98fdee5266125a8 -rfd14820db80bdbc924aa6ad712bcfa898edeb5c5 --- src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java (.../SessionDAOImpl.java) (revision b290e6cc7cf08087e4d173c7a98fdee5266125a8) +++ src/main/java/com/napa/pulse/dao/impl/SessionDAOImpl.java (.../SessionDAOImpl.java) (revision fd14820db80bdbc924aa6ad712bcfa898edeb5c5) @@ -31,6 +31,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.json.GsonJsonParser; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.BeanPropertyRowMapper; @@ -51,10 +52,7 @@ import java.math.BigDecimal; import java.net.URL; import java.sql.*; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.text.*; import java.util.Date; import java.util.List; import java.util.*; @@ -446,7 +444,7 @@ + "(case when b.SITE_TYPE_CODE='DC' then 1 else 0 end) as \"includesDCs\", DOLLAR_LIMIT as \"dollarLimit\", " + "(select TRIM(FIRST_NAME || ' ' || LAST_NAME) from pulse_user where user_id=TBL.FINALIZE_USER_ID) as \"finalizedBy\", " + "FINALIZE_DATE as \"finalizedDate\", FINALIZE_USER_ID as \"finalizedById\" , " - +" nvl(is_group_code,0) as \"isGroupCode\" " + + " nvl(is_group_code,0) as \"isGroupCode\" " + " FROM PULSE_SESSION TBL " + " INNER JOIN SESSION_STATUS STATUS ON STATUS.STATUS_ID = TBL.STATUS_ID " + " INNER JOIN PULSE_USER PU ON PU.USER_ID = TBL.CREATED_USER_ID " @@ -477,7 +475,7 @@ sessionDetailsDTO.setIncludeHubSpokeOrderOption ( rs.getString ( "includeHSOrder" ) == null ? null : rs.getString ( "includeHSOrder" ) ); sessionDetailsDTO.setIncludeHubSpokeReturnOption ( rs.getString ( "includeHSReturn" ) == null ? null : rs.getString ( "includeHSReturn" ) ); sessionDetailsDTO.setDisplayQty1 ( rs.getString ( "displayQty1" ) ); - sessionDetailsDTO.setGroupCode(rs.getBoolean("isGroupCode")); + sessionDetailsDTO.setGroupCode ( rs.getBoolean ( "isGroupCode" ) ); Date fd = rs.getDate ( "finalizedDate" ); if ( fd != null ) { sessionDetailsDTO.setFinalizedDate ( sdf.format ( fd ) ); @@ -528,7 +526,7 @@ Boolean includeSpecials , Boolean includeObsoletes , Boolean includeOverstocks , Boolean includeSupersede , Boolean includeKeylinesOrders , Boolean includeKeylinesReturns , Boolean includeLessThanStdPkg , Boolean useInvestmentCollections , Boolean provideStoreDepth , Boolean includeSoldNotStocked , Boolean includeNewNumbers , Boolean orderAllSkus , - Boolean returnAllSKUs, Integer dollarLimit , String comment , Integer siteGroupId , Integer[] sitesArray , + Boolean returnAllSKUs , Integer dollarLimit , String comment , Integer siteGroupId , Integer[] sitesArray , ProductGroupOrderReturn[] productGroupsArray , ProductGroupOrderReturn[] groupCodeArray , Integer[] fleetGroupsIds , CustomProductGroup customProductGroup , CustomGroupCodeProductGroup customGroupCodeProductGroupObj , Boolean isGroupCode , String savedGroup , String userAccessSites , Integer[] skuArray , ProductLinesData[] productLineIdArray , ProductLinesData[] allProductLines , Integer includeOrders , Integer includeReturns , Date expirationDate , String includeDaysCount , @@ -537,7 +535,7 @@ Boolean applicationPartsOnly ) throws Exception { return createNewSession ( user , perCarOrder , includeFleets , includeSystems , includeSpecials , includeObsoletes , includeOverstocks , includeSupersede , includeKeylinesOrders , includeKeylinesReturns , includeLessThanStdPkg , - useInvestmentCollections , provideStoreDepth , includeSoldNotStocked , includeNewNumbers , orderAllSkus , returnAllSKUs, + useInvestmentCollections , provideStoreDepth , includeSoldNotStocked , includeNewNumbers , orderAllSkus , returnAllSKUs , dollarLimit , comment , siteGroupId , "Custom Group" , sitesArray , productGroupsArray , groupCodeArray , fleetGroupsIds , customProductGroup , customGroupCodeProductGroupObj , isGroupCode , savedGroup , userAccessSites , skuArray , productLineIdArray , allProductLines , includeOrders , includeReturns , expirationDate , includeDaysCount , perCarMinMaxValue , salesHistoryValue , displayQty , sessionType , @@ -547,7 +545,7 @@ private BigDecimal createNewSession ( User user , Boolean perCarOrder , Boolean includeFleets , Boolean includeSystems , Boolean includeSpecials , Boolean includeObsoletes , Boolean includeOverstocks , Boolean includeSupersede , Boolean includeKeylinesOrders , Boolean includeKeylinesReturns , Boolean includeLessThanStdPkg , Boolean useInvestmentCollections , - Boolean provideStoreDepth , Boolean includeSoldNotStocked , Boolean includeNewNumbers , Boolean orderAllSkus , Boolean returnAllSKUs, + Boolean provideStoreDepth , Boolean includeSoldNotStocked , Boolean includeNewNumbers , Boolean orderAllSkus , Boolean returnAllSKUs , Integer dollarLimit , String comment , Integer siteGroupId , String siteGroupName , Integer[] sitesArray , ProductGroupOrderReturn[] productGroupsArray , ProductGroupOrderReturn[] groupCodeArray , Integer[] fleetGroupsIds , CustomProductGroup customProductGroup , CustomGroupCodeProductGroup customGroupCodeProductGroupObj , Boolean isGroupCode , String savedGroup , String userAccessSites , Integer[] skuArray , ProductLinesData[] productLineIdArray , ProductLinesData[] allProductLines , @@ -556,148 +554,147 @@ String includeHubSpokeReturnOption , Long createdFromSessionId , Boolean applicationPartsOnly ) throws Exception { boolean shouldBeDeferred = false; - if (user.getAccessItemIds() != null - && user.getAccessItemIds().contains(AccessItem.DELAY_SESSION_CREATION.getNumVal())) { - if (sitesArray != null) { + if ( user.getAccessItemIds ( ) != null + && user.getAccessItemIds ( ).contains ( AccessItem.DELAY_SESSION_CREATION.getNumVal ( ) ) ) { + if ( sitesArray != null ) { shouldBeDeferred = sitesArray.length > deferSiteLimit; - } else if (siteGroupId != null) { - shouldBeDeferred = siteGroupDAO.getSiteCount(siteGroupId, user, userAccessSites, sessionType) > deferSiteLimit; + } else if ( siteGroupId != null ) { + shouldBeDeferred = siteGroupDAO.getSiteCount ( siteGroupId , user , userAccessSites , sessionType ) > deferSiteLimit; } } boolean deferCreation = shouldBeDeferred; - long start = System.currentTimeMillis(); + long start = System.currentTimeMillis ( ); - NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate); + NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate ( jdbcTemplate ); int perCarMinMaxCode = 0; - if (("MM").equals(sessionType) && perCarMinMaxValue == 1) { - Integer val = jdbcTemplate.queryForObject("select SETTING_ID from MIN_MAX_SESSION_SETTING where SETTING_CODE = 'MINGTPERCAR' AND SETTING_TYPE = 'MIN' ", Integer.class); + if ( ( "MM" ).equals ( sessionType ) && perCarMinMaxValue == 1 ) { + Integer val = jdbcTemplate.queryForObject ( "select SETTING_ID from MIN_MAX_SESSION_SETTING where SETTING_CODE = 'MINGTPERCAR' AND SETTING_TYPE = 'MIN' " , Integer.class ); perCarMinMaxCode = val != null ? val : 0; } - if (isGroupCode == null) + if ( isGroupCode == null ) isGroupCode = false; Boolean finalIsGroupCode = isGroupCode; - String salesSettingCode = ("MM").equals(sessionType) ? jdbcTemplate.queryForObject("select SETTING_CODE from MIN_MAX_SESSION_SETTING where SETTING_TYPE = 'Sales' and SETTING_ID = " + salesHistoryValue, String.class) : null; + String salesSettingCode = ( "MM" ).equals ( sessionType ) ? jdbcTemplate.queryForObject ( "select SETTING_CODE from MIN_MAX_SESSION_SETTING where SETTING_TYPE = 'Sales' and SETTING_ID = " + salesHistoryValue , String.class ) : null; - KeyHolder keyHolder = new GeneratedKeyHolder(); + KeyHolder keyHolder = new GeneratedKeyHolder ( ); int finalPerCarMinMaxCode = perCarMinMaxCode; Boolean finalIsGroupCode1 = isGroupCode; try { - LOGGER.info("Insert sql parameters are printed" + " deferCreation " + deferCreation +" user " + user +" comment "+ comment+" savedGroup " + savedGroup+" includeOverstocks " + includeOverstocks +" includeSpecials " + includeSpecials - +" includeObsoletes " + includeObsoletes+" includeOrders " + includeOrders+" includeReturns " + includeReturns+" includeLessThanStdPkg " + includeLessThanStdPkg+" sessionType " + sessionType+" expirationDate " + expirationDate+" includeFleets " + includeFleets+" includeSystems " + includeSystems+" useInvestmentCollections " + + LOGGER.info ( "Insert sql parameters are printed" + " deferCreation " + deferCreation + " user " + user + " comment " + comment + " savedGroup " + savedGroup + " includeOverstocks " + includeOverstocks + " includeSpecials " + includeSpecials + + " includeObsoletes " + includeObsoletes + " includeOrders " + includeOrders + " includeReturns " + includeReturns + " includeLessThanStdPkg " + includeLessThanStdPkg + " sessionType " + sessionType + " expirationDate " + expirationDate + " includeFleets " + includeFleets + " includeSystems " + includeSystems + " useInvestmentCollections " + useInvestmentCollections + " perCarOrder " + perCarOrder + " provideStoreDepth " + provideStoreDepth + " createdFromSessionId " + createdFromSessionId + "includeSoldNotStocked " + includeSoldNotStocked + " includeNewNumbers " + includeNewNumbers - +" orderAllSkus " + orderAllSkus+" dollarLimit " + dollarLimit+" includeDaysCount " + includeDaysCount+" salesSettingCode " + salesSettingCode+" includeHubSpokeOrderOption " + includeHubSpokeOrderOption+" includeHubSpokeReturnOption " + includeHubSpokeReturnOption+" applicationPartsOnly " + applicationPartsOnly+" displayQty " - + displayQty +" finalIsGroupCode " + finalIsGroupCode+" salesSettingCode " + salesSettingCode+" includeSupersede " + includeSupersede+" finalIsGroupCode1 " + finalIsGroupCode1+" returnAllSKUs " +returnAllSKUs ); + + " orderAllSkus " + orderAllSkus + " dollarLimit " + dollarLimit + " includeDaysCount " + includeDaysCount + " salesSettingCode " + salesSettingCode + " includeHubSpokeOrderOption " + includeHubSpokeOrderOption + " includeHubSpokeReturnOption " + includeHubSpokeReturnOption + " applicationPartsOnly " + applicationPartsOnly + " displayQty " + + displayQty + " finalIsGroupCode " + finalIsGroupCode + " salesSettingCode " + salesSettingCode + " includeSupersede " + includeSupersede + " finalIsGroupCode1 " + finalIsGroupCode1 + " returnAllSKUs " + returnAllSKUs ); + int row = jdbcTemplate.update ( connection -> { - int row = jdbcTemplate.update(connection -> { - - PreparedStatement ps = connection.prepareStatement( - " INSERT INTO PULSE_SESSION " + PreparedStatement ps = connection.prepareStatement ( + " INSERT INTO PULSE_SESSION " + "(STATUS_ID, CREATED_DATE, CREATED_USER_ID, SESSION_COMMENT, LAST_MODIFIED_DATE, SESSION_DESC, " + "INCLUDE_OVERSTOCK, INCLUDE_SPECIALS, INCLUDE_OBSOLETES, INCLUDE_ORDERS, INCLUDE_RETURNS, INCLUDE_LT_STD_PKG, SESSION_TYPE_CODE, " + "CREATED_ROLE_ID, EXPIRATION_DATE, INCLUDE_FLEETS, INCLUDE_SYSTEMS, USE_INV_COLL, PER_CAR_ORDER, PROVIDE_STORE_DEPTH, " + "CREATED_FROM_SESSION_ID, INCLUDE_SALES_DEMAND, INCLUDE_NEW_NUMBERS, INCLUDE_ORDER_ALL,DOLLAR_LIMIT,NEW_NUMBER_DAYS,MIN_MAX_SALES_SETTING,INCLUDE_HS_ORDER,INCLUDE_HS_RETURN, APPLICATION_PARTS_ONLY, EXCLUDE_DISPLAY_ITEM,INCLUDE_SELL_THRU,IS_GROUP_CODE,INCLUDE_RETURN_ALL) " + "VALUES (?, sysdate, ?, ?, sysdate, ?, " - + "?, ?, ?, ?, ?, ?, ?, ?, least(?, sysdate+30), ?, ?, ?, ?, ?, ?, ?, ?,?, ?,?,?,?,?,?,?,?,?,?)" , - new String[]{"SESSION_ID"} ); - ps.setInt(1, deferCreation ? 14 : 2); - ps.setInt(2, user.getUserId()); - ps.setString(3, comment); - ps.setString(4, savedGroup); - ps.setBoolean(5, includeOverstocks); - ps.setBoolean(6, includeSpecials); - ps.setBoolean(7, includeObsoletes); - ps.setInt(8, includeOrders); - ps.setInt(9, includeReturns); - ps.setBoolean(10, includeLessThanStdPkg); - ps.setString(11, sessionType); - ps.setInt(12, user.getRoleId()); - ps.setTimestamp(13, new Timestamp(expirationDate.getTime())); - ps.setBoolean(14, includeFleets); - ps.setBoolean(15, includeSystems); - ps.setBoolean(16, useInvestmentCollections); - ps.setBoolean(17, perCarOrder); - ps.setBoolean(18, provideStoreDepth); - if (createdFromSessionId == null) { - ps.setNull(19, Types.NULL); + + "?, ?, ?, ?, ?, ?, ?, ?, least(?, sysdate+30), ?, ?, ?, ?, ?, ?, ?, ?,?, ?,?,?,?,?,?,?,?,?,?)" , + new String[]{"SESSION_ID"} ); + ps.setInt ( 1 , deferCreation ? 14 : 2 ); + ps.setInt ( 2 , user.getUserId ( ) ); + ps.setString ( 3 , comment ); + ps.setString ( 4 , savedGroup ); + ps.setBoolean ( 5 , includeOverstocks ); + ps.setBoolean ( 6 , includeSpecials ); + ps.setBoolean ( 7 , includeObsoletes ); + ps.setInt ( 8 , includeOrders ); + ps.setInt ( 9 , includeReturns ); + ps.setBoolean ( 10 , includeLessThanStdPkg ); + ps.setString ( 11 , sessionType ); + ps.setInt ( 12 , user.getRoleId ( ) ); + ps.setTimestamp ( 13 , new Timestamp ( expirationDate.getTime ( ) ) ); + ps.setBoolean ( 14 , includeFleets ); + ps.setBoolean ( 15 , includeSystems ); + ps.setBoolean ( 16 , useInvestmentCollections ); + ps.setBoolean ( 17 , perCarOrder ); + ps.setBoolean ( 18 , provideStoreDepth ); + if ( createdFromSessionId == null ) { + ps.setNull ( 19 , Types.NULL ); } else { - ps.setLong(19, createdFromSessionId); + ps.setLong ( 19 , createdFromSessionId ); } - ps.setBoolean(20, includeSoldNotStocked); - ps.setBoolean(21, includeNewNumbers); - ps.setBoolean(22, orderAllSkus); + ps.setBoolean ( 20 , includeSoldNotStocked ); + ps.setBoolean ( 21 , includeNewNumbers ); + ps.setBoolean ( 22 , orderAllSkus ); - ps.setObject(23, dollarLimit); - ps.setString(24, includeDaysCount); + ps.setObject ( 23 , dollarLimit ); + ps.setString ( 24 , includeDaysCount ); //ps.setInt(25, finalPerCarMinMaxCode); - ps.setString(25, salesSettingCode); - ps.setString(26, includeHubSpokeOrderOption); - ps.setString(27, includeHubSpokeReturnOption); - ps.setBoolean(28, applicationPartsOnly); - ps.setString(29, displayQty); - ps.setBoolean(30, finalIsGroupCode); - ps.setString(25, salesSettingCode); - ps.setString(26, includeHubSpokeOrderOption); - ps.setString(27, includeHubSpokeReturnOption); - ps.setBoolean(28, applicationPartsOnly); - ps.setString(29, displayQty); + ps.setString ( 25 , salesSettingCode ); + ps.setString ( 26 , includeHubSpokeOrderOption ); + ps.setString ( 27 , includeHubSpokeReturnOption ); + ps.setBoolean ( 28 , applicationPartsOnly ); + ps.setString ( 29 , displayQty ); + ps.setBoolean ( 30 , finalIsGroupCode ); + ps.setString ( 25 , salesSettingCode ); + ps.setString ( 26 , includeHubSpokeOrderOption ); + ps.setString ( 27 , includeHubSpokeReturnOption ); + ps.setBoolean ( 28 , applicationPartsOnly ); + ps.setString ( 29 , displayQty ); // ps.setBoolean ( 30,includeSupersede ); - if (includeSupersede == null) { - ps.setNull(30, Types.NULL); + if ( includeSupersede == null ) { + ps.setNull ( 30 , Types.NULL ); } else { - ps.setBoolean(30, includeSupersede); + ps.setBoolean ( 30 , includeSupersede ); } - ps.setBoolean(31, finalIsGroupCode1); - ps.setBoolean(32, returnAllSKUs); + ps.setBoolean ( 31 , finalIsGroupCode1 ); + ps.setBoolean ( 32 , returnAllSKUs ); return ps; - }, keyHolder); + } , keyHolder ); - LOGGER.info("Create new session| the row is created " + row); + LOGGER.info ( "Create new session| the row is created " + row ); - if (row > 0) { + if ( row > 0 ) { - final BigDecimal sessionId = (BigDecimal) keyHolder.getKey(); + final BigDecimal sessionId = (BigDecimal) keyHolder.getKey ( ); - LOGGER.info("Create new session|keyholder for sessionId " + sessionId + "keyHolder " + keyHolder); + LOGGER.info ( "Create new session|keyholder for sessionId " + sessionId + "keyHolder " + keyHolder ); try { - if (sitesArray != null && sitesArray.length > 0) { - MapSqlParameterSource sessionSitesParameters = new MapSqlParameterSource(); - sessionSitesParameters.addValue("sessionId", sessionId); - sessionSitesParameters.addValue("list", new HashSet<>(Arrays.asList(sitesArray))); - sessionSitesParameters.addValue("siteGroupName", siteGroupName); + if ( sitesArray != null && sitesArray.length > 0 ) { + MapSqlParameterSource sessionSitesParameters = new MapSqlParameterSource ( ); + sessionSitesParameters.addValue ( "sessionId" , sessionId ); + sessionSitesParameters.addValue ( "list" , new HashSet<> ( Arrays.asList ( sitesArray ) ) ); + sessionSitesParameters.addValue ( "siteGroupName" , siteGroupName ); namedParameterJdbcTemplate - .update("INSERT INTO SESSION_SITE (SESSION_ID, SITE_GROUP_NAME, SITE_ID) SELECT :sessionId, :siteGroupName, SITE_ID FROM SITE " - + "WHERE SITE_ID IN (:list) and ACTIVE_FLAG = 'Y' ", sessionSitesParameters); + .update ( "INSERT INTO SESSION_SITE (SESSION_ID, SITE_GROUP_NAME, SITE_ID) SELECT :sessionId, :siteGroupName, SITE_ID FROM SITE " + + "WHERE SITE_ID IN (:list) and ACTIVE_FLAG = 'Y' " , sessionSitesParameters ); } - if (siteGroupId != null) { - MapSqlParameterSource sessionSiteGroupsParameters = new MapSqlParameterSource(); - sessionSiteGroupsParameters.addValue("sessionId", sessionId); - sessionSiteGroupsParameters.addValue("siteGroupId", siteGroupId); + if ( siteGroupId != null ) { + MapSqlParameterSource sessionSiteGroupsParameters = new MapSqlParameterSource ( ); + sessionSiteGroupsParameters.addValue ( "sessionId" , sessionId ); + sessionSiteGroupsParameters.addValue ( "siteGroupId" , siteGroupId ); String jasStoreOnly = ""; - if (("MM").equals(sessionType) || ("minMax").equals(sessionType)) + if ( ( "MM" ).equals ( sessionType ) || ( "minMax" ).equals ( sessionType ) ) jasStoreOnly = " AND S.JAS_STORE = 'Y' "; - if (user.getRoleId() == ROLE.ADMIN.getNumVal() || user.getRoleId() == ROLE.XO.getNumVal()) { - namedParameterJdbcTemplate.update( + if ( user.getRoleId ( ) == ROLE.ADMIN.getNumVal ( ) || user.getRoleId ( ) == ROLE.XO.getNumVal ( ) ) { + namedParameterJdbcTemplate.update ( "MERGE INTO SESSION_SITE SS " + " USING (SELECT DISTINCT :sessionId as session_id, SGM.SITE_ID, sg.SITE_GROUP_NAME FROM SITE_GROUP_MAPPING SGM, SITE S, SITE_GROUP sg " + " WHERE sg.SITE_GROUP_ID = SGM.SITE_GROUP_ID and SGM.SITE_ID = S.SITE_ID AND sg.SITE_GROUP_ID = :siteGroupId AND S.ACTIVE_FLAG = 'Y' " + jasStoreOnly + ") B " + " ON (SS.SESSION_ID = B.SESSION_ID AND SS.SITE_ID = B.SITE_ID) " - + " WHEN NOT MATCHED THEN INSERT (SS.SESSION_ID, SS.SITE_ID, SS.SITE_GROUP_NAME) VALUES (B.SESSION_ID, B.SITE_ID, B.SITE_GROUP_NAME) ", - sessionSiteGroupsParameters); + + " WHEN NOT MATCHED THEN INSERT (SS.SESSION_ID, SS.SITE_ID, SS.SITE_GROUP_NAME) VALUES (B.SESSION_ID, B.SITE_ID, B.SITE_GROUP_NAME) " , + sessionSiteGroupsParameters ); } else { String sql = "MERGE INTO SESSION_SITE SS " + " USING (SELECT DISTINCT :sessionId as session_id, sgm.SITE_ID, sg.SITE_GROUP_NAME FROM SITE_GROUP_MAPPING SGM, SITE S, SITE_GROUP sg " + " WHERE sg.SITE_GROUP_ID = SGM.SITE_GROUP_ID and sgm.site_id = s.site_id " + jasStoreOnly; - if (userAccessSites.length() > 0) { + if ( userAccessSites.length ( ) > 0 ) { sql += "and (sgm.SITE_ID,0) in (" + userAccessSites + ") "; } else { sql += "and (sgm.SITE_ID,0) in ((-999,0)) "; @@ -706,100 +703,100 @@ sql += "and sg.SITE_GROUP_ID = :siteGroupId and s.active_flag = 'Y') B " + " ON (SS.SESSION_ID = B.SESSION_ID AND SS.SITE_ID = B.SITE_ID) " + " WHEN NOT MATCHED THEN INSERT (SS.SESSION_ID, SS.SITE_ID, SS.SITE_GROUP_NAME) VALUES (B.SESSION_ID, B.SITE_ID, B.SITE_GROUP_NAME) "; - sessionSiteGroupsParameters.addValue("userId", user.getUserId()); - namedParameterJdbcTemplate.update(sql, sessionSiteGroupsParameters); + sessionSiteGroupsParameters.addValue ( "userId" , user.getUserId ( ) ); + namedParameterJdbcTemplate.update ( sql , sessionSiteGroupsParameters ); } } - if (includeKeylinesOrders || includeKeylinesReturns && !("MM").equals(sessionType)) { - jdbcTemplate.update( + if ( includeKeylinesOrders || includeKeylinesReturns && ! ( "MM" ).equals ( sessionType ) ) { + jdbcTemplate.update ( "insert into session_hierarchy " + " (select distinct session_id, hierarchy_id, ?, ?, null from session_site ss, keyline k, keyline_hierarchy kh " - + " where ss.session_id = ? and ss.site_id = k.SITE_ID and kh.KEYLINE_ID = k.KEYLINE_ID)", - includeKeylinesReturns, includeKeylinesOrders, sessionId); + + " where ss.session_id = ? and ss.site_id = k.SITE_ID and kh.KEYLINE_ID = k.KEYLINE_ID)" , + includeKeylinesReturns , includeKeylinesOrders , sessionId ); - jdbcTemplate.update( + jdbcTemplate.update ( "INSERT INTO SESSION_HIERARCHY_DETAIL (SESSION_ID, HIERARCHY_ID, " + " INCLUDE_RETURN, INCLUDE_ORDER, PRODUCT_GROUP_NAME, PRODUCT_GROUP_ID) " + " (select session_id, hierarchy_id, include_return, include_order, 'Key Lines', ? " - + " from SESSION_HIERARCHY where session_id = ?) ", - PRODUCT_GROUP.KEY_LINE.getNumVal(), sessionId); + + " from SESSION_HIERARCHY where session_id = ?) " , + PRODUCT_GROUP.KEY_LINE.getNumVal ( ) , sessionId ); } - if (("SC").equals(sessionType)) { + if ( ( "SC" ).equals ( sessionType ) ) { List siteIds = null; - if (sitesArray != null) { - siteIds = Arrays.stream(sitesArray).collect(Collectors.toList()); + if ( sitesArray != null ) { + siteIds = Arrays.stream ( sitesArray ).collect ( Collectors.toList ( ) ); } else { - siteIds = jdbcTemplate.query("SELECT SITE_ID FROM SITE_GROUP_MAPPING WHERE SITE_GROUP_ID = ?", - new IntegerRowMapper(), siteGroupId); + siteIds = jdbcTemplate.query ( "SELECT SITE_ID FROM SITE_GROUP_MAPPING WHERE SITE_GROUP_ID = ?" , + new IntegerRowMapper ( ) , siteGroupId ); } String flagList = "displayQty,firstStockDate,keepLock,lastSaleDate,lostSaleQty,minMaxQty,salesQty,salesOccurrences"; - String[] flagsToClear = flagList.split(","); - adminService.clearFlags(user.getUserId(), siteIds, Arrays.asList(flagsToClear)); + String[] flagsToClear = flagList.split ( "," ); + adminService.clearFlags ( user.getUserId ( ) , siteIds , Arrays.asList ( flagsToClear ) ); } - if (customProductGroup != null && !("MM").equals(sessionType)) { - String[] hierarchyIds = customProductGroup.getHierarchyIds(); - if (hierarchyIds != null) { - StringBuilder list = new StringBuilder(); - List hierarchyList = new ArrayList<>(); + if ( customProductGroup != null && ! ( "MM" ).equals ( sessionType ) ) { + String[] hierarchyIds = customProductGroup.getHierarchyIds ( ); + if ( hierarchyIds != null ) { + StringBuilder list = new StringBuilder ( ); + List hierarchyList = new ArrayList<> ( ); for (String j : hierarchyIds) { - list.append("(1,").append(j.contains("s_") ? j.substring("s_".length()) : j).append("),"); + list.append ( "(1," ).append ( j.contains ( "s_" ) ? j.substring ( "s_".length ( ) ) : j ).append ( ")," ); - if (j.contains("s_")) { - hierarchyList.add( - new ProductGroupHierarchy(Integer.valueOf(j.substring("s_".length())), true)); + if ( j.contains ( "s_" ) ) { + hierarchyList.add ( + new ProductGroupHierarchy ( Integer.valueOf ( j.substring ( "s_".length ( ) ) ) , true ) ); } else { - hierarchyList.add(new ProductGroupHierarchy(Integer.valueOf(j), false)); + hierarchyList.add ( new ProductGroupHierarchy ( Integer.valueOf ( j ) , false ) ); } } - list.append("(1,-1)"); + list.append ( "(1,-1)" ); - jdbcTemplate.update("MERGE INTO SESSION_HIERARCHY SH " + jdbcTemplate.update ( "MERGE INTO SESSION_HIERARCHY SH " + " USING (SELECT ? as session_id, HIERARCHY_ID, ? AS INCLUDE_RETURN, ? AS INCLUDE_ORDER " - + " FROM PRODUCT_HIERARCHY WHERE (1,HIERARCHY_ID) IN (" + list.toString() + ")) B " + + " FROM PRODUCT_HIERARCHY WHERE (1,HIERARCHY_ID) IN (" + list.toString ( ) + ")) B " + " ON (SH.SESSION_ID = B.SESSION_ID AND SH.HIERARCHY_ID = B.HIERARCHY_ID) " + " WHEN NOT MATCHED THEN INSERT (SH.SESSION_ID, SH.HIERARCHY_ID, SH.INCLUDE_RETURN, SH.INCLUDE_ORDER) " + " VALUES (B.SESSION_ID, B.HIERARCHY_ID, B.INCLUDE_RETURN, B.INCLUDE_ORDER) " + " WHEN MATCHED THEN UPDATE SET " + " SH.INCLUDE_RETURN = GREATEST(B.INCLUDE_RETURN,SH.INCLUDE_RETURN) , " - + " SH.INCLUDE_ORDER = GREATEST(B.INCLUDE_ORDER,SH.INCLUDE_ORDER) ", + + " SH.INCLUDE_ORDER = GREATEST(B.INCLUDE_ORDER,SH.INCLUDE_ORDER) " , ps -> { - ps.setBigDecimal(1, sessionId); - ps.setBoolean(2, customProductGroup.getReturns()); - ps.setBoolean(3, customProductGroup.getOrders()); - }); + ps.setBigDecimal ( 1 , sessionId ); + ps.setBoolean ( 2 , customProductGroup.getReturns ( ) ); + ps.setBoolean ( 3 , customProductGroup.getOrders ( ) ); + } ); // inserting details into session_hierarchy_details to // show it in session view // page - jdbcTemplate.batchUpdate( + jdbcTemplate.batchUpdate ( "INSERT INTO SESSION_HIERARCHY_DETAIL (SESSION_ID, HIERARCHY_ID, " + "INCLUDE_RETURN, INCLUDE_ORDER, PRODUCT_GROUP_NAME, PRODUCT_GROUP_ID, IS_SELECTED) VALUES " - + "(?,?,?,?, 'Custom Group', (select PRODUCT_GROUP_ID from PRODUCT_GROUP where lower(GROUP_NAME) = 'custom group'), ?)", - new BatchPreparedStatementSetter() { + + "(?,?,?,?, 'Custom Group', (select PRODUCT_GROUP_ID from PRODUCT_GROUP where lower(GROUP_NAME) = 'custom group'), ?)" , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - ProductGroupHierarchy h = hierarchyList.get(i); - ps.setBigDecimal(1, sessionId); - ps.setInt(2, h.getHierarchyId()); - ps.setBoolean(3, customProductGroup.getReturns()); - ps.setBoolean(4, customProductGroup.getOrders()); - ps.setBoolean(5, h.getIsSelected()); + public void setValues ( PreparedStatement ps , int i ) throws SQLException { + ProductGroupHierarchy h = hierarchyList.get ( i ); + ps.setBigDecimal ( 1 , sessionId ); + ps.setInt ( 2 , h.getHierarchyId ( ) ); + ps.setBoolean ( 3 , customProductGroup.getReturns ( ) ); + ps.setBoolean ( 4 , customProductGroup.getOrders ( ) ); + ps.setBoolean ( 5 , h.getIsSelected ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return hierarchyIds.length; } - }); + } ); } } - if (productGroupsArray != null && productGroupsArray.length > 0 && !("MM").equals(sessionType)) { - jdbcTemplate.batchUpdate( + if ( productGroupsArray != null && productGroupsArray.length > 0 && ! ( "MM" ).equals ( sessionType ) ) { + jdbcTemplate.batchUpdate ( "MERGE INTO SESSION_HIERARCHY SH " + " USING (SELECT ? as SESSION_ID, HIERARCHY_ID, " + " ? AS INCLUDE_RETURN, ? AS INCLUDE_ORDER " + " FROM PRODUCT_GROUP_MAPPING PGM " + " WHERE PGM.PRODUCT_GROUP_ID = ?) B " @@ -808,68 +805,68 @@ + " VALUES (B.SESSION_ID, B.HIERARCHY_ID, B.INCLUDE_RETURN, B.INCLUDE_ORDER)" + " WHEN MATCHED THEN UPDATE SET " + " SH.INCLUDE_RETURN = GREATEST(B.INCLUDE_RETURN,SH.INCLUDE_RETURN) , " - + " SH.INCLUDE_ORDER = GREATEST(B.INCLUDE_ORDER,SH.INCLUDE_ORDER) ", - new BatchPreparedStatementSetter() { + + " SH.INCLUDE_ORDER = GREATEST(B.INCLUDE_ORDER,SH.INCLUDE_ORDER) " , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { ProductGroupOrderReturn pgor = productGroupsArray[i]; - ps.setBigDecimal(1, sessionId); - ps.setBoolean(2, pgor.getReturns()); - ps.setBoolean(3, pgor.getOrders()); - ps.setInt(4, pgor.getProductGroupId()); + ps.setBigDecimal ( 1 , sessionId ); + ps.setBoolean ( 2 , pgor.getReturns ( ) ); + ps.setBoolean ( 3 , pgor.getOrders ( ) ); + ps.setInt ( 4 , pgor.getProductGroupId ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return productGroupsArray.length; } - }); + } ); // inserting details into session_hierarchy_details to show // it in session view // page for (ProductGroupOrderReturn pgor : productGroupsArray) { - jdbcTemplate.update( + jdbcTemplate.update ( "INSERT INTO SESSION_HIERARCHY_DETAIL (SESSION_ID, HIERARCHY_ID, INCLUDE_RETURN, " + " INCLUDE_ORDER, PRODUCT_GROUP_NAME, PRODUCT_GROUP_ID) " + " (SELECT ?, HIERARCHY_ID, ?, ?, GROUP_NAME, PGM.PRODUCT_GROUP_ID FROM " + " PRODUCT_GROUP_MAPPING PGM, PRODUCT_GROUP PG " - + " WHERE PG.PRODUCT_GROUP_ID = PGM.PRODUCT_GROUP_ID AND PG.PRODUCT_GROUP_ID = ?)", - sessionId, pgor.getReturns(), pgor.getOrders(), pgor.getProductGroupId()); + + " WHERE PG.PRODUCT_GROUP_ID = PGM.PRODUCT_GROUP_ID AND PG.PRODUCT_GROUP_ID = ?)" , + sessionId , pgor.getReturns ( ) , pgor.getOrders ( ) , pgor.getProductGroupId ( ) ); } } - if (customGroupCodeProductGroupObj != null && !("MM").equals(sessionType) && isGroupCode) { - List newListOfGroupCodes = customGroupCodeProductGroupObj.getGroupCodes(); - jdbcTemplate.update("INSERT INTO SESSION_GROUP_CODE_DETAIL (SESSION_ID,INCLUDE_RETURN,INCLUDE_ORDER,PRODUCT_GROUP_NAME,PRODUCT_GROUP_ID)" + - " VALUES (" + sessionId + "," + includeReturns + "," + includeOrders + ",'CustomGroup Codes',-1)"); + if ( customGroupCodeProductGroupObj != null && ! ( "MM" ).equals ( sessionType ) && isGroupCode ) { + List newListOfGroupCodes = customGroupCodeProductGroupObj.getGroupCodes ( ); + jdbcTemplate.update ( "INSERT INTO SESSION_GROUP_CODE_DETAIL (SESSION_ID,INCLUDE_RETURN,INCLUDE_ORDER,PRODUCT_GROUP_NAME,PRODUCT_GROUP_ID)" + + " VALUES (" + sessionId + "," + includeReturns + "," + includeOrders + ",'CustomGroup Codes',-1)" ); - jdbcTemplate.batchUpdate("MERGE INTO SESSION_GROUP_CODE SGC USING " + + jdbcTemplate.batchUpdate ( "MERGE INTO SESSION_GROUP_CODE SGC USING " + "(SELECT ? AS SESSION_ID, ? AS GROUP_CODE ,? AS FIELD_ABBR FROM DUAL) A " + "ON (SGC.SESSION_ID=A.SESSION_ID AND SGC.FIELD_ABBR=A.FIELD_ABBR AND SGC.GROUP_CODE=A.GROUP_CODE) " + - "WHEN NOT MATCHED THEN INSERT (SESSION_ID,FIELD_ABBR,GROUP_CODE) VALUES (A.SESSION_ID,A.FIELD_ABBR,A.GROUP_CODE) ", - new BatchPreparedStatementSetter() { + "WHEN NOT MATCHED THEN INSERT (SESSION_ID,FIELD_ABBR,GROUP_CODE) VALUES (A.SESSION_ID,A.FIELD_ABBR,A.GROUP_CODE) " , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - GroupCodeProducts gp = newListOfGroupCodes.get(i); - ps.setBigDecimal(1, sessionId); - ps.setInt(2, gp.getGroup_code()); - ps.setString(3, gp.getField_abbr()); + public void setValues ( PreparedStatement ps , int i ) throws SQLException { + GroupCodeProducts gp = newListOfGroupCodes.get ( i ); + ps.setBigDecimal ( 1 , sessionId ); + ps.setInt ( 2 , gp.getGroup_code ( ) ); + ps.setString ( 3 , gp.getField_abbr ( ) ); } @Override - public int getBatchSize() { - return newListOfGroupCodes.size(); + public int getBatchSize ( ) { + return newListOfGroupCodes.size ( ); } - }); - jdbcTemplate.update("MERGE INTO SESSION_PRODUCT SP USING (" + + } ); + jdbcTemplate.update ( "MERGE INTO SESSION_PRODUCT SP USING (" + " SELECT DISTINCT SPR.PRODUCT_iD AS PRODUCT_ID,? AS SESSION_ID FROM SITE_PRODUCT SPR " + " INNER JOIN PRODUCT P ON (P.PRODUCT_ID=SPR.PRODUCT_ID )" + " INNER JOIN SESSION_GROUP_CODE SGC ON (SGC.SESSION_ID=? AND SGC.FIELD_ABBR=P.FIELD_ABBR AND SGC.GROUP_CODE=P.GROUP_CODE)" + " WHERE SPR.SITE_ID IN (SELECT SITE_ID FROM SESSION_SITE SS WHERE SS.SESSION_ID= ?))B " + " ON (SP.SESSION_ID=B.SESSION_ID AND SP.PRODUCT_ID=B.PRODUCT_ID)" + - " WHEN NOT MATCHED THEN INSERT (SESSION_ID,PRODUCT_ID) VALUES (B.SESSION_ID,B.PRODUCT_ID)", sessionId, sessionId, sessionId); + " WHEN NOT MATCHED THEN INSERT (SESSION_ID,PRODUCT_ID) VALUES (B.SESSION_ID,B.PRODUCT_ID)" , sessionId , sessionId , sessionId ); // jdbcTemplate.batchUpdate ( "MERGE INTO SESSION_PRODUCT SP USING " + // "(SELECT spr.PRODUCT_ID as PRODUCT_ID,? AS SESSION_ID FROM SITE_PRODUCT spr " + @@ -894,301 +891,301 @@ // } ); } - if (groupCodeArray != null && groupCodeArray.length > 0 && !("MM").equals(sessionType) && isGroupCode) { - start = System.currentTimeMillis(); - jdbcTemplate.batchUpdate("\n" + + if ( groupCodeArray != null && groupCodeArray.length > 0 && ! ( "MM" ).equals ( sessionType ) && isGroupCode ) { + start = System.currentTimeMillis ( ); + jdbcTemplate.batchUpdate ( "\n" + "merge into SESSION_PRODUCT sp using(\n" + " select distinct (spr.product_id) as PRODUCT_ID,? as sessionid from PRODUCT p\n" + " inner join site_product spr on (spr.product_id=p.product_id and spr.site_id in (select site_id from session_site" + " where session_id = ?))" + " inner join GROUPCode_group_mapping ggm on\n" + " (p.GROUP_CODE=ggm.group_code and p.FIELD_ABBR=ggm.field_abbr and ggm.groupcode_group_id=?)) b \n" + " on (sp.PRODUCT_ID=b.PRODUCT_ID and sp.SESSION_ID=b.sessionid)\n" + - "when not matched then insert (session_id, product_id) VALUES ( b.sessionid,b.PRODUCT_ID )", - new BatchPreparedStatementSetter() { + "when not matched then insert (session_id, product_id) VALUES ( b.sessionid,b.PRODUCT_ID )" , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { ProductGroupOrderReturn pgor = groupCodeArray[i]; - ps.setBigDecimal(1, sessionId); - ps.setBigDecimal(2, sessionId); - ps.setInt(3, pgor.getProductGroupId()); + ps.setBigDecimal ( 1 , sessionId ); + ps.setBigDecimal ( 2 , sessionId ); + ps.setInt ( 3 , pgor.getProductGroupId ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return groupCodeArray.length; } - }); - jdbcTemplate.batchUpdate("INSERT INTO SESSION_GROUP_CODE_DETAIL (SESSION_ID,INCLUDE_RETURN,INCLUDE_ORDER,PRODUCT_GROUP_NAME,PRODUCT_GROUP_ID)" + - "VALUES (?," + includeReturns + "," + includeOrders + ",?,?)", new BatchPreparedStatementSetter() { + } ); + jdbcTemplate.batchUpdate ( "INSERT INTO SESSION_GROUP_CODE_DETAIL (SESSION_ID,INCLUDE_RETURN,INCLUDE_ORDER,PRODUCT_GROUP_NAME,PRODUCT_GROUP_ID)" + + "VALUES (?," + includeReturns + "," + includeOrders + ",?,?)" , new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { ProductGroupOrderReturn pgor = groupCodeArray[i]; - ps.setBigDecimal(1, sessionId); - ps.setString(2, pgor.getProductGroupName()); - ps.setInt(3, pgor.getProductGroupId()); + ps.setBigDecimal ( 1 , sessionId ); + ps.setString ( 2 , pgor.getProductGroupName ( ) ); + ps.setInt ( 3 , pgor.getProductGroupId ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return groupCodeArray.length; } - }); - LOGGER.info("Create new session|Insert Group Codes for sessionId " + sessionId + ": " - + (System.currentTimeMillis() - start)); + } ); + LOGGER.info ( "Create new session|Insert Group Codes for sessionId " + sessionId + ": " + + ( System.currentTimeMillis ( ) - start ) ); } - if (fleetGroupsIds != null && fleetGroupsIds.length > 0 && !("MM").equals(sessionType)) { - jdbcTemplate.batchUpdate("INSERT INTO SESSION_FLEET (SESSION_ID, FLEET_ID) " + "VALUES (?,?)", - new BatchPreparedStatementSetter() { + if ( fleetGroupsIds != null && fleetGroupsIds.length > 0 && ! ( "MM" ).equals ( sessionType ) ) { + jdbcTemplate.batchUpdate ( "INSERT INTO SESSION_FLEET (SESSION_ID, FLEET_ID) " + "VALUES (?,?)" , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - ps.setBigDecimal(1, sessionId); - ps.setInt(2, fleetGroupsIds[i]); + public void setValues ( PreparedStatement ps , int i ) throws SQLException { + ps.setBigDecimal ( 1 , sessionId ); + ps.setInt ( 2 , fleetGroupsIds[i] ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return fleetGroupsIds.length; } - }); + } ); } - LOGGER.info("Create new session| Overture duration for sessionId " + sessionId + ": " - + (System.currentTimeMillis() - start)); + LOGGER.info ( "Create new session| Overture duration for sessionId " + sessionId + ": " + + ( System.currentTimeMillis ( ) - start ) ); final int DB_THREADS = 8; - ExecutorService threadPool = Executors.newFixedThreadPool(DB_THREADS); - CompletionService pool = new ExecutorCompletionService<>(threadPool); + ExecutorService threadPool = Executors.newFixedThreadPool ( DB_THREADS ); + CompletionService pool = new ExecutorCompletionService<> ( threadPool ); - List siteList = jdbcTemplate.query("SELECT SITE_ID FROM session_SITE WHERE session_id = ?", - new IntegerRowMapper(), sessionId); + List siteList = jdbcTemplate.query ( "SELECT SITE_ID FROM session_SITE WHERE session_id = ?" , + new IntegerRowMapper ( ) , sessionId ); - if (skuArray != null) { - start = System.currentTimeMillis(); - jdbcTemplate.batchUpdate("insert into SESSION_PRODUCT(session_id, product_id) values(?,?)", - new BatchPreparedStatementSetter() { + if ( skuArray != null ) { + start = System.currentTimeMillis ( ); + jdbcTemplate.batchUpdate ( "insert into SESSION_PRODUCT(session_id, product_id) values(?,?)" , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { int productId = skuArray[i]; - ps.setBigDecimal(1, sessionId); - ps.setInt(2, productId); + ps.setBigDecimal ( 1 , sessionId ); + ps.setInt ( 2 , productId ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return skuArray.length; } - }); - LOGGER.info("Create new session|Insert custom skus for sessionId " + sessionId + ": " - + (System.currentTimeMillis() - start)); + } ); + LOGGER.info ( "Create new session|Insert custom skus for sessionId " + sessionId + ": " + + ( System.currentTimeMillis ( ) - start ) ); } - if (allProductLines != null) { + if ( allProductLines != null ) { for (Integer siteId : siteList) { - start = System.currentTimeMillis(); - jdbcTemplate.batchUpdate("merge into MIN_MAX_SITE_PREFERENCES d " + + start = System.currentTimeMillis ( ); + jdbcTemplate.batchUpdate ( "merge into MIN_MAX_SITE_PREFERENCES d " + " using (select ? site_id,? product_line_id from dual) s " + " ON (d.site_id = s.site_id AND d.PRODUCT_LINE_ID = s.product_line_id)" + " when NOT MATCHED then insert (d.SITE_ID, d.PRODUCT_LINE_ID, d.PER_CAR, d.LEAD_TIME, d.ORDER_CYCLE,d.IS_SELECTED, d.USER_CREATED, d.USER_CREATED_DATE)" + " values(s.site_id, s.product_line_id,DECODE(?,'-1',1,?) ,DECODE(?,'-1',7,?) , DECODE(?,'-1',14,?), DECODE(?,'-1',1,?), ?, SYSDATE) " + " when MATCHED then " + - "update SET d.PER_CAR=DECODE(?,'-1',d.PER_CAR,?), d.LEAD_TIME=DECODE(?,'-1',d.LEAD_TIME,?), d.ORDER_CYCLE=DECODE(?,'-1',d.ORDER_CYCLE,?),d.IS_SELECTED=DECODE(?,'-1',d.IS_SELECTED,?),d.USER_UPDATED=?, d.USER_UPDATED_DATE=SYSDATE ", - new BatchPreparedStatementSetter() { + "update SET d.PER_CAR=DECODE(?,'-1',d.PER_CAR,?), d.LEAD_TIME=DECODE(?,'-1',d.LEAD_TIME,?), d.ORDER_CYCLE=DECODE(?,'-1',d.ORDER_CYCLE,?),d.IS_SELECTED=DECODE(?,'-1',d.IS_SELECTED,?),d.USER_UPDATED=?, d.USER_UPDATED_DATE=SYSDATE " , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { ProductLinesData obj = allProductLines[i]; - ps.setInt(1, siteId); - ps.setInt(2, obj.getId()); - ps.setInt(3, obj.isPerCar()); - ps.setInt(4, obj.isPerCar()); - ps.setInt(5, obj.getLeadTime()); - ps.setInt(6, obj.getLeadTime()); - ps.setInt(7, obj.getOrderCycle()); - ps.setInt(8, obj.getOrderCycle()); - ps.setInt(9, obj.getIsSelected()); - ps.setInt(10, obj.getIsSelected()); - ps.setInt(11, user.getUserId()); - ps.setInt(12, obj.isPerCar()); - ps.setInt(13, obj.isPerCar()); - ps.setInt(14, obj.getLeadTime()); - ps.setInt(15, obj.getLeadTime()); - ps.setInt(16, obj.getOrderCycle()); - ps.setInt(17, obj.getOrderCycle()); - ps.setInt(18, obj.getIsSelected()); - ps.setInt(19, obj.getIsSelected()); - ps.setInt(20, user.getUserId()); + ps.setInt ( 1 , siteId ); + ps.setInt ( 2 , obj.getId ( ) ); + ps.setInt ( 3 , obj.isPerCar ( ) ); + ps.setInt ( 4 , obj.isPerCar ( ) ); + ps.setInt ( 5 , obj.getLeadTime ( ) ); + ps.setInt ( 6 , obj.getLeadTime ( ) ); + ps.setInt ( 7 , obj.getOrderCycle ( ) ); + ps.setInt ( 8 , obj.getOrderCycle ( ) ); + ps.setInt ( 9 , obj.getIsSelected ( ) ); + ps.setInt ( 10 , obj.getIsSelected ( ) ); + ps.setInt ( 11 , user.getUserId ( ) ); + ps.setInt ( 12 , obj.isPerCar ( ) ); + ps.setInt ( 13 , obj.isPerCar ( ) ); + ps.setInt ( 14 , obj.getLeadTime ( ) ); + ps.setInt ( 15 , obj.getLeadTime ( ) ); + ps.setInt ( 16 , obj.getOrderCycle ( ) ); + ps.setInt ( 17 , obj.getOrderCycle ( ) ); + ps.setInt ( 18 , obj.getIsSelected ( ) ); + ps.setInt ( 19 , obj.getIsSelected ( ) ); + ps.setInt ( 20 , user.getUserId ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return allProductLines.length; } - }); - LOGGER.info("Create new session|Insert into min_max_site_preferences : " - + (System.currentTimeMillis() - start)); + } ); + LOGGER.info ( "Create new session|Insert into min_max_site_preferences : " + + ( System.currentTimeMillis ( ) - start ) ); } } - if (productLineIdArray != null) { - start = System.currentTimeMillis(); - jdbcTemplate.batchUpdate("insert into min_max_session_prod_line(session_id, product_line_id, safety_stock, per_car,lead_time,order_cycle) values(?,?,?,DECODE(?,'-1',null,?),DECODE(?,'-1',null,?),DECODE(?,'-1',null,?))", - new BatchPreparedStatementSetter() { + if ( productLineIdArray != null ) { + start = System.currentTimeMillis ( ); + jdbcTemplate.batchUpdate ( "insert into min_max_session_prod_line(session_id, product_line_id, safety_stock, per_car,lead_time,order_cycle) values(?,?,?,DECODE(?,'-1',null,?),DECODE(?,'-1',null,?),DECODE(?,'-1',null,?))" , + new BatchPreparedStatementSetter ( ) { @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { + public void setValues ( PreparedStatement ps , int i ) throws SQLException { ProductLinesData obj = productLineIdArray[i]; - ps.setBigDecimal(1, sessionId); - ps.setInt(2, obj.getId()); - ps.setInt(3, obj.getOrderCycle() + obj.getLeadTime()); - ps.setInt(4, obj.isPerCar()); - ps.setInt(5, obj.isPerCar()); - ps.setInt(6, obj.getLeadTime()); - ps.setInt(7, obj.getLeadTime()); - ps.setInt(8, obj.getOrderCycle()); - ps.setInt(9, obj.getOrderCycle()); + ps.setBigDecimal ( 1 , sessionId ); + ps.setInt ( 2 , obj.getId ( ) ); + ps.setInt ( 3 , obj.getOrderCycle ( ) + obj.getLeadTime ( ) ); + ps.setInt ( 4 , obj.isPerCar ( ) ); + ps.setInt ( 5 , obj.isPerCar ( ) ); + ps.setInt ( 6 , obj.getLeadTime ( ) ); + ps.setInt ( 7 , obj.getLeadTime ( ) ); + ps.setInt ( 8 , obj.getOrderCycle ( ) ); + ps.setInt ( 9 , obj.getOrderCycle ( ) ); } @Override - public int getBatchSize() { + public int getBatchSize ( ) { return productLineIdArray.length; } - }); - LOGGER.info("Create new session|Insert product lines for sessionId " + sessionId + ": " - + (System.currentTimeMillis() - start)); + } ); + LOGGER.info ( "Create new session|Insert product lines for sessionId " + sessionId + ": " + + ( System.currentTimeMillis ( ) - start ) ); } - if (deferCreation) { - LOGGER.debug("deferCreation = {}", deferCreation); + if ( deferCreation ) { + LOGGER.debug ( "deferCreation = {}" , deferCreation ); return sessionId; } for (Integer i : siteList) { Callable worker; - if (("PS").equals(sessionType) || isGroupCode) { - worker = new CreateNewSkusSessionCallable(i, sessionId.intValue(), skuArray, includeOrders, - includeReturns, includeLessThanStdPkg, perCarOrder, provideStoreDepth, orderAllSkus, returnAllSKUs, jdbcTemplate); - } else if (("IS").equals(sessionType)) { - worker = new CreateNewInventorySeedingCallable(i, sessionId.intValue(), skuArray, includeOrders, - includeReturns, jdbcTemplate); - } else if (("AC").equals(sessionType)) { - worker = new CreateNewACOSessionCallable(sessionId.intValue(), i, jdbcTemplate); - } else if (("DL").equals(sessionType)) { - worker = new CreateNewDollarLimitSessionCallable(sessionId.intValue(), i, dollarLimit, perCarOrder, provideStoreDepth, applicationPartsOnly, jdbcTemplate); - } else if (("MM").equals(sessionType)) { - worker = new CreateNewMinMaxSessionCallable(sessionId.intValue(), i, displayQty, productLineIdArray, jdbcTemplate); - } else if (("SC").equals(sessionType)) { - worker = new CreateNewStoreClosingSessionCallable(sessionId.intValue(), i, jdbcTemplate); + if ( ( "PS" ).equals ( sessionType ) || isGroupCode ) { + worker = new CreateNewSkusSessionCallable ( i , sessionId.intValue ( ) , skuArray , includeOrders , + includeReturns , includeLessThanStdPkg , perCarOrder , provideStoreDepth , orderAllSkus , returnAllSKUs , jdbcTemplate ); + } else if ( ( "IS" ).equals ( sessionType ) ) { + worker = new CreateNewInventorySeedingCallable ( i , sessionId.intValue ( ) , skuArray , includeOrders , + includeReturns , jdbcTemplate ); + } else if ( ( "AC" ).equals ( sessionType ) ) { + worker = new CreateNewACOSessionCallable ( sessionId.intValue ( ) , i , jdbcTemplate ); + } else if ( ( "DL" ).equals ( sessionType ) ) { + worker = new CreateNewDollarLimitSessionCallable ( sessionId.intValue ( ) , i , dollarLimit , perCarOrder , provideStoreDepth , applicationPartsOnly , jdbcTemplate ); + } else if ( ( "MM" ).equals ( sessionType ) ) { + worker = new CreateNewMinMaxSessionCallable ( sessionId.intValue ( ) , i , displayQty , productLineIdArray , jdbcTemplate ); + } else if ( ( "SC" ).equals ( sessionType ) ) { + worker = new CreateNewStoreClosingSessionCallable ( sessionId.intValue ( ) , i , jdbcTemplate ); } else { - worker = new CreateNewSessionCallable(sessionId.intValue(), i, includeSpecials, - includeObsoletes, includeOverstocks, includeSupersede, includeLessThanStdPkg, useInvestmentCollections, - includeFleets, includeSystems, perCarOrder, provideStoreDepth, includeSoldNotStocked, includeNewNumbers, jdbcTemplate); + worker = new CreateNewSessionCallable ( sessionId.intValue ( ) , i , includeSpecials , + includeObsoletes , includeOverstocks , includeSupersede , includeLessThanStdPkg , useInvestmentCollections , + includeFleets , includeSystems , perCarOrder , provideStoreDepth , includeSoldNotStocked , includeNewNumbers , jdbcTemplate ); } - LOGGER.info( - "Create new session| Submitting worker for sessionId " + sessionId + " and siteId " + i); - pool.submit(worker); + LOGGER.info ( + "Create new session| Submitting worker for sessionId " + sessionId + " and siteId " + i ); + pool.submit ( worker ); } - for (int i = 0; i < siteList.size(); i++) { - Future future = pool.take(); - Exception result = future.get(); - LOGGER.info("Create new session| Got result back for sessionId " + sessionId + ". Thread " + i); - if (result != null) { - List remaining = threadPool.shutdownNow(); - LOGGER.info("Create new session| Shutting down pool. Remaining: " + remaining.size()); - threadPool.awaitTermination(60, TimeUnit.SECONDS); - LOGGER.debug("Blocks until all tasks have completed execution after a shutdown request, " + - "or the timeout occurs, or the current thread is interrupted, whichever happens first"); + for (int i = 0; i < siteList.size ( ); i++) { + Future future = pool.take ( ); + Exception result = future.get ( ); + LOGGER.info ( "Create new session| Got result back for sessionId " + sessionId + ". Thread " + i ); + if ( result != null ) { + List remaining = threadPool.shutdownNow ( ); + LOGGER.info ( "Create new session| Shutting down pool. Remaining: " + remaining.size ( ) ); + threadPool.awaitTermination ( 60 , TimeUnit.SECONDS ); + LOGGER.debug ( "Blocks until all tasks have completed execution after a shutdown request, " + + "or the timeout occurs, or the current thread is interrupted, whichever happens first" ); throw result; } } - if (("SS").equals(sessionType)) { - LOGGER.info( - "Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS " + sessionId); + if ( ( "SS" ).equals ( sessionType ) ) { + LOGGER.info ( + "Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS " + sessionId ); try { - long startProc = System.currentTimeMillis(); - jdbcTemplate.update("call CROSS_POPULATE_SNS_PARTS(?)", sessionId); - LOGGER.info("Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS duration for sessionId " + sessionId + " " - + (System.currentTimeMillis() - startProc)); + long startProc = System.currentTimeMillis ( ); + jdbcTemplate.update ( "call CROSS_POPULATE_SNS_PARTS(?)" , sessionId ); + LOGGER.info ( "Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS duration for sessionId " + sessionId + " " + + ( System.currentTimeMillis ( ) - startProc ) ); // call is made to the procedure to recalculate the totals. for (Integer i : siteList) { - reCalculateSessionTotals(sessionId.intValue(), i); + reCalculateSessionTotals ( sessionId.intValue ( ) , i ); } - } catch (Exception e) { - LOGGER.error("Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS: " + e.getMessage()); + } catch ( Exception e ) { + LOGGER.error ( "Call CROSS_POPULATE_SNS_PARTS| Execute CROSS_POPULATE_SNS_PARTS: " + e.getMessage ( ) ); } } //Run Blending on AC Session Creation in addition to creating the session - if (("AC").equals(sessionType)) { - LOGGER.info("Running Blending for ACO Session " + sessionId); - SqlRowSet rs = jdbcTemplate.queryForRowSet("select sh.HIERARCHY_ID " + if ( ( "AC" ).equals ( sessionType ) ) { + LOGGER.info ( "Running Blending for ACO Session " + sessionId ); + SqlRowSet rs = jdbcTemplate.queryForRowSet ( "select sh.HIERARCHY_ID " + "from SESSION_HIERARCHY sh, product_hierarchy ph " + "where session_id=? and sh.hierarchy_id=ph.hierarchy_id " - + "and ACO_ENABLED=1", sessionId); + + "and ACO_ENABLED=1" , sessionId ); - while (rs.next()) { - int hierarchyId = rs.getInt(1); + while (rs.next ( )) { + int hierarchyId = rs.getInt ( 1 ); - SqlRowSet siteIdRS = jdbcTemplate.queryForRowSet("select site_id from session_site where session_id=?", sessionId); - while (siteIdRS.next()) { - jdbcTemplate.update( - "UPDATE PULSE_SESSION SET STATUS_ID = 8, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 2", - sessionId); + SqlRowSet siteIdRS = jdbcTemplate.queryForRowSet ( "select site_id from session_site where session_id=?" , sessionId ); + while (siteIdRS.next ( )) { + jdbcTemplate.update ( + "UPDATE PULSE_SESSION SET STATUS_ID = 8, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 2" , + sessionId ); - int siteId = siteIdRS.getInt(1); - acoDAO.xferBlendingData(sessionId.intValue(), siteId, hierarchyId); - acoDAO.createAcoSiteHierarchy(siteId, hierarchyId, user.getUserId()); + int siteId = siteIdRS.getInt ( 1 ); + acoDAO.xferBlendingData ( sessionId.intValue ( ) , siteId , hierarchyId ); + acoDAO.createAcoSiteHierarchy ( siteId , hierarchyId , user.getUserId ( ) ); } } - jdbcTemplate.update( - "UPDATE PULSE_SESSION SET STATUS_ID = 2, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 8", - sessionId); + jdbcTemplate.update ( + "UPDATE PULSE_SESSION SET STATUS_ID = 2, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 8" , + sessionId ); } - jdbcTemplate.update( - "UPDATE PULSE_SESSION SET STATUS_ID = 4, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 2", - sessionId); + jdbcTemplate.update ( + "UPDATE PULSE_SESSION SET STATUS_ID = 4, LAST_MODIFIED_DATE = sysdate WHERE SESSION_ID = ? AND STATUS_ID = 2" , + sessionId ); - LOGGER.info("Updating Session | SESSION_CUBIC_MEASUREMENT for sessionId " + sessionId); - jdbcTemplate.update("call SESSION_CUBIC_MEASUREMENT (?)", sessionId); + LOGGER.info ( "Updating Session | SESSION_CUBIC_MEASUREMENT for sessionId " + sessionId ); + jdbcTemplate.update ( "call SESSION_CUBIC_MEASUREMENT (?)" , sessionId ); - LOGGER.info("Updating Market Selection | Submitting marketSelectionWorker for sessionId " + sessionId); - new UpdateMarketSelectionForSessionThread(sessionId.intValue(), siteList, jdbcTemplate).start(); + LOGGER.info ( "Updating Market Selection | Submitting marketSelectionWorker for sessionId " + sessionId ); + new UpdateMarketSelectionForSessionThread ( sessionId.intValue ( ) , siteList , jdbcTemplate ).start ( ); - long end = System.currentTimeMillis(); - LOGGER.info("Create new session| Session creation duration for sessionId " + sessionId + ": " - + (end - start)); - LOGGER.debug("createNewSession done sessionId = {}", sessionId); + long end = System.currentTimeMillis ( ); + LOGGER.info ( "Create new session| Session creation duration for sessionId " + sessionId + ": " + + ( end - start ) ); + LOGGER.debug ( "createNewSession done sessionId = {}" , sessionId ); return sessionId; - }catch (Exception e) { + } catch ( Exception e ) { - LOGGER.error("Create new session| Failed for sessionId "); - LOGGER.error("Error Message before rollBack()" + e.getMessage()); - rollbackSession((BigDecimal) keyHolder.getKey()); - LOGGER.error("rollbackSession() called for sessionId: {}", (BigDecimal) keyHolder.getKey()); + LOGGER.error ( "Create new session| Failed for sessionId " ); + LOGGER.error ( "Error Message before rollBack()" + e.getMessage ( ) ); + rollbackSession ( (BigDecimal) keyHolder.getKey ( ) ); + LOGGER.error ( "rollbackSession() called for sessionId: {}" , (BigDecimal) keyHolder.getKey ( ) ); throw e; } - } else { + } else { - LOGGER.info("returned after insert into PULSE_SESSION tbl and sessionId" + (BigDecimal) keyHolder.getKey()); + LOGGER.info ( "returned after insert into PULSE_SESSION tbl and sessionId" + (BigDecimal) keyHolder.getKey ( ) ); return null; } - } catch (Exception e) { - if( keyHolder.getKey() == null) { - LOGGER.error("Create new session| Failed for sessionId "); - LOGGER.error("Error Message before rollBack()" + e.getMessage()); + } catch ( Exception e ) { + if ( keyHolder.getKey ( ) == null ) { + LOGGER.error ( "Create new session| Failed for sessionId " ); + LOGGER.error ( "Error Message before rollBack()" + e.getMessage ( ) ); } throw e; } @@ -1197,7 +1194,6 @@ } - private static class CreateNewSkusSessionCallable implements Callable { private final int siteId; private final int sessionId; @@ -1214,7 +1210,7 @@ CreateNewSkusSessionCallable ( int siteId , int sessionId , Integer[] skuArray , int includeOrders , int includeReturns , boolean includeLessThanStdPkg , boolean perCarOrder , boolean provideStoreDepth , - boolean orderAllSkus , boolean returnAllSKUs, JdbcTemplate jdbcTemplate ) { + boolean orderAllSkus , boolean returnAllSKUs , JdbcTemplate jdbcTemplate ) { this.siteId = siteId; this.sessionId = sessionId; this.skuArray = skuArray; @@ -1236,7 +1232,7 @@ jdbcTemplate.update ( "call CREATE_NEW_SKU_SESSION (?,?,?,?,?,?,?,?,?)" , sessionId , siteId , includeOrders , includeReturns , ( includeLessThanStdPkg ) ? "1" : "0" , ( perCarOrder ) ? "1" : "0" , - ( provideStoreDepth ) ? "1" : "0" , ( orderAllSkus ) ? "1" : "0", ( returnAllSKUs ) ? "1" : "0" ); + ( provideStoreDepth ) ? "1" : "0" , ( orderAllSkus ) ? "1" : "0" , ( returnAllSKUs ) ? "1" : "0" ); LOGGER.info ( "Create new sku session| Execute CreateNewSkusSessionCallable duration for sessionId " + sessionId + " and siteId " + siteId + ": " + ( System.currentTimeMillis ( ) - startproc ) ); @@ -1246,7 +1242,7 @@ } LOGGER.debug ( "CREATE_NEW_SKU_SESSION SP parameters: {},{},{},{},{},{},{},{}" , sessionId , siteId , includeOrders , includeReturns , ( includeLessThanStdPkg ) ? "1" : "0" , ( perCarOrder ) ? "1" : "0" , - ( provideStoreDepth ) ? "1" : "0" , ( orderAllSkus ) ? "1" : "0" ,( returnAllSKUs ) ? "1" : "0" ); + ( provideStoreDepth ) ? "1" : "0" , ( orderAllSkus ) ? "1" : "0" , ( returnAllSKUs ) ? "1" : "0" ); return null; } @@ -1434,36 +1430,36 @@ } public Exception call ( ) { - LOGGER.info( - "Create new session| Executing createSession for sessionId " + sessionId + " and siteId " + siteId); + LOGGER.info ( + "Create new session| Executing createSession for sessionId " + sessionId + " and siteId " + siteId ); Boolean includeSupersedeNotNull = false; try { Boolean includesuperSedeNull = includeSupersede; - if (includeSupersede != null) + if ( includeSupersede != null ) includeSupersedeNotNull = includeSupersede; - long startproc = System.currentTimeMillis(); - jdbcTemplate.update("call CREATE_NEW_SESSION (?,?,?,?,?,?,?,?,?,?,?,?,?)", sessionId, siteId, + long startproc = System.currentTimeMillis ( ); + jdbcTemplate.update ( "call CREATE_NEW_SESSION (?,?,?,?,?,?,?,?,?,?,?,?,?)" , sessionId , siteId , - (includeSpecials) ? "1" : "0", (includeObsoletes) ? "1" : "0", - (includeOverstocks) ? "1" : "0", (includeLessThanStdPkg) ? "1" : "0", - (includeFleets) ? "1" : "0", (useInvestmentCollections) ? "1" : "0", - (perCarOrder) ? "1" : "0", (provideStoreDepth) ? "1" : "0", - (includeSoldNotStocked) ? "1" : "0", (includeNewNumbers) ? "1" : "0", - (includesuperSedeNull == null ? null : includeSupersede ? "1" : "0")); + ( includeSpecials ) ? "1" : "0" , ( includeObsoletes ) ? "1" : "0" , + ( includeOverstocks ) ? "1" : "0" , ( includeLessThanStdPkg ) ? "1" : "0" , + ( includeFleets ) ? "1" : "0" , ( useInvestmentCollections ) ? "1" : "0" , + ( perCarOrder ) ? "1" : "0" , ( provideStoreDepth ) ? "1" : "0" , + ( includeSoldNotStocked ) ? "1" : "0" , ( includeNewNumbers ) ? "1" : "0" , + ( includesuperSedeNull == null ? null : includeSupersede ? "1" : "0" ) ); - LOGGER.info("Create new session| Execute CreateNewSessionCallable duration for sessionId " + sessionId - + " and siteId " + siteId + ": " + (System.currentTimeMillis() - startproc)); - } catch (Exception e) { - LOGGER.error("Create new session| CreateNewSessionCallable: ", e); + LOGGER.info ( "Create new session| Execute CreateNewSessionCallable duration for sessionId " + sessionId + + " and siteId " + siteId + ": " + ( System.currentTimeMillis ( ) - startproc ) ); + } catch ( Exception e ) { + LOGGER.error ( "Create new session| CreateNewSessionCallable: " , e ); return e; } - LOGGER.debug("CREATE_NEW_SESSION SP parameters: {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}", sessionId, siteId, - (includeSpecials) ? "1" : "0", (includeObsoletes) ? "1" : "0", - (includeOverstocks) ? "1" : "0", (includeLessThanStdPkg) ? "1" : "0", - (includeFleets) ? "1" : "0", (useInvestmentCollections) ? "1" : "0", - (perCarOrder) ? "1" : "0", (provideStoreDepth) ? "1" : "0", - (includeSoldNotStocked) ? "1" : "0", (includeNewNumbers) ? "1" : "0", - (includeSupersedeNotNull) ? "1" : "0"); + LOGGER.debug ( "CREATE_NEW_SESSION SP parameters: {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}" , sessionId , siteId , + ( includeSpecials ) ? "1" : "0" , ( includeObsoletes ) ? "1" : "0" , + ( includeOverstocks ) ? "1" : "0" , ( includeLessThanStdPkg ) ? "1" : "0" , + ( includeFleets ) ? "1" : "0" , ( useInvestmentCollections ) ? "1" : "0" , + ( perCarOrder ) ? "1" : "0" , ( provideStoreDepth ) ? "1" : "0" , + ( includeSoldNotStocked ) ? "1" : "0" , ( includeNewNumbers ) ? "1" : "0" , + ( includeSupersedeNotNull ) ? "1" : "0" ); return null; } @@ -3108,7 +3104,7 @@ String salesCode = jdbcTemplate.queryForObject ( "select MIN_MAX_SALES_SETTING from PULSE_SESSION where SESSION_ID=" + sessionId , String.class ); - salesCode = ("DIT").equals(salesCode) ? " NVL(a.sold_last_12_months,0) + NVL(a.supersede_12_months,0) " : ("IT").equals(salesCode) ? " (NVL(a.sold_last_12_months,0) + NVL(a.transfer_12_months,0)) " : " (NVL(a.sold_last_12_months,0) - NVL(a.transfer_12_months,0)) "; + salesCode = ( "DIT" ).equals ( salesCode ) ? " NVL(a.sold_last_12_months,0) + NVL(a.supersede_12_months,0) " : ( "IT" ).equals ( salesCode ) ? " (NVL(a.sold_last_12_months,0) + NVL(a.transfer_12_months,0)) " : " (NVL(a.sold_last_12_months,0) - NVL(a.transfer_12_months,0)) "; String sortingStmt2 = " "; if ( sortBy != null ) { @@ -3191,7 +3187,7 @@ " recommended \"recommended\", changeval \"change\"\n" + " from min_max_data \n"; - // System.out.println("Main Query" +sql); + // System.out.println("Main Query" +sql); // continuation of main query if ( exportType.length ( ) == 0 ) { int startRowNumber = ( ( pageNumber - 1 ) * numberOfRecordsPerPage ) + 1; @@ -4604,42 +4600,43 @@ return HierarchyUtils.getHierarchyTreeFromHierarchyVarray ( hierarchyItemList ); } } + @Override - public TreeMap> getSelectedGroupCodes ( Integer sessionId , Integer productGroupId , User user ) { + public TreeMap> getSelectedGroupCodes ( Integer sessionId , Integer productGroupId , User user ) { if ( productGroupId <= 1 ) { - SqlRowSet rs= jdbcTemplate.queryForRowSet("select Distinct gc.FIELD_ABBR," + + SqlRowSet rs = jdbcTemplate.queryForRowSet ( "select Distinct gc.FIELD_ABBR," + "LISTAGG(gc.GROUP_CODE||'-'||gc.GROUP_DESC,',') within group ( order by gc.GROUP_CODE) group_desc ," + "LISTAGG( gc.GROUP_CODE,',') within group ( order by gc.GROUP_CODE) group_code\n" + " from GROUP_CODE gc\n" + - " Inner join session_group_code sgc on (sgc.session_id="+sessionId+" and sgc.group_code=gc.group_code " + + " Inner join session_group_code sgc on (sgc.session_id=" + sessionId + " and sgc.group_code=gc.group_code " + " and sgc.field_abbr=gc.field_abbr) \n" + - " where ACTIVE_FLAG='Y' group by gc.FIELD_ABBR order by gc.FIELD_ABBR asc"); - HashMap> groupDesc= new HashMap<>(); - while (rs.next()){ - String desc= rs.getString("group_desc"); - String code=rs.getString("group_code"); - String field_abbr=rs.getString("FIELD_ABBR"); - List groupDescs = Arrays.asList(desc.split(",")); - List groupCodes = Arrays.stream(code.split(",")) - .map(Integer::parseInt) - .collect(Collectors.toList()); - List result = IntStream.range(0, Math.min(groupCodes.size(), groupDescs.size())) - .mapToObj(i -> new GroupCodes(groupCodes.get(i),groupDescs.get(i),field_abbr)) - .collect(Collectors.toList()); - groupDesc.put(field_abbr, result); + " where ACTIVE_FLAG='Y' group by gc.FIELD_ABBR order by gc.FIELD_ABBR asc" ); + HashMap> groupDesc = new HashMap<> ( ); + while (rs.next ( )) { + String desc = rs.getString ( "group_desc" ); + String code = rs.getString ( "group_code" ); + String field_abbr = rs.getString ( "FIELD_ABBR" ); + List groupDescs = Arrays.asList ( desc.split ( "," ) ); + List groupCodes = Arrays.stream ( code.split ( "," ) ) + .map ( Integer :: parseInt ) + .collect ( Collectors.toList ( ) ); + List result = IntStream.range ( 0 , Math.min ( groupCodes.size ( ) , groupDescs.size ( ) ) ) + .mapToObj ( i -> new GroupCodes ( groupCodes.get ( i ) , groupDescs.get ( i ) , field_abbr ) ) + .collect ( Collectors.toList ( ) ); + groupDesc.put ( field_abbr , result ); } - TreeMap> sortedMap=new TreeMap<>(groupDesc); + TreeMap> sortedMap = new TreeMap<> ( groupDesc ); return sortedMap; } else { - TreeMap> groupCodeProducts=productGroupDAO.getGroupCodesByGroup(user,productGroupId); + TreeMap> groupCodeProducts = productGroupDAO.getGroupCodesByGroup ( user , productGroupId ); return groupCodeProducts; } } @Override public List> getGroupCodesForSession ( Integer sessionId ) { - return jdbcTemplate.queryForList("SELECT SGCD.PRODUCT_GROUP_NAME AS \"productGroupName\"," + return jdbcTemplate.queryForList ( "SELECT SGCD.PRODUCT_GROUP_NAME AS \"productGroupName\"," + " SGCD.PRODUCT_GROUP_ID AS \"productGroupId\", " + " max(SGCD.INCLUDE_ORDER)AS \"includeOrder\", " + " max(SGCD.INCLUDE_RETURN) AS \"includeReturn\" " + " FROM SESSION_GROUP_CODE_DETAIL SGCD " + " WHERE SGCD.SESSION_ID = ? " + " group by SGCD.PRODUCT_GROUP_ID, SGCD.PRODUCT_GROUP_NAME " @@ -5234,11 +5231,11 @@ return this.createNewSession ( user , sessionPreference.getPerCarOrder ( ) == 1 , sessionPreference.getIncludeFleets ( ) == 1 , sessionPreference.getIncludeSystems ( ) == 1 , sessionPreference.getIncludeSpecials ( ) == 1 , sessionPreference.getIncludeObsoletes ( ) == 1 , - sessionPreference.getIncludeOverstocks ( ) == 1 , sessionPreference.getIncludeSupersede()==1 , false , + sessionPreference.getIncludeOverstocks ( ) == 1 , sessionPreference.getIncludeSupersede ( ) == 1 , false , sessionPreference.getIncludeLessThanStdPkg ( ) == 1 , sessionPreference.getUseInvestmentCollections ( ) == 1 , sessionPreference.getProvideStoreDepth ( ) == 1 , sessionPreference.getIncludeSoldNotStocked ( ) == 1 , sessionPreference.getIncludeSupersede ( ) == 1 , sessionPreference.getIncludeNewNumbers ( ) == 1 , - sessionPreference.getorderAllSkus ( ) == 1 , sessionPreference.getReturnALLSKUs ( ) == 1, sessionPreference.getDollarLimit ( ) , sessionPreference.getComments ( ) , null /* siteGroupId */ , siteGroupName , + sessionPreference.getorderAllSkus ( ) == 1 , sessionPreference.getReturnALLSKUs ( ) == 1 , sessionPreference.getDollarLimit ( ) , sessionPreference.getComments ( ) , null /* siteGroupId */ , siteGroupName , sites.toArray ( new Integer[]{} ) , productGroups.toArray ( new ProductGroupOrderReturn[]{} ) , productGroups.toArray ( new ProductGroupOrderReturn[]{} ) , getFleetGroupsForSession ( sessionId ).stream ( ).mapToInt ( BigDecimal :: intValue ).boxed ( ) .collect ( Collectors.toList ( ) ).toArray ( new Integer[]{} ) , @@ -5592,6 +5589,43 @@ } @Override + public boolean pulseDownTime ( ) { + DateTime today = new DateTime ( ); + List str= new ArrayList<> (); + try { + String sql = " select config_desc , config_value FROM pulse_config where config_code = 'Pulse_DownTime' "; + SqlRowSet rs = jdbcTemplate.queryForRowSet ( sql ); + while (rs.next ( )) { + str.add ( rs.getString ( "config_value" )) ; + } + DateFormatSymbols dfs = new DateFormatSymbols (); + String weekdays[] = dfs.getWeekdays(); + Calendar calendar = Calendar.getInstance(); + int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); + //GregorianCalendar gregorianCalendar = (GregorianCalendar) GregorianCalendar.getInstance (); + int currentHour = calendar.get(calendar.HOUR_OF_DAY); + System.out.println(calendar.getTimeZone ()); + String currentDay = weekdays[dayOfWeek].toLowerCase (); + String shutDownDayHour=str.stream().map(Object::toString).collect(Collectors.joining(",")); + GsonJsonParser jsonParser = new GsonJsonParser (); + Set> setValues = jsonParser.parseMap ( shutDownDayHour).entrySet (); + for(Map.Entry entry : setValues) { + String startTime= entry.getValue ( ).toString ().split ( "-" )[0]; + String endTime= entry.getValue ( ).toString ().split ( "-" )[1]; + String shutDownDay = entry.getKey (); + if(currentDay.equals (shutDownDay)) + { + return currentHour>= Integer.parseInt (startTime) && currentHour<= Integer.parseInt (endTime) ? false : true; + } + } + }catch (Exception e ){ + throw new RuntimeException (e.getMessage ()); + } + return true; + } + + + @Override public void reCalculateSessionTotals ( Integer sessionId , Integer siteId ) { try { Map inParamMap = new HashMap<> ( ); Index: src/main/java/com/napa/pulse/dao/interfaces/SessionDAO.java =================================================================== diff -u -r3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70 -rfd14820db80bdbc924aa6ad712bcfa898edeb5c5 --- src/main/java/com/napa/pulse/dao/interfaces/SessionDAO.java (.../SessionDAO.java) (revision 3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70) +++ src/main/java/com/napa/pulse/dao/interfaces/SessionDAO.java (.../SessionDAO.java) (revision fd14820db80bdbc924aa6ad712bcfa898edeb5c5) @@ -778,4 +778,5 @@ List> getDropdownSites(List accessSites); + boolean pulseDownTime ( ); } \ No newline at end of file Index: src/main/java/com/napa/pulse/service/impl/SessionServiceImpl.java =================================================================== diff -u -r3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70 -rfd14820db80bdbc924aa6ad712bcfa898edeb5c5 --- src/main/java/com/napa/pulse/service/impl/SessionServiceImpl.java (.../SessionServiceImpl.java) (revision 3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70) +++ src/main/java/com/napa/pulse/service/impl/SessionServiceImpl.java (.../SessionServiceImpl.java) (revision fd14820db80bdbc924aa6ad712bcfa898edeb5c5) @@ -784,4 +784,9 @@ return sessionDAO.getMinMaxLeadTime(); } + @Override + public Boolean pulseDownTime ( ) { + return sessionDAO.pulseDownTime(); + } + } \ No newline at end of file Index: src/main/java/com/napa/pulse/service/interfaces/SessionService.java =================================================================== diff -u -r3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70 -rfd14820db80bdbc924aa6ad712bcfa898edeb5c5 --- src/main/java/com/napa/pulse/service/interfaces/SessionService.java (.../SessionService.java) (revision 3b8b91316b4b30d73a7e56f4c9a0a450f0b8fc70) +++ src/main/java/com/napa/pulse/service/interfaces/SessionService.java (.../SessionService.java) (revision fd14820db80bdbc924aa6ad712bcfa898edeb5c5) @@ -642,4 +642,6 @@ ActionResult getMinMaxOrderCycle(); ActionResult getMinMaxLeadTime(); + + Boolean pulseDownTime ( ); }