diff --git a/src/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.java b/src/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.java index f19334f..790cb9a 100644 --- a/src/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.java +++ b/src/com/engine/attendance/workflow/service/impl/EnterpriseCalendarServiceImpl.java @@ -19,93 +19,110 @@ public class EnterpriseCalendarServiceImpl extends Service implements Enterprise BaseBean bs = new BaseBean(); @Override public Map initCalendar(Map params) { + Map result = new HashMap<>(); String yearStr = Util.null2String(params.get("year")); 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); //查询所属机构 String sql = "select * from uf_jcl_kq_rlmc where id = " + calendarId; Map data = DbTools.getSqlToMap(sql); - //所属机构 - String org = Util.null2String(data.get("szjg")); - //单双休设置相关信息 - //单双休设置,标准双休-0,单双休-1,单休-2 - String restDaySetting = Util.null2String(data.get("dxzsz")); - //双周休息日,周一-周日,0-6 - String doubleRestDays = Util.null2String(data.get("dzxxr")); - //单周休息日,周一-周日,0-6 - String singleRestDays = Util.null2String(data.get("xzxxr")); - //单双休轮转设置,先单后双-0,先双后单-1 - String restDayTransSetting = Util.null2String(data.get("dxzz")); - //是否按上一年继续轮转 - String transContinue= Util.null2String(data.get("asynjx")); - //在单双周轮换时,判断第一周的休息日情况 - boolean doubleRestSign = true; - if (restDaySetting.equals("1")) { - doubleRestSign = restDayTransSetting.equals("1"); - if (transContinue.equals("1")) { - doubleRestSign = checkFirstWeekRest(year, calendarId, doubleRestSign); + if (data.size() > 0) { + //所属机构 + String org = Util.null2String(data.get("szjg")); + //单双休设置相关信息 + //单双休设置,标准双休-0,单双休-1,单休-2 + String restDaySetting = Util.null2String(data.get("dxzsz")); + //双周休息日,周一-周日,0-6 + String doubleRestDays = Util.null2String(data.get("dzxxr")); + //单周休息日,周一-周日,0-6 + String singleRestDays = Util.null2String(data.get("xzxxr")); + //单双休轮转设置,先单后双-0,先双后单-1 + String restDayTransSetting = Util.null2String(data.get("dxzz")); + //是否按上一年继续轮转 + String transContinue= Util.null2String(data.get("asynjx")); + //在单双周轮换时,判断第一周的休息日情况 + boolean doubleRestSign = true; + if (restDaySetting.equals("1")) { + doubleRestSign = restDayTransSetting.equals("1"); + if (transContinue.equals("1")) { + doubleRestSign = checkFirstWeekRest(year, calendarId, doubleRestSign); + } } - } - //查询formmodeid - Map formModeIdMap = Utils.getFormmodeIdMap(); - String formModeId = formModeIdMap.get("uf_jcl_kq_rlxx"); - Calendar calendar = Calendar.getInstance(); - List> dateInfoList = new ArrayList<>(); - Map dateInfo; - for (int i = 1; i <= 12; i++) { - calendar.set(year, i - 1, 1); - int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + //查询formmodeid + Map formModeIdMap = Utils.getFormmodeIdMap(); + String formModeId = formModeIdMap.get("uf_jcl_kq_rlxx"); + Calendar calendar = Calendar.getInstance(); + List> dateInfoList = new ArrayList<>(); + Map dateInfo; + for (int i = 1; i <= 12; i++) { + calendar.set(year, i - 1, 1); + int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - for (int day = 0; day < daysInMonth; day++) { - dateInfo = new HashMap<>(); - dateInfo = createDateInfo(calendar); - dateInfo.put("formmodeid",formModeId); - dateInfo.put("modeuuid", UUID.randomUUID().toString()); - dateInfo.put("modedatacreater","1"); - dateInfo.put("modedatacreatertype","0"); - dateInfo.put("modedatacreatedate", DateUtil.getCurrentTime().split(" ")[0]); - dateInfo.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]); - dateInfo.put("rlmc", calendarId); - dateInfo.put("nd", yearStr); - dateInfo.put("szjg", org); - //判断日历设置是否有单双休相关数值,并修改日期类型 - //双休时,判断双休休息日是否包括当前日期的星期值,休息日类型低于节假日类型 - 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"))) { + for (int day = 0; day < daysInMonth; day++) { + dateInfo = new HashMap<>(); + dateInfo = createDateInfo(calendar); + dateInfo.put("formmodeid",formModeId); + dateInfo.put("modeuuid", UUID.randomUUID().toString()); + dateInfo.put("modedatacreater","1"); + dateInfo.put("modedatacreatertype","0"); + dateInfo.put("modedatacreatedate", DateUtil.getCurrentTime().split(" ")[0]); + dateInfo.put("modedatacreatetime",DateUtil.getCurrentTime().split(" ")[1]); + dateInfo.put("rlmc", calendarId); + dateInfo.put("nd", yearStr); + dateInfo.put("szjg", org); + //判断日历设置是否有单双休相关数值,并修改日期类型 + //双休时,判断双休休息日是否包括当前日期的星期值,休息日类型低于节假日类型 + if ("0".equals(restDaySetting) && 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"))) { + } + //单休时,判断单休休息日是否包括当前日期的星期值,休息日类型低于节假日类型 + else if ("2".equals(restDaySetting) && singleRestDays.contains(dateInfo.get("xq").toString()) && !"1".equals(dateInfo.get("rqlx"))) { dateInfo.put("rqlx", "2"); } - //单双休时,每一周都要轮换单双休状态 - if ("6".equals(dateInfo.get("xq"))) { - doubleRestSign = !doubleRestSign; + //单双休时,判断当前周是单休还是双休,并在各自得情况下判断休息日是否包括当前日期的星期值,休息日类型低于节假日类型 + else if ("1".equals(restDaySetting)) { + 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", "初始化失败, 日历信息不存在"); } - //删除老数据 - 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<>(); + return result; } private boolean checkFirstWeekRest(int year, String calendarId, boolean doubleRestSign) {