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();
}
}
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();
}
}
Langganan:
Postingan (Atom)