|
|
@ -19,93 +19,110 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise
|
|
|
|
BaseBean bs = new BaseBean();
|
|
|
|
BaseBean bs = new BaseBean();
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> initCalendar(Map<String, Object> params) {
|
|
|
|
public Map<String, Object> initCalendar(Map<String, Object> params) {
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
String yearStr = Util.null2String(params.get("year"));
|
|
|
|
String yearStr = Util.null2String(params.get("year"));
|
|
|
|
String calendarId = Util.null2String(params.get("calendarId"));
|
|
|
|
String calendarId = Util.null2String(params.get("calendarId"));
|
|
|
|
|
|
|
|
if ("".equals(yearStr) || "".equals(calendarId)) {
|
|
|
|
|
|
|
|
result.put("status", "false");
|
|
|
|
|
|
|
|
result.put("message", "年份和日历必填!");
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
int year = Integer.parseInt(yearStr);
|
|
|
|
int year = Integer.parseInt(yearStr);
|
|
|
|
//查询所属机构
|
|
|
|
//查询所属机构
|
|
|
|
String sql = "select * from uf_jcl_kq_rlmc where id = " + calendarId;
|
|
|
|
String sql = "select * from uf_jcl_kq_rlmc where id = " + calendarId;
|
|
|
|
Map<String,Object> data = DbTools.getSqlToMap(sql);
|
|
|
|
Map<String,Object> data = DbTools.getSqlToMap(sql);
|
|
|
|
//所属机构
|
|
|
|
if (data.size() > 0) {
|
|
|
|
String org = Util.null2String(data.get("szjg"));
|
|
|
|
//所属机构
|
|
|
|
//单双休设置相关信息
|
|
|
|
String org = Util.null2String(data.get("szjg"));
|
|
|
|
//单双休设置,标准双休-0,单双休-1,单休-2
|
|
|
|
//单双休设置相关信息
|
|
|
|
String restDaySetting = Util.null2String(data.get("dxzsz"));
|
|
|
|
//单双休设置,标准双休-0,单双休-1,单休-2
|
|
|
|
//双周休息日,周一-周日,0-6
|
|
|
|
String restDaySetting = Util.null2String(data.get("dxzsz"));
|
|
|
|
String doubleRestDays = Util.null2String(data.get("dzxxr"));
|
|
|
|
//双周休息日,周一-周日,0-6
|
|
|
|
//单周休息日,周一-周日,0-6
|
|
|
|
String doubleRestDays = Util.null2String(data.get("dzxxr"));
|
|
|
|
String singleRestDays = Util.null2String(data.get("xzxxr"));
|
|
|
|
//单周休息日,周一-周日,0-6
|
|
|
|
//单双休轮转设置,先单后双-0,先双后单-1
|
|
|
|
String singleRestDays = Util.null2String(data.get("xzxxr"));
|
|
|
|
String restDayTransSetting = Util.null2String(data.get("dxzz"));
|
|
|
|
//单双休轮转设置,先单后双-0,先双后单-1
|
|
|
|
//是否按上一年继续轮转
|
|
|
|
String restDayTransSetting = Util.null2String(data.get("dxzz"));
|
|
|
|
String transContinue= Util.null2String(data.get("asynjx"));
|
|
|
|
//是否按上一年继续轮转
|
|
|
|
//在单双周轮换时,判断第一周的休息日情况
|
|
|
|
String transContinue= Util.null2String(data.get("asynjx"));
|
|
|
|
boolean doubleRestSign = true;
|
|
|
|
//在单双周轮换时,判断第一周的休息日情况
|
|
|
|
if (restDaySetting.equals("1")) {
|
|
|
|
boolean doubleRestSign = true;
|
|
|
|
doubleRestSign = restDayTransSetting.equals("1");
|
|
|
|
if (restDaySetting.equals("1")) {
|
|
|
|
if (transContinue.equals("1")) {
|
|
|
|
doubleRestSign = restDayTransSetting.equals("1");
|
|
|
|
doubleRestSign = checkFirstWeekRest(year, calendarId, doubleRestSign);
|
|
|
|
if (transContinue.equals("1")) {
|
|
|
|
|
|
|
|
doubleRestSign = checkFirstWeekRest(year, calendarId, doubleRestSign);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询formmodeid
|
|
|
|
//查询formmodeid
|
|
|
|
Map<String,String> formModeIdMap = Utils.getFormmodeIdMap();
|
|
|
|
Map<String,String> formModeIdMap = Utils.getFormmodeIdMap();
|
|
|
|
String formModeId = formModeIdMap.get("uf_jcl_kq_rlxx");
|
|
|
|
String formModeId = formModeIdMap.get("uf_jcl_kq_rlxx");
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
List<Map<String, Object>> dateInfoList = new ArrayList<>();
|
|
|
|
List<Map<String, Object>> dateInfoList = new ArrayList<>();
|
|
|
|
Map<String, Object> dateInfo;
|
|
|
|
Map<String, Object> dateInfo;
|
|
|
|
for (int i = 1; i <= 12; i++) {
|
|
|
|
for (int i = 1; i <= 12; i++) {
|
|
|
|
calendar.set(year, i - 1, 1);
|
|
|
|
calendar.set(year, i - 1, 1);
|
|
|
|
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
|
|
|
|
|
|
|
for (int day = 0; day < daysInMonth; day++) {
|
|
|
|
for (int day = 0; day < daysInMonth; day++) {
|
|
|
|
dateInfo = new HashMap<>();
|
|
|
|
dateInfo = new HashMap<>();
|
|
|
|
dateInfo = createDateInfo(calendar);
|
|
|
|
dateInfo = createDateInfo(calendar);
|
|
|
|
dateInfo.put("formmodeid",formModeId);
|
|
|
|
dateInfo.put("formmodeid",formModeId);
|
|
|
|
dateInfo.put("modeuuid", UUID.randomUUID().toString());
|
|
|
|
dateInfo.put("modeuuid", UUID.randomUUID().toString());
|
|
|
|
dateInfo.put("modedatacreater","1");
|
|
|
|
dateInfo.put("modedatacreater","1");
|
|
|
|
dateInfo.put("modedatacreatertype","0");
|
|
|
|
dateInfo.put("modedatacreatertype","0");
|
|
|
|
dateInfo.put("modedatacreatedate", DateUtil.getCurrentTime().split(" ")[0]);
|
|
|
|
dateInfo.put("modedatacreatedate", DateUtil.getCurrentTime().split(" ")[0]);
|
|
|
|
dateInfo.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]);
|
|
|
|
dateInfo.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]);
|
|
|
|
dateInfo.put("rlmc", calendarId);
|
|
|
|
dateInfo.put("rlmc", calendarId);
|
|
|
|
dateInfo.put("nd", yearStr);
|
|
|
|
dateInfo.put("nd", yearStr);
|
|
|
|
dateInfo.put("szjg", org);
|
|
|
|
dateInfo.put("szjg", org);
|
|
|
|
//判断日历设置是否有单双休相关数值,并修改日期类型
|
|
|
|
//判断日历设置是否有单双休相关数值,并修改日期类型
|
|
|
|
//双休时,判断双休休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
//双休时,判断双休休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
if ("0".equals(restDaySetting) && doubleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
if ("0".equals(restDaySetting) && doubleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//单休时,判断单休休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
|
|
|
|
else if ("2".equals(restDaySetting) && singleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//单双休时,判断当前周是单休还是双休,并在各自得情况下判断休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
|
|
|
|
else if ("1".equals(restDaySetting)) {
|
|
|
|
|
|
|
|
if (doubleRestSign && doubleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
} else if (!doubleRestSign && singleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
}
|
|
|
|
|
|
|
|
//单休时,判断单休休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
|
|
|
|
else if ("2".equals(restDaySetting) && singleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//单双休时,每一周都要轮换单双休状态
|
|
|
|
//单双休时,判断当前周是单休还是双休,并在各自得情况下判断休息日是否包括当前日期的星期值,休息日类型低于节假日类型
|
|
|
|
if ("6".equals(dateInfo.get("xq"))) {
|
|
|
|
else if ("1".equals(restDaySetting)) {
|
|
|
|
doubleRestSign = !doubleRestSign;
|
|
|
|
if (doubleRestSign && doubleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
|
|
|
|
} else if (!doubleRestSign && singleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) {
|
|
|
|
|
|
|
|
dateInfo.put("rqlx", "2");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//单双休时,每一周都要轮换单双休状态
|
|
|
|
|
|
|
|
if ("6".equals(dateInfo.get("xq"))) {
|
|
|
|
|
|
|
|
doubleRestSign = !doubleRestSign;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dateInfoList.add(dateInfo);
|
|
|
|
|
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dateInfoList.add(dateInfo);
|
|
|
|
|
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//删除老数据
|
|
|
|
|
|
|
|
String delSql = "delete from uf_jcl_kq_rlxx where rlmc = " + calendarId + " and nd = " + yearStr;
|
|
|
|
|
|
|
|
boolean delSign = DbTools.update(delSql);
|
|
|
|
|
|
|
|
bs.writeLog("delSign : " + delSign + ", delSql : " + delSql);
|
|
|
|
|
|
|
|
//插入新数据
|
|
|
|
|
|
|
|
String tableName = "uf_jcl_kq_rlxx";
|
|
|
|
|
|
|
|
if (dateInfoList.size() > 0) {
|
|
|
|
|
|
|
|
bs.writeLog("入库开始---");
|
|
|
|
|
|
|
|
boolean insertSign = CommonUtil.insertBatch(dateInfoList, tableName);
|
|
|
|
|
|
|
|
bs.writeLog("insertSign : " + insertSign);
|
|
|
|
|
|
|
|
result.put("status", String.valueOf(insertSign));
|
|
|
|
|
|
|
|
result.put("message", insertSign ? "初始化成功" : "初始化失败, 插入新数据未成功");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
result.put("status", "false");
|
|
|
|
|
|
|
|
result.put("message", "初始化失败, 未生成新数据");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
result.put("status", "false");
|
|
|
|
|
|
|
|
result.put("message", "初始化失败, 日历信息不存在");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//删除老数据
|
|
|
|
return result;
|
|
|
|
String delSql = "delete from uf_jcl_kq_rlxx where rlmc = " + calendarId + " and nd = " + yearStr;
|
|
|
|
|
|
|
|
boolean delSign = DbTools.update(delSql);
|
|
|
|
|
|
|
|
bs.writeLog("delSign : " + delSign + ", delSql : " + delSql);
|
|
|
|
|
|
|
|
//插入新数据
|
|
|
|
|
|
|
|
String tableName = "uf_jcl_kq_rlxx";
|
|
|
|
|
|
|
|
if (dateInfoList.size() > 0) {
|
|
|
|
|
|
|
|
bs.writeLog("入库开始---");
|
|
|
|
|
|
|
|
boolean insertSign = CommonUtil.insertBatch(dateInfoList, tableName);
|
|
|
|
|
|
|
|
bs.writeLog("insertSign : " + insertSign);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return new HashMap<>();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private boolean checkFirstWeekRest(int year, String calendarId, boolean doubleRestSign) {
|
|
|
|
private boolean checkFirstWeekRest(int year, String calendarId, boolean doubleRestSign) {
|
|
|
|