shichongfu
2023-04-25 ce0b49552668d3331055e2b1a1447a743dc54939
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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<Object> getHolidayYear(Integer year) {
        
        //获取当前操作人信息
        SystemUser currentUser=SpringMVCContextHolder.getCurrentUser();
        String org_level_uuid=currentUser.getOrg_level_uuid();
        
        Set<String>setHoliday=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[] {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
        //创建返回数据集
        List<Object>dataList=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<String> holiday=new ArrayList<>();        //日期
            List<String> weeks=Lists.newArrayList();    //星期数
            List<Object> values=Lists.newArrayList();    //是否节假日
            //按月集中数据
            Map<String, Object>monthInfo=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;
    }
}