1.1.5发布

master
hwf453 1 year ago
parent b597beada9
commit 5edc4493c0

@ -10,8 +10,8 @@ android {
applicationId "com.rehome.dywoa"
minSdk 24
targetSdk 34
versionCode 15
versionName "1.1.4"
versionCode 16
versionName "1.1.5"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//authorities

@ -240,6 +240,8 @@ public class Contans {
public static final String REFRESHDOWNLOADDJPLAN = "refreshDownloadDjPlan";
//刷新巡检工作底部统计
public static final String REFRESHDJSTATISTICS = "refreshDjStatistics";
//刷新点检工作底部统计
public static final String REFRESHDJSINGLEPOINTUPLOADSTATISTICS = "refreshDjSingleUploadStatistics";
public final static String QFGD = "Q4GD/Q4GD_CKGL.ashx";
public final static String QFDDVICELIST = "Q4WorkOrder/Q4SBGL.ashx";

@ -46,8 +46,6 @@ public class UserInfoBean {
private String isScBm;
//token http请求加入到header里面
private String token;
// 运行部 如果有值就是运行部,空值就不是运行部
private String yunQingDepartment="";
//一级部门
private String firstDeparmentId;
private String firstDeparment;
@ -178,14 +176,6 @@ public class UserInfoBean {
this.token = token;
}
public String getYunQingDepartment() {
return yunQingDepartment;
}
public void setYunQingDepartment(String yunQingDepartment) {
this.yunQingDepartment = yunQingDepartment;
}
public String getFirstDeparmentId() {
return firstDeparmentId;
}

@ -31,6 +31,8 @@ import com.luck.picture.lib.entity.LocalMedia
import com.rehome.dywoa.App
import com.rehome.dywoa.AppManager
import com.rehome.dywoa.Contans
import com.rehome.dywoa.DBModel.Djjh
import com.rehome.dywoa.DBModel.DjjhRwQy
import com.rehome.dywoa.DBModel.Gzlx
import com.rehome.dywoa.DBModel.GzlxQxData
import com.rehome.dywoa.DBModel.Jz
@ -39,6 +41,7 @@ import com.rehome.dywoa.DBModel.LxXjTjDropDown
import com.rehome.dywoa.DBModel.LxXjTjDropDownData
import com.rehome.dywoa.DBModel.XSJJHDataBean
import com.rehome.dywoa.DBModel.XSJJHXZDataBean
import com.rehome.dywoa.DBModel.XcjsInfo
import com.rehome.dywoa.DBModel.Xjjh
import com.rehome.dywoa.DBModel.Xydj
import com.rehome.dywoa.DBModel.XydjQxData
@ -52,21 +55,22 @@ import com.rehome.dywoa.R
import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding
import com.rehome.dywoa.bean.ApkUpdateBean
import com.rehome.dywoa.bean.AppUpdateCommit
import com.rehome.dywoa.bean.ScxjjhBean.data
import com.rehome.dywoa.bean.ScxjjhBean
import com.rehome.dywoa.bean.StatusInfo
import com.rehome.dywoa.bean.StatusInfoSingleTask
import com.rehome.dywoa.bean.WaitForBean
import com.rehome.dywoa.databinding.ActivityHomeBinding
import com.rehome.dywoa.entity.ScDjjhInfo
import com.rehome.dywoa.ui.fragment.HomeFragment
import com.rehome.dywoa.ui.fragment.MineFragment
import com.rehome.dywoa.utils.GsonUtils
import com.rehome.dywoa.utils.HttpListener
import com.rehome.dywoa.utils.NoProgresshttpUtils
import com.rehome.dywoa.utils.RSAUtils
import com.rehome.dywoa.utils.SPUtils
import com.rehome.dywoa.utils.StatusBarUtil
import com.rehome.dywoa.utils.UiUtlis
import com.rehome.dywoa.weiget.toastviewbymyself
import com.sangfor.sdk.SFUemSDK
import com.yolanda.nohttp.NoHttp
import com.yolanda.nohttp.RequestMethod
import com.yolanda.nohttp.rest.OnResponseListener
@ -207,7 +211,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
}
override fun initData() {
//巡检项目删除过期数据
deleteXjExpirePlan()
//点检项目删除过期数据
deleteDjExpirePlan()
//巡检,点检待办
//waitForToDo()
//缺陷工单下拉数据
@ -222,6 +229,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
getXjZhTjDropDown("lx");
}
//巡检项目删除过期数据
private fun deleteXjExpirePlan(){
val xjdListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Xjjh::class.java)
if(xjdListAll!=null&&xjdListAll.size>0){
@ -240,7 +248,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
showLog("--------")
showLog(sdFormat.format(calendar.time))
if (Calendar.getInstance().after(calendarOne)) {
showLog("删除旧数据")
showLog("删除巡检旧数据")
DataSupport.deleteAll(
XSJJHXZDataBean::class.java,
"zxid = ? and username = ?",
@ -264,6 +272,52 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
}
}
//点检项目删除过期数据
private fun deleteDjExpirePlan(){
val djjhListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Djjh::class.java)
if(djjhListAll!=null&&djjhListAll.size>0){
for (djjhItem in djjhListAll) {
showLog("-----djjhListAll-----")
showLog(GsonUtils.GsonString(djjhListAll))
if(!TextUtils.isEmpty(djjhItem.dqsj)){
//格式化日期的对象(转化成习惯的时间格式)
val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm")
//静态方法getInstance()使用默认时区和语言环境获得一个日历。
val calendar = Calendar.getInstance()
val date = sdFormat.parse(djjhItem.dqsj)
val calendarOne = Calendar.getInstance()
calendarOne.time = date
showLog(sdFormat.format(calendarOne.time))
showLog("--------")
showLog(sdFormat.format(calendar.time))
if (Calendar.getInstance().after(calendarOne)) {
showLog("删除点检旧数据")
DataSupport.deleteAll(
DjjhRwQy::class.java,
"jhid = ? and username = ?",
djjhItem.jhid,
username
)
DataSupport.deleteAll(
XcjsInfo::class.java,
"jhid = ? and username = ?",
djjhItem.jhid,
username
)
DataSupport.deleteAll(
Djjh::class.java,
"jhid = ? and username = ?",
djjhItem.jhid,
username
)
}else{
showLog("之前")
}
}
}
}
}
private fun waitForToDo(){
var param = HashMap<String,String>()
param["YHID"] = username
@ -516,8 +570,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
showLog(result)
if(result == "1"){
showLog("connect server success")
//检查是否有需要上传的点
checkNeedUpLoadXjd()
//检查巡检是否有需要上传的点
checkNeedUpLoadXj()
//检查点检是否有需要上传的点
checkNeedUpLoadDj()
}
}
}
@ -527,40 +583,63 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
}
})
}
//检查是否有需要上传的点
private fun checkNeedUpLoadXjd() {
//检查巡检是否有需要上传的点
private fun checkNeedUpLoadXj() {
//List<XSJJHXZDataBean> planNFC = where("scid = ? and username = ?", scid, username).find(XSJJHXZDataBean.class);
val xsjjhDataBeenList =
DataSupport.where("checked = ? and username = ?","1", username).find<XSJJHDataBean>(
XSJJHDataBean::class.java
)
if (xsjjhDataBeenList != null && xsjjhDataBeenList.size > 0){
showLog("need upload")
showLog(GsonUtils.GsonString(xsjjhDataBeenList[0]))
// showLog("need upload")
// showLog(GsonUtils.GsonString(xsjjhDataBeenList[0]))
// showLog("存在已巡检数据,检测是否需要上传")
Log.i("app", "可上传")
for (itemXSJJHDataBean in xsjjhDataBeenList) {
if(itemXSJJHDataBean.isUploaded){
showLog("当前巡检点已上传")
//showLog("当前巡检点已上传")
}else{
if (!TextUtils.isEmpty(itemXSJJHDataBean.photos)) {
//有图片需要上传
uploadPhotoXjd(itemXSJJHDataBean)
uploadPhotoXj(itemXSJJHDataBean)
}else{
//不需要上传图片,直接上传数据
//上传单个巡检点数据
uploadOnePointXjd(itemXSJJHDataBean);
uploadOnePointXj(itemXSJJHDataBean);
}
}
}
}else{
showLog("no need upload")
}
}
//检查点检是否有需要上传的点
private fun checkNeedUpLoadDj() {
val djCheckedList =
DataSupport.where("checked = ? and username = ?","1", username).find<DjjhRwQy>(
DjjhRwQy::class.java
)
if (djCheckedList != null && djCheckedList.size > 0){
// showLog("need upload")
// showLog(GsonUtils.GsonString(djCheckedList))
// showLog("存在已点检数据,检测是否需要上传")
for (djCheckedItem in djCheckedList) {
if(djCheckedItem.isUploaded){
//showLog("当前点检点已上传")
}else{
//不需要上传图片,直接上传数据
//上传单个巡检点数据
uploadOnePointDj(djCheckedItem);
}
}
}else{
showLog("no need upload")
}
}
//巡检上传照片
private fun uploadPhotoXjd(itemXSJJHDataBean: XSJJHDataBean) {
private fun uploadPhotoXj(itemXSJJHDataBean: XSJJHDataBean) {
val url = Contans.IP + Contans.XJD_UPLOAD_PHOTO
showLog(url)
val request =
@ -607,7 +686,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
if (info != null&&info.state == 1) {
showLog("现场记事图片上传成功")
//上传单个巡检点数据
uploadOnePointXjd(itemXSJJHDataBean);
uploadOnePointXj(itemXSJJHDataBean);
}else{
showLog("现场记事图片上传失败")
}
@ -623,11 +702,11 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
})
}
//上传单个巡检点
private fun uploadOnePointXjd(itemXSJJHDataBean: XSJJHDataBean) {
private fun uploadOnePointXj(itemXSJJHDataBean: XSJJHDataBean) {
val url = Contans.IP + Contans.XSCB_PLAN_UPLOAD_TASK_ONE
showLog(url)
val request = NoHttp.createStringRequest(url, RequestMethod.POST)
val json = getJsonUploadSingleTask(itemXSJJHDataBean)
val json = getJsonUploadSingleTaskXj(itemXSJJHDataBean)
request.setDefineRequestBodyForJson(json)
if (App.getInstance().userInfo != null && App.getInstance().userInfo.token != null) {
@ -682,8 +761,60 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
}
})
}
private fun getJsonUploadSingleTask(itemXSJJHDataBean: XSJJHDataBean):String{
val datas = data()
//上传单个巡检点
private fun uploadOnePointDj(djCheckedItem: DjjhRwQy) {
val url = Contans.IP + Contans.DJ_SINGLE_SC
showLog(url)
val request = NoHttp.createStringRequest(url, RequestMethod.POST)
val json = getJsonUploadSingleTaskDj(djCheckedItem)
request.setDefineRequestBodyForJson(json)
if (App.getInstance().userInfo != null && App.getInstance().userInfo.token != null) {
val token = App.getInstance().userInfo.token
val credential = "Bearer $token"
request.addHeader("Authorization", credential)
request.addHeader("token", token)
}
queueNoHttp.add<String>(6, request, object : OnResponseListener<String> {
override fun onStart(what: Int) {
}
override fun onSucceed(what: Int, response: Response<String>?) {
val result = response?.get()
showLog(result)
val info = GsonUtils.GsonToBean(result, StatusInfoSingleTask::class.java)
if (info != null&&info.state == 1) {
showLog("单条点检点上传成功")
val values = ContentValues()
values.put("uploaded", "1")
DataSupport.updateAll(
DjjhRwQy::class.java,
values,
"scid = ? ",
djCheckedItem.scid
)
//刷新点检工作底部统计
val intent = Intent(Contans.REFRESHDJSINGLEPOINTUPLOADSTATISTICS)
//发送广播,刷新点检工作底部统计
LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
}
}
override fun onFailed(what: Int, response: Response<String>?) {
}
override fun onFinish(what: Int) {
}
})
}
private fun getJsonUploadSingleTaskXj(itemXSJJHDataBean: XSJJHDataBean):String{
val datas = ScxjjhBean.data()
datas.scid = itemXSJJHDataBean.scid
datas.dbh = itemXSJJHDataBean.dbh
@ -719,6 +850,43 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
return json;
}
private fun getJsonUploadSingleTaskDj(djCheckedItem: DjjhRwQy):String{
val info = ScDjjhInfo()
info.isChecked = djCheckedItem.isChecked
info.scid = djCheckedItem.scid
info.cjjg = if (djCheckedItem.cjjg == null) "" else djCheckedItem.cjjg
info.jhid = if (djCheckedItem.jhid == null) "" else djCheckedItem.jhid
info.pointnum = if (djCheckedItem.pointnum == null) "" else djCheckedItem.pointnum
info.date = djCheckedItem.date
info.djr = App.getInstance().userInfo.manid
info.bzmc = SPUtils.get(context, Contans.SCBZBH, "") as String
info.fxnr = if (djCheckedItem.fxnr == null) "" else djCheckedItem.fxnr
info.smfx = if (djCheckedItem.isSMFX) "QRCode" else "NFC"
info.assetnum = djCheckedItem.assetnum
info.sbzt = "1"
info.status = "1"
if (!TextUtils.isEmpty(djCheckedItem.status)) {
if (djCheckedItem.status == "0") {
info.status = "0"
if (TextUtils.isEmpty(djCheckedItem.cjjg)) {
info.cjjg = "停用"
}
}
if (djCheckedItem.status == "2") {
info.status = "2"
if (TextUtils.isEmpty(djCheckedItem.cjjg)) {
info.cjjg = "备用"
}
}
}
val json = GsonUtils.GsonString(info);
showLog(json)
return json;
}
private fun checkConnectServer() {
var param = HashMap<String,String>()
param["login"] = "dywoa";

@ -189,8 +189,12 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
if (BuildConfig.LOG_ERROR) {
//测试
binding.etUsername.setText("371522")
binding.etPassword.setText("A000000a")
// binding.etUsername.setText("371522")
// binding.etPassword.setText("A000000a")
//ceshi1
// binding.etUsername.setText("ceshi1")
// binding.etPassword.setText("A000000a")
// binding.etUsername.setText("CY00011")
// binding.etPassword.setText("A000000a")
@ -210,6 +214,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
// binding.etUsername.setText("972526")
// binding.etPassword.setText("Wq248655")
}
//http://10.25.188.126:8600/apkFiles/release/dywoaapp.apk
//https://oa.dywzhny.com.cn/apkFiles/release/dywoaapp.apk
@ -799,7 +804,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
usernameLogin
)
) {
if((!TextUtils.isEmpty(userInfo.yunQingDepartment))&&(userInfo.yunQingDepartment.equals("运行部"))){
if((!TextUtils.isEmpty(userInfo.firstDeparment))&&(userInfo.firstDeparment.equals("运行部"))){
showToast("运行部为了支持巡检功能,支持离线登录,有效期一天。")
App.getInstance().userInfo = userInfo
val intent = Intent(context, HomeActivity::class.java)
@ -903,7 +908,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
usernameLogin
)
) {
if((!TextUtils.isEmpty(userInfo.yunQingDepartment))&&(userInfo.yunQingDepartment.equals("运行部"))){
if((!TextUtils.isEmpty(userInfo.firstDeparment))&&(userInfo.firstDeparment.equals("运行部"))){
return true
}
if((!TextUtils.isEmpty(userInfo.firstDeparment))&&(userInfo.firstDeparment.equals("工程部"))){

@ -4,9 +4,12 @@ package com.rehome.dywoa.ui.activity.sbxdjgl;
import static org.litepal.crud.DataSupport.where;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.nfc.NfcAdapter;
@ -20,6 +23,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.view.View;
@ -70,10 +74,23 @@ public class SdjgzActivity extends BaseActivity {
TextView tv_no_checked;
TextView tv_checked;
TextView tv_uploaded;
TextView tv_checkedAndNoUpload;
TextView tv_checkedAndNoUploadDj;
ArrayList<DjjhRwQy> djjTotal = new ArrayList<>();
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Contans.REFRESHDJSINGLEPOINTUPLOADSTATISTICS.equals(action)) {
//showLog("REFRESHDJSINGLEPOINTUPLOADSTATISTICS");
//刷新底部统计页面
updateDataStatistics();
updateDataStatistics();
}
}
};
private void findView() {
lv = findViewById(R.id.lv);
@ -84,7 +101,7 @@ public class SdjgzActivity extends BaseActivity {
tv_no_checked = findViewById(R.id.tv_no_checked);
tv_checked = findViewById(R.id.tv_checked);
tv_uploaded = findViewById(R.id.tv_uploaded);
tv_checkedAndNoUpload = findViewById(R.id.tv_checkedAndNoUpload);
tv_checkedAndNoUploadDj = findViewById(R.id.tv_checkedAndNoUploadDj);
}
private List<DjAjhGzInfo> list;
@ -119,6 +136,10 @@ public class SdjgzActivity extends BaseActivity {
headView = View.inflate(this, R.layout.djajhgz_item, null);
headView.findViewById(R.id.head).setVisibility(View.VISIBLE);
launcherResultQRCode = createActivityResultLauncher();
IntentFilter filter = new IntentFilter();
filter.addAction(Contans.REFRESHDJSINGLEPOINTUPLOADSTATISTICS);
LocalBroadcastManager.getInstance(SdjgzActivity.this).registerReceiver(myReceiver, filter);
}
public void initData() {
@ -413,6 +434,13 @@ public class SdjgzActivity extends BaseActivity {
adapter.notifyDataSetChanged();
}
@Override
protected void onDestroy() {
super.onDestroy();
// 注销广播接收器
LocalBroadcastManager.getInstance(SdjgzActivity.this).unregisterReceiver(myReceiver);
}
//处理NFC的数据
@Override
public void handleNfc(String result) {
@ -473,7 +501,7 @@ public class SdjgzActivity extends BaseActivity {
List<DjjhRwQy> checkedList = DataSupport.where("checked = ? and username = ?", "1",username).find(DjjhRwQy.class);
if(checkedList!=null&&checkedList.size()>0){
tv_checked.setText(String.valueOf(checkedList.size()));
showLog("-------检点数------");
showLog("-------检点数------");
showLog(GsonUtils.GsonString(checkedList));
}
//已检已上传点数
@ -486,9 +514,12 @@ public class SdjgzActivity extends BaseActivity {
//已检未上传点数
List<DjjhRwQy> checkedAndNoUploadList = DataSupport.where("checked = ? and uploaded = ? and username = ?", "1","0",username).find(DjjhRwQy.class);
if(checkedAndNoUploadList!=null&&checkedAndNoUploadList.size()>0){
tv_checkedAndNoUpload.setText(String.valueOf(checkedAndNoUploadList.size()));
tv_checkedAndNoUploadDj.setText(String.valueOf(checkedAndNoUploadList.size()));
showLog("-------已检未上传点数------");
showLog(GsonUtils.GsonString(checkedAndNoUploadList));
}else{
tv_checkedAndNoUploadDj.setText("0");
showLog("-------已检未上传点数------");
}
}
}

@ -272,6 +272,7 @@ public class SjcjFragment extends BaseFragment {
if (!cj.getCJJG().equals("")) {
ContentValues values = new ContentValues();
values.put("checked", true);
values.put("uploaded", "0");
values.put("CJJG", cj.getCJJG());
values.put("fxnr", cj.getFxnr());
values.put("status", "1");
@ -292,6 +293,7 @@ public class SjcjFragment extends BaseFragment {
//停用和备用被选中,可以不用填写采集结果
ContentValues values = new ContentValues();
values.put("checked", true);
values.put("uploaded", "0");
values.put("CJJG", cj.getCJJG());
values.put("fxnr", cj.getFxnr());
values.put("status", cj.getRB3() ? "2" : "0");

@ -283,6 +283,9 @@ public class SxgzActivity extends BaseActivity {
tv_checkedAndNoUpload.setText(String.valueOf(checkedAndNoUploadList.size()));
showLog("-------已检未上传点数------");
showLog(GsonUtils.GsonString(checkedAndNoUploadList));
}else{
tv_checkedAndNoUpload.setText("0");
showLog("-------已检未上传点数------");
}
}

@ -52,7 +52,7 @@ public class XscbglActivity extends BaseActivity2 {
private String username;
private String[] str = {"待办任务", "巡检工作", "统计", "读取NFC数据", "缺陷工单录入"};
private int[] imageId = {R.mipmap.icon_xs1, R.mipmap.icon6, R.mipmap.icon_task_count, R.mipmap.icon11, R.drawable.icon15};
private int[] imageId = {R.mipmap.icon_xs1, R.mipmap.icon6, R.mipmap.icon_xj_tj, R.mipmap.icon11, R.drawable.icon15};
private int[] colors = {R.drawable.radius_b1, R.drawable.radius_a4, R.drawable.radius_b3, R.drawable.radius_d1, R.drawable.radius_e4};
private GridViewAdapter adapter;

@ -165,7 +165,7 @@
android:textColor="@color/viewfinder_mask"
android:text="已检未上传:"/>
<TextView
android:id="@+id/tv_checkedAndNoUpload"
android:id="@+id/tv_checkedAndNoUploadDj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"

@ -199,6 +199,7 @@
<TextView
android:id="@+id/tv_rate"
style="@style/dagerDetailRightStyle"
android:layout_marginStart="1dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

@ -184,13 +184,13 @@
</style>
<style name="dagerDetailLeftStyle">
<item name="android:gravity">center</item>
<item name="android:textSize">13sp</item>
<item name="android:textSize">12sp</item>
<item name="android:textColor">@color/black</item>
</style>
<style name="dagerDetailRightStyle">
<item name="android:layout_marginStart">5dp</item>
<item name="android:gravity">center|start</item>
<item name="android:textSize">13sp</item>
<item name="android:textSize">12sp</item>
<item name="android:textColor">@color/black</item>
</style>
<style name="xjcjRightStyle">

Loading…
Cancel
Save