v2.0.12 버전

개방시간 설정 주말 및 휴무일 개방 기능 추가 1단계
This commit is contained in:
ritoseo 2025-10-29 00:12:55 +09:00
parent 37279a6a9a
commit 566395037b
9 changed files with 198 additions and 19 deletions

View File

@ -22,8 +22,8 @@ android {
minSdkVersion 26
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 30
versionCode 200000011
versionName "2.0.11"
versionCode 200000012
versionName "2.0.12"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk.abiFilters 'armeabi-v7a'
}

View File

@ -225,6 +225,7 @@ public class BaseService extends Service {
class PeriodicChecker extends Thread {
int mAliveCount = 0;
boolean mIsAlive = false;
boolean mPrevUseDoorControlTime;
int mPrevDoorControlOpenStatus = -1;
private long getUTC()
@ -325,6 +326,35 @@ public class BaseService extends Service {
}
}
String testDebug = SystemUtil.property_get("sys.rito.test");
String testParam1 = SystemUtil.property_get("sys.rito.tparam1");
String testParam2 = SystemUtil.property_get("sys.rito.tparam2");
if(testDebug.equals("1")) {
SystemUtil.property_set("sys.rito.test", "");
MWMessage msg = new MWMessage();
msg.command = ServerManager.COMMAND_TYPE_DOOR_CONTROL_TIME_SET;
msg.useDoorControlTime = "Y";
msg.doorControlStartTime = "0001";
msg.doorControlEndTime = "2359";
if(testParam1.length() > 0)
msg.doorControlStartTime = testParam1;
if(testParam2.length() > 0)
msg.doorControlEndTime = testParam2;
mServerManager.handleMessage(msg);
} else if(testDebug.equals("2")) {
SystemUtil.property_set("sys.rito.test", "");
MWMessage msg = new MWMessage();
msg.command = ServerManager.COMMAND_TYPE_DOOR_CONTROL_TIME_SET;
msg.useDoorControlTime = "N";
msg.doorControlStartTime = "0001";
msg.doorControlEndTime = "2359";
if(testParam1.length() > 0)
msg.doorControlStartTime = testParam1;
if(testParam2.length() > 0)
msg.doorControlEndTime = testParam2;
mServerManager.handleMessage(msg);
}
//if(MainActivity.INSTANCE != null) {
{
if (GlobalInfo.mUseDoorControlTime == 1) {
@ -357,6 +387,10 @@ public class BaseService extends Service {
if (GlobalInfo.mDoorControlTimeStatus != -1) {
GlobalInfo.mDoorControlTimeStatus = -1;
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_CLOSE);
if (MainActivity.INSTANCE != null) {
MainActivity.INSTANCE.turnToBaseUI();
}
}
}
}

View File

@ -10,7 +10,6 @@ import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
import java.io.BufferedInputStream;
import java.io.File;
@ -27,11 +26,9 @@ import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import kr.co.enicom.acs.manage.LogInfo;
import kr.co.enicom.acs.system.SystemUtil;
@ -98,8 +95,10 @@ public class GlobalInfo {
public static final int DEFAULT_ATTENDANCE_START_TIME = 9 * 60;
public static final int DEFAULT_ATTENDANCE_END_TIME = 18 * 60;
public static final int DEFAULT_USE_DOOR_CONTROL_TIME = 0;
public static final int DEFAULT_USE_DOOR_CONTROL_TIME_HOLIDAY = 0;
public static final int DEFAULT_DOOR_CONTROL_TIME_START = 9 * 60;
public static final int DEFAULT_DOOR_CONTROL_TIME_END = 18 * 60;
public static final String DEFAULT_DOOR_CONTROL_TIME_DATA = convertTimeToLonger(convertMinutesToSimpleTime(DEFAULT_DOOR_CONTROL_TIME_START)) + "~" + convertTimeToLonger(convertMinutesToSimpleTime(DEFAULT_DOOR_CONTROL_TIME_END));
public static final int VERIFY_COMBINATION_WITH_RFID = 0;
public static final int VERIFY_COMBINATION_WITH_ID = 1;
@ -274,6 +273,8 @@ public class GlobalInfo {
public static long mDoorControlSentLastTime = 0; // 개방시간 오픈 명령 보낸 최종 시간
public static int mDoorControlTimeStart = 7 * 60 + 41; // 개방시간 시작 시간(Minute) Default = 09:00
public static int mDoorControlTimeEnd = 7 * 60 + 41; //18 * 60; // 개방시간 종료 시간(Minute) Default = 18:00
public static int mUseDoorControlTimeHoliday = 0; // 개방시간 주말 휴무일 사용 여부
public static String mDoorControlTimeData = DEFAULT_DOOR_CONTROL_TIME_DATA;
public static ArrayList<UserInfo> mUserList;
private static Object mLock = new Object();
@ -530,7 +531,8 @@ public class GlobalInfo {
"auto_reboot_use integer, auto_reboot_period integer, auto_reboot_hour integer, dcu_watchdog_timeout integer, verify_log_auto_resend integer, verify_activate_method integer," +
"auto_forgery integer, auto_mask_wear integer, manager_login_capture_send integer, use_attendance integer, " +
"use_door_control_time integer, door_control_time_start integer, door_control_time_end integer, " +
"attendance_start_time integer, attendance_end_time integer, use_attendance_auto_mode integer, attendance_auto_time integer " +
"attendance_start_time integer, attendance_end_time integer, use_attendance_auto_mode integer, attendance_auto_time integer, " +
"use_door_control_time_holiday integer, door_control_time_data text" +
")";
try {
database.execSQL(sql);
@ -541,7 +543,8 @@ public class GlobalInfo {
"auto_reboot_use, auto_reboot_period, auto_reboot_hour, dcu_watchdog_timeout, verify_log_auto_resend, verify_activate_method, " +
"auto_forgery, auto_mask_wear, manager_login_capture_send, use_attendance, " +
"use_door_control_time, door_control_time_start, door_control_time_end, " +
"attendance_start_time, attendance_end_time, use_attendance_auto_mode, attendance_auto_time " +
"attendance_start_time, attendance_end_time, use_attendance_auto_mode, attendance_auto_time, " +
"use_door_control_time_holiday, door_control_time_data " +
") " +
"values (0, '', '', 0, 0, %d, " +
"%d, %d, %d, %d, %d, %d, " +
@ -550,7 +553,8 @@ public class GlobalInfo {
"%d, %d, %d, %d, %d, %d, " +
"%d, %d, %d, %d, " +
"%d, %d, %d, " +
"%d, %d, %d, %d" +
"%d, %d, %d, %d, " +
"%d, '%s'" +
")",
VERIFY_COMBINATION_OR,
DEFAULT_VERIFY_PRINTUSERNAME, DEFAULT_VERIFY_POPUPTIME, DEFAULT_LOG_DELETESTATUS , 1, 1, 1,
@ -559,7 +563,8 @@ public class GlobalInfo {
DEFAULT_AUTO_REBOOT_USE, DEFAULT_AUTO_REBOOT_PERIOD, DEFAULT_AUTO_REBOOT_HOUR, DEFAULT_DCU_WATCHDOG_TIME, DEFAULT_VERIFY_LOG_AUTO_RESEND, DEFAULT_VERIFY_ACTIVATE_METHOD,
DEFAULT_AUTO_FORGERY, DEFAULT_AUTO_MASK_WEAR, DEFAULT_MANAGER_LOGIN_CAPTURE_SEND, DEFAULT_USE_ATTENDANCE,
DEFAULT_USE_DOOR_CONTROL_TIME, DEFAULT_DOOR_CONTROL_TIME_START, DEFAULT_DOOR_CONTROL_TIME_END,
DEFAULT_ATTENDANCE_START_TIME, DEFAULT_ATTENDANCE_END_TIME, DEFAULT_USE_ATTENDANCE_AUTO_MODE, DEFAULT_ATTENDANCE_AUTO_TIME
DEFAULT_ATTENDANCE_START_TIME, DEFAULT_ATTENDANCE_END_TIME, DEFAULT_USE_ATTENDANCE_AUTO_MODE, DEFAULT_ATTENDANCE_AUTO_TIME,
DEFAULT_USE_DOOR_CONTROL_TIME_HOLIDAY, DEFAULT_DOOR_CONTROL_TIME_DATA
);
database.execSQL(sql);
@ -655,6 +660,23 @@ public class GlobalInfo {
}
}
if(!columnExists(database, "settings", "use_door_control_time_holiday")) {
columnAppend(database, "settings", "use_door_control_time_holiday", "integer");
sql = String.format("update settings set use_door_control_time_holiday = %d where idx = 0", DEFAULT_USE_DOOR_CONTROL_TIME_HOLIDAY);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
if(!columnExists(database, "settings", "door_control_time_data")) {
columnAppend(database, "settings", "door_control_time_data", "text");
sql = String.format("update settings set door_control_time_data = '%s' where idx = 0", DEFAULT_DOOR_CONTROL_TIME_DATA);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
if(!columnExists(database, "settings", "attendance_start_time")) {
columnAppend(database, "settings", "attendance_start_time", "integer");
sql = String.format("update settings set attendance_start_time = %d where idx = 0", DEFAULT_ATTENDANCE_START_TIME);
@ -1182,7 +1204,8 @@ public class GlobalInfo {
"state_period, volume, use_access_control, door_control_mode, door_control_time, socket_use_encrypt, dcu_device_type, use_dcu_watchdog, use_case_check, input_timeout, auto_reboot_use, auto_reboot_period, auto_reboot_hour, " +
"dcu_watchdog_timeout, verify_log_auto_resend, verify_activate_method, auto_forgery, auto_mask_wear, manager_login_capture_send, use_attendance, " +
"use_door_control_time, door_control_time_start, door_control_time_end, " +
"attendance_start_time, attendance_end_time, use_attendance_auto_mode, attendance_auto_time " +
"attendance_start_time, attendance_end_time, use_attendance_auto_mode, attendance_auto_time, " +
"use_door_control_time_holiday, door_control_time_data " +
" from settings where idx = 0";
try {
Cursor cursor = database.rawQuery(sql, null);
@ -1233,6 +1256,9 @@ public class GlobalInfo {
GlobalInfo.mUseAttendanceAutoMode = cursor.getInt(36);
GlobalInfo.mAttendanceAutoTimeMinute = cursor.getInt(37);
GlobalInfo.mUseDoorControlTimeHoliday = cursor.getInt(38);
GlobalInfo.mDoorControlTimeData = cursor.getString(39);
Log.w("RITO", "mAutoForgery : " + GlobalInfo.mAutoForgery);
Log.w("RITO", "mAutoMaskWear : " + GlobalInfo.mAutoMaskWear);
}
@ -2132,7 +2158,8 @@ public class GlobalInfo {
"auto_reboot_use = %d, auto_reboot_period = %d, auto_reboot_hour = %d, dcu_watchdog_timeout = %d, verify_log_auto_resend = %d, verify_activate_method = %d, " +
"auto_forgery = %d, auto_mask_wear = %d, manager_login_capture_send = %d, use_attendance = %d, " +
"use_door_control_time = %d, door_control_time_start = %d, door_control_time_end = %d, " +
"attendance_start_time = %d, attendance_end_time = %d, use_attendance_auto_mode = %d, attendance_auto_time = %d " +
"attendance_start_time = %d, attendance_end_time = %d, use_attendance_auto_mode = %d, attendance_auto_time = %d, " +
"use_door_control_time_holiday = %d, door_control_time_data = '%s' " +
" where idx = 0",
GlobalInfo.mDeviceId, GlobalInfo.mDeviceName, GlobalInfo.mVerifyMode, GlobalInfo.mVerifyMethod, GlobalInfo.mVerifyCombination,
GlobalInfo.mVerifyPrintUserName, GlobalInfo.mVerifyPopupTime, GlobalInfo.mLogDeleteStatus, GlobalInfo.mLogDeleteTerm, GlobalInfo.mLogDeleteCheckPeriod, GlobalInfo.mLogDeleteCheckPeriodCnt,
@ -2142,7 +2169,8 @@ public class GlobalInfo {
GlobalInfo.mAutoRebootUse, GlobalInfo.mAutoRebootPeriod, GlobalInfo.mAutoRebootHour, GlobalInfo.mDCUWatchdogTime, GlobalInfo.mVerifyLogAutoResend, GlobalInfo.mVerifyActivateMethod,
GlobalInfo.mAutoForgery, GlobalInfo.mAutoMaskWear, GlobalInfo.mManagerLoginCaptureSend, GlobalInfo.mUseAttendance,
GlobalInfo.mUseDoorControlTime, GlobalInfo.mDoorControlTimeStart, GlobalInfo.mDoorControlTimeEnd,
GlobalInfo.mAttendanceStartTime, GlobalInfo.mAttendanceEndTime, GlobalInfo.mUseAttendanceAutoMode, GlobalInfo.mAttendanceAutoTimeMinute
GlobalInfo.mAttendanceStartTime, GlobalInfo.mAttendanceEndTime, GlobalInfo.mUseAttendanceAutoMode, GlobalInfo.mAttendanceAutoTimeMinute,
GlobalInfo.mUseDoorControlTimeHoliday, GlobalInfo.mDoorControlTimeData
);
try {
@ -2493,6 +2521,11 @@ public class GlobalInfo {
if(mUseDoorControlTime == 0)
return false;
if(mUseDoorControlTimeHoliday == 0) {
if(SystemUtil.DateTimeUtil.isHoliday())
return false;
}
int currentMinutes = getCurrentMinutesInDay();
if(currentMinutes >= mDoorControlTimeStart && currentMinutes < mDoorControlTimeEnd)
return true;

View File

@ -1053,6 +1053,9 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if (mLoginImage == null)
mLoginImage = new ImageView[10];
SystemUtil.updateBGImageForView(this, findViewById(R.id.mainLayout));
SystemUtil.updateBGImageForView(this, findViewById(R.id.mainloginfacebg));
mLoginImage[CARD] = findViewById(R.id.mainlogincardimage);
mLoginImage[VEIN] = findViewById(R.id.mainloginveinimage);
mLoginImage[FINGER] = findViewById(R.id.mainloginfingerimage);

View File

@ -2990,9 +2990,22 @@ public class ServerManager extends Thread {
} else if(msg.command == COMMAND_TYPE_DOOR_CONTROL_TIME_SET) { // 37. 개방시간 설정
try {
GlobalInfo.mUseDoorControlTime = msg.useDoorControlTime.equals("Y") ? 1 : 0;
int nextUse = msg.useDoorControlTime.equals("Y") ? 1 : 0;
boolean isNeedInvalidate = false;
if(nextUse != GlobalInfo.mUseDoorControlTime) {
isNeedInvalidate = true;
}
// GlobalInfo.mUseDoorControlTime = msg.useDoorControlTime.equals("Y") ? 1 : 0;
GlobalInfo.mDoorControlTimeStart = GlobalInfo.convertSimpleTimeToMinutes(msg.doorControlStartTime);
GlobalInfo.mDoorControlTimeEnd = GlobalInfo.convertSimpleTimeToMinutes(msg.doorControlEndTime);
GlobalInfo.mUseDoorControlTime = nextUse;
if(isNeedInvalidate) {
if (nextUse == 1) {
GlobalInfo.mDoorControlTimeStatus = -1;
} else {
GlobalInfo.mDoorControlTimeStatus = 0;
}
}
GlobalInfo.updateDatabase(GlobalInfo.TARGET_FLAG_DEVICE_INFO);
} catch(Exception e) {
ret = false;

View File

@ -69,6 +69,29 @@ public class DoorControlTimeActivity extends BaseActivity {
}
ImageView doorcontroltimeuseholidayimage = (ImageView) findViewById(R.id.doorcontroltimeuseholidayimage);
doorcontroltimeuseholidayimage.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
if(GlobalInfo.mUseDoorControlTimeHoliday == 0) {
doorcontroltimeuseholidayimage.setImageResource(R.drawable.toggle_pressed);
GlobalInfo.mUseDoorControlTimeHoliday = 1;
}
else {
GlobalInfo.mUseDoorControlTimeHoliday = 0;
doorcontroltimeuseholidayimage.setImageResource(R.drawable.toggle_nor);
}
}
});
if(GlobalInfo.mUseDoorControlTimeHoliday == 0) {
doorcontroltimeuseholidayimage.setImageResource(R.drawable.toggle_nor);
} else {
doorcontroltimeuseholidayimage.setImageResource(R.drawable.toggle_pressed);
}
Button button = (Button) findViewById(R.id.doorcontroltimesetimagebutton) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override

View File

@ -4,6 +4,9 @@ import android.app.AlarmManager;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.EthernetManager;
@ -17,12 +20,12 @@ import android.net.RouteInfo;
import android.net.StaticIpConfiguration;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@ -31,14 +34,12 @@ import java.math.BigInteger;
import java.net.Inet4Address;
import java.net.InetAddress;
import kr.co.enicom.acs.GlobalInfo;
import kr.co.enicom.acs.MainActivity;
import kr.co.enicom.acs.R;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
@ -112,6 +113,24 @@ public class SystemUtil {
}
}
public static boolean isBackGroundImageExist() {
File file = new File("/sdcard/ACS/bg.png");
if(file.exists() && file.canRead())
return true;
return false;
}
public static void updateBGImageForView(Context context, View view) {
if(!isBackGroundImageExist())
return;
File imgFile = new File("/sdcard/ACS/bg.png");
Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
BitmapDrawable drawable = new BitmapDrawable(context.getResources(), bitmap);
view.setBackground(drawable);
}
public static int fromByteArrayToInt(byte[] bytes) {
/*return bytes[0] << 24 | (bytes[1] & 0xFF) << 16 | (bytes[2] & 0xFF) << 8 | (bytes[3] & 0xFF);*/
return ((bytes[3] & 0xFF) << 24) |
@ -296,6 +315,16 @@ public class SystemUtil {
}
}
public static boolean isHoliday() {
LocalDate today = LocalDate.now();
DayOfWeek dayOfWeek = today.getDayOfWeek();
if(dayOfWeek.getValue() == 6 || dayOfWeek.getValue() == 7)
return true;
return false;
}
public static void setTime(int hourOfDay, int minute, int second) {
Calendar c = Calendar.getInstance();

View File

@ -74,7 +74,6 @@
<TextView
android:id="@+id/deviceidtext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
@ -101,6 +100,50 @@
app:srcCompat="@drawable/toggle_pressed" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_door_control_time_use_holiday_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="27px"
app:srcCompat="@drawable/list_arrow_icon" />
<ImageView
android:id="@+id/doorcontroltimeuseholidayimage"
android:layout_width="105px"
android:layout_height="56px"
android:layout_marginStart="1135px"
android:layout_marginTop="20px"
app:srcCompat="@drawable/toggle_pressed" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"

View File

@ -255,6 +255,7 @@
<string name="mgt_system_device_popup_name_text">"Device Name를 입력해 주세요."</string>
<string name="mgt_system_door_control_time_use_text">"개방시간 사용"</string>
<string name="mgt_system_door_control_time_use_holiday_text">"주말 및 휴무일 개방"</string>
<string name="mgt_system_door_control_time_set_text">"설정시간"</string>
<string name="mgt_system_attendance_setting_use_text">"근태관리 사용"</string>