考勤,企业日历初始化功能接口增加返回值

zm_dev
sy 11 months ago
parent 35a458823d
commit 77d1bb3bb6

@ -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) {

Loading…
Cancel
Save