ecology-kq/src/com/engine/kq/biz/KQTimesArrayComInfo.java

279 lines
6.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.engine.kq.biz;
import weaver.cache.CacheBase;
import weaver.cache.CacheColumn;
import weaver.cache.CacheColumnType;
import weaver.cache.CacheItem;
import weaver.cache.PKColumn;
import weaver.conn.RecordSet;
import weaver.general.Util;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class KQTimesArrayComInfo extends CacheBase{
protected static String TABLE_NAME = "kq_timesarray";
/** sql中的where信息不要以where开始 */
/**
* 这个缓存类里只需要存储一条数据供虚拟列使用就可以了
*/
protected static String TABLE_WHERE = "arrayindex=0";
@PKColumn(type = CacheColumnType.NUMBER)
protected static String PK_NAME = "arrayindex";
@CacheColumn(name = "times")
protected static int times;
/**
* 主要是用这个虚拟列存储map 可以 通过时间获取下标
*/
@CacheColumn(isVirtual = true)
protected static int timesArrayindexMap;
/**
* 主要是用这个虚拟列存储map 可以 通过下标获取时间
*/
@CacheColumn(isVirtual = true)
protected static int arrayindexTimesMap;
/**
* 原始数组
*/
@CacheColumn(isVirtual = true)
protected static int initArray;
public String getId(){
return (String)getRowValue(PK_INDEX);
}
public String getTimes() { return (String)getRowValue(times); }
public String getTimes(String key) {
return (String)getValue(times,key);
}
public String getTimesArrayindexMap() { return (String)getRowValue(timesArrayindexMap); }
public String getTimesArrayindexMap(String key) {
return (String)getValue(timesArrayindexMap,key);
}
public String getArrayindexTimesMap() { return (String)getRowValue(arrayindexTimesMap); }
public String getArrayindexTimesMap(String key) {
return (String)getValue(arrayindexTimesMap,key);
}
@Override
protected void modifyCacheItem(String key, CacheItem cacheItem) {
String sql = "select times,arrayindex from kq_timesarray";
Map<String, String> timeMap = new HashMap<String, String>();
Map<String, String> arrayMap = new HashMap<String, String>();
// 列值转换
RecordSet rstemp=new RecordSet();
rstemp.executeQuery(sql);
int[] initArrays = new int[rstemp.getCounts()];
int i = 0;
while(rstemp.next()){
String times = rstemp.getString("times");
String arrayindex = rstemp.getString("arrayindex");
timeMap.put(times, arrayindex);
arrayMap.put(arrayindex, times);
initArrays[i] = -1;
i++;
}
// 虚拟列赋值
cacheItem.set(timesArrayindexMap, timeMap);
// 虚拟列赋值
cacheItem.set(arrayindexTimesMap, arrayMap);
// 虚拟列赋值
cacheItem.set(initArray, initArrays);
}
/**
* 根据传过来的时间获取数组下标
*
* @param times
* @return 无设置时返回Null
*/
public int getArrayindexByTimes(String times) {
if(times.length()>5){
times = times.substring(0,5);
}
//sqlwhere里决定了pk只能是0
Map<String, String> timeMap = (Map)getObjValue(timesArrayindexMap,"0");
if (timeMap == null){
return -1;
}
return Util.getIntValue(timeMap.get(times));
}
/**
* 根据传过来的数组下标获取时间
*
* @param arrayIndex
* @return 无设置时返回Null
*/
public String getTimesByArrayindex(int arrayIndex) {
//sqlwhere里决定了pk只能是0
Map<String, String> arrayMap = (Map)getObjValue(arrayindexTimesMap,"0");
if (arrayMap == null){
return "";
}
return arrayMap.get(""+arrayIndex);
}
/**
* 获取总的下标长度
* @return
*/
public int getIndexSize(){
Map<String, String> timeMap = (Map)getObjValue(timesArrayindexMap,"0");
return timeMap.size();
}
/**
* 获取原始的数组
* @return
*/
public int[] getInitArr(){
int[] initArraysCom = (int[])getObjValue(initArray,"0");
int length = 2881;
if(initArraysCom != null){
length = initArraysCom.length;
}
int[] initArrays = new int[length];
Arrays.fill(initArrays, -1);
return initArrays;
}
/**
* 获取分钟数 数组
* @param initArrays 需要遍历的数组
* @param startIndex 遍历数组开始下标
* @param endIndex 遍历数组结束下标
* @param checkVal 需要判断的值
*/
public int[] getCnts(int[] initArrays,int startIndex,int endIndex,int checkVal){
int cnt = 0;
int[] cntArray = new int[3];
for(int i = startIndex ; i < endIndex ; i++){
if(initArrays[i] == checkVal){
if(cnt == 0){
cntArray[0] = i;
}else{
cntArray[1] = i;
}
cnt++;
}
}
cntArray[2] = cnt;
return cntArray;
}
/**
* 获取分钟数
* @param initArrays 需要遍历的数组
* @param startIndex 遍历数组开始下标
* @param endIndex 遍历数组结束下标
* @param checkVal 需要判断的值
*/
public int getCnt(int[] initArrays,int startIndex,int endIndex,int checkVal){
int cnt = 0;
for(int i = startIndex ; i < endIndex ; i++){
if(initArrays[i] == checkVal){
cnt++;
}
}
return cnt;
}
/**
* 把24小时制的时间下标转换成48小时制的
* @param timeIndex
* @return
*/
public int turn24to48TimeIndex(int timeIndex){
int longtimeIndex = timeIndex;
try{
if(timeIndex > 1440){
return longtimeIndex;
}
longtimeIndex = timeIndex+1440;
}catch (Exception e){
e.printStackTrace();
}
return longtimeIndex;
}
/**
* 把24小时制的时间转换成48小时制的
* @param time
* @return
*/
public String turn24to48Time(String time){
String longtime = time;
try{
int timeIndex = getArrayindexByTimes(time);
if(timeIndex > 1440){
return time;
}
int timeIndexTmp = turn24to48TimeIndex(timeIndex);
longtime = getTimesByArrayindex(timeIndexTmp);
}catch (Exception e){
e.printStackTrace();
}
return longtime;
}
/**
* 把48小时制度时间下标转换成24小时制的
* @param timeIndex
* @return
*/
public int turn48to24TimeIndex(int timeIndex){
int longtimeIndex = timeIndex;
try{
if(timeIndex > 1439){
longtimeIndex = timeIndex-1440;
longtimeIndex = longtimeIndex > 0 ? longtimeIndex : 0;
}
}catch (Exception e){
e.printStackTrace();
}
return longtimeIndex;
}
/**
* 把48小时制度时间转换成24小时制的
* @param time
* @return
*/
public String turn48to24Time(String time){
String longtime = time;
try{
int timeIndex = getArrayindexByTimes(time);
int timeIndexTmp = turn48to24TimeIndex(timeIndex);
longtime = getTimesByArrayindex(timeIndexTmp);
}catch (Exception e){
e.printStackTrace();
}
return longtime;
}
/**
* 获取一天的工作总时长1439分钟
* @return
*/
public static int getOneDayArraySize(){
return 1439;
}
}