267 lines
10 KiB
Java
267 lines
10 KiB
Java
package com.engine.kq.biz;
|
||
|
||
import com.engine.kq.log.KQLog;
|
||
import weaver.cache.CacheBase;
|
||
import weaver.cache.CacheColumn;
|
||
import weaver.cache.CacheColumnType;
|
||
import weaver.cache.CacheItem;
|
||
import weaver.cache.CacheMap;
|
||
import weaver.cache.PKColumn;
|
||
import weaver.conn.RecordSet;
|
||
import weaver.general.Util;
|
||
|
||
import java.io.Serializable;
|
||
import java.util.ArrayList;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* 班次一天内上下班次数缓存类
|
||
*/
|
||
public class KQShiftOnOffWorkSectionComInfo extends CacheBase implements Serializable {
|
||
/*
|
||
* 需要关注 : 如果完全在 initCache 自己定义数据初始化, 这个字段可以不定义
|
||
*/
|
||
protected static String TABLE_NAME = "";
|
||
|
||
/*
|
||
* 需要关注 : 如果完全在 initCache 自己定义数据初始化,或者不需要指定固定的条件, 这个字段可以不定义
|
||
* sql中的where信息,不要以where开始
|
||
*/
|
||
protected static String TABLE_WHERE = null;
|
||
|
||
/*
|
||
* 需要关注 : 如果完全在 initCache 自己定义数据初始化,或者不需要指定顺序, 这个字段可以不定义 sql中的order
|
||
* by信息,不要以order by开始
|
||
*
|
||
*/
|
||
protected static String TABLE_ORDER = null;
|
||
|
||
@PKColumn(type = CacheColumnType.NUMBER)
|
||
protected static String PK_NAME = "id";
|
||
|
||
@CacheColumn
|
||
protected static int serial;
|
||
|
||
private KQLog kqLog = new KQLog();
|
||
|
||
@Override
|
||
protected boolean autoInitIfNotFound() {
|
||
return false;
|
||
}
|
||
|
||
@Override
|
||
public CacheMap initCache() {
|
||
CacheMap localData = createCacheMap();
|
||
RecordSet rs = new RecordSet();
|
||
kqLog = new KQLog();
|
||
try {
|
||
List<String> serials = new ArrayList<>();
|
||
List<Object> workSectionList = new ArrayList<>();
|
||
List<Object> sectionList = new ArrayList<>();
|
||
Map<String,Object> serialMaps = new HashMap<>();//分组用的map
|
||
Map<String,Object> groupSectionMaps = new HashMap<>();//分组用的map
|
||
Map<String,Object> sectionMap = new HashMap<>();
|
||
String serialidold = "";
|
||
|
||
String getStartWorkSections = "select * from kq_ShiftOnOffWorkSections where 1=1 order by serialid,record ";
|
||
rs.executeQuery(getStartWorkSections);
|
||
while (rs.next()) {
|
||
String id = Util.null2String(rs.getString("id"));
|
||
String serialid = Util.null2String(rs.getString("serialid"));
|
||
String across = Util.null2String(rs.getString("across"));
|
||
String times = Util.null2String(rs.getString("times"));
|
||
String mins = Util.null2String(rs.getString("mins"));
|
||
//增加了打卡规则,每一个班次的时间点都有允许打卡开始时间和结束时间,这个_next就是和mins相对应的打卡开始和结束时间
|
||
String mins_next = Util.null2s(rs.getString("mins_next"),"-1");
|
||
String record = Util.null2String(rs.getString("record"));
|
||
String onoffworktype = Util.null2String(rs.getString("onoffworktype"));
|
||
|
||
sectionMap = new HashMap<>();
|
||
sectionMap.put("across", across);
|
||
sectionMap.put("times", times);
|
||
sectionMap.put("mins", mins);
|
||
sectionMap.put("mins_next", mins_next);
|
||
|
||
if(serialMaps.get(serialid) != null){
|
||
Map<String,Object> tmpgroupSectionMaps = (Map<String,Object>)serialMaps.get(serialid);
|
||
if(tmpgroupSectionMaps.get(record) != null){
|
||
List<Object> tmpWorkSection = (List<Object>) tmpgroupSectionMaps.get(record);
|
||
List<Object> tmpSection = ((List<Object>)tmpWorkSection.get(tmpWorkSection.size()-1));
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(1, sectionMap);
|
||
}
|
||
}else{
|
||
workSectionList = new ArrayList<>();
|
||
sectionList = new ArrayList<>();
|
||
sectionList.add("");
|
||
sectionList.add("");
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(1, sectionMap);
|
||
}
|
||
workSectionList.add(sectionList);
|
||
tmpgroupSectionMaps.put(record, workSectionList);
|
||
}
|
||
}else{
|
||
groupSectionMaps = new HashMap<>();
|
||
workSectionList = new ArrayList<>();
|
||
serialMaps.put(serialid, groupSectionMaps);
|
||
if(groupSectionMaps.get(record) != null){
|
||
List<Object> tmpWorkSection = (List<Object>) groupSectionMaps.get(record);
|
||
List<Object> tmpSection = ((List<Object>)tmpWorkSection.get(tmpWorkSection.size()-1));
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(1, sectionMap);
|
||
}
|
||
}else{
|
||
sectionList = new ArrayList<>();
|
||
sectionList.add("");
|
||
sectionList.add("");
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(1, sectionMap);
|
||
}
|
||
workSectionList.add(sectionList);
|
||
groupSectionMaps.put(record, workSectionList);
|
||
}
|
||
}
|
||
}
|
||
|
||
List<Object> valList = new ArrayList<>();
|
||
for(Map.Entry<String,Object> me : serialMaps.entrySet()){
|
||
valList = new ArrayList<>();
|
||
String id = me.getKey();
|
||
Map<String,Object> val = (Map<String,Object>)me.getValue();
|
||
for(Map.Entry<String,Object> mee : val.entrySet()){
|
||
valList.addAll((List<Object>)mee.getValue());
|
||
}
|
||
CacheItem cacheItem = createCacheItem();
|
||
cacheItem.set(PK_INDEX, id);
|
||
cacheItem.set(serial, valList);
|
||
modifyCacheItem(id, cacheItem);
|
||
localData.put(id, cacheItem);
|
||
}
|
||
} catch (Exception e) {
|
||
writeLog(e);
|
||
}
|
||
return localData;
|
||
}
|
||
|
||
/**
|
||
* 根据班次id获取工作时段
|
||
* @param serialid
|
||
* @return
|
||
*/
|
||
public List<Object> getWorkSectionTimes(String serialid){
|
||
//return (List<Object>) getObjValue(serial, serialid);
|
||
RecordSet rs = new RecordSet();
|
||
kqLog = new KQLog();
|
||
List<Object> valList = new ArrayList<>();
|
||
List<Object> workSectionList = new ArrayList<>();
|
||
try {
|
||
List<String> serials = new ArrayList<>();
|
||
List<Object> sectionList = new ArrayList<>();
|
||
Map<String,Object> serialMaps = new HashMap<>();//分组用的map
|
||
Map<String,Object> groupSectionMaps = new HashMap<>();//分组用的map
|
||
Map<String,Object> sectionMap = new HashMap<>();
|
||
String serialidold = "";
|
||
|
||
String getStartWorkSections = "select * from kq_ShiftOnOffWorkSections where serialid=? order by serialid,record ";
|
||
rs.executeQuery(getStartWorkSections,serialid);
|
||
while (rs.next()) {
|
||
String id = Util.null2String(rs.getString("id"));
|
||
//String serialid = Util.null2String(rs.getString("serialid"));
|
||
String across = Util.null2String(rs.getString("across"));
|
||
String times = Util.null2String(rs.getString("times"));
|
||
String mins = Util.null2String(rs.getString("mins"));
|
||
//增加了打卡规则,每一个班次的时间点都有允许打卡开始时间和结束时间,这个_next就是和mins相对应的打卡开始和结束时间
|
||
String mins_next = Util.null2s(rs.getString("mins_next"),"-1");
|
||
String record = Util.null2String(rs.getString("record"));
|
||
String onoffworktype = Util.null2String(rs.getString("onoffworktype"));
|
||
|
||
sectionMap = new HashMap<>();
|
||
sectionMap.put("across", across);
|
||
sectionMap.put("times", times);
|
||
sectionMap.put("mins", mins);
|
||
sectionMap.put("mins_next", mins_next);
|
||
|
||
if(serialMaps.get(serialid) != null){
|
||
Map<String,Object> tmpgroupSectionMaps = (Map<String,Object>)serialMaps.get(serialid);
|
||
if(tmpgroupSectionMaps.get(record) != null){
|
||
List<Object> tmpWorkSection = (List<Object>) tmpgroupSectionMaps.get(record);
|
||
List<Object> tmpSection = ((List<Object>)tmpWorkSection.get(tmpWorkSection.size()-1));
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(1, sectionMap);
|
||
}
|
||
}else{
|
||
workSectionList = new ArrayList<>();
|
||
sectionList = new ArrayList<>();
|
||
sectionList.add("");
|
||
sectionList.add("");
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(1, sectionMap);
|
||
}
|
||
workSectionList.add(sectionList);
|
||
tmpgroupSectionMaps.put(record, workSectionList);
|
||
}
|
||
}else{
|
||
groupSectionMaps = new HashMap<>();
|
||
workSectionList = new ArrayList<>();
|
||
serialMaps.put(serialid, groupSectionMaps);
|
||
if(groupSectionMaps.get(record) != null){
|
||
List<Object> tmpWorkSection = (List<Object>) groupSectionMaps.get(record);
|
||
List<Object> tmpSection = ((List<Object>)tmpWorkSection.get(tmpWorkSection.size()-1));
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
tmpSection.set(1, sectionMap);
|
||
}
|
||
}else{
|
||
sectionList = new ArrayList<>();
|
||
sectionList.add("");
|
||
sectionList.add("");
|
||
if("start".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(0, sectionMap);
|
||
}else if("end".equalsIgnoreCase(onoffworktype)){
|
||
sectionList.set(1, sectionMap);
|
||
}
|
||
workSectionList.add(sectionList);
|
||
groupSectionMaps.put(record, workSectionList);
|
||
}
|
||
}
|
||
}
|
||
|
||
for(Map.Entry<String,Object> me : serialMaps.entrySet()){
|
||
valList = new ArrayList<>();
|
||
String id = me.getKey();
|
||
Map<String,Object> val = (Map<String,Object>)me.getValue();
|
||
for(Map.Entry<String,Object> mee : val.entrySet()){
|
||
valList.addAll((List<Object>)mee.getValue());
|
||
}
|
||
}
|
||
|
||
} catch (Exception e) {
|
||
writeLog(e);
|
||
}
|
||
return valList;
|
||
}
|
||
|
||
/**
|
||
* 删除缓存信息
|
||
*/
|
||
public void removeShiftWorkSectionCache() {
|
||
removeCache();
|
||
}
|
||
}
|