diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 9a2ba70..f28bb00 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -501,6 +501,53 @@ } /** + * 新增样品 + */ + suspend fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ): String { + val paramObject = JSONObject() + paramObject["sampleName"] = sampleName + paramObject["sampleModel"] = model + paramObject["manufacturingNo"] = factoryNumber + paramObject["customerName"] = entrustName + paramObject["phone"] = entrustContact + paramObject["postalCode"] = emailCode + paramObject["customerAddress"] = entrustAddress + paramObject["measurePeriod"] = checkCycle + paramObject["manufacturer"] = manufacturer + paramObject["manufacturerCountry"] = country + paramObject["manufacturingDate"] = factoryDate + paramObject["abc"] = abc + paramObject["deliverer"] = sender + paramObject["delivererTel"] = senderContact + paramObject["measureContent"] = checkProject + paramObject["minioFileName"] = instructions + paramObject["remark"] = remark + + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.writeSample(AuthenticationHelper.token!!, requestBody) + } + + /** * 新增委托书 */ suspend fun addEntrust( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 9a2ba70..f28bb00 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -501,6 +501,53 @@ } /** + * 新增样品 + */ + suspend fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ): String { + val paramObject = JSONObject() + paramObject["sampleName"] = sampleName + paramObject["sampleModel"] = model + paramObject["manufacturingNo"] = factoryNumber + paramObject["customerName"] = entrustName + paramObject["phone"] = entrustContact + paramObject["postalCode"] = emailCode + paramObject["customerAddress"] = entrustAddress + paramObject["measurePeriod"] = checkCycle + paramObject["manufacturer"] = manufacturer + paramObject["manufacturerCountry"] = country + paramObject["manufacturingDate"] = factoryDate + paramObject["abc"] = abc + paramObject["deliverer"] = sender + paramObject["delivererTel"] = senderContact + paramObject["measureContent"] = checkProject + paramObject["minioFileName"] = instructions + paramObject["remark"] = remark + + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.writeSample(AuthenticationHelper.token!!, requestBody) + } + + /** * 新增委托书 */ suspend fun addEntrust( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 9c8d27b..d1815cc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -24,6 +24,7 @@ import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel import com.casic.xz.meterage.vm.FileUploadViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar @@ -32,6 +33,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet @@ -161,7 +163,7 @@ leftBackView.setOnClickListener { finish() } estimateTimeView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { estimateTimeView.text = date } @@ -169,7 +171,7 @@ } completedView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { completedView.text = date } @@ -210,7 +212,7 @@ //写入样品信息 writeSampleButton.setOnClickListener { - + navigatePageTo() } pushEntrustView.setOnClickListener { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 9a2ba70..f28bb00 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -501,6 +501,53 @@ } /** + * 新增样品 + */ + suspend fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ): String { + val paramObject = JSONObject() + paramObject["sampleName"] = sampleName + paramObject["sampleModel"] = model + paramObject["manufacturingNo"] = factoryNumber + paramObject["customerName"] = entrustName + paramObject["phone"] = entrustContact + paramObject["postalCode"] = emailCode + paramObject["customerAddress"] = entrustAddress + paramObject["measurePeriod"] = checkCycle + paramObject["manufacturer"] = manufacturer + paramObject["manufacturerCountry"] = country + paramObject["manufacturingDate"] = factoryDate + paramObject["abc"] = abc + paramObject["deliverer"] = sender + paramObject["delivererTel"] = senderContact + paramObject["measureContent"] = checkProject + paramObject["minioFileName"] = instructions + paramObject["remark"] = remark + + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.writeSample(AuthenticationHelper.token!!, requestBody) + } + + /** * 新增委托书 */ suspend fun addEntrust( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 9c8d27b..d1815cc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -24,6 +24,7 @@ import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel import com.casic.xz.meterage.vm.FileUploadViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar @@ -32,6 +33,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet @@ -161,7 +163,7 @@ leftBackView.setOnClickListener { finish() } estimateTimeView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { estimateTimeView.text = date } @@ -169,7 +171,7 @@ } completedView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { completedView.text = date } @@ -210,7 +212,7 @@ //写入样品信息 writeSampleButton.setOnClickListener { - + navigatePageTo() } pushEntrustView.setOnClickListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt new file mode 100644 index 0000000..bd0d663 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -0,0 +1,188 @@ +package com.casic.xz.meterage.view.home + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.callback.DateSelectedCallback +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.SampleViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_write_sample.* + +class WriteSampleActivity : KotlinBaseActivity() { + + private val items = arrayListOf("A", "B", "C") + private lateinit var sampleViewModel: SampleViewModel + + override fun initData() { + sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] + sampleViewModel.writeResult.observe(this) { + if (it.code == 200) { + finish() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + countryView.setOnClickListener { + + } + + factoryDateView.setOnClickListener { + showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback { + override fun onDateSelected(date: String) { + factoryDateView.text = date + } + }) + } + + abcView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(items) + .setItemTextColor(Color.BLUE) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + abcView.text = items[position] + } + }).build().show() + } + + pushSampleView.setOnClickListener { + val sampleName = sampleNameView.text.toString() + if (sampleName.isBlank()) { + "请输入样品名称".show(this) + return@setOnClickListener + } + + val model = modelView.text.toString() + if (model.isBlank()) { + "请输入样品型号".show(this) + return@setOnClickListener + } + + val factoryNumber = factoryNumberView.text.toString() + if (factoryNumber.isBlank()) { + "请输入出厂编号".show(this) + return@setOnClickListener + } + + val entrustName = entrustNameView.text.toString() + if (entrustName.isBlank()) { + "请输入委托方名称".show(this) + return@setOnClickListener + } + + val entrustContact = entrustContactView.text.toString() + if (entrustContact.isBlank()) { + "请输入委托方电话".show(this) + return@setOnClickListener + } + + val emailCode = emailCodeView.text.toString() + if (emailCode.isBlank()) { + "请输入委托方邮编".show(this) + return@setOnClickListener + } + + val entrustAddress = entrustAddressView.text.toString() + if (entrustAddress.isBlank()) { + "请输入委托方地址".show(this) + return@setOnClickListener + } + + val checkCycle = checkCycleView.text.toString() + if (checkCycle.isBlank()) { + "请输入检定周期".show(this) + return@setOnClickListener + } + + val manufacturer = manufacturerView.text.toString() + if (manufacturer.isBlank()) { + "请输入生产厂家".show(this) + return@setOnClickListener + } + + var country = countryView.text.toString() + if (country.isBlank()) { + country = "中国" + } + + val factoryDate = factoryDateView.text.toString() + if (factoryDate.isBlank()) { + "请选择出厂年月".show(this) + return@setOnClickListener + } + + val abc = abcView.text.toString() + if (abc.isBlank()) { + "请选择ABC".show(this) + return@setOnClickListener + } + + val sender = senderView.text.toString() + if (sender.isBlank()) { + "请输入送检人名字".show(this) + return@setOnClickListener + } + + val senderContact = senderContactView.text.toString() + if (senderContact.isBlank()) { + "请输入联系方式".show(this) + return@setOnClickListener + } + + val checkProject = checkProjectView.text.toString() + if (checkProject.isBlank()) { + "请输入检定项目".show(this) + return@setOnClickListener + } + + sampleViewModel.writeSample( + sampleName, + model, + factoryNumber, + entrustName, + entrustContact, + emailCode, + entrustAddress, + checkCycle, + manufacturer, + country, + factoryDate, + abc, + sender, + senderContact, + checkProject, + instructionsView.text.toString(), + remarkView.text.toString() + ) + } + } + + override fun initLayoutView(): Int = R.layout.activity_write_sample + + override fun observeRequestState() { + sampleViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "样品写入中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 9a2ba70..f28bb00 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -501,6 +501,53 @@ } /** + * 新增样品 + */ + suspend fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ): String { + val paramObject = JSONObject() + paramObject["sampleName"] = sampleName + paramObject["sampleModel"] = model + paramObject["manufacturingNo"] = factoryNumber + paramObject["customerName"] = entrustName + paramObject["phone"] = entrustContact + paramObject["postalCode"] = emailCode + paramObject["customerAddress"] = entrustAddress + paramObject["measurePeriod"] = checkCycle + paramObject["manufacturer"] = manufacturer + paramObject["manufacturerCountry"] = country + paramObject["manufacturingDate"] = factoryDate + paramObject["abc"] = abc + paramObject["deliverer"] = sender + paramObject["delivererTel"] = senderContact + paramObject["measureContent"] = checkProject + paramObject["minioFileName"] = instructions + paramObject["remark"] = remark + + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.writeSample(AuthenticationHelper.token!!, requestBody) + } + + /** * 新增委托书 */ suspend fun addEntrust( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 9c8d27b..d1815cc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -24,6 +24,7 @@ import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel import com.casic.xz.meterage.vm.FileUploadViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar @@ -32,6 +33,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet @@ -161,7 +163,7 @@ leftBackView.setOnClickListener { finish() } estimateTimeView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { estimateTimeView.text = date } @@ -169,7 +171,7 @@ } completedView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { completedView.text = date } @@ -210,7 +212,7 @@ //写入样品信息 writeSampleButton.setOnClickListener { - + navigatePageTo() } pushEntrustView.setOnClickListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt new file mode 100644 index 0000000..bd0d663 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -0,0 +1,188 @@ +package com.casic.xz.meterage.view.home + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.callback.DateSelectedCallback +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.SampleViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_write_sample.* + +class WriteSampleActivity : KotlinBaseActivity() { + + private val items = arrayListOf("A", "B", "C") + private lateinit var sampleViewModel: SampleViewModel + + override fun initData() { + sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] + sampleViewModel.writeResult.observe(this) { + if (it.code == 200) { + finish() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + countryView.setOnClickListener { + + } + + factoryDateView.setOnClickListener { + showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback { + override fun onDateSelected(date: String) { + factoryDateView.text = date + } + }) + } + + abcView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(items) + .setItemTextColor(Color.BLUE) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + abcView.text = items[position] + } + }).build().show() + } + + pushSampleView.setOnClickListener { + val sampleName = sampleNameView.text.toString() + if (sampleName.isBlank()) { + "请输入样品名称".show(this) + return@setOnClickListener + } + + val model = modelView.text.toString() + if (model.isBlank()) { + "请输入样品型号".show(this) + return@setOnClickListener + } + + val factoryNumber = factoryNumberView.text.toString() + if (factoryNumber.isBlank()) { + "请输入出厂编号".show(this) + return@setOnClickListener + } + + val entrustName = entrustNameView.text.toString() + if (entrustName.isBlank()) { + "请输入委托方名称".show(this) + return@setOnClickListener + } + + val entrustContact = entrustContactView.text.toString() + if (entrustContact.isBlank()) { + "请输入委托方电话".show(this) + return@setOnClickListener + } + + val emailCode = emailCodeView.text.toString() + if (emailCode.isBlank()) { + "请输入委托方邮编".show(this) + return@setOnClickListener + } + + val entrustAddress = entrustAddressView.text.toString() + if (entrustAddress.isBlank()) { + "请输入委托方地址".show(this) + return@setOnClickListener + } + + val checkCycle = checkCycleView.text.toString() + if (checkCycle.isBlank()) { + "请输入检定周期".show(this) + return@setOnClickListener + } + + val manufacturer = manufacturerView.text.toString() + if (manufacturer.isBlank()) { + "请输入生产厂家".show(this) + return@setOnClickListener + } + + var country = countryView.text.toString() + if (country.isBlank()) { + country = "中国" + } + + val factoryDate = factoryDateView.text.toString() + if (factoryDate.isBlank()) { + "请选择出厂年月".show(this) + return@setOnClickListener + } + + val abc = abcView.text.toString() + if (abc.isBlank()) { + "请选择ABC".show(this) + return@setOnClickListener + } + + val sender = senderView.text.toString() + if (sender.isBlank()) { + "请输入送检人名字".show(this) + return@setOnClickListener + } + + val senderContact = senderContactView.text.toString() + if (senderContact.isBlank()) { + "请输入联系方式".show(this) + return@setOnClickListener + } + + val checkProject = checkProjectView.text.toString() + if (checkProject.isBlank()) { + "请输入检定项目".show(this) + return@setOnClickListener + } + + sampleViewModel.writeSample( + sampleName, + model, + factoryNumber, + entrustName, + entrustContact, + emailCode, + entrustAddress, + checkCycle, + manufacturer, + country, + factoryDate, + abc, + sender, + senderContact, + checkProject, + instructionsView.text.toString(), + remarkView.text.toString() + ) + } + } + + override fun initLayoutView(): Int = R.layout.activity_write_sample + + override fun observeRequestState() { + sampleViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "样品写入中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt index 182140d..7234d20 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ActionResultModel import com.casic.xz.meterage.model.SampleListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val sampleList = MutableLiveData() + val writeResult = MutableLiveData() fun getSampleList( customerName: String, @@ -62,4 +64,58 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.writeSample( + sampleName, + model, + factoryNumber, + entrustName, + entrustContact, + emailCode, + entrustAddress, + checkCycle, + manufacturer, + country, + factoryDate, + abc, + sender, + senderContact, + checkProject, + instructions, + remark + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + writeResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0fba91b..899fc1c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt index e112d1c..a932a03 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Activity.kt @@ -9,7 +9,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.sp2px -fun Activity.showDatePicker(callback: DateSelectedCallback) { +fun Activity.showDatePicker(start: DateEntity, callback: DateSelectedCallback) { val datePicker = DatePicker(this) val layout = datePicker.wheelLayout @@ -21,7 +21,7 @@ layout.setSelectedTextBold(true) layout.setResetWhenLinkage(false) layout.setRange( - DateEntity.today(), + start, DateEntity.target(2050, 12, 31), DateEntity.today() ) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 8f4fe44..90d2aa3 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -233,6 +233,15 @@ ): String /** + * 新增样品 + */ + @POST("/customer/sample/add") + suspend fun writeSample( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 新增委托书 */ @POST("/business/order/add") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 9a2ba70..f28bb00 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -501,6 +501,53 @@ } /** + * 新增样品 + */ + suspend fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ): String { + val paramObject = JSONObject() + paramObject["sampleName"] = sampleName + paramObject["sampleModel"] = model + paramObject["manufacturingNo"] = factoryNumber + paramObject["customerName"] = entrustName + paramObject["phone"] = entrustContact + paramObject["postalCode"] = emailCode + paramObject["customerAddress"] = entrustAddress + paramObject["measurePeriod"] = checkCycle + paramObject["manufacturer"] = manufacturer + paramObject["manufacturerCountry"] = country + paramObject["manufacturingDate"] = factoryDate + paramObject["abc"] = abc + paramObject["deliverer"] = sender + paramObject["delivererTel"] = senderContact + paramObject["measureContent"] = checkProject + paramObject["minioFileName"] = instructions + paramObject["remark"] = remark + + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.writeSample(AuthenticationHelper.token!!, requestBody) + } + + /** * 新增委托书 */ suspend fun addEntrust( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 9c8d27b..d1815cc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -24,6 +24,7 @@ import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel import com.casic.xz.meterage.vm.FileUploadViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar @@ -32,6 +33,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet @@ -161,7 +163,7 @@ leftBackView.setOnClickListener { finish() } estimateTimeView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { estimateTimeView.text = date } @@ -169,7 +171,7 @@ } completedView.setOnClickListener { - showDatePicker(object : DateSelectedCallback { + showDatePicker(DateEntity.today(), object : DateSelectedCallback { override fun onDateSelected(date: String) { completedView.text = date } @@ -210,7 +212,7 @@ //写入样品信息 writeSampleButton.setOnClickListener { - + navigatePageTo() } pushEntrustView.setOnClickListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt new file mode 100644 index 0000000..bd0d663 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -0,0 +1,188 @@ +package com.casic.xz.meterage.view.home + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.callback.DateSelectedCallback +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.SampleViewModel +import com.github.gzuliyujiang.wheelpicker.entity.DateEntity +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_write_sample.* + +class WriteSampleActivity : KotlinBaseActivity() { + + private val items = arrayListOf("A", "B", "C") + private lateinit var sampleViewModel: SampleViewModel + + override fun initData() { + sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] + sampleViewModel.writeResult.observe(this) { + if (it.code == 200) { + finish() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + countryView.setOnClickListener { + + } + + factoryDateView.setOnClickListener { + showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback { + override fun onDateSelected(date: String) { + factoryDateView.text = date + } + }) + } + + abcView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(items) + .setItemTextColor(Color.BLUE) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + abcView.text = items[position] + } + }).build().show() + } + + pushSampleView.setOnClickListener { + val sampleName = sampleNameView.text.toString() + if (sampleName.isBlank()) { + "请输入样品名称".show(this) + return@setOnClickListener + } + + val model = modelView.text.toString() + if (model.isBlank()) { + "请输入样品型号".show(this) + return@setOnClickListener + } + + val factoryNumber = factoryNumberView.text.toString() + if (factoryNumber.isBlank()) { + "请输入出厂编号".show(this) + return@setOnClickListener + } + + val entrustName = entrustNameView.text.toString() + if (entrustName.isBlank()) { + "请输入委托方名称".show(this) + return@setOnClickListener + } + + val entrustContact = entrustContactView.text.toString() + if (entrustContact.isBlank()) { + "请输入委托方电话".show(this) + return@setOnClickListener + } + + val emailCode = emailCodeView.text.toString() + if (emailCode.isBlank()) { + "请输入委托方邮编".show(this) + return@setOnClickListener + } + + val entrustAddress = entrustAddressView.text.toString() + if (entrustAddress.isBlank()) { + "请输入委托方地址".show(this) + return@setOnClickListener + } + + val checkCycle = checkCycleView.text.toString() + if (checkCycle.isBlank()) { + "请输入检定周期".show(this) + return@setOnClickListener + } + + val manufacturer = manufacturerView.text.toString() + if (manufacturer.isBlank()) { + "请输入生产厂家".show(this) + return@setOnClickListener + } + + var country = countryView.text.toString() + if (country.isBlank()) { + country = "中国" + } + + val factoryDate = factoryDateView.text.toString() + if (factoryDate.isBlank()) { + "请选择出厂年月".show(this) + return@setOnClickListener + } + + val abc = abcView.text.toString() + if (abc.isBlank()) { + "请选择ABC".show(this) + return@setOnClickListener + } + + val sender = senderView.text.toString() + if (sender.isBlank()) { + "请输入送检人名字".show(this) + return@setOnClickListener + } + + val senderContact = senderContactView.text.toString() + if (senderContact.isBlank()) { + "请输入联系方式".show(this) + return@setOnClickListener + } + + val checkProject = checkProjectView.text.toString() + if (checkProject.isBlank()) { + "请输入检定项目".show(this) + return@setOnClickListener + } + + sampleViewModel.writeSample( + sampleName, + model, + factoryNumber, + entrustName, + entrustContact, + emailCode, + entrustAddress, + checkCycle, + manufacturer, + country, + factoryDate, + abc, + sender, + senderContact, + checkProject, + instructionsView.text.toString(), + remarkView.text.toString() + ) + } + } + + override fun initLayoutView(): Int = R.layout.activity_write_sample + + override fun observeRequestState() { + sampleViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "样品写入中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt index 182140d..7234d20 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/SampleViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ActionResultModel import com.casic.xz.meterage.model.SampleListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val sampleList = MutableLiveData() + val writeResult = MutableLiveData() fun getSampleList( customerName: String, @@ -62,4 +64,58 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun writeSample( + sampleName: String, + model: String, + factoryNumber: String, + entrustName: String, + entrustContact: String, + emailCode: String, + entrustAddress: String, + checkCycle: String, + manufacturer: String, + country: String, + factoryDate: String, + abc: String, + sender: String, + senderContact: String, + checkProject: String, + instructions: String, + remark: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.writeSample( + sampleName, + model, + factoryNumber, + entrustName, + entrustContact, + emailCode, + entrustAddress, + checkCycle, + manufacturer, + country, + factoryDate, + abc, + sender, + senderContact, + checkProject, + instructions, + remark + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + writeResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_write_sample.xml b/app/src/main/res/layout/activity_write_sample.xml new file mode 100644 index 0000000..8e20acb --- /dev/null +++ b/app/src/main/res/layout/activity_write_sample.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +