Kamis, 25 Juni 2020

Java Code Selisih Waktu Absensi




  String gstatus_masuk="";
    String jterlambat="";
    String gstatus_pulang="";
    String jlebih_awal="";
    String jlembur="";








void MASUK(String nik){
   
  Calendar cal = Calendar.getInstance();       
  int tgl= cal.get(Calendar.DATE);
  int bln= cal.get(Calendar.MONTH)+1;
  int thn= cal.get(Calendar.YEAR);
 
  int hh= cal.get(Calendar.HOUR);
  int mm= cal.get(Calendar.MINUTE);
  int ss= cal.get(Calendar.SECOND);
 
  String tanggal_masuk=thn+"-"+bln+"-"+tgl;
  String jam_masuk=hh+":"+mm+":"+ss;
  //===========================================
        String Jharus="08:00:00";
        String Tharus=tanggal_masuk;
       
        String Jdatang=jam_masuk;
        String Tdatang=tanggal_masuk;
       
        String Wmasuk=Tharus+" "+Jharus;
        String Wpulang=Tdatang+" "+Jdatang;
     
        long cekmasuk=  getMenit(Wmasuk,Wpulang);
        if(cekmasuk>0){
          gstatus_masuk="Terlambat";
          jterlambat=String.valueOf(cekmasuk);
      }
      else{
          gstatus_masuk="OnTime";
          jterlambat=String.valueOf("0");     
      }
      System.out.println(gstatus_masuk+"#"+jterlambat);

try{query="INSERT INTO `tb_absensi`(`id_absensi`, `nik`, `tanggal_masuk`, `status_masuk`, `jam_masuk`, `terlambat`, `tanggal_pulang`,`jam_pulang`,`status_pulang`,`lebih_awal`,`durasi_lembur`, `status`, `keterangan`) VALUES ('0','"+nik+"','"+tanggal_masuk+"','"+gstatus_masuk+"','"+jam_masuk+"','"+jterlambat+"','','','','0','0','Masuk','')";
System.out.println(query);         
kon.QUERY2(query,"Simpan");
 
            }catch(Exception sqle){
        }
}



void PULANG(String IDABSENSI,String IDF){
   
  Calendar cal = Calendar.getInstance();       
  int tgl= cal.get(Calendar.DATE);
  int bln= cal.get(Calendar.MONTH)+1;
  int thn= cal.get(Calendar.YEAR);
 
  int hh= cal.get(Calendar.HOUR);
  int mm= cal.get(Calendar.MINUTE);
  int ss= cal.get(Calendar.SECOND);
 
  String tanggal_pulang=thn+"-"+bln+"-"+tgl;
  String jam_pulang=hh+":"+mm+":"+ss;
  //===========================================
       String Jharus="17:00:00";
        String Tharus=tanggal_pulang;
       
        String Jdatang=jam_pulang;
        String Tdatang=tanggal_pulang;
       
        String Wmasuk=Tharus+" "+Jharus;
        String Wpulang=Tdatang+" "+Jdatang;
      long cekpulang=  getMenit(Wmasuk,Wpulang);
      if(cekpulang<0){
          gstatus_pulang="Pulang Awal";
          jlebih_awal=String.valueOf(cekpulang);
          jlembur=String.valueOf("0");
      }
      else{
         gstatus_pulang="Ontime";
          jlebih_awal=String.valueOf("0");
          jlembur=String.valueOf(cekpulang);
      }
     
try{
    String keterangan="Scan IDF "+IDF;
    query="UPDATE `tb_absensi` SET`tanggal_pulang`='"+tanggal_pulang+"',`jam_pulang`='"+jam_pulang+"',`status_pulang`='"+gstatus_pulang+"',`lebih_awal`='"+jlebih_awal+"',`durasi_lembur`='"+jlembur+"',`status`='Pulang',`keterangan`='"+keterangan+"' WHERE `id_absensi`='"+IDABSENSI+"'";
    System.out.println(query);       

    kon.QUERY2(query,"Ubah");

}catch(Exception sqle){
        }
}





      void cekMasuk(){
        String Jharus="08:00:00";
        String Tharus="2020-02-06";
       
        String Jdatang="07:00:00";
        String Tdatang="2020-02-06";
       
        String Wmasuk=Tharus+" "+Jharus;
        String Wpulang=Tdatang+" "+Jdatang;
      long cekmasuk=  getMenit(Wmasuk,Wpulang);
      if(cekmasuk>0){
          gstatus_masuk="Terlambat";
          jterlambat=String.valueOf(cekmasuk);
      }
      else{
          gstatus_masuk="OnTime";
          jterlambat=String.valueOf("0");     
      }
      System.out.println(gstatus_masuk+"#"+jterlambat);
     
    }
     
     
     
       void cekPulang(){
        String Jharus="15:00:00";
        String Tharus="2020-02-06";
       
        String Jdatang="16:00:00";
        String Tdatang="2020-02-06";
       
        String Wmasuk=Tharus+" "+Jharus;
        String Wpulang=Tdatang+" "+Jdatang;
      long cekpulang=  getMenit(Wmasuk,Wpulang);
      if(cekpulang<0){
          gstatus_pulang="Pulang Awal";
          jlebih_awal=String.valueOf(cekpulang);
          jlembur=String.valueOf("0");
      }
      else{
         gstatus_pulang="Ontime";
          jlebih_awal=String.valueOf("0");
          jlembur=String.valueOf(cekpulang);
      }
      System.out.println(gstatus_pulang+"#jlembur="+jlembur+"#jlebih_awal="+jlebih_awal);
     
    }
     
       
long getMenit(String dateStart,String dateStop){   
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
long menit=0;
try {
  d1 = format.parse(dateStart);
  d2 = format.parse(dateStop);

  long diff = d2.getTime() - d1.getTime();
  long diffSeconds = diff / 1000 % 60;
  long diffMinutes = diff / (60 * 1000) % 60;
  long diffHours = diff / (60 * 60 * 1000) % 24;
  long diffDays = diff / (24 * 60 * 60 * 1000);

  menit=(diffDays*24*60)+(diffHours*60)+diffMinutes;
 
//  System.out.print(diffDays + " days, ");
//  System.out.print(diffHours + " hours, ");
//  System.out.print(diffMinutes + " minutes, ");
//  System.out.print(diffSeconds + " seconds.");
   System.out.print(menit + " menit.");

} catch (Exception e) {
   e.printStackTrace();
}
return menit;
    }











void FingerPrint(String comm){
          try {
              rxtx= new Win10RxTx();;
              rxtx.connect(comm);
              lanjut();
          } catch (Exception ex) {
              Logger.getLogger(MenuUtamaAdmin.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
void lanjut(){
Thread readData = new Thread(new Runnable() {
@Override
public void run() {
String data;
while(true) {
if (Thread.interrupted()) break;
data = rxtx.read();
if (data != null) {
                                                    if(data.indexOf("Found ID #")>=0){
                                                        String ar[]=data.split("Found ID #");
                                                        String data1[]=ar[1].split(" ");
                                                       
                                                        String IDF=data1[0];
                                                        System.out.println("#IDF="+IDF+"#");
                                                        cekStatus(IDF);
                                                   
                                                    }
System.out.println("!"+data+"#");
//System.out.println((new SimpleDateFormat(" {HH:mm:ss}")).format(new Date()));
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
}
}
}
});
readData.start();


}


int cekStatus(String IDF){
   
    Calendar cal = Calendar.getInstance();       
  int tgl= cal.get(Calendar.DATE);
  int bln= cal.get(Calendar.MONTH)+1;
  int thn= cal.get(Calendar.YEAR);
 
  int hh= cal.get(Calendar.HOUR);
  int mm= cal.get(Calendar.MINUTE);
  int ss= cal.get(Calendar.SECOND);
 
  String stgl=thn+"-"+bln+"-"+tgl;
 
 
    String NIK="";
    String query = "Select `nik` From `tb_karyawan` where `keterangan` ='"+IDF+"'";
        ResultSet rs;
        try {
            rs = st.executeQuery(query);
            if(rs.next()) {
                NIK = rs.getString("nik");
            }
        } catch (SQLException ex) {}
       
   
        String statusAbsen="Pulang";   
        String IDABSENSI="";   
       
        query = "Select `status`,`id_absensi` From `tb_absensi` where `nik` ='"+NIK+"' and `tanggal_masuk`='"+stgl+"' order by `id_absensi` desc";
        System.out.println(query);
        try {
            rs = st.executeQuery(query);
            if(rs.next()) {
               statusAbsen = rs.getString("status");
               IDABSENSI= rs.getString("id_absensi");
               System.out.println("IDABSENSI="+IDABSENSI);
            }
        } catch (SQLException ex) {}
       
        if(statusAbsen.equalsIgnoreCase("Masuk")){
        //update
            PULANG(IDABSENSI,IDF);
        }
        else if(statusAbsen.equalsIgnoreCase("Pulang")){//jk terahir status=Pulang
        //insert
        MASUK(NIK);
        }
        else{
            if(NIK.length()>3){
                 System.out.println("ABSEN MASUK "+IDF);
            }
            else{
            System.out.println("No Detect "+IDF);
            }
        }

        return 0;
}

JAVA THREAD SERIAL

Membuat komunikasi Serial pada java dengan Tanpa LOCK

package rxtx;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Win10RxTxTest {

      Win10RxTx rxtx ;
    void baca(){
     Thread thread = new Thread(){
        public void run(){ 
            System.out.println("Thread Running");
        }
        };
  thread.start();
    }
        void baca2(){
     Thread thread = new Thread(){
        public void run(){ 
            System.out.println("Thread Running22");
        }
        };
  thread.start();
    }
public static void main ( String[] args ) {
         
            Win10RxTxTest x=new Win10RxTxTest();     
                x.baca();
  System.out.println("OKAAA");
   
           
                x.sambung();
                    x.lanjut();
                System.out.println("OK");

                 x.baca2();
        }
       
       
        void sambung(){
          try {
              rxtx= new Win10RxTx();;
              rxtx.connect("COM13");
          } catch (Exception ex) {
              Logger.getLogger(Win10RxTxTest.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
        void lanjut(){
Thread readData = new Thread(new Runnable() {
@Override
public void run() {
String data;
while(true) {
if (Thread.interrupted()) break;
data = rxtx.read();
if (data != null) {
System.out.print(data);

//the real-time when data arrived
System.out.println(
(new SimpleDateFormat(" {HH:mm:ss}"))
.format(new Date()));
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
}
}
}
});
readData.start();


}
       
       
       
       
        void sambungLock(){
          try {
              rxtx= new Win10RxTx();;
              rxtx.connect("COM13");
          } catch (Exception ex) {
              Logger.getLogger(Win10RxTxTest.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
        void lanjut2(){
Thread readData = new Thread(new Runnable() {
@Override
public void run() {
String data;
while(true) {
if (Thread.interrupted()) break;
data = rxtx.read();
if (data != null) {
System.out.print(data);

//the real-time when data arrived
System.out.println(
(new SimpleDateFormat(" {HH:mm:ss}"))
.format(new Date()));
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
}
}
}
});
readData.start();

//Define a input thread to get input from the user and send to RxTx
Thread userInput = new Thread(new Runnable() {
@Override
public void run() {
int c = 0;
byte[] buf = new byte[1204];
try {
while ( ( c = System.in.read(buf)) > -1 )
{
if (Thread.interrupted()) break;
//"---" is a string to terminate the program
if (c > 0) {
if (c==5 && buf[0]=='-'
&& buf[1]=='-' && buf[2]=='-') {
break;
}
//"+++" is a special string sent to RxTx
if (c==5 && buf[0]=='+'
&& buf[1]=='+' && buf[2]=='+') {
c = 3;
}
rxtx.write(Arrays.copyOf(buf, c));
}                            
}
} catch (IOException e) {
e.printStackTrace();
}               
}
});
userInput.start();

//Normally the program is terminated by the user
//so we wait for the input thread to finish
userInput.join();
readData.interrupt();
readData.join();


}
}