代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

以编程方式管理时间的“平衡”(病假)

  •  3
  • anonymous coward  · 技术社区  · 16 年前

    我正在我的公司开发一个小应用程序(约55名员工),它可以跟踪可用的休假/病假时间。部分目的是将“自助服务”整合到我们的内部网中,这样员工就可以通过电子方式提交“休假请求”,而不是填写表格并将文件交给人力资源部。

    显然,该应用程序需要为每个员工保持一个运行平衡,并将验证该员工是否有足够的假期来满足他们的任何请求。

    就像使用财务/会计软件一样,我知道我不一定要存储浮动值,或者仅仅保持一个运行平衡。

    Employee | Year | Credit/Debit | Amount | Timestamp

    “年”是指贷方/借方所属的年份,因为休假和病假是按年处理的, 每个员工的收支平衡。

    为了确定员工的可用休假/病假时间,我将获取该员工在给定年份的“事务”,并找到余额。

    我知道我漏掉了很多信息,但我想知道: 既然如此,它需要非常准确, 我是不是把事情复杂化了?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    6 年前

    在最简单的情况下,您可以有一个“transactions”表和一个“account”表,这样从年初开始重新运行所有事务(对于每个帐户)将产生一个与余额完全匹配的总和。

    交易

    ID |帐户|增量|时间戳

    帐户

    ID |姓名|员工|年度|余额

    这些事务提供了审计跟踪,余额为您的下一个事务提供了参考点。通过确保这两个匹配,您已经确保了一致性(不过,不一定是正确的——这必须通过对每种类型的事务(即存款、取款)进行单元测试来检查)

    我建议使用一个“Transaction Detail”表来引用事务处理.ID,包括所有你想要的好东西,比如谁发起的,笔记等等。

        2
  •  0
  •   FrustratedWithFormsDesigner    16 年前

    这看起来是个好的开始。有两点:

    • 贷方将在年初由系统自动生成,借方将由员工创建。是否应该有一个字段来指示谁/是什么创建了事务?

    • 你有指示什么的机制吗 请假时间?我不知道贵公司是什么样的,但有些公司对待休假和病假的态度不同。还有照顾者的时间,出于同情的理由的休息时间(比如亲戚去世),公民和法定假日的休息时间,宗教假日的休息时间,以及。。。。好吧,你明白了。也许你想让不同类型的休假获得不同的信用额度。有些组织是这样做的。你也打算追踪这些不同的休假代码吗?如果你认为这将是未来的问题,你是否应该为之计划?

        3
  •  0
  •   John    16 年前

    我也同意这是个好的开始。

    如果HR被从图片中删除(我怀疑,但可能),那么就没有必要这样做;应用程序可以跟踪请求和休假余额,并立即说明请求是否有效。但我怀疑不会这么简单。:)

        4
  •  0
  •   Manish    9 年前
    How have getting balance Debit-Credit for  running balamace ACCESS DATABASE
    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <%@page import="java.sql.*"%>
    <%@ page import="java.util.Calendar" %>
    <%
    //java Code
    String date = (new java.util.Date()).toString();
    String UserName = request.getParameter("UserName");
    String CusId= request.getParameter("CusId");
    String AccountNo = request.getParameter("AccountNo");
    String Debit = request.getParameter("Debit");
    String Credit=request.getParameter("Credit");
    String Balance=request.getParameter("Balance");
    String sDate=request.getParameter("sDate");
    try
    {
    String s="jdbc:odbc:Database1";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection(s);
    Statement smt=conn.createStatement();
    Calendar calendar = Calendar.getInstance();
    java.sql.Date startDate = new java.sql.Date(calendar.getTime().getTime());
    String sql= "SELECT  sDate, (SUM(Debit)*-1) + SUM(Credit)Balance FROM abcbank GROUP BY  sDate";
    ResultSet result = smt.executeQuery(sql);
    int count = 0;
    while (result.next())
    {
    result.getString(1,"Debit");
    result.getString(2,"Credit");
    result.getString(3,"Balance");
    result.getDate(4,startDate);
    
    }
    
    String update= "UPDATE abcbank SET Balance =Debit + Balance   WHERE AccountNo="+AccountNo+" ";
    PreparedStatement statement = conn.prepareStatement(update);
    //statement.setString(1,"AccountNo");
    int rowsUpdated = statement.executeUpdate();
    if (rowsUpdated ==0)
    {
    out.println("This Emp does not Exists!");
    }
    else if(rowsUpdated ==1)
    {
    out.println("An existing user was updated successfully!");
    }
    conn.close();
    }
    catch(Exception ex)
    {
    System.err.println(ex.getMessage());
      }
    
    %>
    </body>
    </html>