|
|
@@ -8,9 +8,10 @@ import android.view.ViewGroup;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
import com.xzjmyk.pm.activity.R;
|
|
|
+import com.xzjmyk.pm.activity.bean.oa.Signin;
|
|
|
+import com.xzjmyk.pm.activity.db.dao.SigninDao;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.fragment.SigninFragment;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
-import com.xzjmyk.pm.activity.util.StringUtils;
|
|
|
import com.xzjmyk.pm.activity.util.TimeUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
@@ -34,9 +35,18 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
|
|
|
|
|
|
public void setBeans(ArrayList<SigninFragment.Bean> beans) {
|
|
|
this.beans = beans;
|
|
|
+ saveDB(beans);
|
|
|
time = TimeUtils.long2str(System.currentTimeMillis(), "HH:mm");
|
|
|
}
|
|
|
|
|
|
+ private void saveDB(ArrayList<SigninFragment.Bean> beans) {
|
|
|
+ ArrayList<Signin> signins = new ArrayList<>();
|
|
|
+ for (SigninFragment.Bean e : beans) {
|
|
|
+ signins.add(new Signin(e.getStartTime(), e.getEndTime(), e.getStartSignin(), e.getEndSignnin()));
|
|
|
+ }
|
|
|
+ SigninDao.getInstance(ct).updata(signins);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public ViewHoler onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
|
ViewHoler holer = new ViewHoler(LayoutInflater.from(ct).inflate(R.layout.item_signin_list, parent, false));
|
|
|
@@ -49,40 +59,51 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
|
|
|
holder.time.setText(b.getStartTime() == null ? "" : b.getStartTime());
|
|
|
holder.time2.setText(b.getEndTime() == null ? "" : b.getEndTime());
|
|
|
//处理签到时间
|
|
|
- String start = "", end = "";
|
|
|
-
|
|
|
- if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 0) {
|
|
|
- String starSignin = b.getSigninList().get(0) == null ? "" : b.getSigninList().get(0);//获取到显示在签到时间的时间
|
|
|
- holder.signin.setText(starSignin);//填充时间
|
|
|
-
|
|
|
- //判断正常打卡 1.打卡时间在允许打卡时间b.getStartSignin() 到上班时间范围内b.getStartTime()
|
|
|
- if (!StringUtils.isEmpty(b.getStartTime()) && !StringUtils.isEmpty(b.getStartSignin()) && starSignin.compareTo(b.getStartTime()) < 0 && starSignin.compareTo(b.getStartSignin()) > 0) {
|
|
|
- start = "-1";
|
|
|
- }
|
|
|
- //判断迟到 1.打卡时间在上班时间getStartTime和往后的90分钟内
|
|
|
- else if (!StringUtils.isEmpty(b.getStartTime()) && starSignin.compareTo(getNext90(b.getStartTime(), true)) < 0 && starSignin.compareTo(b.getStartTime()) > 0) {
|
|
|
- start = "迟到";
|
|
|
- } else {
|
|
|
- start = "缺勤";
|
|
|
- }
|
|
|
- } else {
|
|
|
- start = "缺勤";
|
|
|
- }
|
|
|
- if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 1) {
|
|
|
- String endSignin = b.getSigninList().get(b.getSigninList().size() - 1) == null ? "" : b.getSigninList().get(b.getSigninList().size() - 1);
|
|
|
- holder.signin2.setText(endSignin);
|
|
|
- if (!StringUtils.isEmpty(b.getEndTime()) && getNext90(b.getEndTime(), false).compareTo(endSignin) < 0 && endSignin.compareTo(b.getEndSignnin()) > 0) {
|
|
|
- end = "早退";
|
|
|
- } else if (!StringUtils.isEmpty(b.getEndTime()) && !StringUtils.isEmpty(b.getEndSignnin()) && endSignin.compareTo(b.getEndTime()) > 0 && endSignin.compareTo(b.getEndSignnin()) < 0) {
|
|
|
- end = "-1";
|
|
|
- } else {
|
|
|
- end = "缺勤";
|
|
|
- }
|
|
|
+ String start = "",
|
|
|
+ end = "";
|
|
|
+ if (ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 0) {
|
|
|
+ start = getTag(b.getStartTime(), b.getStartSignin(), getNext90(b.getStartTime(), true), b.getSigninList().get(0), true);
|
|
|
+ end = getTag(b.getEndTime(), getNext90(b.getEndTime(), false), b.getEndSignnin(), b.getSigninList().get(b.getSigninList().size() - 1), false);
|
|
|
} else {
|
|
|
- end = "缺勤";
|
|
|
+ start = end = "-1";
|
|
|
}
|
|
|
+// if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 0) {
|
|
|
+// String starSignin = b.getSigninList().get(0) == null ? "" : b.getSigninList().get(0);//获取到显示在签到时间的时间
|
|
|
+// holder.signin.setText(starSignin);//填充时间
|
|
|
+// //判断正常打卡 1.打卡时间在允许打卡时间b.getStartSignin() 到上班时间范围内b.getStartTime()
|
|
|
+// if (!StringUtils.isEmpty(b.getStartTime())
|
|
|
+// && !StringUtils.isEmpty(b.getStartSignin())
|
|
|
+// && starSignin.compareTo(b.getStartTime()) < 0//签到时间小于上班时间
|
|
|
+// && starSignin.compareTo(b.getStartSignin()) > 0//签到时间大于允许签到时间
|
|
|
+// ) {//当前时间小上班时间
|
|
|
+// start = "-1";
|
|
|
+// }
|
|
|
+// //判断迟到 1.打卡时间在上班时间getStartTime和往后的90分钟内
|
|
|
+// else if (!StringUtils.isEmpty(b.getStartTime())
|
|
|
+// && starSignin.compareTo(getNext90(b.getStartTime(), true)) < 0
|
|
|
+// && starSignin.compareTo(b.getStartTime()) > 0) {
|
|
|
+// start = "迟到";
|
|
|
+// } else {
|
|
|
+// start = "缺勤";
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// start = "缺勤";
|
|
|
+// }
|
|
|
+// if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 1) {
|
|
|
+// String endSignin = b.getSigninList().get(b.getSigninList().size() - 1) == null ? "" : b.getSigninList().get(b.getSigninList().size() - 1);
|
|
|
+// holder.signin2.setText(endSignin);
|
|
|
+// if (!StringUtils.isEmpty(b.getEndTime()) && getNext90(b.getEndTime(), false).compareTo(endSignin) < 0 && endSignin.compareTo(b.getEndSignnin()) > 0) {
|
|
|
+// end = "早退";
|
|
|
+// } else if (!StringUtils.isEmpty(b.getEndTime()) && !StringUtils.isEmpty(b.getEndSignnin()) && endSignin.compareTo(b.getEndTime()) > 0 && endSignin.compareTo(b.getEndSignnin()) < 0) {
|
|
|
+// end = "-1";
|
|
|
+// } else {
|
|
|
+// end = "缺勤";
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// end = "缺勤";
|
|
|
+// }
|
|
|
//处理标识
|
|
|
- if ("-1".equals(start) || time.compareTo(b.getStartTime()) < 0) {//当前时间还没有到达上班时间,不能显示缺勤
|
|
|
+ if ("-1".equals(start)) {//当前时间还没有到达上班时间,不能显示缺勤
|
|
|
holder.tag.setVisibility(View.GONE);
|
|
|
} else {
|
|
|
holder.tag.setText(start);
|
|
|
@@ -105,6 +126,27 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
|
|
|
return TimeUtils.long2str(TimeUtils.f_str_2_long(chche) + chchelong, "HHmm");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param workTime 上班时间
|
|
|
+ * @param startSignin 允许签到开始时间
|
|
|
+ * @param endSignin 允许签到结束时间
|
|
|
+ * @param proit 签到时间
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String getTag(String workTime, String startSignin, String endSignin, String proit, boolean isU) {
|
|
|
+ String tag = "";
|
|
|
+ if (proit.compareTo(workTime) < 0 && proit.compareTo(startSignin) > 0 || (isU && time.compareTo(workTime) < 0)) { //判断正常签到 在startSignin到workTime之间
|
|
|
+ tag = isU ? "-1" : "早退";
|
|
|
+ } else if (proit.compareTo(workTime) > 0 && proit.compareTo(endSignin) < 0 || (!isU && time.compareTo(workTime) < 0)) { //判断迟到签到 在workTime到endSignin
|
|
|
+ tag = isU ? "迟到" : "-1";
|
|
|
+ } else if (isU && proit.compareTo(endSignin) > 0) {//当签到时间大于endSignin,为缺勤
|
|
|
+ tag = "缺勤";
|
|
|
+ } else if (!isU && (proit.compareTo(startSignin) < 0 || proit.compareTo(endSignin) > 0)) {
|
|
|
+ tag = "缺勤";
|
|
|
+ }
|
|
|
+ return tag;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public int getItemCount() {
|
|
|
return beans == null ? 0 : beans.size();
|