zm
2024-11-04 9d22bf2b596d8f5627f671f009b3f42d71d73bf4
src/main/java/com/product/administration/service/LeaveRequestService.java
@@ -9,6 +9,10 @@
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;
@@ -80,6 +84,31 @@
      }
   }
   /**
    * 计算请假天数
    * @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
@@ -88,4 +117,32 @@
   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;
   }
}