完成根据企业日历初始化日历的功能

main
seaon 3 months ago
parent 69afe99c53
commit 7857e9f45b

@ -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;
}

@ -20,7 +20,7 @@ public class LunarCalendar {
/**
*
*/
final static String chineseNumber[] = { "", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };
final static String chineseNumber[] = { "", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊" };
/**
*
*/
@ -236,7 +236,8 @@ public class LunarCalendar {
}
final public String traditionLunarDay() {
return cyclical() + animalsYear() + "年" + (leap ? "闰" : "") + chineseNumber[month - 1] + "月" + getChinaDayString(day);
//return cyclical() + animalsYear() + "年" + (leap ? "闰" : "") + chineseNumber[month - 1] + "月" + getChinaDayString(day);
return (leap ? "闰" : "") + chineseNumber[month - 1] + "月" + getChinaDayString(day);//暂时移除农历年的显示
}
public int getYear() {

Loading…
Cancel
Save