package com.product.administration.service;
|
import com.product.administration.config.CmnConst;
|
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.permission.PermissionService;
|
import com.product.core.service.support.AbstractBaseService;
|
import com.product.core.service.support.QueryFilterService;
|
import com.product.core.spring.context.SpringMVCContextHolder;
|
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* Copyright © LX-BASE
|
*
|
* @Title: LeaveRequestService
|
* @Project: LX-BASE-SERVER
|
* @Date: 2020-11-13 09:27:35
|
* @Author: Xin.Luo
|
* @Description: 请假申请
|
*/
|
@Component
|
public class LeaveRequestService extends AbstractBaseService {
|
|
@Autowired
|
private BaseDao baseDao;
|
@Autowired
|
PermissionService permissionService;
|
@Autowired
|
QueryFilterService queryFilterService;
|
|
/**
|
* @Date: 2020-03-30 14:10
|
* @Author: ZhouJie
|
* 请假申请列表
|
*/
|
public DataTableEntity getLeaveRequestList(FieldSetEntity fs) throws BaseException {
|
String filter=fs.getString("filter");
|
String dataFilter = permissionService.getDataFilter(fs.getTableName(),CmnConst.CREATED_BY);
|
if(!StringUtils.isEmpty(dataFilter)){
|
filter += " and "+dataFilter;
|
}
|
DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE,filter,null,null,"id desc",fs.getInteger(CmnConst.PAGESIZE),fs.getInteger(CmnConst.CPAGE),false);
|
baseDao.loadPromptData(dt);
|
return dt;
|
}
|
/**
|
* @Date: 2020-03-30 14:46
|
* @Author: ZhouJie
|
* 请假申请详情
|
*/
|
public FieldSetEntity getLeaveRequestInfo(FieldSetEntity fs) throws BaseException {
|
return baseDao.listInternationDataTable(baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE, fs.getString(CmnConst.UUID), true),null);
|
}
|
/**
|
* @Date: 2020-03-30 15:32
|
* @Author: ZhouJie
|
* 请假申请保存
|
*/
|
public String saveLeaveRequest(FieldSetEntity fs) throws BaseException {
|
DataTableEntity dataTableEntity = baseDao.listTable(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE, " uuid not in (?) and user_id=? and ((start_time<=? and end_time>=?) or(start_time<=? and end_time>=?))"
|
, new String[]{StringUtils.isEmpty(fs.getUUID())?"":fs.getUUID(), fs.getString("user_id"), fs.getString("start_time"), fs.getString("start_time"), fs.getString("end_time"), fs.getString("end_time")});
|
if (dataTableEntity.getRows()>0){
|
return "1";
|
}else {
|
if (StringUtils.isEmpty(fs.getString(CmnConst.UUID))) {
|
fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id());
|
fs.setValue("created_utc_datetime", new Date());
|
fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid());
|
return baseDao.add(fs);
|
} else {
|
fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id());
|
fs.setValue("updated_utc_datetime", new Date());
|
baseDao.update(fs);
|
return fs.getString(CmnConst.UUID);
|
}
|
|
}
|
}
|
|
/**
|
* 计算请假天数
|
* @param fs
|
* @return
|
* @throws BaseException
|
*/
|
public FieldSetEntity getDay(FieldSetEntity fs) throws BaseException {
|
DataTableEntity dt = baseDao.listTable(com.product.org.admin.config.CmnConst.PRODUCT_SYS_COMPANY_HOLIDAY, "date_holiday >=? and date_holiday<=?", new String[]{fs.getString("start_time"), fs.getString("end_time")});
|
String dateStr1 = fs.getString("start_time");
|
String dateStr2 = fs.getString("end_time");
|
|
// 使用DateTimeFormatter解析日期字符串
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
// 将字符串解析为LocalDate对象
|
LocalDate date1 = LocalDate.parse(dateStr1, formatter);
|
LocalDate date2 = LocalDate.parse(dateStr2, formatter);
|
|
// 计算两个日期之间的天数差
|
long daysBetween = java.time.Duration.between(date1.atStartOfDay(), date2.atStartOfDay()).toDays()+1;
|
fs.setValue("day",daysBetween-dt.getRows());
|
|
return fs;
|
}
|
/**
|
* @Date: 2020-03-30 16:43
|
* @Author: ZhouJie
|
* 删除请假申请
|
*/
|
public boolean deleteLeaveRequest(FieldSetEntity fs) throws BaseException {
|
return baseDao.delete(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE,CmnConst.UUID+"=?",new Object[]{fs.getString(CmnConst.UUID)});
|
}
|
|
/**
|
* 根据申请人和请假日期获取请假单据
|
* @param fs
|
* @return
|
*/
|
public FieldSetEntity getLeave(FieldSetEntity fs){
|
return baseDao.getFieldSetByFilter(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE,"user_id=? and DATE_FORMAT(start_time,'%Y-%m-%d')<=? and DATE_FORMAT(end_time,'%Y-%m-%d')>=?",new String[]{fs.getString("user_id"),fs.getString("date"),fs.getString("date")},false);
|
}
|
|
/**
|
*
|
* @param fs
|
* @return
|
*/
|
public DataTableEntity leaveList(FieldSetEntity fs){
|
String a="";
|
ArrayList<String> list = new ArrayList<>();
|
if (!StringUtils.isEmpty(fs.getString("yearAndMonth"))){
|
a="(DATE_FORMAT( start_time, '%Y-%m' )=? or DATE_FORMAT( end_time, '%Y-%m' )=?) and user_id=? and";
|
list.add(fs.getString("yearAndMonth"));
|
list.add(fs.getString("yearAndMonth"));
|
list.add(fs.getString("created_by"));
|
}
|
DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE, a + " flow_flag = 2", list.toArray());
|
baseDao.loadPromptData(dt);
|
return dt;
|
}
|
}
|