diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} 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 44282fc..e415d85 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 @@ -184,6 +184,15 @@ ): String /** + * 获取仪器设备使用记录 + */ + @POST("/meter/assets/queryUseLogList") + suspend fun getEquipmentUsageRecord( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取检定规程列表 */ @POST("/meter/standard/regulation/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} 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 44282fc..e415d85 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 @@ -184,6 +184,15 @@ ): String /** + * 获取仪器设备使用记录 + */ + @POST("/meter/assets/queryUseLogList") + suspend fun getEquipmentUsageRecord( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取检定规程列表 */ @POST("/meter/standard/regulation/listPage") 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 300a8d6..0a95514 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 @@ -386,6 +386,18 @@ } /** + * 获取仪器设备使用记录 + */ + suspend fun getEquipmentUsageRecord(id: String): String { + val paramObject = JSONObject() + paramObject["id"] = id + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEquipmentUsageRecord(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取检定规程列表 */ suspend fun getVerifyProcedureList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} 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 44282fc..e415d85 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 @@ -184,6 +184,15 @@ ): String /** + * 获取仪器设备使用记录 + */ + @POST("/meter/assets/queryUseLogList") + suspend fun getEquipmentUsageRecord( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取检定规程列表 */ @POST("/meter/standard/regulation/listPage") 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 300a8d6..0a95514 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 @@ -386,6 +386,18 @@ } /** + * 获取仪器设备使用记录 + */ + suspend fun getEquipmentUsageRecord(id: String): String { + val paramObject = JSONObject() + paramObject["id"] = id + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEquipmentUsageRecord(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取检定规程列表 */ suspend fun getVerifyProcedureList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt index 2997f22..3613dda 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt @@ -25,7 +25,7 @@ val standardDeviceDetail = MutableLiveData() val supportEquipmentList = MutableLiveData() val stateChangeResult = MutableLiveData() -// val usageResult = MutableLiveData() + val usageRecordResult = MutableLiveData() fun getEquipmentList( equipmentNo: String, @@ -186,4 +186,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEquipmentUsageRecord(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEquipmentUsageRecord(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + usageRecordResult.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/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} 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 44282fc..e415d85 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 @@ -184,6 +184,15 @@ ): String /** + * 获取仪器设备使用记录 + */ + @POST("/meter/assets/queryUseLogList") + suspend fun getEquipmentUsageRecord( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取检定规程列表 */ @POST("/meter/standard/regulation/listPage") 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 300a8d6..0a95514 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 @@ -386,6 +386,18 @@ } /** + * 获取仪器设备使用记录 + */ + suspend fun getEquipmentUsageRecord(id: String): String { + val paramObject = JSONObject() + paramObject["id"] = id + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEquipmentUsageRecord(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取检定规程列表 */ suspend fun getVerifyProcedureList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt index 2997f22..3613dda 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt @@ -25,7 +25,7 @@ val standardDeviceDetail = MutableLiveData() val supportEquipmentList = MutableLiveData() val stateChangeResult = MutableLiveData() -// val usageResult = MutableLiveData() + val usageRecordResult = MutableLiveData() fun getEquipmentList( equipmentNo: String, @@ -186,4 +186,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEquipmentUsageRecord(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEquipmentUsageRecord(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + usageRecordResult.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/fragment_equipment_usage_record.xml b/app/src/main/res/layout/fragment_equipment_usage_record.xml index 3728533..5e133c7 100644 --- a/app/src/main/res/layout/fragment_equipment_usage_record.xml +++ b/app/src/main/res/layout/fragment_equipment_usage_record.xml @@ -1,7 +1,13 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt index 5c98be3..44e055a 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/equipment/UsageRecordFragment.kt @@ -1,9 +1,14 @@ package com.casic.xz.meterage.fragment.equipment import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EquipmentUsageRecordModel import com.casic.xz.meterage.vm.EquipmentViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_equipment_usage_record.* class UsageRecordFragment(private val id: String) : KotlinBaseFragment() { @@ -11,6 +16,44 @@ override fun initData() { equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.getEquipmentUsageRecord(id) + equipmentViewModel.usageRecordResult.observe(this) { + if (it.code == 200) { + val usageRecordAdapter = + object : NormalRecyclerAdapter( + R.layout.item_equipment_usage_record_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: EquipmentUsageRecordModel.DataModel + ) { + val usePerson = if (item.usePersonName.isNullOrBlank()) { + "无" + } else { + item.usePersonName + } + + val useDept = if (item.useDeptName.isNullOrBlank()) { + "未知" + } else { + item.useDeptName + } + + viewHolder.setText( + R.id.nameTagView, usePerson.last().toString() + ).setText(R.id.userNameView, usePerson) + .setText(R.id.equipmentStateView, item.useTypeName) + .setText(R.id.useDeptView, "部门:${useDept}") + .setText(R.id.dateView, "时间:${item.startDate} ~ ${item.endDate}") + } + } + usageRecordRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + usageRecordRecyclerView.adapter = usageRecordAdapter + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java new file mode 100644 index 0000000..24fcebc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EquipmentUsageRecordModel.java @@ -0,0 +1,181 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EquipmentUsageRecordModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String applyId; + private String createTime; + private String createUser; + private String endDate; + private String equipmentId; + private String id; + private String isDel; + private String remark; + private String startDate; + private String updateTime; + private String useDept; + private String useDeptName; + private String usePerson; + private String usePersonName; + private String useType; + private String useTypeName; + + public String getApplyId() { + return applyId; + } + + public void setApplyId(String applyId) { + this.applyId = applyId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(String equipmentId) { + this.equipmentId = equipmentId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUseDept() { + return useDept; + } + + public void setUseDept(String useDept) { + this.useDept = useDept; + } + + public String getUseDeptName() { + return useDeptName; + } + + public void setUseDeptName(String useDeptName) { + this.useDeptName = useDeptName; + } + + public String getUsePerson() { + return usePerson; + } + + public void setUsePerson(String usePerson) { + this.usePerson = usePerson; + } + + public String getUsePersonName() { + return usePersonName; + } + + public void setUsePersonName(String usePersonName) { + this.usePersonName = usePersonName; + } + + public String getUseType() { + return useType; + } + + public void setUseType(String useType) { + this.useType = useType; + } + + public String getUseTypeName() { + return useTypeName; + } + + public void setUseTypeName(String useTypeName) { + this.useTypeName = useTypeName; + } + } +} 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 44282fc..e415d85 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 @@ -184,6 +184,15 @@ ): String /** + * 获取仪器设备使用记录 + */ + @POST("/meter/assets/queryUseLogList") + suspend fun getEquipmentUsageRecord( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取检定规程列表 */ @POST("/meter/standard/regulation/listPage") 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 300a8d6..0a95514 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 @@ -386,6 +386,18 @@ } /** + * 获取仪器设备使用记录 + */ + suspend fun getEquipmentUsageRecord(id: String): String { + val paramObject = JSONObject() + paramObject["id"] = id + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEquipmentUsageRecord(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取检定规程列表 */ suspend fun getVerifyProcedureList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt index 2997f22..3613dda 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt @@ -25,7 +25,7 @@ val standardDeviceDetail = MutableLiveData() val supportEquipmentList = MutableLiveData() val stateChangeResult = MutableLiveData() -// val usageResult = MutableLiveData() + val usageRecordResult = MutableLiveData() fun getEquipmentList( equipmentNo: String, @@ -186,4 +186,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEquipmentUsageRecord(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEquipmentUsageRecord(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + usageRecordResult.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/fragment_equipment_usage_record.xml b/app/src/main/res/layout/fragment_equipment_usage_record.xml index 3728533..5e133c7 100644 --- a/app/src/main/res/layout/fragment_equipment_usage_record.xml +++ b/app/src/main/res/layout/fragment_equipment_usage_record.xml @@ -1,7 +1,13 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_equipment_usage_record_rv_l.xml b/app/src/main/res/layout/item_equipment_usage_record_rv_l.xml new file mode 100644 index 0000000..5051c2e --- /dev/null +++ b/app/src/main/res/layout/item_equipment_usage_record_rv_l.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file