diff --git a/app/build.gradle b/app/build.gradle
index 112d07c..cc6ab07 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,7 +10,7 @@ android {
applicationId "com.example.beijing_daxing"
minSdk 24
targetSdk 33
- versionCode 5
+ versionCode 7
versionName "1.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 4549c92..1294217 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -11,7 +11,7 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
- "versionCode": 5,
+ "versionCode": 7,
"versionName": "1.5",
"outputFile": "app-release.apk"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 35213d1..34bec28 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,14 +53,14 @@
android:name=".CheckListActivity"
android:exported="false" />
-
-
-
-
-
+
+
+
+
+
+
+
+
> list2;
private OptionsPickerView opv;
private List list;
-
+ private ObservableBoolean state = new ObservableBoolean(false);
private PmRecordPenalty recordPenalty;
+ private TipsDialog tipsDialog;
+ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ private PersonPenaltyDialog personPenaltyDialog;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_select_person_info);
+ tipsDialog = new TipsDialog(this);
+ initSan();
pictureDialog = new LookPictureDialog(this);
- opv= new OptionsPickerBuilder(this, this).build();
+ opv = new OptionsPickerBuilder(this, this).build();
initCheckList();
- recordPenalty=new PmRecordPenalty();
- recordPenalty.setCreateBy(SharedPreferencesUtils.getstring("user",""));
+ recordPenalty = new PmRecordPenalty();
+ recordPenalty.setCreateBy(SharedPreferencesUtils.getstring("user", ""));
+ binding.setState(state);
+ binding.checkState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ state.set(position == 1);
+ recordPenalty.setCheckState(position + "");
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+
+ }
+ });
+ personPenaltyDialog = new PersonPenaltyDialog(this);
}
private void initCheckList() {
@@ -61,8 +87,9 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
super.onSuccess(response);
MyResult body = response.body();
if (body.getCode() == 0) {
- list = gson.fromJson(body.getJson(), new TypeToken>() {
- }.getType());
+ list =
+ gson.fromJson(body.getJson(), new TypeToken>() {
+ }.getType());
list1 = new ArrayList<>();
list2 = new ArrayList<>();
Map map = new HashMap<>();
@@ -80,7 +107,7 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
String tag = map.get(parentId);
int i = list1.indexOf(tag);
String penaltyTypeCode = penaltyType.getPenaltyTypeCode();
- list2.get(i).add(penaltyTypeCode+"-"+penaltyInfo);
+ list2.get(i).add(penaltyTypeCode + "-" + penaltyInfo);
}
});
opv.setPicker(list1, list2, null);
@@ -104,14 +131,42 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
super.onSuccess(response);
MyResult body = response.body();
if (body.getCode() == 0) {
-
personInfo = gson.fromJson(body.getJson(), PmBasePersonInfo.class);
+ String joinDate = personInfo.getJoinDate();
+ if (joinDate != null) {
+ Date currentDate = new Date();
+ String nowDate = sdf.format(currentDate);
+
+ Date date = null;
+ try {
+ date = sdf.parse(joinDate);
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+
+ // 优化后的日期判断逻辑
+ if (currentDate.after(date) && !nowDate.equals(joinDate)) {
+ tipsDialog.showImage(false, "人员已过期");
+ } else {
+ tipsDialog.showImage(true, "人员有效");
+ }
+
+ }
recordPenalty.setBasePersonId(personInfo.getBasePersonId());
+ recordPenalty.setEpc(bytes2HexString);
binding.setPersonInfo(personInfo);
Glide.with(SelectPersonInfoActivity.this).load(url.replace("/api", "") + personInfo.getPhotoPath()).into(binding.selectInfoPhoto);
- return;
+
+ personPenaltyDialog.setList(personInfo.getPmRecordPenalties());
+ } else {
+ tipsDialog.showImage(false, "后台管理员未录入信息");
+ if (personInfo != null) {
+ personInfo.clearUi();
+ }
+ recordPenalty.setBasePersonId(null);
+ personInfo = null;
}
- Toast.makeText(SelectPersonInfoActivity.this, body.getMsg(), Toast.LENGTH_SHORT).show();
+
}
});
}
@@ -134,6 +189,10 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
}
public void selectInfoSubmit(View view) {
+ if (recordPenalty.getBasePersonId() ==null){
+ Toast.makeText(this, "请先查询人员信息", Toast.LENGTH_SHORT).show();
+ return;
+ }
OkGo.post(url + "/insertRrecordPenalty")
.upRequestBody(RequestBody.create(JSON, gson.toJson(recordPenalty)))
.execute(new MyRecultCall(dialog, this) {
@@ -155,7 +214,7 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
String type = list1.get(options1);
String s = list2.get(options1).get(options2);
binding.selectPenalty.setText(s);
- s = s.substring(s.indexOf("-")+1,s.length());
+ s = s.substring(s.indexOf("-") + 1, s.length());
Log.e("TAG", "onOptionsSelect:" + type + ", " + s);
PmBasePenaltyType penaltyType = new PmBasePenaltyType();
penaltyType.setPenaltyInfo(s);
@@ -168,4 +227,16 @@ public class SelectPersonInfoActivity extends BaseActivity implements OnOptionsS
recordPenalty.setPenaltyAmount(penaltyType1.getPenaltyAmount());
}
+
+ public void checkPenalty(View view) {
+ if (personInfo == null) {
+ Toast.makeText(this, "请先查询人员信息", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (personInfo.getPenaltyCount() == 0){
+ Toast.makeText(this, "该人员暂无处罚记录", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ personPenaltyDialog.show();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/beijing_daxing/adapter/PersonPenaltyAdapter.java b/app/src/main/java/com/example/beijing_daxing/adapter/PersonPenaltyAdapter.java
new file mode 100644
index 0000000..54536c8
--- /dev/null
+++ b/app/src/main/java/com/example/beijing_daxing/adapter/PersonPenaltyAdapter.java
@@ -0,0 +1,69 @@
+package com.example.beijing_daxing.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.beijing_daxing.BR;
+import com.example.beijing_daxing.R;
+import com.example.beijing_daxing.base.AdapterClickCall;
+import com.example.beijing_daxing.been.PmRecordPenalty;
+import com.example.beijing_daxing.been.Stock;
+import com.example.beijing_daxing.databinding.ItemCheckBinding;
+import com.example.beijing_daxing.databinding.ItemPPBinding;
+
+import java.util.List;
+
+/**
+ * @author wanghao
+ * @date 2024/1/19 14:32
+ */
+public class PersonPenaltyAdapter extends RecyclerView.Adapter {
+ private Context context;
+ private List list;
+ private LayoutInflater inflater;
+
+ public PersonPenaltyAdapter(Context context, AdapterClickCall call) {
+ this.context = context;
+ inflater = LayoutInflater.from(context);
+
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+ @Override
+ public MyViewHoder onCreateViewHolder(ViewGroup parent, int viewType) {
+ ItemPPBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_p_p, parent, false);
+ return new MyViewHoder(binding);
+ }
+
+ @Override
+ public void onBindViewHolder(MyViewHoder holder, int position) {
+ var binding = holder.getBinding();
+ binding.setVariable(BR.item,list.get(position));
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return list==null?0:list.size();
+ }
+
+ public class MyViewHoder extends RecyclerView.ViewHolder {
+ private ItemPPBinding binding;
+
+ public MyViewHoder( ItemPPBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public ItemPPBinding getBinding() {
+ return binding;
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java b/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java
index 39abc94..c66e9d9 100644
--- a/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java
+++ b/app/src/main/java/com/example/beijing_daxing/base/BaseActivity.java
@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import com.example.beijing_daxing.R;
+import com.example.beijing_daxing.uitls.SharedPreferencesUtils;
import com.google.gson.Gson;
import com.handheld.uhfr.UHFRManager;
import com.uhf.api.cls.Reader;
@@ -76,13 +77,15 @@ public class BaseActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
gson = new Gson();
initDialog();
- initSan();
+
broadcastIntent = new Intent("android.rfid.FUN_KEY");
broadcastIntent.putExtra("keydown", false);
}
- private void initSan() {
+ public void initSan() {
uhfLongerManager = MyApplication.getApplication().getUhfrManager();
+ int powerIn = SharedPreferencesUtils.getInt("powerIn", 33);
+ uhfLongerManager.setPower(powerIn, powerIn);
myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.rfid.FUN_KEY");
@@ -92,7 +95,6 @@ public class BaseActivity extends AppCompatActivity {
}
-
// 1- 读取EPC
public void readEPC(int lenth) {
byte[] rdata = new byte[lenth];
@@ -143,7 +145,10 @@ public class BaseActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
- unregisterReceiver(myReceiver);
+ if (myReceiver != null) {
+ unregisterReceiver(myReceiver);
+ }
+
}
public void sanRfid(List epcs) {
@@ -243,7 +248,7 @@ public class BaseActivity extends AppCompatActivity {
var keydown = intent.getBooleanExtra("keydown", false);
Log.e("TAG", "接收到广播:" + keydown);
if (!keydown) {
- readEPC(6);
+ readEPC(12);
}
}
}
diff --git a/app/src/main/java/com/example/beijing_daxing/been/PmBasePersonInfo.java b/app/src/main/java/com/example/beijing_daxing/been/PmBasePersonInfo.java
index ca7130b..35cb533 100644
--- a/app/src/main/java/com/example/beijing_daxing/been/PmBasePersonInfo.java
+++ b/app/src/main/java/com/example/beijing_daxing/been/PmBasePersonInfo.java
@@ -1,12 +1,16 @@
package com.example.beijing_daxing.been;
+import androidx.databinding.BaseObservable;
+
+import java.util.List;
+
/**
* 人员信息对象 pm_base_person_info
*
* @author ruoyi
* @date 2025-11-26
*/
-public class PmBasePersonInfo {
+public class PmBasePersonInfo extends BaseObservable {
/**
* 人员表主键
@@ -62,6 +66,18 @@ public class PmBasePersonInfo {
*/
private String academicQualification;
+ private List pmRecordPenalties;
+ private int penaltyCount;
+
+ public int getPenaltyCount() {
+ penaltyCount = pmRecordPenalties==null || pmRecordPenalties.isEmpty() ? 0 : pmRecordPenalties.size();
+ return penaltyCount;
+ }
+
+ // public void setPenaltyCount(int penaltyCount) {
+ // this.penaltyCount = penaltyCount;
+ // }
+
public Long getBasePersonId() {
return basePersonId;
}
@@ -141,5 +157,21 @@ public class PmBasePersonInfo {
public void setAcademicQualification(String academicQualification) {
this.academicQualification = academicQualification;
}
+ public List getPmRecordPenalties() {
+ return pmRecordPenalties;
+ }
+ public void setPmRecordPenalties(List pmRecordPenalties) {
+ this.pmRecordPenalties = pmRecordPenalties;
+ notifyChange();
+ }
+
+ public void clearUi() {
+ setEmployeeId(null);
+ setPeopleName(null);
+ setDriverCode(null);
+ setJoinDate(null);
+ setPhotoPath(null);
+ notifyChange();
+ }
}
diff --git a/app/src/main/java/com/example/beijing_daxing/been/PmRecordPenalty.java b/app/src/main/java/com/example/beijing_daxing/been/PmRecordPenalty.java
index b9328f3..88a411d 100644
--- a/app/src/main/java/com/example/beijing_daxing/been/PmRecordPenalty.java
+++ b/app/src/main/java/com/example/beijing_daxing/been/PmRecordPenalty.java
@@ -51,6 +51,30 @@ public class PmRecordPenalty {
private String processState;
private String createBy;
+ private String createTime;
+
+ private String checkState;
+ private String epc;
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public String getEpc() {
+ return epc;
+ }
+
+ public void setEpc(String epc) {
+ this.epc = epc;
+ }
+
+ public String getCheckState() {
+ return checkState;
+ }
+
+ public void setCheckState(String checkState) {
+ this.checkState = checkState;
+ }
public String getCreateBy() {
return createBy;
diff --git a/app/src/main/java/com/example/beijing_daxing/dialog/PersonPenaltyDialog.java b/app/src/main/java/com/example/beijing_daxing/dialog/PersonPenaltyDialog.java
new file mode 100644
index 0000000..ab5ac72
--- /dev/null
+++ b/app/src/main/java/com/example/beijing_daxing/dialog/PersonPenaltyDialog.java
@@ -0,0 +1,45 @@
+package com.example.beijing_daxing.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.databinding.DataBindingUtil;
+
+import com.example.beijing_daxing.R;
+import com.example.beijing_daxing.adapter.PersonPenaltyAdapter;
+import com.example.beijing_daxing.been.PmRecordPenalty;
+import com.example.beijing_daxing.databinding.DialogPersonPenaltyBinding;
+
+import java.util.List;
+
+public class PersonPenaltyDialog extends Dialog {
+ private Context context;
+ private DialogPersonPenaltyBinding binding;
+ private PersonPenaltyAdapter adapter;
+ private List list;
+
+ public void setList(List list) {
+ this.list = list;
+ adapter.setList(list);
+ adapter.notifyDataSetChanged();
+
+ }
+
+ public PersonPenaltyDialog(Context context) {
+ super(context, R.style.dialog);
+ this.context = context;
+ adapter = new PersonPenaltyAdapter(context, null);
+ binding =
+ DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_person_penalty, null, false);
+ setContentView(binding.getRoot());
+
+ binding.setAdapter(adapter);
+ binding.dialogDismiss.setOnClickListener(v -> dismiss());
+ }
+
+
+
+}
diff --git a/app/src/main/java/com/example/beijing_daxing/dialog/TipsDialog.java b/app/src/main/java/com/example/beijing_daxing/dialog/TipsDialog.java
new file mode 100644
index 0000000..3724c66
--- /dev/null
+++ b/app/src/main/java/com/example/beijing_daxing/dialog/TipsDialog.java
@@ -0,0 +1,48 @@
+package com.example.beijing_daxing.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.example.beijing_daxing.R;
+
+
+/**
+ * Created by wangh on 2020/10/10-14:57。
+ */
+public class TipsDialog extends Dialog {
+ public TextView textView, button;
+ private ImageView imageView;
+
+ public TipsDialog(@NonNull Context context) {
+ super(context, R.style.dialog);
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.dialog_tip);
+ imageView = findViewById(R.id.tip_image);
+ textView = findViewById(R.id.tip_tip);
+ findViewById(R.id.dialog_no).setOnClickListener(v -> dismiss());
+
+ }
+
+
+ public void showImage(boolean imageState, String tip) {
+ show();
+ if (imageState) {
+ imageView.setImageResource(R.mipmap.dialog_success);
+ } else {
+ imageView.setImageResource(R.mipmap.dialog_failure);
+ }
+ textView.setText(tip);
+
+ }
+
+}
diff --git a/app/src/main/java/com/example/beijing_daxing/vm/LoginVm.java b/app/src/main/java/com/example/beijing_daxing/vm/LoginVm.java
index 6799fef..4b31f94 100644
--- a/app/src/main/java/com/example/beijing_daxing/vm/LoginVm.java
+++ b/app/src/main/java/com/example/beijing_daxing/vm/LoginVm.java
@@ -10,8 +10,7 @@ public class LoginVm extends BaseObservable {
private String name;
private String pass;
private boolean remember;
-
- private String ipConfig;
+ private String ipConfig ;
private String epcConfig;
public String getIpConfig() {
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 4d2b224..6988388 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -104,7 +104,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
- android:hint="输入RFID 8位前缀"
+ android:hint="输入RFID过滤前缀"
android:imeOptions="actionDone"
android:text="@={user.epcConfig}" />
diff --git a/app/src/main/res/layout/activity_select_person_info.xml b/app/src/main/res/layout/activity_select_person_info.xml
index 828846a..f26c08c 100644
--- a/app/src/main/res/layout/activity_select_person_info.xml
+++ b/app/src/main/res/layout/activity_select_person_info.xml
@@ -7,6 +7,10 @@
+
+
+
+
+
+
+
+
+
+ android:paddingEnd="16dp" />
-
+ android:layout_height="wrap_content"
+ android:layout_margin="10dp">
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_seting_power.xml b/app/src/main/res/layout/activity_seting_power.xml
index c05d0b1..709fdc2 100644
--- a/app/src/main/res/layout/activity_seting_power.xml
+++ b/app/src/main/res/layout/activity_seting_power.xml
@@ -1,9 +1,9 @@
+
@@ -32,7 +32,7 @@
android:layout_width="110dp"
android:layout_height="45dp"
android:layout_gravity="center"
- android:text="入库功率:" />
+ android:text="功率:" />
+ android:orientation="horizontal"
+ android:visibility="gone">
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ android:orientation="horizontal"
+ android:visibility="gone">
+ android:layout_marginTop="10dp"
+ android:visibility="gone">
+ android:layout_marginTop="10dp"
+ android:visibility="gone">
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+