当前位置: 首页 > news >正文

佛山专业网站建设团队青岛seo搜索优化

佛山专业网站建设团队,青岛seo搜索优化,沈阳公路建设工程信息网,用视频做影视的网站一些项目中会有日历或日期设置#xff0c;最基本的会显示工作日#xff0c;休息日#xff0c;节假日等等#xff0c;下面就是基于项目中的日历管理功能#xff0c;要显示工作日#xff0c;休息日#xff0c;节假日 效果图 获取国家法定节假日工具类 public class Holi…一些项目中会有日历或日期设置最基本的会显示工作日休息日节假日等等下面就是基于项目中的日历管理功能要显示工作日休息日节假日 效果图 获取国家法定节假日工具类 public class HolidayUtils {private static Logger logger LoggerFactory.getLogger(HolidayUtils.class);public static MapString,MapString,OtherData monthToHolidayDate new ConcurrentHashMap(12);public static MapString,OtherData dateToOtherData new ConcurrentHashMap(12);public static void main(String[] args) {System.out.println(getAllHoliday(2024));}/*** 获取周末和节假日** param year* return*/public static ListString getAllHoliday(int year) {// 获取所有的周末SetString allWeekend getAllWeekend(year);// http://timor.tech/api/holiday api文档地址Map apiHoliday getApiHoliday(year);Integer code (Integer) apiHoliday.get(code);if (code ! 0) {return null;}MapString, MapString, Object holiday (MapString, MapString, Object) apiHoliday.get(holiday);SetString strings holiday.keySet();for (String str : strings) {MapString, Object stringObjectMap holiday.get(str);Integer wage (Integer) stringObjectMap.get(wage);String date (String) stringObjectMap.get(date);//筛选掉补班if (wage.equals(1)) {allWeekend.remove(date);} else {allWeekend.add(date);}int monthByDate CalendarUtils.getMonthByDate(CalendarUtils.parseDateStrToDate(date, yyyy-MM-dd));if (!monthToHolidayDate.containsKey(monthByDate)){monthToHolidayDate.put(monthByDate,new HashMap());}MapString, OtherData dateToOtherData monthToHolidayDate.get(monthByDate);if (dateToOtherData null) dateToOtherData new HashMap();if (!dateToOtherData.containsKey(date)){OtherData otherData new OtherData();otherData.putAll(stringObjectMap);dateToOtherData.put(date,otherData);dateToOtherData.put(date,otherData);}}ListString result new ArrayList(allWeekend);result result.stream().sorted().collect(Collectors.toList());return result;}/*** 获取节假日不含周末** param year* return*/private static Map getApiHoliday(int year) {String url http://timor.tech/api/holiday/year/ year;String rsa HttpUtil.get(url);logger.info(rsa:{},rsa);Map map JsonConverter.jsonStrToObject(rsa, Map.class);return map;}/*** 获取周末 月从0开始** param year* return*/public static SetString getAllWeekend(int year) {SetString dateList new HashSet();SimpleDateFormat simdf new SimpleDateFormat(yyyy-MM-dd);Calendar calendar new GregorianCalendar(year, 0, 1);Calendar endCalendar new GregorianCalendar(year, 11, 31);while (true) {int weekday calendar.get(Calendar.DAY_OF_WEEK);if (weekday 1 || weekday 7) {dateList.add(simdf.format(calendar.getTime()));}calendar.add(Calendar.DATE, 1);if (calendar.getTimeInMillis() endCalendar.getTimeInMillis()) {break;}}return dateList;}public static MapString,OtherData getHolidayByMonth(String month,Date date){if (monthToHolidayDate null) return new HashMap();if (StringUtils.isNotBlank(month)){month CalendarUtils.getMonthByDate(date) ;MapString, OtherData dateToOtherData monthToHolidayDate.get(month);if (dateToOtherData null) dateToOtherData new HashMap();return dateToOtherData;}return new HashMap();}public static OtherData getHolidayByDate(Date date){String month CalendarUtils.getMonthByDate(date) ;MapString, OtherData dateToOtherData monthToHolidayDate.get(month);if (dateToOtherData null || dateToOtherData.size() 0) return null;String dateStr CalendarUtils.toString(date, yyyy-MM-dd);OtherData otherData dateToOtherData.get(dateStr);if (otherData ! null otherData.obtainVal(wage,Integer.class) ! null 1 otherData.obtainVal(wage,Integer.class)){return null;}return otherData;}public static String isHoliday(Date date){String month CalendarUtils.getMonthByDate(date) ;MapString, OtherData dateToOtherData monthToHolidayDate.get(month);if (dateToOtherData null || dateToOtherData.size() 0) return null;String dateStr CalendarUtils.toString(date, yyyy-MM-dd);OtherData otherData dateToOtherData.get(dateStr);if (otherData null) return null;if (otherData ! null otherData.obtainVal(wage,Integer.class) ! null 1 otherData.obtainVal(wage,Integer.class)){return DateRec.DATE_TYPE_WORK;}return DateRec.DATE_TYPE_HOLIDAY;}}返回的JSON数据格式 {code: 0,holiday: {01-01: {holiday: true,name: 元旦,wage: 3,date: 2024-01-01,rest: 1},02-04: {holiday: false,name: 春节前补班,wage: 1,after: false,target: 春节,date: 2024-02-04,rest: 9},02-10: {holiday: true,name: 初一,wage: 3,date: 2024-02-10,rest: 15},02-11: {holiday: true,name: 初二,wage: 3,date: 2024-02-11,rest: 1},02-12: {holiday: true,name: 初三,wage: 3,date: 2024-02-12},02-13: {holiday: true,name: 初四,wage: 2,date: 2024-02-13},02-14: {holiday: true,name: 初五,wage: 2,date: 2024-02-14},02-15: {holiday: true,name: 初六,wage: 2,date: 2024-02-15},02-16: {holiday: true,name: 初七,wage: 2,date: 2024-02-16},02-17: {holiday: true,name: 初八,wage: 2,date: 2024-02-17},02-18: {holiday: false,name: 春节后补班,wage: 1,after: true,target: 春节,date: 2024-02-18},04-04: {holiday: true,name: 清明节,wage: 3,date: 2024-04-04,rest: 46},04-05: {holiday: true,name: 清明节,wage: 2,date: 2024-04-05},04-06: {holiday: true,name: 清明节,wage: 2,date: 2024-04-06},04-07: {holiday: false,name: 清明节后补班,wage: 1,target: 清明节,after: true,date: 2024-04-07},04-28: {holiday: false,name: 劳动节前补班,wage: 1,target: 劳动节,after: false,date: 2024-04-28},05-01: {holiday: true,name: 劳动节,wage: 3,date: 2024-05-01},05-02: {holiday: true,name: 劳动节,wage: 2,date: 2024-05-02,rest: 1},05-03: {holiday: true,name: 劳动节,wage: 3,date: 2024-05-03},05-04: {holiday: true,name: 劳动节,wage: 3,date: 2024-05-04},05-05: {holiday: true,name: 劳动节,wage: 3,date: 2024-05-05},05-11: {holiday: false,name: 劳动节后补班,after: true,wage: 1,target: 劳动节,date: 2024-05-11},06-08: {holiday: true,name: 端午节,wage: 2,date: 2024-06-08},06-09: {holiday: true,name: 端午节,wage: 2,date: 2024-06-09},06-10: {holiday: true,name: 端午节,wage: 3,date: 2024-06-10},09-14: {holiday: false,name: 中秋节前补班,after: false,wage: 1,target: 中秋节,date: 2024-09-14,rest: 96},09-15: {holiday: true,name: 中秋节,wage: 2,date: 2024-09-15,rest: 97},09-16: {holiday: true,name: 中秋节,wage: 2,date: 2024-09-16},09-17: {holiday: true,name: 中秋节,wage: 3,date: 2024-09-17},09-29: {holiday: false,name: 国庆节前补班,after: false,wage: 1,target: 国庆节,date: 2024-09-29},10-01: {holiday: true,name: 国庆节,wage: 3,date: 2024-10-01},10-02: {holiday: true,name: 国庆节,wage: 3,date: 2024-10-02,rest: 1},10-03: {holiday: true,name: 国庆节,wage: 3,date: 2024-10-03},10-04: {holiday: true,name: 国庆节,wage: 2,date: 2024-10-04},10-05: {holiday: true,name: 国庆节,wage: 2,date: 2024-10-05},10-06: {holiday: true,name: 国庆节,wage: 2,date: 2024-10-06,rest: 1},10-07: {holiday: true,name: 国庆节,wage: 2,date: 2024-10-07,rest: 1},10-12: {holiday: false,after: true,wage: 1,name: 国庆节后补班,target: 国庆节,date: 2024-10-12}} }实体模型 Entity Table(name t_daterec,indexes{Index(nameidx_t_daterec1,columnListdateType),Index(nameidx_t_daterec2,columnListdateTime)} ) public class DateRec extends ExBizEntity {public static final String DATE_TYPE_WORK work;public static final String DATE_TYPE_WEEKEND weekend;public static final String DATE_TYPE_HOLIDAY holiday;Column(length20,nullablefalse)private String dateType;//日历类型private Date dateTime;//日期public String getDateType() {return dateType;}public Date getDateTime() {return dateTime;}public DateRec() {}public DateRec(String id,String dateType, Date dateRTime) {this.id id;this.dateType dateType;this.dateTime dateTime;} }Entity Table(name t_holiday,indexes{Index(nameidx_t_holiday1,columnListholidayDate)} ) public class Holiday extends ExBizEntity{private Date holidayDate;public Holiday() {}public Holiday(Date holidayDate) {this.holidayDate holidayDate;}public Date getHolidayDate() {return holidayDate;} }超类 MappedSuperclass public abstract class ExBizEntity extends ValueObjectEntity {Type(typecom.xysd.common.utils.hibernateType.MyCustomJsonType)private OtherData exAttr new OtherData();//额外属性mappublic OtherData getExAttr() {return exAttr;}protected ExBizEntity(){super();}protected ExBizEntity(MapString, Object exAttr) {super();this.getNotNullExAttrWithUpdate().putAll(exAttr);}//获取非空扩展属性private OtherData getNotNullExAttrWithUpdate() {if(this.exAttr null) this.exAttr new OtherData();return this.exAttr;}public void clearExAttr(){this.exAttr null;}//更新扩展属性public void updateExAttr(MapString, Object exAttr){this.getNotNullExAttrWithUpdate().clear();if(exAttrnull) {this.exAttr null;return;}this.addAttrs(exAttr);}//添加扩展属性public void addAttr(String key, Object value){if(StringUtils.isBlank(key)) return;if(valuenull) {this.getNotNullExAttrWithUpdate().remove(key);}else {this.getNotNullExAttrWithUpdate().put(key, value);}}//添加扩展属性public void addAttrs(MapString, Object exAttr){if(exAttrnull) return;for (Map.EntryString,Object e : exAttr.entrySet()) {this.addAttr(e.getKey(), e.getValue());}}//获取指定类型的对象Transientpublic T T getAttr(String key) {if(this.exAttrnull) return null;return this.exAttr.obtainVal(key);}//获取指定类型的对象Transientpublic T T getAttr(String key, ClassT valClass) {if(this.exAttrnull) return null;return this.exAttr.obtainVal(key, valClass);}//获取指定转换类型的对象Transientpublic T T getAttr(String key, TypeReferenceT valTypeRef) {if(this.exAttrnull) return null;return this.exAttr.obtainVal(key, valTypeRef);}}MappedSuperclass public abstract class ValueObjectEntity extends IEntity{public static String SYSCODE_CADcad;//系统编码-cad:cad接口protected Date createTime new Date();//创建时间Type(type org.hibernate.type.NumericBooleanType)protected boolean historyfalse;Column(length40)protected String createIp;//创建时的ipprotected int valid1;//有效性protected Date lastUpdateDate new Date();//最后更新时间Column(length10)protected String syscodeSYSCODE_HDXF; //数据系统编码public Date getCreateTime() {return createTime;}public boolean isHistory() {return history;}public String getCreateIp() {return createIp;}public int getValid() {return valid;}public Date getLastUpdateDate() {return lastUpdateDate;}public String getSyscode() {return syscode;}protected ValueObjectEntity() {super();}Transientpublic boolean isValidEntity(){return this.getValid()1;}public void updateValid(int valid){this.valid valid;}}MappedSuperclass public abstract class IEntity {IdColumn(length100)GeneratedValue(generatoruuidkey)GenericGenerator(nameuuidkey, strategy com.xysd.common.utils.BaseIDGenerator)protected String id;public String getId() {return this.id;}/*** 对比俩个实体是否是同一个*/public boolean compareObject(IEntity other) {return other ! null new EqualsBuilder().append(this.id, other.getId()).isEquals();}} public class BaseIDGenerator implements IdentifierGenerator {private static AutoIncrementIdUtil autoIncrementIdUtil;public static void registAutoIncrementIdUtil(AutoIncrementIdUtil autoIncrementIdUtil){BaseIDGenerator.autoIncrementIdUtil autoIncrementIdUtil;}Overridepublic Serializable generate(SharedSessionContractImplementor arg0,Object o) throws HibernateException {if(o instanceof NeedAutoIncrementId){NeedAutoIncrementId entity (NeedAutoIncrementId) o;String id entity.obtainId();if(!StringUtils.isEmpty(id)){entity.initId(id);}else {id autoIncrementIdUtil.getId(entity.getClass().getSimpleName(), entity.obtainParentId(),entity.obtainLength(), entity.obtainSeparator());entity.initId(id);}return id;}if(o instanceof IEntity){//允许自己指定IDIEntity be (IEntity)o;if(StringUtils.isNotBlank(be.getId())){return be.getId();}}return Utils.getUUID();} }接口 ApiOperation(value日历管理查看,httpMethodGET)ApiImplicitParams({ApiImplicitParam(nameyear,value年份,requiredtrue),ApiImplicitParam(namemonth,value月份,requiredtrue)})RequestMapping(value /dates/list, method RequestMethod.GET)public String getDates(RequestParam int year, RequestParam int month, HttpServletRequest hreq) {String weeks myService.getDates(year,month);return weeks;}}Service服务及封装数据 Service public class MyService {Autowiredprivate DateRecRepositoryHibernate dateRecRepositoryHibernate;PostConstructpublic void init(){//加载国家法定节假日HolidayUtils.getAllHoliday(CalendarUtils.getCurrentYear());MapString, OtherData dateToOtherData HolidayUtils.dateToOtherData;ListHoliday holidays this.dateRecRepositoryHibernate.getHolidays();if (CollectionUtils.isNotEmpty(holidays)) {for (Holiday holiday : holidays) {HolidayUtils.dateToOtherData.put(CalendarUtils.toString(holiday.getHolidayDate(), yyyy-MM-dd), holiday.getExAttr());}} else {for (Map.EntryString, OtherData entry : dateToOtherData.entrySet()) {Holiday h new Holiday(CalendarUtils.parseDateStrToDate(entry.getKey(), yyyy-MM-dd));h.addAttrs(entry.getValue());this.dateRecRepositoryHibernate.createOrUpdateHoliday(h);}}}public String getDates(int year, int month) {//要返回前端展示使用ListWeekDTO weeks new ArrayListWeekDTO();//获取year年month月的第一天Date monthBegin CalendarUtils.getMonthBeginByYearAndMonth(year, month);//获取year年month月的最后一天Date monthEnd CalendarUtils.getMonthEndByYearAndMonth(year, month);WeekValObj wo CalendarUtils.getWeekValObjByDateOfYear(monthBegin);//获取year年month月的第一天是这一年中第几周int weekNumOfMonthBegin wo.getWeek();//selectYear就是yearint selectedYear wo.getYear();MapString, DateDTO allDates new HashMapString, DateDTO();ListString dates new ArrayListString();int weekNum 7;for (int k 0; k weekNum; k) {//获取selectyear年总共有几周int maxWeekOfYear CalendarUtils.getMaxWeekCountByYear(selectedYear);//获取selectedYear年第weekNumOfMonthBegin周的第一天日期Date weekBegin CalendarUtils.getWeekBeginByYearAndWeek(selectedYear, weekNumOfMonthBegin);ListDateDTO weekDates new ArrayListDateDTO();if (weekBegin null) {//如果没有获取到 则默认为year1年的第一周的第一天日期weekBegin CalendarUtils.getWeekBeginByYearAndWeek(year 1, 1);}if (weekBegin ! null weekBegin.getTime() monthEnd.getTime()) {for (int i 0; i 7; i) {//开始取第weekNumOfMonthBegin周的第i天Date d DateUtils.addDays(weekBegin, i);String type null;if (StringUtils.isNotBlank(HolidayUtils.isHoliday(d))) {type HolidayUtils.isHoliday(d);} else {type DateRec.DATE_TYPE_WORK;if (i 5) {type DateRec.DATE_TYPE_WEEKEND;}}//是否要展示boolean display d.getTime() monthBegin.getTime() d.getTime() monthEnd.getTime();String dateStr CalendarUtils.toString(d, yyyy-MM-dd);DateDTO dateDTO new DateDTO(dateStr, type, display);weekDates.add(dateDTO);allDates.put(dateDTO.getDate(), dateDTO);}weeks.add(new WeekDTO(year, weekNumOfMonthBegin, weekDates));}if (weekNumOfMonthBegin maxWeekOfYear) {selectedYear;weekNumOfMonthBegin 1;} else {weekNumOfMonthBegin;}}dates.addAll(allDates.keySet());MapString, Object params new HashMap();params.put(dates, dates);ListDateRec existedDateRecs this.dateRecRepositoryHibernate.getDateRecBy(params);for (DateRec drec : existedDateRecs) {//已存在的DateDTO dto allDates.remove(drec.getId());if (dto ! null) {dto.setDateType(drec.getDateType());}}for (DateDTO dto : allDates.values()) {//需要创建的DateRec drec new DateRec(dto.getDate(),dto.getDateType(), CalendarUtils.parseDateStrToDate(dto.getDate(), yyyy-MM-dd));this.dateRecRepositoryHibernate.createOrUpdateDateRec(drec);}return JsonConverter.toJsonStr(weeks);}}数据基础层 Repository public class DateRecRepositoryHibernate extends JpaHibernateRepository {public void createOrUpdateDateRec(DateRec dateRec){this.getSession().saveOrUpdate(dateRec);}public ListDateRec getDateRecBy(MapString,Object params){StringBuffer sql new StringBuffer();sql.append( select id from t_daterec where valid 1 );if (params.get(ids) ! null){sql.append( and id in (:ids) );}if (params.get(dates) ! null){sql.append( and date in (:dates) );}if (params.get(dateTypes) ! null){sql.append( and date_type in (:dateTypes) );}ListString ids this.createSQLQueryByMapParams(sql.toString(), params).list();if (CollectionUtils.isEmpty(ids)) return new ArrayList();ListDateRec recs this.findByOrderedIds(DateRec.class, ids);if (recs null) return new ArrayList();return recs;}public void createOrUpdateHoliday(Holiday holiday){this.getSession().saveOrUpdate(holiday);}public ListHoliday getHolidays(){String sql select d from Holiday.class.getName() d where d.holidayDate : begin and d.holidayDate :end ;ListHoliday list this.createHQLQueryByMapParams(Holiday.class, sql, Utils.buildMap(begin, CalendarUtils.getCurrentYearBeginDate(), end, CalendarUtils.getCurrentYearEndDate())).list();if (list null) list new ArrayList();return list;} }请求返回值 [{year: 2024,weekNum: 5,dates: [{date: 2024-01-29,dateType: work,display: false},{date: 2024-01-30,dateType: work,display: false},{date: 2024-01-31,dateType: work,display: false},{date: 2024-02-01,dateType: work,display: true},{date: 2024-02-02,dateType: work,display: true},{date: 2024-02-03,dateType: weekend,display: true},{date: 2024-02-04,dateType: weekend,display: true}]},{year: 2024,weekNum: 6,dates: [{date: 2024-02-05,dateType: work,display: true},{date: 2024-02-06,dateType: work,display: true},{date: 2024-02-07,dateType: work,display: true},{date: 2024-02-08,dateType: work,display: true},{date: 2024-02-09,dateType: work,display: true},{date: 2024-02-10,dateType: weekend,display: true},{date: 2024-02-11,dateType: weekend,display: true}]},{year: 2024,weekNum: 7,dates: [{date: 2024-02-12,dateType: work,display: true},{date: 2024-02-13,dateType: work,display: true},{date: 2024-02-14,dateType: work,display: true},{date: 2024-02-15,dateType: work,display: true},{date: 2024-02-16,dateType: work,display: true},{date: 2024-02-17,dateType: weekend,display: true},{date: 2024-02-18,dateType: weekend,display: true}]},{year: 2024,weekNum: 8,dates: [{date: 2024-02-19,dateType: work,display: true},{date: 2024-02-20,dateType: work,display: true},{date: 2024-02-21,dateType: work,display: true},{date: 2024-02-22,dateType: work,display: true},{date: 2024-02-23,dateType: work,display: true},{date: 2024-02-24,dateType: weekend,display: true},{date: 2024-02-25,dateType: weekend,display: true}]},{year: 2024,weekNum: 9,dates: [{date: 2024-02-26,dateType: work,display: true},{date: 2024-02-27,dateType: work,display: true},{date: 2024-02-28,dateType: work,display: true},{date: 2024-02-29,dateType: work,display: true},{date: 2024-03-01,dateType: work,display: false},{date: 2024-03-02,dateType: weekend,display: false},{date: 2024-03-03,dateType: weekend,display: false}]} ]
http://www.laogonggong.com/news/126982.html

