|
|
|
@ -29,21 +29,24 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise
|
|
|
|
|
int year = Integer.parseInt(yearStr);
|
|
|
|
|
//查询所属机构
|
|
|
|
|
String sql = "select * from uf_jcl_kq_rlmc where id = " + calendarId;
|
|
|
|
|
Map<String,Object> data = DbTools.getSqlToMap(sql);
|
|
|
|
|
if (data.size() > 0) {
|
|
|
|
|
Map<String,Object> dataMain = DbTools.getSqlToMap(sql);
|
|
|
|
|
if (dataMain.size() > 0) {
|
|
|
|
|
//所属机构
|
|
|
|
|
String org = Util.null2String(data.get("szjg"));
|
|
|
|
|
String org = Util.null2String(dataMain.get("szjg"));
|
|
|
|
|
//单双休设置相关信息
|
|
|
|
|
//单双休设置,标准双休-0,单双休-1,单休-2
|
|
|
|
|
String restDaySetting = Util.null2String(data.get("dxzsz"));
|
|
|
|
|
String restDaySetting = Util.null2String(dataMain.get("dxzsz"));
|
|
|
|
|
//双周休息日,周一-周日,0-6
|
|
|
|
|
String doubleRestDays = Util.null2String(data.get("dzxxr"));
|
|
|
|
|
String doubleRestDays = Util.null2String(dataMain.get("dzxxr"));
|
|
|
|
|
//单周休息日,周一-周日,0-6
|
|
|
|
|
String singleRestDays = Util.null2String(data.get("xzxxr"));
|
|
|
|
|
String singleRestDays = Util.null2String(dataMain.get("xzxxr"));
|
|
|
|
|
//单双休轮转设置,先单后双-0,先双后单-1
|
|
|
|
|
String restDayTransSetting = Util.null2String(data.get("dxzz"));
|
|
|
|
|
String restDayTransSetting = Util.null2String(dataMain.get("dxzz"));
|
|
|
|
|
//是否按上一年继续轮转
|
|
|
|
|
String transContinue= Util.null2String(data.get("asynjx"));
|
|
|
|
|
String transContinue= Util.null2String(dataMain.get("asynjx"));
|
|
|
|
|
//是否使用农历且带入农历节气信息
|
|
|
|
|
String lunarFlag= Util.null2String(dataMain.get("jqdrmc"));
|
|
|
|
|
Map<String,Map<String,Object>> holidayMap = DealDetail(calendarId, yearStr, lunarFlag);
|
|
|
|
|
//在单双周轮换时,判断第一周的休息日情况
|
|
|
|
|
boolean doubleRestSign = true;
|
|
|
|
|
if (restDaySetting.equals("1")) {
|
|
|
|
@ -96,6 +99,16 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise
|
|
|
|
|
doubleRestSign = !doubleRestSign;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (holidayMap.containsKey(dateInfo.get("rq"))){
|
|
|
|
|
dateInfo.put("mc", holidayMap.get(dateInfo.get("rq")).get("mc"));
|
|
|
|
|
dateInfo.put("rqlx", holidayMap.get(dateInfo.get("rq")).get("rqlx"));
|
|
|
|
|
dateInfo.put("bz", holidayMap.get(dateInfo.get("rq")).get("bz"));
|
|
|
|
|
}
|
|
|
|
|
if (holidayMap.containsKey(dateInfo.get("nlrq")) && !holidayMap.containsKey("闰"+dateInfo.get("nlrq"))){
|
|
|
|
|
dateInfo.put("mc", holidayMap.get(dateInfo.get("nlrq")).get("mc"));
|
|
|
|
|
dateInfo.put("rqlx", holidayMap.get(dateInfo.get("nlrq")).get("rqlx"));
|
|
|
|
|
dateInfo.put("bz", holidayMap.get(dateInfo.get("nlrq")).get("bz"));
|
|
|
|
|
}
|
|
|
|
|
dateInfoList.add(dateInfo);
|
|
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
|
|
}
|
|
|
|
@ -152,6 +165,81 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据日历信息明细设置特定日期日历
|
|
|
|
|
* @param pCalendarId 日历信息ID
|
|
|
|
|
* @param pYearStr 年度
|
|
|
|
|
* @param pLunarFlag 是否农历检查
|
|
|
|
|
* @return 各特定日期信息
|
|
|
|
|
*/
|
|
|
|
|
private Map<String,Map<String,Object>> DealDetail(String pCalendarId, String pYearStr, String pLunarFlag){
|
|
|
|
|
String sql = "SELECT * FROM UF_JCL_KQ_RLMC_DT1 WHERE MAINID = " + pCalendarId;
|
|
|
|
|
List<Map<String,Object>> dataDetail = DbTools.getSqlToList(sql);
|
|
|
|
|
String row_mc = "";//名称
|
|
|
|
|
String row_rqlx = "";//日期类型:0:工作日;1:节假日;2:公休日;3:调休日;4:调班日
|
|
|
|
|
String row_bzsm = "";//备注说明
|
|
|
|
|
String row_lx = "";//类型:0:公历;1:农历
|
|
|
|
|
String row_glrq = "";//公历日期
|
|
|
|
|
String row_nlrq = "";//农历日期
|
|
|
|
|
String row_rqczz = "";//日期参照值:0:年-月-日;1:月-日;2:月-周
|
|
|
|
|
String row_dydjr = "";//当月第几日
|
|
|
|
|
int row_dydjz = 0;//当月第几周
|
|
|
|
|
int row_dzxqj = 0;//当周星期几
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
Map<String,Object> row_data = new HashMap<>();
|
|
|
|
|
Map<String,Map<String,Object>> rows = new HashMap<>();
|
|
|
|
|
for (Map<String,Object> holidayMap :dataDetail) {
|
|
|
|
|
row_glrq = Util.null2String(holidayMap.get("glrq"));//公历日期
|
|
|
|
|
row_mc = holidayMap.get("mc").toString();
|
|
|
|
|
row_lx = holidayMap.get("lx").toString();
|
|
|
|
|
row_rqlx = holidayMap.get("rqlx").toString();
|
|
|
|
|
row_bzsm = Util.null2String(holidayMap.get("bzsm"));
|
|
|
|
|
row_nlrq = Util.null2String(holidayMap.get("nlrq"));
|
|
|
|
|
row_rqczz = Util.null2String(holidayMap.get("rqczz"));
|
|
|
|
|
row_data = new HashMap<>();
|
|
|
|
|
row_data.put("mc", row_mc);
|
|
|
|
|
row_data.put("rqlx", row_rqlx);
|
|
|
|
|
row_data.put("bz", row_bzsm);
|
|
|
|
|
if (row_lx.equals("0")){
|
|
|
|
|
//公历
|
|
|
|
|
switch (row_rqczz) {
|
|
|
|
|
case "0":
|
|
|
|
|
//年-月-日
|
|
|
|
|
break;
|
|
|
|
|
case "1":
|
|
|
|
|
//月-日 2024-12-13
|
|
|
|
|
calendar = Calendar.getInstance();
|
|
|
|
|
calendar.set(Integer.parseInt(pYearStr),Integer.parseInt(Util.null2String(holidayMap.get("glrq")).substring(5,7))-1,Integer.parseInt(holidayMap.get("dydjr").toString()));
|
|
|
|
|
row_glrq = sdf.format(calendar.getTime());
|
|
|
|
|
break;
|
|
|
|
|
case "2":
|
|
|
|
|
//月-周
|
|
|
|
|
calendar = Calendar.getInstance();
|
|
|
|
|
calendar.set(Integer.parseInt(pYearStr),Integer.parseInt(Util.null2String(holidayMap.get("glrq")).substring(5,7))-1,1);
|
|
|
|
|
int dayOfWeek = Integer.parseInt(getWeek(calendar));//周一-周日为0-6
|
|
|
|
|
row_dydjz = Integer.parseInt(holidayMap.get("dydjz").toString());
|
|
|
|
|
row_dzxqj = Integer.parseInt(holidayMap.get("dzxqj").toString());
|
|
|
|
|
if (row_dzxqj>dayOfWeek) {
|
|
|
|
|
calendar.add(Calendar.DATE, row_dzxqj - dayOfWeek);
|
|
|
|
|
}else{
|
|
|
|
|
calendar.add(Calendar.DATE, row_dzxqj + 7 - dayOfWeek);
|
|
|
|
|
}
|
|
|
|
|
calendar.add(Calendar.DATE, (row_dydjz-1)*7);
|
|
|
|
|
row_glrq = sdf.format(calendar.getTime());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
row_glrq = row_nlrq;
|
|
|
|
|
}
|
|
|
|
|
row_data.put("rq", row_glrq);
|
|
|
|
|
rows.put(row_glrq,row_data);
|
|
|
|
|
}
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<String, Object> createDateInfo(Calendar calendar) {
|
|
|
|
|
Map<String, Object> dateInfo = new HashMap<>();
|
|
|
|
|
// 获取阳历年-月-日
|
|
|
|
@ -183,6 +271,7 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise
|
|
|
|
|
dateInfo.put("xq", weekIndex);
|
|
|
|
|
dateInfo.put("mc", specialDay.equals("") ? null : specialDay);
|
|
|
|
|
dateInfo.put("rqlx", dayType);
|
|
|
|
|
dateInfo.put("bz", "");
|
|
|
|
|
return dateInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|