1821349743@qq.com
2023-02-20 146b951e36b7529f4aa9671035a657f651762edc
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
package com.product.administration.service;
 
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import com.product.administration.config.CmnConst;
import com.product.administration.config.SystemCode;
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.exception.BaseException;
import com.product.core.service.support.AbstractBaseService;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.module.sys.entity.SystemUser;
 
/**
 *     打卡记录
* Copyright  PRODUCT-BASE
* @Title: PRODUCT-BASE-
* @Project: PunchRecordService
* @Date: 2021年8月9日 上午11:30:38
* @Author: 杜洪波
* @Description:
 */
@Component
public class PunchRecordService extends AbstractBaseService{
 
    @Autowired
    BaseDao baseDao;
    
    /**
     *     考勤打卡列表
     * @param fse
     * @return
     */
    public DataTableEntity listRecordInfo(FieldSetEntity fse) {
        DataTableEntity dt=baseDao.listTable(CmnConst.PRODUCT_OA_PUNCH_RECORD, "created_by=?", new Object[] {SpringMVCContextHolder.getCurrentUser().getUser_id()}, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE));
        baseDao.loadPromptData(dt);
        return dt;
    }
    
    /**
     *     考勤打卡详情
     * @param uuid
     * @return 
     */
    public FieldSetEntity findRecordInfo(String uuid) {
        return baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_PUNCH_RECORD, uuid, true);
    }
    
    /**
     *     考勤打卡新增
     * @param fse
     * @return
     */
    public String addRecordInfo(FieldSetEntity fse) {
        SimpleDateFormat df = new SimpleDateFormat(CmnConst.YYYYMMDDHHMMSS);
        
        SystemUser currentUser=SpringMVCContextHolder.getCurrentUser();    //获取打卡人
        Date created_datetime=fse.getDate("created_datetime");            //获取打卡时间
//        Date created_datetime=new Date();                                //获取打卡时间
        String string_created_datetime=df.format(created_datetime);        //时间转string
        
        //获取公司打卡时间配置信息
        FieldSetEntity fseCompanyPunch=baseDao.getFieldSetEntityByFilter("product_oa_punch_time", "org_level_uuid=?", new Object[] {currentUser.getOrg_level_uuid()}, false);
        if (fseCompanyPunch==null) {
            throw new BaseException(SystemCode.SYSTEM_CONMAPNY_PUNCH_NO_EXIST.getValue(), SystemCode.SYSTEM_CONMAPNY_PUNCH_NO_EXIST.getText(), this.getClass(), "addRecordInfo");
        }
        
        //获取当天打卡信息
        FieldSetEntity fsePunchInfo=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_OA_PUNCH_RECORD, "created_by=? and DATE_FORMAT(created_utc_datetime,'%Y-%m-%d')like ?", new Object[] {currentUser.getUser_id(),string_created_datetime.substring(0, 10)+"%"}, false);
        if (fsePunchInfo==null) {
            FieldSetEntity fseNewPunchInfo = new FieldSetEntity();
            fseNewPunchInfo.setTableName(CmnConst.PRODUCT_OA_PUNCH_RECORD);
            fseNewPunchInfo.setValue(CmnConst.ORG_LEVEL_UUID, currentUser.getOrg_level_uuid());
            fseNewPunchInfo.setValue(CmnConst.DEPT_UUID, currentUser.getDept_uuid());
            fseNewPunchInfo.setValue(CmnConst.CREATED_BY, currentUser.getUser_id());
            fseNewPunchInfo.setValue(CmnConst.CREATED_UTC_DATETIME, created_datetime);
            fseNewPunchInfo.setValue("punch_time_one", created_datetime);
            //新增打卡信息
            return baseDao.add(fseNewPunchInfo);
        }else {
            
            //打卡模式(0:双卡  1:四卡)
            int punchMode=0;
            if (StringUtils.isEmpty(fseCompanyPunch.getString("work_time_two"))) {
                punchMode=1;
            }
            
            String punch_time_one=fsePunchInfo.getDate("punch_time_one", CmnConst.YYYYMMDDHHMMSS);
            String punch_time_two=fsePunchInfo.getDate("punch_time_two", CmnConst.YYYYMMDDHHMMSS);
            String punch_time_three=fsePunchInfo.getDate("punch_time_three", CmnConst.YYYYMMDDHHMMSS);
            String punch_time_four=fsePunchInfo.getDate("punch_time_four", CmnConst.YYYYMMDDHHMMSS);
            List<String> list=new ArrayList<>();
            if (punch_time_one!=null) {
                list.add(punch_time_one);
            }
            if (punch_time_two!=null) {
                list.add(punch_time_two);
            }
            if (punch_time_three!=null) {
                list.add(punch_time_three);
            }
            if (punch_time_four!=null) {
                list.add(punch_time_four);
            }
            list.add(string_created_datetime);
            Collections.sort(list);
            
            for (int i = 0; i < list.size(); i++) {
                if (punchMode==1) {
                    if (i==0) {
                        fsePunchInfo.setValue("punch_time_one", list.get(i));
                    }else if (i==1) {
                        fsePunchInfo.setValue("punch_time_four", list.get(i));
                    }
                }else {
                    if (i==0) {
                        fsePunchInfo.setValue("punch_time_one", list.get(i));
                    }else if (i==1) {
                        fsePunchInfo.setValue("punch_time_two", list.get(i));
                    }else if (i==2) {
                        fsePunchInfo.setValue("punch_time_three", list.get(i));
                    }else if (i==3) {
                        fsePunchInfo.setValue("punch_time_four", list.get(i));
                    }
                }
            }
            //修改打卡信息
            baseDao.update(fsePunchInfo);
            return fsePunchInfo.getUUID();
        }
    }
    
}