相关文章:

  • 做商城网站要多少钱怎么改一个网站的关键词密度
  • 哪些是 joomla做的网站宜黄县建设局网站
  • 南京网站制作西安北京网站建设制作方案
  • 厦门网站建设开发wordpress发邮件功能
  • flash网站全屏代码网站建设过程论文
  • 平度做网站推广上海住房和城乡建设网站
  • 南通网站排名北京网站托管
  • 杭州哪家网站建设公司好flash 网站开发教程
  • 显示官网字样的网站怎么做一级a做爰片免费网站孕交视频教程
  • 给客户做一个网站ppt怎么做长沙做网站kaodezhu
  • 做网站包含什么职位网站内容如何管理
  • 手机微信网站链接wordpress 面包
  • 广西南宁电商网站建设汉字市城乡建设规划局官方网站
  • 杭州富阳网站建设软件开发工程师证书含金量
  • 制作网站公司图片大型网站建设公司 北京
  • 十大装潢公司上海唐山网站关键词优化
  • 下载什么软件可以做动漫视频网站合肥室内设计培训学校哪家好
  • 中国建设银行企业信息门户网站用微信怎么做企业网站
  • 成都网站建设报价表做淘宝客网站php
  • 做国外直播网站网页代理访问
  • 中国建设银行官方网站悦生活购物网站那个信用好又便宜
  • 信号增强器设置网站网站备案后怎么建网站
  • 企石网站建设广州公司网站制作费用
  • 提高网站搜索排名佛山模板网站建站
  • 网站开发平台 eclipse个人公司注册流程图
  • wordpress.org 建站展会展台搭建服务
  • 网站建设公司哪家好 要上磐石网络wordpress 评论图片
  • 建网站用什么软件最简单阿里 做网站
  • 网站服务器管理 硬件新材建设局网站
  • htm网站的维护我爱建站免费空间