package com.product.org.admin.service; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.google.common.collect.Lists; import com.product.common.lang.DateUtils; import com.product.common.lang.StringUtils; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.module.sys.entity.SystemUser; import com.product.org.admin.config.CmnConst; import com.product.util.BaseUtil; /** * 公司节假日 * Copyright PRODUCT-BASE * @Title: PRODUCT-BASE- * @Project: CompanyHolidayConfigController * @Date: 2021年8月13日 下午5:13:04 * @Author: 杜洪波 * @Description: */ @Component public class CompanyHolidayConfigService extends AbstractBaseService{ @Autowired BaseDao baseDao; /** * 节假日列表 * @param fse * @return */ public DataTableEntity listHolidayOfYear(FieldSetEntity fse) { SystemUser currentUser=SpringMVCContextHolder.getCurrentUser(); String year_number=fse.getString("year_number"); if (StringUtils.isEmpty(year_number)) { year_number=Calendar.getInstance().get(Calendar.YEAR)+""; } return baseDao.listTable(CmnConst.PRODUCT_SYS_COMPANY_HOLIDAY, "year_number=? and org_level_uuid=?", new Object[] {year_number,currentUser.getOrg_level_uuid()}); } /** * 节假日新增或修改 * @param dt * @return */ public boolean addOrUpdateHoliday(FieldSetEntity fse) { //获取当前人信息 SystemUser currentUser=SpringMVCContextHolder.getCurrentUser(); //获取当前人所属公司 String org_level_uuid=currentUser.getOrg_level_uuid(); //获取节假日年份 Integer yearNumber=fse.getInteger("year_number"); //获取节假日数据 DataTableEntity dtHoliday=fse.getSubDataTable(CmnConst.PRODUCT_SYS_COMPANY_HOLIDAY); //删除已有节假日数据 baseDao.delete(CmnConst.PRODUCT_SYS_COMPANY_HOLIDAY, "year_number=? and org_level_uuid=?", new Object[] {yearNumber,org_level_uuid}); if (!BaseUtil.dataTableIsEmpty(dtHoliday)) { Integer userID=currentUser.getUser_id(); Date currentDate=new Date(); for (int i = 0; i < dtHoliday.getRows(); i++) { dtHoliday.getFieldSetEntity(i).setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid); dtHoliday.getFieldSetEntity(i).setValue(CmnConst.CREATED_BY, userID); dtHoliday.getFieldSetEntity(i).setValue(CmnConst.CREATED_UTC_DATETIME, currentDate); } baseDao.add(dtHoliday); } return true; } /** * 获取节假日配置 * @param year * @return */ public List getHolidayYear(Integer year) { //获取当前操作人信息 SystemUser currentUser=SpringMVCContextHolder.getCurrentUser(); String org_level_uuid=currentUser.getOrg_level_uuid(); SetsetHoliday=new HashSet<>(); DataTableEntity dtHoliday=baseDao.listTable(CmnConst.PRODUCT_SYS_COMPANY_HOLIDAY, "org_level_uuid=? and year_number=?",new Object[] {org_level_uuid,year}); if (!BaseUtil.dataTableIsEmpty(dtHoliday)) { for (int i = 0; i < dtHoliday.getRows(); i++) { setHoliday.add(dtHoliday.getFieldSetEntity(i).getDate("date_holiday", "yyyy-MM-dd HH:mm:ss")); } } //定义月份 String [] month=new String[] {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}; //创建返回数据集 ListdataList=new ArrayList<>(); //遍历月份 for (int i = 0; i < month.length; i++) { //生成标准日期 String yearAndMonth=year+"-"+(i+1)+"-01 00:00:00"; //获取每月天数 int totalDay= DateUtils.getMonthHasDays(DateUtils.parseDate(yearAndMonth)); List holiday=new ArrayList<>(); //日期 List weeks=Lists.newArrayList(); //星期数 List values=Lists.newArrayList(); //是否节假日 //按月集中数据 MapmonthInfo=new HashMap<>(); for (int j = 1; j <= totalDay; j++) { //获取天标准日期 Date yearAndMonthAndDay=DateUtils.parseDate(year+"-"+(i+1)+"-"+j+" 00:00:00"); //转为星期 String formatDate = DateUtils.formatDate(yearAndMonthAndDay, "E"); if (!StringUtils.isEmpty(formatDate)) { formatDate=formatDate.replace("星期", ""); } //装载日期(如有节假日,则转为节假日) holiday.add(DateUtils.getDayShow(year, i, j)); weeks.add(formatDate); if (setHoliday.contains(DateUtils.formatDate(yearAndMonthAndDay,null))) { values.add(true); }else { values.add(false); } } monthInfo.put("title", month[i]); monthInfo.put("days",holiday); monthInfo.put("week", weeks); monthInfo.put("values",values); dataList.add(monthInfo); } return dataList; } }