diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b28b9..08c267c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1136,11 +1136,15 @@ + android:windowSoftInputMode="adjustResize|stateHidden" /> + android:windowSoftInputMode="adjustResize|stateHidden" /> + { + private final Context context; + private final List data; + private CallBack mCallBack; + + public interface CallBack { + void Click(@NonNull View view,int position); + } + + private OnWorkTicketModifyClickListener onWorkTicketModifyClickListener; + private OnWorkTicketDeleteClickListener onWorkTicketDeleteClickListener; + + public WorkTickerCustomListAdapter(Context context, List datas, CallBack mCallBack,OnWorkTicketModifyClickListener onWorkTicketModifyClickListener,OnWorkTicketDeleteClickListener onWorkTicketDeleteClickListener) { + super(context); + this.context=context; + this.data=datas; + this.mCallBack = mCallBack; + this.onWorkTicketModifyClickListener=onWorkTicketModifyClickListener; + this.onWorkTicketDeleteClickListener=onWorkTicketDeleteClickListener; + } + + @Override + protected void handleData(int position, @NonNull AdapterWorkTicketCustomListBinding binding) { + WorkRiskLevelListBean.RowsBean item = data.get(position); + + binding.tvPaiHao.setText(item.getCode()); + binding.tvContent.setText(item.getContent()); + binding.tvLevel.setText(item.getLevel()); + if(!TextUtils.isEmpty(item.getMajor())){ + binding.tvZy.setText(item.getMajor()); + } + binding.cb.setChecked(item.isChecked()); + binding.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view,position); + } + }); + binding.tvModify.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onWorkTicketModifyClickListener.onItemClick(position); + } + }); + binding.tvDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onWorkTicketDeleteClickListener.onItemClick(position); + } + }); + int color = ContextCompat.getColor(context, R.color.colorPrimary); + int colorRed = ContextCompat.getColor(context, R.color.red); + if(TextUtils.isEmpty(item.getJobNo())){ + binding.cb.setEnabled(true); + binding.tvModify.setEnabled(true); + binding.tvDelete.setEnabled(true); + binding.llModify.setBackgroundColor(color); + binding.llDelete.setBackgroundColor(colorRed); + }else{ + if(item.getJobNo().equals(App.getInstance().getUserInfo().getManid())){ + binding.cb.setEnabled(true); + binding.tvModify.setEnabled(true); + binding.tvDelete.setEnabled(true); + binding.llModify.setBackgroundColor(color); + binding.llDelete.setBackgroundColor(colorRed); + }else{ + //不是本人选中的,不允许修改 + binding.cb.setEnabled(false); + binding.tvPaiHao.setTextColor(Color.GRAY); + binding.tvContent.setTextColor(Color.GRAY); + binding.tvLevel.setTextColor(Color.GRAY); + binding.tvModify.setEnabled(false); + binding.tvDelete.setEnabled(false); + binding.llModify.setBackgroundColor(Color.GRAY); + binding.llDelete.setBackgroundColor(Color.GRAY); + } + } + } + + @Override + protected AdapterWorkTicketCustomListBinding getBinding(@NonNull LayoutInflater inflater, ViewGroup parent) { + return AdapterWorkTicketCustomListBinding.inflate(inflater, parent, false); + } + + @Override + public int getCount() { + return data.size(); + } + + @Override + public Object getItem(int position) { + return data.get(position); + } + + @Override + public long getItemId(int position) { + return Long.valueOf(position); + } + + public interface OnWorkTicketModifyClickListener { + void onItemClick(int position); + } + public interface OnWorkTicketDeleteClickListener { + void onItemClick(int position); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/bean/AbbjBean.java b/app/src/main/java/com/rehome/zhdcoa/bean/AbbjBean.java index 9d93cdd..eeb9d20 100644 --- a/app/src/main/java/com/rehome/zhdcoa/bean/AbbjBean.java +++ b/app/src/main/java/com/rehome/zhdcoa/bean/AbbjBean.java @@ -6,7 +6,7 @@ import java.util.List; * Created by ruihong on 2019/2/25. */ -public class AbbjBean { +public class AbbjBean { /** diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/AbActivity.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/AbActivity.java index 768248b..2acd764 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/AbActivity.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/AbActivity.java @@ -64,7 +64,8 @@ public class AbActivity extends BaseActivity { public void getdata() { - final Request requestxs = NoHttp.createStringRequest("http://219.131.195.3:8082/" + Contans.AB, RequestMethod.POST); + String url = Contans.BASE_URL + Contans.AB; + final Request requestxs = NoHttp.createStringRequest(url, RequestMethod.POST); requestxs.setDefineRequestBodyForJson(createJson("", "")); @@ -73,6 +74,11 @@ public class AbActivity extends BaseActivity { @Override public void onSucceed(int what, com.yolanda.nohttp.rest.Response response) { + showLog( "--------getdata--------"); + showLog(url); + String result = response.get(); + showLog( result); + AbbjBean list = GsonUtils.GsonToBean(response.get(), AbbjBean.class); if (list != null) { diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkRiskListActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkRiskListActivity.kt index 557bcc9..99ef895 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkRiskListActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkRiskListActivity.kt @@ -45,6 +45,9 @@ class WorkRiskListActivity : BaseActivityOaToolbarViewBinding = mutableListOf() private var jobNoListAssistant: MutableList = mutableListOf() + private var selectListCustom: MutableList = mutableListOf() + private var jobNoListCustom: MutableList = mutableListOf() + private var dataA: MutableList = mutableListOf() private var dataB: MutableList = mutableListOf() private var dataC1: MutableList = mutableListOf() @@ -140,10 +143,12 @@ class WorkRiskListActivity : BaseActivityOaToolbarViewBinding() { + + //private lateinit var headView: View + //private lateinit var cb: CheckBox + + private var datas: MutableList = mutableListOf() + private lateinit var mAdapter: WorkTickerCustomListAdapter + + //工作票主键数组,来源查询每日作业风险清单 + private var ticketIdList : MutableList = mutableListOf() + //要取消的工作票主键 + private var deleteIdList : MutableList = mutableListOf() + + private var selectList: MutableList = mutableListOf() + private var jobNoList: MutableList = mutableListOf() + + + private lateinit var calendar: Calendar + + //格式化日期的对象(转化成习惯的时间格式) + private val sdFormat = SimpleDateFormat("yyyy-MM-dd") + + override fun getViewBinding() = ActivityWorkTickerCustomListBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + + initToolbar("手动添加工作票", "新增") { + //提交 + } + + resetToday() + + val selectListStr = intent.getStringExtra("selectList")!! + showLog(selectListStr) + val gson = Gson() + val selectListTemp:MutableList = gson.fromJson>(selectListStr,object:TypeToken>() {}.type) + showLog(GsonUtils.GsonString(selectListTemp)) + if(selectListTemp.isNotEmpty()){ + selectList.addAll(selectListTemp) + } + + val jobNoListStr = intent.getStringExtra("jobNoList")!! + showLog(jobNoListStr) + val jobNoListTemp:MutableList = gson.fromJson>(jobNoListStr,object:TypeToken>() {}.type) + showLog(GsonUtils.GsonString(jobNoListTemp)) + if(jobNoListTemp.isNotEmpty()){ + jobNoList.addAll(jobNoListTemp) + } + + + binding.tvSt.setOnClickListener(View.OnClickListener { view: View? -> + + val dialog = DatePickDialogNew( + context, calendar + ) { outPutDate: String,calendarBack:Calendar -> + binding.tvSt.text = outPutDate + calendar = calendarBack; + //checkServerConnectStatus() + } + dialog.show() + }) + + binding.lv.emptyView = binding.tvNodata + //headView = View.inflate(this, R.layout.header_work_ticket_select_list, null) + //cb = headView.findViewById(R.id.cb) as CheckBox + binding.itemHead.cb.setOnClickListener { + if (binding.itemHead.cb.isChecked) { + for (i in datas.indices) { + datas[i].isChecked = true + mAdapter.notifyDataSetChanged() + } + deleteIdList.clear() + } else { + for (i in datas.indices) { + datas[i].isChecked = false + mAdapter.notifyDataSetChanged() + } + if(selectList.size>0){ + deleteIdList.addAll(selectList) + } + } + } + + mAdapter = WorkTickerCustomListAdapter(this,datas,{ view, position -> + val checkBox = view as CheckBox + datas[position].isChecked = checkBox.isChecked + var count = 0 + for (a in datas.indices) { + if (datas[a].isChecked) { + count++ + } + } + if(!checkBox.isChecked){ + if(selectList.size>0){ + for (i in selectList.indices) { + if(selectList[i] == datas[position].id){ + if(!deleteIdList.contains(selectList[i])){ + deleteIdList.add(selectList[i]) + } + } + } + } + } + binding.itemHead.cb.isChecked = count == datas.size + mAdapter.notifyDataSetChanged() + },{ position -> + val item:WorkRiskLevelListBean.RowsBean = datas[position] + showToast("修改") + },{ position -> + val item:WorkRiskLevelListBean.RowsBean = datas[position] + showToast("删除") + val dialog = CommitDialog(context, object : CommitDialogListener { + override fun confirm() { + //authenticationLoginAISubmit() + } + + override fun cancel() { + } + }) + dialog.setTvMsg("您确定要删除手动添加的工作票吗?") + dialog.show() + }) + + binding.lv.adapter = mAdapter + + binding.tvSubmit.setOnClickListener { + var canSubmit = false + ticketIdList.clear() + for (i in datas.indices) { + if (datas[i].isChecked) { + canSubmit = true + ticketIdList.add(datas[i].id) + } + } + if (canSubmit||deleteIdList.size>0) { + val dialog = CommitDialog(context, object : CommitDialogListener { + override fun confirm() { + showLog(GsonUtils.GsonString(ticketIdList)) + showLog(ticketIdList.size.toString()) + //authenticationLoginAISubmit() + } + + override fun cancel() { + } + }) + dialog.setTvMsg("您确定要设置工作票作业?") + dialog.show() + }else{ + showToast("致少选择一个工作票才能提交") + } + } + } + + override fun initData() { + authenticationLoginAI() + } + + private fun authenticationLoginAI() { + try { + //AI三维登录接口 + val userName = Contans.SP.AI_ACCOUNT + //String strPrivateEncode=RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.AI_PWD,RSAAndroid.privateRsaKeyLocal); + val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( + Contans.SP.AI_PWD_ENCODE, + RSAAndroid.publicRsaKeyLocal + ) + AuthenticationLoginAIUtils.authenticationAILoginShowProgress( + this, userName, strPublicDecode + ) { _, token -> + if (token != null && token == "") { + showToast("AI三维平台登录失败") + } else { + getWorkRiskListData() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun getWorkRiskListData() { + val request = NoHttp.createStringRequest( + Contans.BASE_URL_AI_3D_SERVER + Contans.DAYLY_RISK_LIST_NEW, + RequestMethod.GET + ) + + request.add("filter",false); + + if (Contans.BASE_URL_AI_3D_SERVER == Contans.BASE_URL_AI_3D_SERVER_EXTRANET) { + val socketFactory = NohttpUtils.getSSLSocketFactory(context) + if (socketFactory != null) { + request.sslSocketFactory = socketFactory + request.hostnameVerifier = HostnameVerifier { _, _ -> true } + } + } + + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + val bean = GsonUtils.GsonToBean( + result, + WorkRiskLevelListBean::class.java + ) + if (bean != null && bean.data != null) { + val workRiskLevelLists = bean.data + if (workRiskLevelLists != null && workRiskLevelLists.isNotEmpty()) { + binding.tvNodata.visibility = View.GONE + datas.clear() + + if(selectList.isNotEmpty()){ + for (i in workRiskLevelLists.indices) { + for (j in selectList.indices) { + if (workRiskLevelLists[i].id==selectList[j]) { + workRiskLevelLists[i].isChecked = true + workRiskLevelLists[i].jobNo = jobNoList[j] + } + } + } + } + + datas.addAll(workRiskLevelLists) + mAdapter.notifyDataSetChanged() + + + + + for(item in datas){ + showLog(GsonUtils.GsonString(item)) +// if(item.level!=null&&item.level=="A"){ +// dataA.add(item) +// } + } + } else { + binding.tvNodata.visibility = View.VISIBLE + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun resetToday(){ + calendar = Calendar.getInstance() + val startDateStr = sdFormat.format(calendar.time) + showLog("今天:") + showLog(startDateStr) + binding.tvSt.text = startDateStr + } + + private fun authenticationLoginAISubmit() { + try { + //AI三维登录接口 + val userName = Contans.SP.AI_ACCOUNT + //String strPrivateEncode=RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.AI_PWD,RSAAndroid.privateRsaKeyLocal); + val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( + Contans.SP.AI_PWD_ENCODE, + RSAAndroid.publicRsaKeyLocal + ) + AuthenticationLoginAIUtils.authenticationAILoginShowProgress( + this, userName, strPublicDecode + ) { _, token -> + if (token != null && token == "") { + showToast("AI三维平台登录失败") + } else { + submitWorkTicketData() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun getSubmitJsonData(): String { + val param = HashMap() + param["assignmentDate"] = binding.tvSt.text.toString().trim() + param["ticketIdList"] = ticketIdList + param["deleteIdList"]= deleteIdList + param["jobNo"]= App.getInstance().userInfo.manid + param["type"]= "custom" + + val json = GsonUtils.GsonString(param) + showLog(json) + return json + } + + private fun submitWorkTicketData() { + val request = NoHttp.createStringRequest( + Contans.BASE_URL_AI_3D_SERVER + Contans.DAYLY_RISK_LIST_SUBMIT_WORK_TICKET_LIST, + RequestMethod.POST + ) + + val json: String = getSubmitJsonData() + request.setDefineRequestBodyForJson(json) + + if (Contans.BASE_URL_AI_3D_SERVER == Contans.BASE_URL_AI_3D_SERVER_EXTRANET) { + val socketFactory = NohttpUtils.getSSLSocketFactory(context) + if (socketFactory != null) { + request.sslSocketFactory = socketFactory + request.hostnameVerifier = HostnameVerifier { _, _ -> true } + } + } + + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + val bean = GsonUtils.GsonToBean( + result, + AIBaseBean::class.java + ) + if (bean != null && bean.isSuccess) { + //提交成功 + val confirmDialog = ConfirmDialog( + context, "设置工作票作业日期成功" + ) { finish() } + confirmDialog.setTvTitle("提示") + confirmDialog.setCancelable(true) + confirmDialog.show() + }else{ + showToast("设置工作票作业日期失败") + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + +} + +//class WorkTickerCustomListActivity : AppCompatActivity() { +// override fun onCreate(savedInstanceState: Bundle?) { +// super.onCreate(savedInstanceState) +// enableEdgeToEdge() +// setContentView(R.layout.activity_work_ticker_custom_list) +// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> +// val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) +// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) +// insets +// } +// } +//} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkTickerSelectListActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkTickerSelectListActivity.kt index b45d5a3..3631f77 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkTickerSelectListActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WorkTickerSelectListActivity.kt @@ -1,10 +1,8 @@ package com.rehome.zhdcoa.ui.activity -import android.content.DialogInterface -import android.graphics.Color + import android.view.View import android.widget.CheckBox - import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.rehome.zhdcoa.App @@ -34,7 +32,7 @@ import javax.net.ssl.HostnameVerifier /** * Create By HuangWenFei * 创建日期:2025-02-6 15:31 - * 描述:已审批的工作票 + * 描述:已审批的工作票 WorkTickerCustomListActivity */ class WorkTickerSelectListActivity : BaseActivityOaToolbarViewBinding() { @@ -159,7 +157,8 @@ class WorkTickerSelectListActivity : BaseActivityOaToolbarViewBinding + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_work_ticket_custom_list.xml b/app/src/main/res/layout/adapter_work_ticket_custom_list.xml new file mode 100644 index 0000000..976dd5b --- /dev/null +++ b/app/src/main/res/layout/adapter_work_ticket_custom_list.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/header_work_ticket_custom_list.xml b/app/src/main/res/layout/header_work_ticket_custom_list.xml new file mode 100644 index 0000000..c117ff8 --- /dev/null +++ b/app/src/main/res/layout/header_work_ticket_custom_list.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +