中建365-二期开发-商城开发/AI糖医/血脂

develop
wlh 2 years ago
parent 1faf1b65e5
commit eda1955a7e

@ -163,6 +163,10 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity android:name=".activity.shop.CreateGoodsOrderAct"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.zj365.health.act.BindFamilyAct" android:name="com.zj365.health.act.BindFamilyAct"

@ -422,7 +422,7 @@ class MainActivity : BaseVmAct<MainVm>(), Consumer<AbstractMeasureData> {
private fun addNv() { private fun addNv() {
val menuView = binding.mBottom.getChildAt(0) as BottomNavigationMenuView val menuView = binding.mBottom.getChildAt(0) as BottomNavigationMenuView
//这里就是获取所添加的每一个Tab(或者叫menu) //这里就是获取所添加的每一个Tab(或者叫menu)
val tab = menuView.getChildAt(2) as BottomNavigationItemView val tab = menuView.getChildAt(3) as BottomNavigationItemView
//加载我们的角标View新创建的一个布局 //加载我们的角标View新创建的一个布局
badegView = LayoutInflater.from(this).inflate(R.layout.item_msg_count, tab, true) badegView = LayoutInflater.from(this).inflate(R.layout.item_msg_count, tab, true)

@ -1,18 +1,43 @@
package com.zj365.dc.activity.shop package com.zj365.dc.activity.shop
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.alibaba.android.arouter.facade.annotation.Route
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.xty.base.act.BaseVmAct import com.xty.base.act.BaseVmAct
import com.xty.base.model.CreateOrderBean
import com.xty.base.utils.PayUtils
import com.xty.base.vm.BaseVm import com.xty.base.vm.BaseVm
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager import com.xty.common.arouter.RouteManager
import com.xty.common.setImage
import com.xty.common.util.SpannableUtils
import com.xty.network.model.ShopGoodsOrderBean
import com.zj365.dc.BuildConfig import com.zj365.dc.BuildConfig
import com.zj365.dc.databinding.ActCreateGoodsOrderBinding import com.zj365.dc.databinding.ActCreateGoodsOrderBinding
import com.zj365.dc.vm.ShopMallVm import com.zj365.dc.vm.ShopMallVm
import com.zj365.health.R
@Route(path = ARouterUrl.CREATE_SHOP_ORDER_ACT)
class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() { class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
val binding by lazy { ActCreateGoodsOrderBinding.inflate(layoutInflater) } val binding by lazy { ActCreateGoodsOrderBinding.inflate(layoutInflater) }
var bean:CreateOrderBean?= null
var couponsId:Long? = null
var addrId:Long? = null
var bottomSheetDialog: BottomSheetDialog? = null
override fun liveObserver() { override fun liveObserver() {
mViewModel.createOrderLiveData.observe(this){
PayUtils(this).payForGoods(it.data.pay_price.toFloat(),it.data.order_no)
}
} }
override fun initView() { override fun initView() {
@ -23,12 +48,36 @@ class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
finish() finish()
} }
bean = intent.getParcelableExtra("bean")
onClickedListener() onClickedListener()
bean?.let {
refreshUI(it)
}
}
fun refreshUI(bean: CreateOrderBean){
binding.imgGoods.setImage(this,bean.pic)
binding.tvGoodsName.text = bean.prod_name
binding.tvSpec.text = bean.skuName
binding.tvNum.text = "数量:${bean.skuNum}"
binding.tvPrice.text = "商品原价:¥ ${bean.ori_price}"
binding.tvTotalPrice.text ="¥ ${bean.skuPrice * bean.skuNum}"
binding.tvPlatformDiscounts.text = "${(bean.ori_price * bean.skuNum) - (bean.skuPrice * bean.skuNum)}"
if (bean.delivery_mode == 0){ //0,无需发货1需要发货
binding.rxAddress.visibility = View.GONE
}else{
binding.rxAddress.visibility = View.VISIBLE
}
} }
fun onClickedListener(){ fun onClickedListener(){
binding.tvPay.setOnClickListener { binding.tvPay.setOnClickListener {
bean?.let {
mViewModel.createOrder(it.skuId.toString(),it.skuNum,addrId,couponsId)
}
} }
binding.tvChooseAddress.setOnClickListener { binding.tvChooseAddress.setOnClickListener {
@ -53,4 +102,5 @@ class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
override fun setLayout()=binding.root override fun setLayout()=binding.root
} }

@ -227,7 +227,8 @@ class DynamicManagementFrag : BaseVmFrag<DynamicManagementVm>() , EasyPermission
} }
"bloodFat" -> { // //心电隐藏的前提下血脂为9 否则为10 "bloodFat" -> { // //心电隐藏的前提下血脂为9 否则为10
CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~") goPage(index - 1,functionType)
// CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~")
} }
"ecg" ->{ //心电 暂时隐藏 "ecg" ->{ //心电 暂时隐藏
CommonToastUtils.showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~") CommonToastUtils.showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~")

@ -363,6 +363,17 @@ HealthHomeFrag : BaseVmFrag<HomeVm>() {
// CommonToastUtils.showToast("敬请期待") // CommonToastUtils.showToast("敬请期待")
} }
"AI_SUGAR_MEDICINE" ->{
bundle.clear()
bundle.putInt("type",1)
RouteManager.goAct(ARouterUrl.AI_SKIN_MEASUREMENT_ACTIVITY,bundle)
}
"AI_SKIN" ->{
}
else ->{ else ->{
CommonToastUtils.showToast("敬请期待") CommonToastUtils.showToast("敬请期待")
} }

@ -626,17 +626,69 @@ class DynamicManagementVm : BaseVm() {
) )
) )
}else if(DeviceFunctionUtils.hasFunction(it,"bloodFat")){ //血脂 }else if(DeviceFunctionUtils.hasFunction(it,"bloodFat")){ //血脂
//血脂
var statusXZ = 0
var contentXZ = ""
var mTimeXZ = ""
when (bloodFatData.status) {
//0 未开通 1建模中 2建模完成
0 -> {
if (TextUtils.isEmpty(bloodFatData.expireTime)) {
contentXZ = "未开通"
mTimeXZ = "免费体验100天"
statusXZ = 3
} else {
contentXZ = "续费"
mTimeXZ = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
statusXZ = 0
}
}
1 -> {
statusXZ = 1
contentXZ = "建模中"
mTimeXZ = if (bloodFatData.time.isNullOrEmpty()) {
"${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
} else if (bloodFatData.time.contains("-")) {
bloodFatData.time
} else {
// "${
// RxTimeTool.simpleDateFormat(
// "yyyy-MM-dd HH",
// RxTimeTool.string2Date(
// "yyyy-MM-dd HH:mm:ss",
// bloodFatData.time
// )
// )
// }:00"
milliseconds2String(bloodFatData.time)
}
}
2 -> {
statusXZ =
if (bloodFatData.value == "0" || TextUtils.isEmpty(bloodFatData.value)) {
0
} else if (bloodFatData.message.contains("正常")) {
1
} else {
2
}
contentXZ =
if (!TextUtils.isEmpty(bloodFatData.value)) bloodFatData.value else "--"
mTimeXZ = milliseconds2String(bloodFatData.time)
}
}
healthMonitoringList.add( healthMonitoringList.add(
HealthMonitoringListBean( HealthMonitoringListBean(
"血脂", "血脂",
0, statusXZ,
"", mTimeXZ,
"敬请期待", contentXZ,
R.mipmap.bg_fat, R.mipmap.bg_fat,
R.mipmap.ic_fat, R.mipmap.ic_fat,
10, 10,
it.type, it.type
calorie = bean.healthCount.toString()
) )
) )
} }

@ -6,6 +6,7 @@ import com.xty.base.vm.BaseVm
import com.xty.network.model.GoodsRecordsBean import com.xty.network.model.GoodsRecordsBean
import com.xty.network.model.RespBody import com.xty.network.model.RespBody
import com.xty.network.model.ShopCategoryBean import com.xty.network.model.ShopCategoryBean
import com.xty.network.model.ShopGoodsOrderBean
class ShopMallVm : BaseVm() { class ShopMallVm : BaseVm() {
@ -13,7 +14,7 @@ class ShopMallVm : BaseVm() {
val goodsLiveData by lazy { MutableLiveData<RespBody<GoodsRecordsBean>>() } val goodsLiveData by lazy { MutableLiveData<RespBody<GoodsRecordsBean>>() }
val createOrderLiveData by lazy { MutableLiveData<RespBody<Any>>() } val createOrderLiveData by lazy { MutableLiveData<RespBody<ShopGoodsOrderBean>>() }
fun getGoodsCategory(parentId:Long){ fun getGoodsCategory(parentId:Long){
startHttp { startHttp {
@ -37,14 +38,19 @@ class ShopMallVm : BaseVm() {
} }
} }
fun createOrder(skuId:String,num:Int,addrId:String,couponsId:String){ fun createOrder(skuId:String,num:Int,addrId:Long?,couponsId:Long?){
startHttp { startHttp {
var json = JSONObject() var json = JSONObject()
json.put("skuId",skuId) json.put("skuId",skuId)
json.put("num",num) json.put("num",num)
json.put("addrId",addrId) addrId?.let {
json.put("couponsId",couponsId) json.put("addrId",it)
}
couponsId?.let {
json.put("couponsId",it)
}
var code = apiInterface().createOrder(retrofits.getRequestBody(json.toString())) var code = apiInterface().createOrder(retrofits.getRequestBody(json.toString()))
code.getCodeStatus(createOrderLiveData, nowData) code.getCodeStatus(createOrderLiveData, nowData)
} }

@ -129,7 +129,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_150" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:layout_below="@+id/rx_goods" android:layout_below="@+id/rx_goods"
android:layout_marginLeft="@dimen/dp_14" android:layout_marginLeft="@dimen/dp_14"
@ -178,7 +178,8 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_26"> android:layout_marginTop="@dimen/dp_26"
android:layout_marginBottom="@dimen/dp_25">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

@ -6,6 +6,7 @@ import android.webkit.JavascriptInterface
import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.GsonUtils
import com.google.gson.Gson import com.google.gson.Gson
import com.xty.base.act.BaseVmAct import com.xty.base.act.BaseVmAct
import com.xty.base.model.CreateOrderBean
import com.xty.base.model.ScienceDetailBean import com.xty.base.model.ScienceDetailBean
import com.xty.base.model.WatchReChangeBean import com.xty.base.model.WatchReChangeBean
import com.xty.base.utils.PayUtils import com.xty.base.utils.PayUtils
@ -86,7 +87,10 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
@JavascriptInterface @JavascriptInterface
fun createOrder(str: String?){ fun createOrder(str: String?){
str?.let { str?.let {
var orderBean = GsonUtils.fromJson(it, CreateOrderBean::class.java)
var bundle = Bundle()
bundle.putParcelable("bean",orderBean)
RouteManager.goAct(ARouterUrl.CREATE_SHOP_ORDER_ACT,bundle)
} }
} }

@ -0,0 +1,23 @@
package com.xty.base.model
import android.os.Parcel
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class CreateOrderBean (
var id:Long,
var prod_name:String,
var pic:String,
var is_agree:Int,
var delivery_mode:Int,
var ori_price:Double,
var price:Double,
var sold_num:Int,
var content:String,
var skuId:Long,
var skuPrice:Double,
var skuName:String,
var skuNum:Int
): Parcelable {
}

@ -197,8 +197,7 @@ object OrganStatusCalcUtil {
fun tcStatuText(statu: Float): String {//tc总胆固醇 fun tcStatuText(statu: Float): String {//tc总胆固醇
return if (statu > 2.82f && statu < 5.21f) {//2.83-5.20
return if (statu <= 5.20) {
"正常" "正常"
} else { } else {
"异常" "异常"
@ -206,7 +205,7 @@ object OrganStatusCalcUtil {
} }
fun tcStatus(status: Float):Int{ //tc 0是正常 1是异常 fun tcStatus(status: Float):Int{ //tc 0是正常 1是异常
return if (status <= 5.20) { return if (status > 2.82f && status < 5.21f) {//2.83-5.20
0 0
} else { } else {
1 1
@ -214,8 +213,7 @@ object OrganStatusCalcUtil {
} }
fun tgStatuText(statu: Float): String {//tg甘油三酯 fun tgStatuText(statu: Float): String {//tg甘油三酯
return if (statu > 0.44f && statu < 1.70f) {//0.45-1.69
return if (statu <= 1.69) {
"正常" "正常"
} else { } else {
"异常" "异常"
@ -223,15 +221,14 @@ object OrganStatusCalcUtil {
} }
fun tgStatus(status:Float):Int{ //tg 0是正常 1是异常 fun tgStatus(status:Float):Int{ //tg 0是正常 1是异常
return if (status <= 1.69) { return if (status > 0.44f && status < 1.70f) {//0.45-1.69
0 0
} else { } else {
1 1
} }
} }
fun hdlStatuText(statu: Float): String {//hdl高密度脂蛋白 fun hdlStatuText(statu: Float): String {//hdl高密度脂蛋白
return if(statu > 0.92f && statu < 1.94f) {//0.93-1.93
return if (statu >= 0.93) {
"正常" "正常"
} else { } else {
"异常" "异常"
@ -239,7 +236,7 @@ object OrganStatusCalcUtil {
} }
fun hdlStatus(status:Float) :Int{ // hdl 0是正常 1是异常 fun hdlStatus(status:Float) :Int{ // hdl 0是正常 1是异常
return if (status >= 0.93) { return if (status > 0.92f && status < 1.94f) {//0.93-1.93
0 0
} else { } else {
1 1
@ -247,8 +244,7 @@ object OrganStatusCalcUtil {
} }
fun ldlStatuText(statu: Float): String {//ldl低密度脂蛋白 fun ldlStatuText(statu: Float): String {//ldl低密度脂蛋白
return if (statu > -1f && statu < 3.13f) {//0.0-3.12
return if (statu <= 3.12) {
"正常" "正常"
} else { } else {
"异常" "异常"
@ -256,7 +252,7 @@ object OrganStatusCalcUtil {
} }
fun ldlStatus(status:Float): Int{ // ldl 0是正常 1是异常 fun ldlStatus(status:Float): Int{ // ldl 0是正常 1是异常
return if (status <= 3.12) { return if (status > -1f && status < 3.13f) {//0.0-3.12
0 0
} else { } else {
1 1

@ -41,7 +41,71 @@ open class PayUtils(var context: Context) {
var price:Float? = null var price:Float? = null
var isPayGoods:Boolean = false
open fun reChangeWatch(xPrice:Float,orderNo:String){ open fun reChangeWatch(xPrice:Float,orderNo:String){
isPayGoods = false
bottomSheetDialog = BottomSheetDialog(context, R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(context).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice)
tvprice.text = SpannableUtils.setSpanMoney(xPrice)
val ivClose = view.findViewById<ImageView>(R.id.close_button)
ivClose.setOnClickListener {
dialog.dismiss()
}
val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao)
val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin)
tvWeixin.isSelected = true
val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
llZhifu.setOnClickListener {
tvZhifubao.isSelected = true
tvDuihuanma.isSelected = false
tvWeixin.isSelected = false
tvZhifu.text = "确认支付"
}
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true
tvZhifu.text = "确认支付"
}
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan)
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
tvZhifu.setOnClickListener {
//支付
if (tvZhifubao.isSelected) {
//支付宝
mViewModel.payWatch(orderNo, "ALIPAY_APP")
} else if (tvWeixin.isSelected) {
//微信
mViewModel.payWatch(orderNo, "WEIXIN_APP")
} else {
}
liveObserver()
}
}
bottomSheetDialog?.show()
}
open fun payForGoods(xPrice:Float,orderNo:String){
isPayGoods = true
bottomSheetDialog = BottomSheetDialog(context, R.style.Theme_ChartDialogManager) bottomSheetDialog = BottomSheetDialog(context, R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog -> bottomSheetDialog?.let { dialog ->
val view = LayoutInflater.from(context).inflate(R.layout.dialog_pay, null) val view = LayoutInflater.from(context).inflate(R.layout.dialog_pay, null)
@ -186,21 +250,32 @@ open class PayUtils(var context: Context) {
bundle.putString("orderType", "1") bundle.putString("orderType", "1")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/ RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
Toast.makeText( if(isPayGoods){
context,
"支付成功", }else{
Toast.LENGTH_SHORT Toast.makeText(
) context,
.show() "支付成功",
Toast.LENGTH_SHORT
)
.show()
EventBus.getDefault().post(ReChangeEvent())
}
EventBus.getDefault().post(ReChangeEvent())
} else { } else {
Toast.makeText( if(isPayGoods){
context,
"支付失败,请联系客服", }else{
Toast.LENGTH_SHORT Toast.makeText(
) context,
.show() "支付失败,请联系客服",
Toast.LENGTH_SHORT
)
.show()
}
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。 // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert( // com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
@ -218,13 +293,18 @@ open class PayUtils(var context: Context) {
bundle.putString("orderNo", orderNo) bundle.putString("orderNo", orderNo)
bundle.putString("orderType", "1") bundle.putString("orderType", "1")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/ RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
EventBus.getDefault().post(ReChangeEvent()) if(isPayGoods){
Toast.makeText(
context, }else{
"支付成功", EventBus.getDefault().post(ReChangeEvent())
Toast.LENGTH_SHORT Toast.makeText(
) context,
.show() "支付成功",
Toast.LENGTH_SHORT
)
.show()
}
} }
BaseResp.ErrCode.ERR_USER_CANCEL -> { BaseResp.ErrCode.ERR_USER_CANCEL -> {
@ -232,11 +312,16 @@ open class PayUtils(var context: Context) {
} }
else -> { else -> {
Toast.makeText( if(isPayGoods){
context,
"支付失败,请联系客服", }else{
Toast.LENGTH_SHORT Toast.makeText(
).show() context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
).show()
}
} }
} }
} }

@ -26,6 +26,7 @@ class ARouterUrl {
const val SHOP_CATEGORY = "/com/zj365/dc/activity/shop/ShopCategoryActivity" const val SHOP_CATEGORY = "/com/zj365/dc/activity/shop/ShopCategoryActivity"
const val SHOP_ORDER_LIST_ACT = "/health/com/zj365/health/act/ShopOrderListAct" const val SHOP_ORDER_LIST_ACT = "/health/com/zj365/health/act/ShopOrderListAct"
const val SHOP_ORDER_DETAIL_ACT = "/health/com/zj365/health/act/ShopOrderDetailAct" const val SHOP_ORDER_DETAIL_ACT = "/health/com/zj365/health/act/ShopOrderDetailAct"
const val CREATE_SHOP_ORDER_ACT = "/com/zj365/dc/activity/shop/CreateGoodsOrderAct"
// const val FAMILY_INFO="/com/zj365/dc/act/FamilyMainAct" // const val FAMILY_INFO="/com/zj365/dc/act/FamilyMainAct"

@ -1,18 +1,19 @@
package com.zj365.health.act package com.zj365.health.act
import android.annotation.SuppressLint
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.EditText import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import androidx.core.view.get import androidx.core.view.get
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.hjq.toast.ToastUtils
import com.tamsiree.rxkit.RxKeyboardTool import com.tamsiree.rxkit.RxKeyboardTool
import com.xty.base.act.BaseVmAct import com.xty.base.act.BaseVmAct
import com.xty.common.TimeSelect import com.xty.common.TimeSelect
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager import com.xty.common.arouter.RouteManager
import com.xty.common.util.ChineseNumberAndNumberUtils import com.xty.common.util.ChineseNumberAndNumberUtils
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.PointLengthFilter import com.xty.common.util.PointLengthFilter
import com.zj365.health.R import com.zj365.health.R
import com.zj365.health.databinding.ActBloodLipidAdjustBinding import com.zj365.health.databinding.ActBloodLipidAdjustBinding
@ -20,6 +21,7 @@ import com.zj365.health.model.BloodLipidAdjustBean
import com.zj365.health.vm.BloodLipidAdjustVm import com.zj365.health.vm.BloodLipidAdjustVm
import com.zj365.health.weight.HealthDialog import com.zj365.health.weight.HealthDialog
/** /**
* 血脂校准 * 血脂校准
*/ */
@ -28,7 +30,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
val binding by lazy { ActBloodLipidAdjustBinding.inflate(layoutInflater) } val binding by lazy { ActBloodLipidAdjustBinding.inflate(layoutInflater) }
override fun setLayout() = binding.root override fun setLayout() = binding.root
private val MAX_LENGTH=10
val timSelect by lazy { val timSelect by lazy {
TimeSelect(this) { TimeSelect(this) {
}.apply { }.apply {
@ -40,7 +42,8 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
private val submitDialog by lazy { private val submitDialog by lazy {
HealthDialog(this, false, "请确保输入数据的准确性,确认是否提交?", true) { HealthDialog(this, false, "请确保输入数据的准确性,确认是否提交?", true) {
val bloods: MutableList<BloodLipidAdjustBean> = getBloodLipidAdjustData() ?: return@HealthDialog val bloods: MutableList<BloodLipidAdjustBean> =
getBloodLipidAdjustData() ?: return@HealthDialog
mViewModel.submitBloodLipidAdjustData(bloods) mViewModel.submitBloodLipidAdjustData(bloods)
} }
} }
@ -51,6 +54,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
finish() finish()
} }
} }
override fun liveObserver() { override fun liveObserver() {
mViewModel.calibrationLive.observe(this) { mViewModel.calibrationLive.observe(this) {
successDialog.setCancelable(false) successDialog.setCancelable(false)
@ -66,7 +70,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.title.mTvTitle.text ="血脂校准" binding.title.mTvTitle.text = "血脂校准"
statusBar(binding.title.mView) statusBar(binding.title.mView)
binding.title.mIvBack.setOnClickListener { finish() } binding.title.mIvBack.setOnClickListener { finish() }
@ -83,15 +87,32 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
addChildViews() addChildViews()
} }
//血脂校准须知
binding.mTip.setOnClickListener {
val webUrl = "https://mp.weixin.qq.com/s?__biz=Mzg4MDEyMDA3Mw==&mid=22474949" +
"13&idx=1&sn=ff21da0895b646004a7281fce0881d61&chksm=cf78b567f80f3c" +
"710cd94ac3f9a5606bdc13af60e4b3ee5143e59faf5f766bcc3dbebf946409#rd"
bundle.clear()
bundle.putString("title", "血脂校准须知")
bundle.putString("url", webUrl)
RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
}
} }
private fun addChildViews(){ @SuppressLint("SetTextI18n")
val childView = LayoutInflater.from(this).inflate(R.layout.item_blood_lipid_adjust,null) private fun addChildViews() {
val viewIndex = binding.childLayout.childCount val viewIndex = binding.childLayout.childCount
val viewNum = viewIndex + 1 val viewNum = viewIndex + 1
childView.findViewById<TextView>(R.id.mTitle).text = "${ChineseNumberAndNumberUtils.intToChinese(viewNum)}" if (viewNum>MAX_LENGTH){
CommonToastUtils.showToast("血脂校准最多添加"+MAX_LENGTH+"")
return
}
val childView = LayoutInflater.from(this).inflate(R.layout.item_blood_lipid_adjust, null)
childView.findViewById<TextView>(R.id.mTitle).text =
"${ChineseNumberAndNumberUtils.intToChinese(viewNum)}"
childView.findViewById<EditText>(R.id.mEditLDL).filters = arrayOf(PointLengthFilter(2)) childView.findViewById<EditText>(R.id.mEditLDL).filters = arrayOf(PointLengthFilter(2))
childView.findViewById<EditText>(R.id.mEditCholesterol).filters = arrayOf(PointLengthFilter(2)) childView.findViewById<EditText>(R.id.mEditCholesterol).filters =
arrayOf(PointLengthFilter(2))
childView.findViewById<EditText>(R.id.mEditTg).filters = arrayOf(PointLengthFilter(2)) childView.findViewById<EditText>(R.id.mEditTg).filters = arrayOf(PointLengthFilter(2))
childView.findViewById<EditText>(R.id.mEditHDL).filters = arrayOf(PointLengthFilter(2)) childView.findViewById<EditText>(R.id.mEditHDL).filters = arrayOf(PointLengthFilter(2))
@ -112,42 +133,90 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
else binding.childLayout[index].findViewById(childId) else binding.childLayout[index].findViewById(childId)
} }
private fun getBloodLipidAdjustData(): MutableList<BloodLipidAdjustBean>?{ private fun getBloodLipidAdjustData(): MutableList<BloodLipidAdjustBean>? {
val list:MutableList<BloodLipidAdjustBean> = mutableListOf() val list = mutableListOf<BloodLipidAdjustBean>()
for(i in 0 until binding.childLayout.childCount){ for (i in 0 until binding.childLayout.childCount) {
val bloodLipidAdjustBean = BloodLipidAdjustBean() val bloodLipidAdjustBean = BloodLipidAdjustBean()
bloodLipidAdjustBean.bpTime = (getChildView(i,R.id.mVTimeView) as TextView).text.toString() bloodLipidAdjustBean.bpTime = (getChildView(
bloodLipidAdjustBean.tc = (getChildView(i,R.id.mEditCholesterol) as TextView).text.toString() i,
bloodLipidAdjustBean.tg = (getChildView(i,R.id.mEditTg) as TextView).text.toString() R.id.mVTimeView
bloodLipidAdjustBean.hdl = (getChildView(i,R.id.mEditHDL) as TextView).text.toString() ) as TextView).text.toString()
bloodLipidAdjustBean.ldl = (getChildView(i,R.id.mEditLDL) as TextView).text.toString() bloodLipidAdjustBean.tc = (getChildView(
i,
if (bloodLipidAdjustBean.bpTime.isNullOrEmpty()){ R.id.mEditCholesterol
ToastUtils.show("请选择测量时间") ) as TextView).text.toString()
return null bloodLipidAdjustBean.tg = (getChildView(
} i,
R.id.mEditTg
if(bloodLipidAdjustBean.tc.isNullOrEmpty()){ ) as TextView).text.toString()
ToastUtils.show("请填写总胆固醇数值") bloodLipidAdjustBean.hdl = (getChildView(
return null i,
R.id.mEditHDL
) as TextView).text.toString()
bloodLipidAdjustBean.ldl = (getChildView(
i,
R.id.mEditLDL
) as TextView).text.toString()
if (list.size < 1) {
if (bloodLipidAdjustBean.bpTime.isNullOrEmpty()) {
CommonToastUtils.showToast("请选择测量时间")
return null
}
if (bloodLipidAdjustBean.tc.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写总胆固醇数值")
return null
}
if (bloodLipidAdjustBean.tg.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写甘油三酯数值")
return null
}
if (bloodLipidAdjustBean.hdl.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写高密度脂蛋白数值")
return null
}
if (bloodLipidAdjustBean.ldl.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写低密度脂蛋白数值")
return null
}
} else {
if (bloodLipidAdjustBean.bpTime.isNullOrEmpty()
&& bloodLipidAdjustBean.tc.isNullOrEmpty()
&& bloodLipidAdjustBean.tg.isNullOrEmpty()
&& bloodLipidAdjustBean.hdl.isNullOrEmpty()
&& bloodLipidAdjustBean.ldl.isNullOrEmpty()
) {
continue
} else {
if (bloodLipidAdjustBean.bpTime.isNullOrEmpty()) {
CommonToastUtils.showToast("请选择测量时间")
return null
}
if (bloodLipidAdjustBean.tc.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写总胆固醇数值")
return null
}
if (bloodLipidAdjustBean.tg.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写甘油三酯数值")
return null
}
if (bloodLipidAdjustBean.hdl.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写高密度脂蛋白数值")
return null
}
if (bloodLipidAdjustBean.ldl.isNullOrEmpty()) {
CommonToastUtils.showToast("请填写低密度脂蛋白数值")
return null
}
}
} }
if(bloodLipidAdjustBean.tg.isNullOrEmpty()){
ToastUtils.show("请填写甘油三酯数值")
return null
}
if(bloodLipidAdjustBean.hdl.isNullOrEmpty()){
ToastUtils.show("请填写高密度脂蛋白数值")
return null
}
if(bloodLipidAdjustBean.ldl.isNullOrEmpty()){
ToastUtils.show("请填写低密度脂蛋白数值")
return null
}
bloodLipidAdjustBean.bpTime = "${bloodLipidAdjustBean.bpTime}:00" bloodLipidAdjustBean.bpTime = "${bloodLipidAdjustBean.bpTime}:00"
list.add(bloodLipidAdjustBean) list.add(bloodLipidAdjustBean)
} }
if (list.size < 1) {
CommonToastUtils.showToast("数据不完整,请检查后再提交")
return null
}
return list return list
} }
} }

@ -14,6 +14,7 @@ import com.zj365.health.adapter.bloodfat.BloodLipidAdjustAdapter
import com.zj365.health.databinding.ActBloodFatHistoryBinding import com.zj365.health.databinding.ActBloodFatHistoryBinding
import com.zj365.health.vm.BloodLipidAdjustRecordsVm import com.zj365.health.vm.BloodLipidAdjustRecordsVm
/** /**
* 血脂校准记录 * 血脂校准记录
*/ */
@ -21,18 +22,17 @@ import com.zj365.health.vm.BloodLipidAdjustRecordsVm
class BloodLipidAdjustRecordsAct : BaseListAct<BloodLipidAdjustRecordsVm>() { class BloodLipidAdjustRecordsAct : BaseListAct<BloodLipidAdjustRecordsVm>() {
val binding by lazy { ActBloodFatHistoryBinding.inflate(layoutInflater) } val binding by lazy { ActBloodFatHistoryBinding.inflate(layoutInflater) }
override fun setLayout() = binding.root
var isManage = false var isManage = false
var isEdit = false var isEdit = false
override fun setLayout() = binding.root
val adapter by lazy { BloodLipidAdjustAdapter() } val adapter by lazy { BloodLipidAdjustAdapter() }
override fun initAdapter() { override fun initAdapter() {
binding.mRecycle.adapter = adapter binding.mRecycle.adapter = adapter
binding.mRecycle.addItemDecoration(RecycleItem(this,50)) binding.mRecycle.addItemDecoration(RecycleItem(this, 50))
binding.mRecycle.layoutManager= LinearLayoutManager(this) binding.mRecycle.layoutManager = LinearLayoutManager(this)
setRecycleRefresh(binding.mRecycle,binding.mRefresh) setRecycleRefresh(binding.mRecycle, binding.mRefresh, true)
adapter.setOnItemClickListener { _, view, position -> adapter.setOnItemClickListener { _, view, position ->
val bloodFatBean = adapter.data[position] val bloodFatBean = adapter.data[position]
@ -51,14 +51,13 @@ class BloodLipidAdjustRecordsAct : BaseListAct<BloodLipidAdjustRecordsVm>() {
override fun deleteData() { override fun deleteData() {
super.deleteData() super.deleteData()
mViewModel.deleteBloodFatDataRequest(adapter.getSelectData()) mViewModel.deleteBloodFatDataRequest(adapter.getSelectData())
} }
override fun initView() { override fun initView() {
super.initView() super.initView()
statusBar(binding.title.mView) statusBar(binding.title.mView)
binding.title.mIvBack.setOnClickListener { finish() } binding.title.mIvBack.setOnClickListener { finish() }
binding.title.mTvTitle.text ="校准记录" binding.title.mTvTitle.text = "校准记录"
binding.mTvManage.setOnClickListener { binding.mTvManage.setOnClickListener {
toManage(!isManage) toManage(!isManage)
@ -79,12 +78,12 @@ class BloodLipidAdjustRecordsAct : BaseListAct<BloodLipidAdjustRecordsVm>() {
} }
override fun liveObserver() { override fun liveObserver() {
mViewModel.bloodLipidAdjustRecord.observe(this){ mViewModel.bloodLipidAdjustRecord.observe(this) {
setDate(adapter,it.data.records) setDate(adapter, it.data.records)
binding.title.mTvTitle.text ="校准记录(${it.data.total})" binding.title.mTvTitle.text = "校准记录(${it.data.total})"
} }
mViewModel.deleteBloodFatData.observe(this){ mViewModel.deleteBloodFatData.observe(this) {
if (it.code == 0) { if (it.code == 0) {
page = 1 page = 1
loadData() loadData()

@ -76,9 +76,9 @@ class ComparePageDataAct : BaseVmAct<ComparePageDataVm>() {
}else if(DeviceFunctionUtils.hasFunction(it,"uric")){ }else if(DeviceFunctionUtils.hasFunction(it,"uric")){
listFragment.add(setArgumentFrag(UricAcidCompareDataFrag(),id)) listFragment.add(setArgumentFrag(UricAcidCompareDataFrag(),id))
}/*else if(it.type == "bloodFat" && it.status == 1){ }else if(DeviceFunctionUtils.hasFunction(it,"bloodFat")){
listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id)) listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id))
}*/ }
} }
binding.mVp2.adapter = VpAdapter(listFragment, this) binding.mVp2.adapter = VpAdapter(listFragment, this)
@ -114,7 +114,7 @@ class ComparePageDataAct : BaseVmAct<ComparePageDataVm>() {
} }
private fun initTab(functionList :MutableList<DeviceFunctionBean>) { private fun initTab(functionList :MutableList<DeviceFunctionBean>) {
functionList.forEach { functionList.forEach {
if(it.type == "ecg" || it.type == "step" || it.type == "bloodFat"){ if(it.type == "ecg" || it.type == "step"){
return@forEach return@forEach
} }
if (it.status == 1){ if (it.status == 1){

@ -140,7 +140,7 @@ class HealthMainAct : BaseVmAct<HealthMainVm>() {
private fun initTab(functionList :MutableList<DeviceFunctionBean>) { private fun initTab(functionList :MutableList<DeviceFunctionBean>) {
binding.xTablayout.removeAllTabs() binding.xTablayout.removeAllTabs()
functionList.forEach { functionList.forEach {
if (it.type == "step" || it.type == "bloodFat"){ if (it.type == "step"){
return@forEach return@forEach
} }
if (it.status == 1){ if (it.status == 1){
@ -204,9 +204,9 @@ class HealthMainAct : BaseVmAct<HealthMainVm>() {
}else if(DeviceFunctionUtils.hasFunction(it,"uric")){ }else if(DeviceFunctionUtils.hasFunction(it,"uric")){
listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex))
}/*else if(it.type == "bloodFat" && it.status == 1){ }else if(DeviceFunctionUtils.hasFunction(it,"bloodFat")){
listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id)) listFragment.add(setArgumentFrag(BloodFatFrag(), id))
}*/ }
} }

@ -53,6 +53,7 @@ import com.zj365.health.weight.GridDividerItemDecoration
import com.zj365.health.weight.HealthDialog import com.zj365.health.weight.HealthDialog
import com.xty.network.model.ReportBean import com.xty.network.model.ReportBean
import com.xty.network.model.RespBody import com.xty.network.model.RespBody
import com.zj365.health.adapter.HealthSignDataAdapter
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -107,6 +108,14 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
private val infoAdapter by lazy { DayReportInfoAdapter() } private val infoAdapter by lazy { DayReportInfoAdapter() }
private val mAdapterCount by lazy { ReportAnalysisAdapter() } private val mAdapterCount by lazy { ReportAnalysisAdapter() }
/**
* 综合分析列表
*/
private val healthSignDataGriddingAdapter by lazy { HealthSignDataAdapter() }
private val healthSignDataAdapter by lazy { HealthSignDataAdapter() }
private val signDataGriddingList = mutableListOf<String>()
private val signDataList = mutableListOf<String>()
var functionList = ArrayList<DeviceFunctionBean>() var functionList = ArrayList<DeviceFunctionBean>()
@ -562,6 +571,14 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.mTvTime.setOnClickListener { binding.mTvTime.setOnClickListener {
timSelect.selectTime(it, "yyyy-MM-dd") timSelect.selectTime(it, "yyyy-MM-dd")
} }
/**
* 综合分析列表
*/
binding.recyclerViewGridding.layoutManager = GridLayoutManager(this, 2)
binding.recyclerViewGridding.adapter = healthSignDataGriddingAdapter
binding.recyclerViewList.layoutManager = LinearLayoutManager(this)
binding.recyclerViewList.adapter = healthSignDataAdapter
} }
private fun getTabPosition(listPosition: Int): Int { private fun getTabPosition(listPosition: Int): Int {
@ -911,7 +928,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
) )
) )
/*if(bsseInfo.bloodFat == null){ if(bsseInfo.bloodFat == null){
listInfo.add( listInfo.add(
ReportBean.HrInfo( ReportBean.HrInfo(
"血脂", "血脂",
@ -936,7 +953,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
R.mipmap.ic_uric_acid_small R.mipmap.ic_uric_acid_small
) )
) )
}*/ }
if (bsseInfo.uricAcid == null) { //如果服务端没有返回数据,也就是演示模式,我们自己新增一些假数据用于展示 if (bsseInfo.uricAcid == null) { //如果服务端没有返回数据,也就是演示模式,我们自己新增一些假数据用于展示
listInfo.add( listInfo.add(
@ -1171,7 +1188,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
} }
list.add(uricAcid) list.add(uricAcid)
/* val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
com.xty.common.model.ReportBean().apply { com.xty.common.model.ReportBean().apply {
title = "血脂" title = "血脂"
count = 1 count = 1
@ -1208,7 +1225,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
isShow = true isShow = true
} }
} }
list.add(bloodFat)*/ list.add(bloodFat)
val yundong = com.xty.common.model.ReportBean().apply { val yundong = com.xty.common.model.ReportBean().apply {
title = "运动" title = "运动"
@ -1692,8 +1709,8 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
* 设置综合分析内容 * 设置综合分析内容
*/ */
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables") @SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
private fun setAnalysisInfo(it: RespBody<com.xty.network.model.ReportBean>) { private fun setAnalysisInfo(it: RespBody<ReportBean>) {
binding.analysisTv1.text = "平均心率:" + it.data.signData.hr.avg + "次/分" /* binding.analysisTv1.text = "平均心率:" + it.data.signData.hr.avg + "次/分"
binding.analysisTv2.text = "平均血氧:" + it.data.signData.so.avg + "%" binding.analysisTv2.text = "平均血氧:" + it.data.signData.so.avg + "%"
binding.analysisTv3.text = "平均呼吸率:" + it.data.signData.respiratory.avg + "次/分" binding.analysisTv3.text = "平均呼吸率:" + it.data.signData.respiratory.avg + "次/分"
if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) { if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) {
@ -1710,7 +1727,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.analysisTv5.text = "平均运动:" + it.data.signData.stepData.avg + "" binding.analysisTv5.text = "平均运动:" + it.data.signData.stepData.avg + ""
binding.analysisTv6.text = binding.analysisTv6.text =
"平均睡眠:${minutesToHours(it.data.signData.sleep.avgTime)}" "平均睡眠:${minutesToHours(it.data.signData.sleep.avgTime)}"
binding.analysisTv7.text = "平均血压:" + it.data.signData.dbp.avg + "mmHg" binding.analysisTv7.text = "平均血压:" + it.data.signData.dbp.avg + "mmHg"*/
/*if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ /*if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){
binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol" binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol"
@ -1719,50 +1736,228 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.analysisTv9.text = "平均血脂0mmol" binding.analysisTv9.text = "平均血脂0mmol"
}*/ }*/
binding.state.apply {
val statusInt = it.data.healthy.result val signData = it.data.signData
val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star) if (signData != null) {
text = UserInfoDefin.getHealthArray(context)[statusInt + 1] val list = mutableListOf<String>()
setTextColor( val hrAvg = signData.hr.avg.toInt()
ContextCompat.getColor( list.add(
context, "平均心率:${
UserInfoDefin.healthCol[statusInt + 1] if (hrAvg > 0) {
hrAvg
} else {
"--"
}
}/"
)
val soAvg = signData.so.avg.toFloat()
list.add(
"平均血氧:${
if (soAvg > 0) {
soAvg
} else {
"--"
}
}%"
)
val respiratoryAvg = signData.respiratory.avg.toInt()
list.add(
"平均呼吸率:${
if (respiratoryAvg > 0) {
respiratoryAvg
} else {
"--"
}
}/"
)
if (DeviceFunctionUtils.hasFunction(functionList, "temp")) {
val tempAvg = signData.temp.avg
val stringToDoubleOne = CommonUtils.stringToDoubleOne(tempAvg).toFloat()
list.add(
"平均体温:${
if (stringToDoubleOne > 0) {
stringToDoubleOne
} else {
"--"
}
}°C"
) )
}
val stepDataAvg = signData.stepData.avg.toInt()
list.add(
"平均步数:${
if (stepDataAvg > 0) {
stepDataAvg
} else {
"--"
}
}"
) )
append("\t") val avgTime = signData.sleep.avgTime!!.toInt()
val selectStarImage = UserInfoDefin.getStarImage(context, statusInt) val sleepAvgTime = minutesToHours(avgTime.toString())
selectStarImage.setBounds( list.add(
0, "平均睡眠时间:${
0, if (avgTime > 0) {
selectStarImage.minimumWidth, sleepAvgTime
selectStarImage.minimumHeight } else {
"--小时"
}
}"
) )
val dbpAvg = signData.dbp.avg
val unSelectStarImage = context.getDrawable(R.mipmap.icon_insufficient) val split = dbpAvg.split("/")
unSelectStarImage?.setBounds( val s = split[0].toInt()
0, val s1 = split[1].toInt()
0, list.add(
unSelectStarImage.minimumWidth, "平均血压:${
unSelectStarImage.minimumHeight if (s > 0) {
s
} else {
"--"
}
}/${
if (s1 > 0) {
s1
} else {
"--"
}
}mmHg"
) )
val bloodSugarAvg = signData.bloodSugar.avg.toFloat()
for (i in 1..5) {//五颗星 list.add(
val spanStr = SpannableString("custom$i ") "平均血糖:${
val span = if (bloodSugarAvg > 0) {
(if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable -> bloodSugarAvg
CenterImageSpan(starDrawable) } else {
"--"
} }
spanStr.setSpan(span, 0, spanStr.length - 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) }mmol/L"
//添加至textview )
append(spanStr) val uricAcidAvg = signData.uricAcid.avg.toFloat()
list.add(
"平均尿酸:${
if (uricAcidAvg > 0) {
uricAcidAvg
} else {
"--"
}
}μmol/L"
)
if (signData.bloodFat != null) {
val tcAvg = signData.bloodFat.tcAvg.toFloat()
list.add(
"平均总胆固醇:${
if (tcAvg > 0) {
tcAvg
} else {
"--"
}
}mmol/L"
)
val tgAvg = signData.bloodFat.tgAvg.toFloat()
list.add(
"平均甘油三酯:${
if (tgAvg > 0) {
tgAvg
} else {
"--"
}
}mmol/L"
)
val hdlAvg = signData.bloodFat.hdlAvg.toFloat()
list.add(
"平均高密度脂蛋白:${
if (hdlAvg > 0) {
hdlAvg
} else {
"--"
}
}mmol/L"
)
val ldlAvg = signData.bloodFat.ldlAvg.toFloat()
list.add(
"平均低密度脂蛋白:${
if (ldlAvg > 0) {
ldlAvg
} else {
"--"
}
}mmol/L"
)
} else {
list.add("平均总胆固醇3.11mmol/L")
list.add("平均甘油三酯2.22mmol/L")
list.add("平均高密度脂蛋白1.22mmol/L")
list.add("平均低密度脂蛋白3.33mmol/L")
} }
setOnClickListener { signDataList.clear()
tipDialog.show() signDataGriddingList.clear()
if (list.isNotEmpty()) {
list.forEachIndexed { index, data ->
if (index < 8) {
signDataGriddingList.add(data)
} else {
signDataList.add(data)
}
}
if (signDataGriddingList.size > 0) {
binding.recyclerViewGridding.visibility = View.VISIBLE
healthSignDataGriddingAdapter.setNewInstance(signDataGriddingList)
}
if (signDataList.size > 0) {
binding.recyclerViewList.visibility = View.VISIBLE
healthSignDataAdapter.setNewInstance(signDataList)
}
} else {
binding.recyclerViewGridding.visibility = View.GONE
binding.recyclerViewList.visibility = View.GONE
} }
}
binding.tipsIcon.apply { binding.state.apply {
setOnClickListener { val statusInt = it.data.healthy.result
tipDialog.show() val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star)
text = UserInfoDefin.getHealthArray(context)[statusInt + 1]
setTextColor(
ContextCompat.getColor(
context,
UserInfoDefin.healthCol[statusInt + 1]
)
)
append("\t")
val selectStarImage = UserInfoDefin.getStarImage(context, statusInt)
selectStarImage.setBounds(
0,
0,
selectStarImage.minimumWidth,
selectStarImage.minimumHeight
)
val unSelectStarImage = context.getDrawable(R.mipmap.icon_insufficient)
unSelectStarImage?.setBounds(
0,
0,
unSelectStarImage.minimumWidth,
unSelectStarImage.minimumHeight
)
for (i in 1..5) {//五颗星
val spanStr = SpannableString("custom$i ")
val span =
(if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable ->
CenterImageSpan(starDrawable)
}
spanStr.setSpan(span, 0, spanStr.length - 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
//添加至textview
append(spanStr)
}
setOnClickListener {
tipDialog.show()
}
}
binding.tipsIcon.apply {
setOnClickListener {
tipDialog.show()
}
} }
} }
} }

@ -75,6 +75,7 @@ import com.zj365.health.weight.GridDividerItemDecoration
import com.zj365.health.weight.HealthDialog import com.zj365.health.weight.HealthDialog
import com.zj365.health.weight.PopWindowUserInfo import com.zj365.health.weight.PopWindowUserInfo
import com.xty.network.model.RespBody import com.xty.network.model.RespBody
import com.zj365.health.adapter.HealthSignDataAdapter
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -141,6 +142,15 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
private val mTitless = mutableListOf<String>() private val mTitless = mutableListOf<String>()
/**
* 综合分析列表
*/
private val healthSignDataGriddingAdapter by lazy { HealthSignDataAdapter() }
private val healthSignDataAdapter by lazy { HealthSignDataAdapter() }
private val signDataGriddingList = mutableListOf<String>()
private val signDataList = mutableListOf<String>()
var functionList = ArrayList<DeviceFunctionBean>() var functionList = ArrayList<DeviceFunctionBean>()
private val tipDialog by lazy { private val tipDialog by lazy {
@ -315,6 +325,14 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
else -> {} else -> {}
} }
} }
/**
* 综合分析列表
*/
binding.recyclerViewGridding.layoutManager = GridLayoutManager(this, 2)
binding.recyclerViewGridding.adapter = healthSignDataGriddingAdapter
binding.recyclerViewList.layoutManager = LinearLayoutManager(this)
binding.recyclerViewList.adapter = healthSignDataAdapter
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
@ -1350,7 +1368,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
) )
} }
/*if(bsseInfo.bloodFat == null){ if(bsseInfo.bloodFat == null){
listInfo.add( listInfo.add(
com.xty.network.model.ReportBean.HrInfo( com.xty.network.model.ReportBean.HrInfo(
"血脂", "血脂",
@ -1375,7 +1393,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
R.mipmap.ic_uric_acid_small R.mipmap.ic_uric_acid_small
) )
) )
}*/ }
infoAdapter.setNewInstance(listInfo) infoAdapter.setNewInstance(listInfo)
@ -1582,7 +1600,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
} }
list.add(uricAcid) list.add(uricAcid)
/*val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
ReportBean().apply { ReportBean().apply {
title = "血脂" title = "血脂"
count = 1 count = 1
@ -1619,7 +1637,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
isShow = true isShow = true
} }
} }
list.add(bloodFat)*/ list.add(bloodFat)
val yundong = ReportBean().apply { val yundong = ReportBean().apply {
title = "运动" title = "运动"
@ -1951,11 +1969,60 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
*/ */
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables") @SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
private fun setAnalysisInfo(it: RespBody<com.xty.network.model.ReportBean>) { private fun setAnalysisInfo(it: RespBody<com.xty.network.model.ReportBean>) {
var sleep = it.data.analyse.sleep val analyse = it.data.analyse
if (sleep == null) { if (analyse != null) {
sleep = "" var sleep = analyse.sleep
} if (TextUtils.isEmpty(sleep)) {
binding.analysisTv1.text = "平均心率: " + it.data.analyse.hr sleep = "--小时"
}
val list = mutableListOf<String>()
list.add("平均心率: ${analyse.hr}")
list.add("平均血氧: ${analyse.so}")
list.add("平均呼吸率: ${analyse.respiratory}")
if (DeviceFunctionUtils.hasFunction(functionList, "temp")) {
val tempAvg = it.data.signData.temp.avg.toFloat()
list.add(
"平均体温: ${
if (tempAvg > 0) {
tempAvg
} else {
"--"
}
}"
)
}
list.add("平均步数: ${analyse.exerciseStep}")
list.add("平均睡眠时间: $sleep")
list.add("平均血压: ${analyse.dbp}")
list.add("平均血糖: ${analyse.bloodsugar}")
list.add("平均尿酸: ${analyse.uricAcid}")
list.add("平均总胆固醇: ${analyse.tc}")
list.add("平均甘油三酯: ${analyse.tg}")
list.add("平均高密度脂蛋白: ${analyse.hdl}")
list.add("平均低密度脂蛋白: ${analyse.ldl}")
signDataList.clear()
signDataGriddingList.clear()
if (list.isNotEmpty()) {
list.forEachIndexed { index, data ->
if (index < 8) {
signDataGriddingList.add(data)
} else {
signDataList.add(data)
}
}
if (signDataGriddingList.size > 0) {
binding.recyclerViewGridding.visibility = View.VISIBLE
healthSignDataGriddingAdapter.setNewInstance(signDataGriddingList)
}
if (signDataList.size > 0) {
binding.recyclerViewList.visibility = View.VISIBLE
healthSignDataAdapter.setNewInstance(signDataList)
}
} else {
binding.recyclerViewGridding.visibility = View.GONE
binding.recyclerViewList.visibility = View.GONE
}
/*binding.analysisTv1.text = "平均心率: " + it.data.analyse.hr
binding.analysisTv2.text = "平均血氧: " + it.data.analyse.so binding.analysisTv2.text = "平均血氧: " + it.data.analyse.so
binding.analysisTv3.text = "平均呼吸率: " + it.data.analyse.respiratory binding.analysisTv3.text = "平均呼吸率: " + it.data.analyse.respiratory
if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) { if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) {
@ -1971,59 +2038,60 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
} }
binding.analysisTv5.text = "平均步数: " + it.data.analyse.exerciseStep binding.analysisTv5.text = "平均步数: " + it.data.analyse.exerciseStep
binding.analysisTv6.text = "平均睡眠: $sleep" binding.analysisTv6.text = "平均睡眠: $sleep"
binding.analysisTv7.text = "平均血压: " + it.data.analyse.dbp binding.analysisTv7.text = "平均血压: " + it.data.analyse.dbp*/
/* if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ /* if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){
binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol" binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol"
}else{ }else{
binding.analysisTv9.text = "平均血脂0mmol" binding.analysisTv9.text = "平均血脂0mmol"
}*/ }*/
binding.state.apply { binding.state.apply {
val statusInt = it.data.analyse.status.toInt() val statusInt = analyse.status.toInt()
val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star) val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star)
text = UserInfoDefin.getHealthArray(context)[statusInt + 1] text = UserInfoDefin.getHealthArray(context)[statusInt + 1]
setTextColor( setTextColor(
ContextCompat.getColor( ContextCompat.getColor(
context, context,
UserInfoDefin.healthCol[statusInt + 1] UserInfoDefin.healthCol[statusInt + 1]
)
)
append("\t")
val selectStarImage = UserInfoDefin.getStarImage(context, statusInt)
selectStarImage.setBounds(
0,
0,
selectStarImage.minimumWidth,
selectStarImage.minimumHeight
) )
)
append("\t")
val selectStarImage = UserInfoDefin.getStarImage(context, statusInt)
selectStarImage.setBounds(
0,
0,
selectStarImage.minimumWidth,
selectStarImage.minimumHeight
)
val unSelectStarImage = context.getDrawable(R.mipmap.icon_insufficient) val unSelectStarImage = context.getDrawable(R.mipmap.icon_insufficient)
unSelectStarImage?.setBounds( unSelectStarImage?.setBounds(
0, 0,
0, 0,
unSelectStarImage.minimumWidth, unSelectStarImage.minimumWidth,
unSelectStarImage.minimumHeight unSelectStarImage.minimumHeight
) )
for (i in 1..5) {//五颗星 for (i in 1..5) {//五颗星
val spanStr = SpannableString("custom$i ") val spanStr = SpannableString("custom$i ")
val span = val span =
(if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable -> (if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable ->
CenterImageSpan(starDrawable) CenterImageSpan(starDrawable)
} }
spanStr.setSpan(span, 0, spanStr.length - 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) spanStr.setSpan(span, 0, spanStr.length - 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
//添加至textview //添加至textview
append(spanStr) append(spanStr)
} }
setOnClickListener { setOnClickListener {
tipDialog.show() tipDialog.show()
}
} }
} binding.tipsIcon.apply {
binding.tipsIcon.apply { setOnClickListener {
setOnClickListener { tipDialog.show()
tipDialog.show() }
} }
} }
} }

@ -142,73 +142,76 @@ class PreventCancertAct : BaseVmAct<PayCancerVm>() {
var bottomSheetDialog: BottomSheetDialog? = null var bottomSheetDialog: BottomSheetDialog? = null
fun initBottomDialog() { fun initBottomDialog() {
if (bottomSheetDialog == null) { price?.let {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager) if (bottomSheetDialog == null) {
bottomSheetDialog?.let { dialog -> bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
val view = LayoutInflater.from(this).inflate(R.layout.bottom_cancer, null) bottomSheetDialog?.let { dialog ->
dialog.setContentView(view) val view = LayoutInflater.from(this).inflate(R.layout.bottom_cancer, null)
dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice)
tvprice.text = SpannableUtils.setSpanMoney(price) val tvprice = view.findViewById<TextView>(R.id.tvPrice)
val ivClose = view.findViewById<ImageView>(R.id.close_button) tvprice.text = SpannableUtils.setSpanMoney(it)
ivClose.setOnClickListener { val ivClose = view.findViewById<ImageView>(R.id.close_button)
dialog.dismiss() ivClose.setOnClickListener {
} dialog.dismiss()
val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao) }
val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin) val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao)
tvWeixin.isSelected = true val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin)
val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
llZhifu.setOnClickListener {
tvZhifubao.isSelected = true
tvDuihuanma.isSelected = false
tvWeixin.isSelected = false
tvZhifu.text = "确认支付"
}
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true tvWeixin.isSelected = true
tvZhifu.text = "确认支付" val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
} val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan) val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
llDuihuan.setOnClickListener { val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
tvWeixin.isSelected = false llZhifu.setOnClickListener {
tvZhifubao.isSelected = false tvZhifubao.isSelected = true
tvDuihuanma.isSelected = true tvDuihuanma.isSelected = false
tvZhifu.text = "去兑换" tvWeixin.isSelected = false
} tvZhifu.text = "确认支付"
}
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true
tvZhifu.text = "确认支付"
}
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan)
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
tvZhifu.setOnClickListener { tvZhifu.setOnClickListener {
//支付 //支付
if (tvZhifubao.isSelected) { if (tvZhifubao.isSelected) {
//支付宝 //支付宝
mViewModel.payUrl(goodsId, "ALIPAY_APP", "") mViewModel.payUrl(goodsId, "ALIPAY_APP", "")
} else if (tvWeixin.isSelected) { } else if (tvWeixin.isSelected) {
//微信 //微信
mViewModel.payUrl(goodsId, "WEIXIN_APP", "") mViewModel.payUrl(goodsId, "WEIXIN_APP", "")
} else { } else {
//跳转兑换 //跳转兑换
// bundle.clear() // bundle.clear()
// bundle.putString("id",goodsId) // bundle.putString("id",goodsId)
// RouteManager.goAct(ARouterUrl.DUIHUAN, bundle) // RouteManager.goAct(ARouterUrl.DUIHUAN, bundle)
bundle.clear() bundle.clear()
bundle.putString("id", goodsId) bundle.putString("id", goodsId)
bundle.putString("orderNo", orderNo) bundle.putString("orderNo", orderNo)
RouteManager.goAct(ARouterUrl.DUIHUAN, bundle) RouteManager.goAct(ARouterUrl.DUIHUAN, bundle)
}
dialog.dismiss()
} }
dialog.dismiss()
} }
} }
} }
} }
private val SDK_PAY_FLAG = 1 private val SDK_PAY_FLAG = 1
private val WEIXIN_PAY_FLAG = 2 private val WEIXIN_PAY_FLAG = 2
var price:Float = 0f var price:Float? = null
var goodsId = "" var goodsId = ""
var orderNo = "" var orderNo = ""
var filePath = "" var filePath = ""

@ -98,7 +98,8 @@ class AllExceptionDataActivity : BaseVmAct<ExceptionVm>() {
} }
Const.bloodFatExcep ->{ Const.bloodFatExcep ->{
tabName = arrayOf("总胆固醇偏高","甘油三酯偏高","高密度脂蛋白偏低","低密度脂蛋白偏高") tabName =
arrayOf("总胆固醇", "甘油三酯", "高密度脂蛋白", "低密度脂蛋白")
if (currentTime.isNotEmpty()) { //日报 if (currentTime.isNotEmpty()) { //日报
mViewModel.getWatchAbnormalDataBloodFat(id,timeType.toString(),currentTime,"10") mViewModel.getWatchAbnormalDataBloodFat(id,timeType.toString(),currentTime,"10")
@ -324,35 +325,35 @@ class AllExceptionDataActivity : BaseVmAct<ExceptionVm>() {
} }
mViewModel.exceptionBloodFatData.observe(this){ mViewModel.exceptionBloodFatData.observe(this) {
var mData1 = arrayListOf<String>() val mData1 = arrayListOf<String>()
var mTime1 = arrayListOf<String>() val mTime1 = arrayListOf<String>()
it.data.tcList.asReversed().forEach { it.data.tcList.asReversed().forEach {
mData1.add("${it.data}") mData1.add("${it.data}")
mTime1.add("${it.time}") mTime1.add("${it.time}")
} }
listFragment.add(setArgumentFrag(BloodFatExceptionFrag(),tabName[0],mData1,mTime1)) listFragment.add(setArgumentFrag(BloodFatExceptionFrag(), tabName[0], mData1, mTime1))
var mData2 = arrayListOf<String>() val mData2 = arrayListOf<String>()
var mTime2 = arrayListOf<String>() val mTime2 = arrayListOf<String>()
it.data.tgList.asReversed().forEach { it.data.tgList.asReversed().forEach {
mData2.add("${it.data}") mData2.add("${it.data}")
mTime2.add("${it.time}") mTime2.add("${it.time}")
} }
listFragment.add(setArgumentFrag(BloodFatExceptionFrag(),tabName[1],mData2,mTime2)) listFragment.add(setArgumentFrag(BloodFatExceptionFrag(), tabName[1], mData2, mTime2))
var mData3 = arrayListOf<String>() val mData3 = arrayListOf<String>()
var mTime3 = arrayListOf<String>() val mTime3 = arrayListOf<String>()
it.data.hdlList.asReversed().forEach { it.data.hdlList.asReversed().forEach {
mData3.add("${it.data}") mData3.add("${it.data}")
mTime3.add("${it.time}") mTime3.add("${it.time}")
} }
listFragment.add(setArgumentFrag(BloodFatExceptionFrag(),tabName[2],mData3,mTime3)) listFragment.add(setArgumentFrag(BloodFatExceptionFrag(), tabName[2], mData3, mTime3))
var mData4 = arrayListOf<String>() val mData4 = arrayListOf<String>()
var mTime4 = arrayListOf<String>() val mTime4 = arrayListOf<String>()
it.data.ldlList.asReversed().forEach { it.data.ldlList.asReversed().forEach {
mData4.add("${it.data}") mData4.add("${it.data}")
mTime4.add("${it.time}") mTime4.add("${it.time}")
} }
listFragment.add(setArgumentFrag(BloodFatExceptionFrag(),tabName[3],mData4,mTime4)) listFragment.add(setArgumentFrag(BloodFatExceptionFrag(), tabName[3], mData4, mTime4))
initTab() initTab()
initViewPager() initViewPager()
} }

@ -11,6 +11,7 @@ import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.alipay.sdk.app.PayTask
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.tencent.mm.opensdk.modelbase.BaseResp import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.modelpay.PayReq
@ -21,6 +22,7 @@ import com.xty.common.LogUtils
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager import com.xty.common.arouter.RouteManager
import com.xty.common.event.WxPayEvent import com.xty.common.event.WxPayEvent
import com.xty.common.setImage
import com.xty.common.util.SpannableUtils import com.xty.common.util.SpannableUtils
import com.xty.network.model.PayGoodsBean import com.xty.network.model.PayGoodsBean
import com.xty.network.model.WeixinPayBean import com.xty.network.model.WeixinPayBean
@ -43,18 +45,51 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
var bottomSheetDialog: BottomSheetDialog? = null var bottomSheetDialog: BottomSheetDialog? = null
lateinit var payGoodsBean: PayGoodsBean var payGoodsBean: PayGoodsBean? = null
val tipDialog by lazy { /* val tipDialog by lazy {
CancerDialog(this, false, "温馨提示", { CancerDialog(this, false, "温馨提示", {
bottomSheetDialog?.show() bottomSheetDialog?.show()
}, { }, {
bundle.clear() bundle.clear()
RouteManager.goAct(ARouterUrl.TONGUE_ORDER_LIST_ACTIVITY, bundle) RouteManager.goAct(ARouterUrl.TONGUE_ORDER_LIST_ACTIVITY, bundle)
}) })
} }*/
override fun liveObserver() { override fun liveObserver() {
mViewModel.payGoodsObservable.observe(this){
if (it.data == null){
return@observe
}
payGoodsBean = it.data
binding.ivBg.setImage(this,it.data.advUrl)
initBottomDialog()
}
mViewModel.payObservable.observe(this){
it.data?.let {
val orderInfo: String? = it.alipayOrderInfo // 支付宝订单信息
val wxmodel: WeixinPayBean? = it.wxmodel // 微信订单信息
if (wxmodel != null) {
startWechatPay(wxmodel)
} else if (orderInfo != null) {
LogUtils.i("start Alipay")
val orderInfo: String = it.alipayOrderInfo!! // 订单信息
val payRunnable = Runnable {
val alipay = PayTask(this)
val result = alipay.payV2(orderInfo, true)
val msg = Message()
msg.what = SDK_PAY_FLAG
msg.obj = result
mHandler.sendMessage(msg)
}
// 必须异步调用
val payThread = Thread(payRunnable)
payThread.start()
}
}
}
} }
override fun setLayout() = binding.root override fun setLayout() = binding.root
@ -70,6 +105,7 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
binding.title.mTvRight.visibility = View.VISIBLE binding.title.mTvRight.visibility = View.VISIBLE
}else{ }else{
binding.title.mTvTitle.text ="AI糖医" binding.title.mTvTitle.text ="AI糖医"
mViewModel.getAIGoods()
} }
binding.title.mTvRight.setOnClickListener { binding.title.mTvRight.setOnClickListener {
@ -81,74 +117,72 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
} }
binding.tvSubmit.setOnClickListener { binding.tvSubmit.setOnClickListener {
if (isShowTip) {
tipDialog.setContent("您的舌诊评估记录中,有存在未完成的记录确认需要再次购买吗?") bottomSheetDialog?.show()
tipDialog?.show()
} else {
bottomSheetDialog?.show()
}
} }
initBottomDialog() initBottomDialog()
mViewModel.getAIoods()
mViewModel.aiHasNoFinishOrder()
} }
fun initBottomDialog() { fun initBottomDialog() {
if (bottomSheetDialog == null) { payGoodsBean?.let { bean ->
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager) if (bottomSheetDialog == null) {
bottomSheetDialog?.let { dialog -> bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
val view = LayoutInflater.from(this).inflate(R.layout.dialog_pay, null) bottomSheetDialog?.let { dialog ->
dialog.setContentView(view) val view = LayoutInflater.from(this).inflate(R.layout.dialog_pay, null)
dialog.setContentView(view)
val tvprice = view.findViewById<TextView>(R.id.tvPrice)
tvprice.text = SpannableUtils.setSpanMoney(payGoodsBean.price!!) val tvprice = view.findViewById<TextView>(R.id.tvPrice)
val ivClose = view.findViewById<ImageView>(R.id.close_button) tvprice.text = SpannableUtils.setSpanMoney(bean.price!!)
ivClose.setOnClickListener { val ivClose = view.findViewById<ImageView>(R.id.close_button)
dialog.dismiss() ivClose.setOnClickListener {
} dialog.dismiss()
val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao) }
val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin) val tvZhifubao = view.findViewById<TextView>(R.id.tv_gouxuan_zhifubao)
tvWeixin.isSelected = true val tvWeixin = view.findViewById<TextView>(R.id.tv_gouxuan_weixin)
val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
llZhifu.setOnClickListener {
tvZhifubao.isSelected = true
tvDuihuanma.isSelected = false
tvWeixin.isSelected = false
tvZhifu.text = "确认支付"
}
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true tvWeixin.isSelected = true
tvZhifu.text = "确认支付" val tvDuihuanma = view.findViewById<TextView>(R.id.tv_gouxuan_duihuanma)
} val llWeixin = view.findViewById<LinearLayout>(R.id.llWeixin)
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan) val llZhifu = view.findViewById<LinearLayout>(R.id.llZhifu)
llDuihuan.visibility = View.GONE val tvZhifu = view.findViewById<TextView>(R.id.tvZhifu)
llDuihuan.setOnClickListener { llZhifu.setOnClickListener {
tvWeixin.isSelected = false tvZhifubao.isSelected = true
tvZhifubao.isSelected = false tvDuihuanma.isSelected = false
tvDuihuanma.isSelected = true tvWeixin.isSelected = false
tvZhifu.text = "去兑换" tvZhifu.text = "确认支付"
} }
llWeixin.setOnClickListener {
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = false
tvWeixin.isSelected = true
tvZhifu.text = "确认支付"
}
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan)
llDuihuan.visibility = View.GONE
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
tvZhifu.setOnClickListener { tvZhifu.setOnClickListener {
//支付 //支付
if (tvZhifubao.isSelected) { if (tvZhifubao.isSelected) {
//支付宝 //支付宝
mViewModel.payTongueOrder(payGoodsBean.id.toString(), false) mViewModel.payAISugarMedicineOrder(bean.id.toString(), false)
} else { } else {
//微信 //微信
mViewModel.payTongueOrder(payGoodsBean.id.toString(), true) mViewModel.payAISugarMedicineOrder(bean.id.toString(), true)
}
dialog.dismiss()
} }
dialog.dismiss()
} }
} }
} }
} }
private val SDK_PAY_FLAG = 1 private val SDK_PAY_FLAG = 1
@ -207,35 +241,31 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
val resultStatus: String = payResult.getResultStatus() val resultStatus: String = payResult.getResultStatus()
// 判断resultStatus 为9000则代表支付成功 // 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) { if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
// Toast.makeText(this@PreventCancertAct,"支付成功"+payResult,Toast.LENGTH_SHORT).show() payGoodsBean?.let {
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert( bundle.clear()
// this@PayDemoActivity, bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
// getString(R.string.pay_success) + payResult bundle.putString("orderType", it.goodsType.toString())
// ) RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
bundle.clear() }
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
bundle.putString("orderType", payGoodsBean.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
} else { } else {
Toast.makeText(this@SkinMeasurementMainAct, "支付失败,请联系客服", Toast.LENGTH_SHORT) Toast.makeText(this@SkinMeasurementMainAct, "支付失败,请联系客服", Toast.LENGTH_SHORT)
.show() .show()
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
// this@PayDemoActivity,
// getString(R.string.pay_failed) + payResult
// )
} }
} }
WEIXIN_PAY_FLAG -> { WEIXIN_PAY_FLAG -> {
val event = msg.obj as WxPayEvent val event = msg.obj as WxPayEvent
when (event.code) { when (event.code) {
BaseResp.ErrCode.ERR_OK -> { BaseResp.ErrCode.ERR_OK -> {
bundle.clear() payGoodsBean?.let {
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo) bundle.clear()
bundle.putString("orderType", payGoodsBean.goodsType.toString()) bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle) bundle.putString("orderType", it.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
}
} }
BaseResp.ErrCode.ERR_USER_CANCEL -> { BaseResp.ErrCode.ERR_USER_CANCEL -> {

@ -0,0 +1,14 @@
package com.zj365.health.adapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter
import com.zj365.health.R
class HealthSignDataAdapter : BaseAdapter<String>(
R.layout.item_health_sign_data
) {
override fun convert(holder: BaseViewHolder, item: String) {
holder.setText(R.id.tvSignData, item)
}
}

@ -1,4 +1,4 @@
package com.zj365.health.adapter.bloodfat package com.zj365.health.adapter.bloodfat
import android.graphics.Typeface import android.graphics.Typeface
import android.text.SpannableString import android.text.SpannableString
@ -10,10 +10,10 @@ import androidx.core.content.ContextCompat
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter import com.xty.base.adapter.BaseAdapter
import com.xty.common.Dateutils import com.xty.common.Dateutils
import com.zj365.health.R
import com.xty.network.model.BloodFatBean import com.xty.network.model.BloodFatBean
import com.xty.network.model.BloodFatHeadInfo import com.xty.network.model.BloodFatHeadInfo
import com.xty.network.model.BloodFatType import com.xty.network.model.BloodFatType
import com.zj365.health.R
class BloodFatAdapter : BaseAdapter<BloodFatHeadInfo.BloodFat>(R.layout.item_blood_fat) { class BloodFatAdapter : BaseAdapter<BloodFatHeadInfo.BloodFat>(R.layout.item_blood_fat) {
override fun convert(holder: BaseViewHolder, item: BloodFatHeadInfo.BloodFat) { override fun convert(holder: BaseViewHolder, item: BloodFatHeadInfo.BloodFat) {

@ -1,4 +1,4 @@
package com.zj365.health.adapter.bloodfat package com.zj365.health.adapter.bloodfat
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.widget.ImageView import android.widget.ImageView
@ -7,12 +7,10 @@ import androidx.core.content.ContextCompat
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter import com.xty.base.adapter.BaseAdapter
import com.xty.common.SizeUtil import com.xty.common.SizeUtil
import com.zj365.health.R
import com.xty.network.model.BloodLipidAdjustBean import com.xty.network.model.BloodLipidAdjustBean
import com.zj365.health.R
class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>( class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>(R.layout.item_blood_lipid_records) {
R.layout.item_blood_lipid_records
) {
var isSelect = false var isSelect = false
@ -35,7 +33,6 @@ class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>(
holder: BaseViewHolder, holder: BaseViewHolder,
item: BloodLipidAdjustBean item: BloodLipidAdjustBean
) { ) {
holder.setGone(R.id.ivSelected, !isSelect) holder.setGone(R.id.ivSelected, !isSelect)
val view = holder.getView<ImageView>(R.id.ivSelected) val view = holder.getView<ImageView>(R.id.ivSelected)
view.isSelected = item.isSelected view.isSelected = item.isSelected

@ -291,7 +291,7 @@ object BaseChartInitUtils {
y.setDrawGridLines(true) //绘制横者的x轴 y.setDrawGridLines(true) //绘制横者的x轴
y.setDrawZeroLine(true) y.setDrawZeroLine(true)
y.xOffset = 5f y.xOffset = 5f
var markerView = ICompareMarkView( val markerView = ICompareMarkView(
context, R.layout.mark_view_compare, unit, context, R.layout.mark_view_compare, unit,
mark mark
) )
@ -430,8 +430,8 @@ object BaseChartInitUtils {
) { ) {
chart.let { chart.let {
it.clear() it.clear()
it.setNoDataText(context.getString(com.zj365.health.R.string.line_chart_not_data)) it.setNoDataText(context.getString(R.string.line_chart_not_data))
it.setNoDataTextColor(ContextCompat.getColor(context, com.zj365.health.R.color.col_455)) it.setNoDataTextColor(ContextCompat.getColor(context, R.color.col_455))
it.setLayerType(View.LAYER_TYPE_SOFTWARE, null) it.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
it.setBackgroundColor(Color.WHITE) ///color it.setBackgroundColor(Color.WHITE) ///color
@ -471,7 +471,7 @@ object BaseChartInitUtils {
val x = it.xAxis val x = it.xAxis
x.granularity = 1f //精准设置 x.granularity = 1f //精准设置
x.textColor = ContextCompat.getColor(context, com.zj365.health.R.color.col_92a) x.textColor = ContextCompat.getColor(context, R.color.col_92a)
x.isEnabled = true x.isEnabled = true
x.setDrawGridLines(false) //不绘制y x.setDrawGridLines(false) //不绘制y
x.setDrawAxisLine(false) x.setDrawAxisLine(false)
@ -489,10 +489,10 @@ object BaseChartInitUtils {
//y轴 //y轴
val y = it.axisLeft val y = it.axisLeft
y.setLabelCountAndMaxMinValue(6, false, min - 1, max + 1) y.setLabelCountAndMaxMinValue(6, false, min - 1, max + 1)
y.textColor = ContextCompat.getColor(context, com.zj365.health.R.color.col_92a) y.textColor = ContextCompat.getColor(context, R.color.col_92a)
y.setDrawAxisLine(false) y.setDrawAxisLine(false)
y.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART) y.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART)
y.gridColor = ContextCompat.getColor(context, com.zj365.health.R.color.col_92a) y.gridColor = ContextCompat.getColor(context, R.color.col_92a)
y.setGridDashedLine(DashPathEffect(floatArrayOf(5f, 5f), 0f)) y.setGridDashedLine(DashPathEffect(floatArrayOf(5f, 5f), 0f))
y.setDrawGridLines(true) //绘制横者的x轴 y.setDrawGridLines(true) //绘制横者的x轴
y.setDrawZeroLine(true) y.setDrawZeroLine(true)
@ -541,16 +541,16 @@ object BaseChartInitUtils {
lineDataSet.circleRadius = circleRadius lineDataSet.circleRadius = circleRadius
lineDataSet.highLightColor = lineDataSet.highLightColor =
ContextCompat.getColor(context, com.zj365.health.R.color.col_e0b) //设置点后高亮颜色 ContextCompat.getColor(context, R.color.col_e0b) //设置点后高亮颜色
lineDataSet.enableDashedHighlightLine(10f, 5f, 0f) lineDataSet.enableDashedHighlightLine(10f, 5f, 0f)
lineDataSet.setCircleColor( lineDataSet.setCircleColor(
ContextCompat.getColor( ContextCompat.getColor(
context, context,
com.zj365.health.R.color.col_41c R.color.col_41c
) )
) //#41C4AF ) //#41C4AF
lineDataSet.color = lineDataSet.color =
ContextCompat.getColor(context, com.zj365.health.R.color.col_9BDd) //xian de yanse ContextCompat.getColor(context, R.color.col_9BDd) //xian de yanse
//set1.setFillColor(Color.WHITE); //set1.setFillColor(Color.WHITE);
// set1.fillAlpha = 100 // set1.fillAlpha = 100
if (isShadow) { if (isShadow) {
@ -596,16 +596,16 @@ object BaseChartInitUtils {
lineDataSet.setDrawCircleHole(false) lineDataSet.setDrawCircleHole(false)
lineDataSet.circleRadius = 3.5f lineDataSet.circleRadius = 3.5f
lineDataSet.highLightColor = lineDataSet.highLightColor =
ContextCompat.getColor(context, com.zj365.health.R.color.col_e0b) //设置点后高亮颜色 ContextCompat.getColor(context, R.color.col_e0b) //设置点后高亮颜色
lineDataSet.enableDashedHighlightLine(10f, 5f, 0f) lineDataSet.enableDashedHighlightLine(10f, 5f, 0f)
lineDataSet.setCircleColor( lineDataSet.setCircleColor(
ContextCompat.getColor( ContextCompat.getColor(
context, context,
com.zj365.health.R.color.col_9BD R.color.col_9BD
) )
) //#41C4AF ) //#41C4AF
lineDataSet.color = lineDataSet.color =
ContextCompat.getColor(context, com.zj365.health.R.color.col_9BD) //xian de yanse ContextCompat.getColor(context, R.color.col_9BD) //xian de yanse
//set1.setFillColor(Color.WHITE); //set1.setFillColor(Color.WHITE);
// set1.fillAlpha = 100 // set1.fillAlpha = 100
lineDataSet.setDrawHorizontalHighlightIndicator(false) lineDataSet.setDrawHorizontalHighlightIndicator(false)

@ -38,16 +38,17 @@ import java.util.Locale
/** /**
* 血脂数据对比 * 血脂数据对比
*/ */
@Suppress("NAME_SHADOWING")
class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() { class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
private var week: Int = 1//默认点击时间是选择时间还是对比时间 1选择 2 对比
val binding by lazy { FragBloodLipidCompareDataBinding.inflate(layoutInflater) } val binding by lazy { FragBloodLipidCompareDataBinding.inflate(layoutInflater) }
val tcAdapter by lazy { CompareAdapter() } override fun setLayout() = binding.root
override fun setViewModel() = BloodFatCompareVm()
val tgAdapter by lazy { CompareAdapter() } private var week: Int = 1//默认点击时间是选择时间还是对比时间 1选择 2 对比
val hdlAdapter by lazy { CompareAdapter() } private val tcAdapter by lazy { CompareAdapter() }
val ldlAdapter by lazy { CompareAdapter() } private val tgAdapter by lazy { CompareAdapter() }
private val hdlAdapter by lazy { CompareAdapter() }
private val ldlAdapter by lazy { CompareAdapter() }
val fomartStr by lazy { arrayOf("HH:mm", "HH:mm", "MM-dd", "MM-dd", "yy-MM") } val fomartStr by lazy { arrayOf("HH:mm", "HH:mm", "MM-dd", "MM-dd", "yy-MM") }
@ -57,8 +58,8 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
private val mTitles = arrayOf( private val mTitles = arrayOf(
"", "", "", "" "", "", "", ""
) )
/* var lineValue = arrayListOf<Entry>() //曲线数据 /* var lineValue = arrayListOf<Entry>() //曲线数据
var lineValueCompare = arrayListOf<Entry>() //曲线数据*/ var lineValueCompare = arrayListOf<Entry>() //曲线数据*/
var id: String = "" var id: String = ""
@ -81,6 +82,11 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
private var bottomSheetDialog: BottomSheetDialog? = null private var bottomSheetDialog: BottomSheetDialog? = null
private var weekWheelView: WheelView? = null private var weekWheelView: WheelView? = null
private lateinit var tcList: MutableList<BloodLipidDataBean.ModelBean>
private lateinit var tcListCompare: MutableList<BloodLipidDataBean.ModelBean>
private var tcBarValue = arrayListOf<BarEntry>() //柱形数据
private var tcBarValueCompare = arrayListOf<BarEntry>() //柱形数据
@SuppressLint("SuspiciousIndentation") @SuppressLint("SuspiciousIndentation")
fun initBottomDialog() { fun initBottomDialog() {
@ -168,7 +174,6 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
return dateRanges return dateRanges
}*/ }*/
override fun setLayout() = binding.root
override fun initData() { override fun initData() {
super.initData() super.initData()
id = arguments?.getString("id").toString() id = arguments?.getString("id").toString()
@ -181,10 +186,10 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
initCharts() initCharts()
initRecycle() initRecycle()
setTimeSelect() setTimeSelect()
binding.clTc.tvTitle.text ="总胆固醇" binding.clTc.tvTitle.text = "总胆固醇"
binding.clTg.tvTitle.text ="甘油三酯" binding.clTg.tvTitle.text = "甘油三酯"
binding.clHdl.tvTitle.text ="高密度脂蛋白" binding.clHdl.tvTitle.text = "高密度脂蛋白"
binding.clLdl.tvTitle.text ="低密度脂蛋白" binding.clLdl.tvTitle.text = "低密度脂蛋白"
binding.tvShowDate.setOnClickListener { binding.tvShowDate.setOnClickListener {
when (type) { when (type) {
@ -211,7 +216,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
binding.tvHideDate.setOnClickListener { binding.tvHideDate.setOnClickListener {
when (type) { when (type) {
1 -> { 1 -> {
var calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
if (!TextUtils.isEmpty(timeSelect!!.selectTime)) { if (!TextUtils.isEmpty(timeSelect!!.selectTime)) {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
val date = dateFormat.parse(timeSelect!!.selectTime) val date = dateFormat.parse(timeSelect!!.selectTime)
@ -259,8 +264,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
} }
3 -> { 3 -> {
var calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
timeMonthSelect!!.selectTime timeMonthSelect!!.selectTime
if (!TextUtils.isEmpty(timeMonthSelect!!.selectTime)) { if (!TextUtils.isEmpty(timeMonthSelect!!.selectTime)) {
val dateFormat = SimpleDateFormat("yyyy-MM", Locale.getDefault()) val dateFormat = SimpleDateFormat("yyyy-MM", Locale.getDefault())
@ -302,8 +306,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
} }
4 -> { 4 -> {
var calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
if (!TextUtils.isEmpty(timeYearSelect!!.selectTime)) { if (!TextUtils.isEmpty(timeYearSelect!!.selectTime)) {
val dateFormat = SimpleDateFormat("yyyy", Locale.getDefault()) val dateFormat = SimpleDateFormat("yyyy", Locale.getDefault())
val date = dateFormat.parse(timeYearSelect!!.selectTime) val date = dateFormat.parse(timeYearSelect!!.selectTime)
@ -338,7 +341,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
/* RxTimeTool.getCurTimeString(SimpleDateFormat("yyyy-MM-dd"))*/ /* RxTimeTool.getCurTimeString(SimpleDateFormat("yyyy-MM-dd"))*/
SimpleDateFormat("yyyy-MM-dd").format(getdateMunise(-1)), SimpleDateFormat("yyyy-MM-dd").format(getdateMunise(-1)),
SimpleDateFormat("yyyy-MM-dd").format(getdateMunise(-2)), id SimpleDateFormat("yyyy-MM-dd").format(getdateMunise(-2)), id
)//TODO )
} }
/** /**
@ -346,7 +349,6 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
*/ */
@SuppressLint("SimpleDateFormat") @SuppressLint("SimpleDateFormat")
private fun setTimeSelect() { private fun setTimeSelect() {
var calendar = Calendar.getInstance() var calendar = Calendar.getInstance()
calendar.time = getdateMunise(-1) calendar.time = getdateMunise(-1)
binding.tvShowDate.text = SimpleDateFormat("yyyy-MM-dd").format(calendar.time) binding.tvShowDate.text = SimpleDateFormat("yyyy-MM-dd").format(calendar.time)
@ -360,7 +362,8 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
mViewModel.getBloodLipidData( mViewModel.getBloodLipidData(
type, type,
dayDate, dayDate,
binding.tvHideDate.text.toString(), id binding.tvHideDate.text.toString(),
id
) )
} }
timeSelect!!.startDate.set(1922, 1, 1) timeSelect!!.startDate.set(1922, 1, 1)
@ -386,9 +389,13 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
mViewModel.getBloodLipidData( mViewModel.getBloodLipidData(
type, type,
binding.tvShowDate.text.toString(), binding.tvShowDate.text.toString(),
binding.tvHideDate.text.toString(), id binding.tvHideDate.text.toString(),
id
)
timeMonthSelect?.selectTimeWithYearMonth(
binding.tvShowDate,
"yyyy-MM"
) )
timeMonthSelect?.selectTimeWithYearMonth(binding.tvShowDate, "yyyy-MM")
} }
timeMonthSelect!!.startDate.set(Calendar.YEAR, 1922) timeMonthSelect!!.startDate.set(Calendar.YEAR, 1922)
timeMonthSelect!!.startDate.set(Calendar.MONTH, 1) timeMonthSelect!!.startDate.set(Calendar.MONTH, 1)
@ -415,7 +422,10 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
binding.tvShowDate.text.toString(), binding.tvShowDate.text.toString(),
binding.tvHideDate.text.toString(), id binding.tvHideDate.text.toString(), id
) )
timeYearSelect?.selectTimeWithYearMonth(binding.tvShowDate, "yyyy") timeYearSelect?.selectTimeWithYearMonth(
binding.tvShowDate,
"yyyy"
)
} }
timeYearSelect!!.startDate.set(Calendar.YEAR, 1922) timeYearSelect!!.startDate.set(Calendar.YEAR, 1922)
@ -430,12 +440,12 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
mViewModel.getBloodLipidData( mViewModel.getBloodLipidData(
type, type,
binding.tvShowDate.text.toString(), binding.tvShowDate.text.toString(),
binding.tvHideDate.text.toString(), id binding.tvHideDate.text.toString(),
id
) )
} }
timeYearSelectCompare!!.startDate.set(Calendar.YEAR, 1922) timeYearSelectCompare!!.startDate.set(Calendar.YEAR, 1922)
timeYearSelectCompare!!.endDate = calendaryear timeYearSelectCompare!!.endDate = calendaryear
} }
private fun getdateMunise(int: Int): Date { private fun getdateMunise(int: Int): Date {
@ -444,24 +454,17 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
return calendar.time return calendar.time
} }
override fun setViewModel() = BloodFatCompareVm()
fun convertTimeToIndex(time: String): Int { fun convertTimeToIndex(time: String): Int {
// 将时间格式转换为小时和分钟 // 将时间格式转换为小时和分钟
val parts = time.split(":") val parts = time.split(":")
val hours = parts[0].toInt() val hours = parts[0].toInt()
val minutes = parts[1].toInt() val minutes = parts[1].toInt()
// 计算对应的分钟数 // 计算对应的分钟数
val totalMinutes = hours * 60 + minutes val totalMinutes = hours * 60 + minutes
// 计算对应的索引值 // 计算对应的索引值
val index = totalMinutes / 10 return totalMinutes / 10
return index
} }
fun splitDataIntoSegments(dataList: MutableList<ModelCompare>): MutableList<MutableList<ModelCompare>> { fun splitDataIntoSegments(dataList: MutableList<ModelCompare>): MutableList<MutableList<ModelCompare>> {
val segments = mutableListOf<MutableList<ModelCompare>>() val segments = mutableListOf<MutableList<ModelCompare>>()
var currentSegment = mutableListOf<ModelCompare>() var currentSegment = mutableListOf<ModelCompare>()
@ -478,12 +481,10 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
currentSegment.add(model) currentSegment.add(model)
} }
} }
// 将最后一个线段添加到结果中 // 将最后一个线段添加到结果中
if (currentSegment.isNotEmpty()) { if (currentSegment.isNotEmpty()) {
segments.add(currentSegment) segments.add(currentSegment)
} }
return segments return segments
} }
@ -500,7 +501,6 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
d.add(b) d.add(b)
segmentsCompare.add(d) segmentsCompare.add(d)
} }
return segmentsCompare return segmentsCompare
} }
@ -516,7 +516,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
when (type) { when (type) {
1 -> {//日 1 -> {//日
it.data.model =it.data.mapDataToTime(it.data.model) it.data.model = it.data.mapDataToTime(it.data.model)
it.data.modelCompare = it.data.mapDataToTime(it.data.modelCompare) it.data.modelCompare = it.data.mapDataToTime(it.data.modelCompare)
} }
@ -555,20 +555,16 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
setHDLChartData(it.data) setHDLChartData(it.data)
setLDLChartData(it.data) setLDLChartData(it.data)
binding.clTc.comprehensiveContent.text = it.data.tcContent binding.clTc.comprehensiveContent.text = it.data.tcContent
binding.clTg.comprehensiveContent.text = it.data.tgContent binding.clTg.comprehensiveContent.text = it.data.tgContent
binding.clHdl.comprehensiveContent.text = it.data.hdlContent binding.clHdl.comprehensiveContent.text = it.data.hdlContent
binding.clLdl.comprehensiveContent.text = it.data.ldlContent binding.clLdl.comprehensiveContent.text = it.data.ldlContent
binding.comprehensiveBlContent.text = it.data.comprehensiveContent binding.comprehensiveBlContent.text = it.data.comprehensiveContent
} }
} }
private fun initTab() { private fun initTab() {
val currentDay = Date() val currentDay = Date()
dayDate = TimeUtils.date2String(currentDay, "yyyy-MM-dd") dayDate = TimeUtils.date2String(currentDay, "yyyy-MM-dd")
// weekDate = "${TimeUtils.date2String(getDateAdd(6), "yyyy-MM-dd")}至$dayDate" // weekDate = "${TimeUtils.date2String(getDateAdd(6), "yyyy-MM-dd")}至$dayDate"
@ -587,7 +583,6 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onTabSelect(position: Int) { override fun onTabSelect(position: Int) {
binding.commonTabLayout.currentTab = position binding.commonTabLayout.currentTab = position
when (position) { when (position) {
0 -> { 0 -> {
type = 1 type = 1
@ -627,8 +622,10 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
2 -> { 2 -> {
binding.showTitle.text = "选择月" binding.showTitle.text = "选择月"
binding.hideTitle.text = "对比月" binding.hideTitle.text = "对比月"
binding.tvShowDate.text = HealthDateAndTimeUtils.getPreviousMonthDateRange(1) binding.tvShowDate.text =
binding.tvHideDate.text = HealthDateAndTimeUtils.getPreviousMonthDateRange(2) HealthDateAndTimeUtils.getPreviousMonthDateRange(1)
binding.tvHideDate.text =
HealthDateAndTimeUtils.getPreviousMonthDateRange(2)
type = 3 type = 3
mViewModel.getBloodLipidData( mViewModel.getBloodLipidData(
type, type,
@ -667,7 +664,8 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
}) })
} }
/* *//** /* */
/**
* 获取上个月 monthCount 月数 * 获取上个月 monthCount 月数
*//* *//*
fun getPreviousMonthDateRange(monthCount: Int): String { fun getPreviousMonthDateRange(monthCount: Int): String {
@ -680,7 +678,8 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
return previousMonth return previousMonth
} }
*//** */
/**
* 获取上周的礼拜 周数 * 获取上周的礼拜 周数
*//* *//*
fun getPreviousWeekDateRange(weekCount: Int): String { fun getPreviousWeekDateRange(weekCount: Int): String {
@ -704,293 +703,337 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
return startDate + "$endDate" return startDate + "$endDate"
}*/ }*/
lateinit var tcList: MutableList<BloodLipidDataBean.ModelBean>
private lateinit var tcListCompare: MutableList<BloodLipidDataBean.ModelBean>
var tcBarValue = arrayListOf<BarEntry>() //柱形数据
var tcBarValueCompare = arrayListOf<BarEntry>() //柱形数据
private fun setTCChartData(data: BloodLipidDataBean) { private fun setTCChartData(data: BloodLipidDataBean) {
setAvgInfo(data,BloodFatType.Tc) setAvgInfo(data, BloodFatType.Tc)
tcList = data.model tcList = data.model
tcListCompare = data.modelCompare tcListCompare = data.modelCompare
tcBarValue.clear() tcBarValue.clear()
tcBarValueCompare.clear() tcBarValueCompare.clear()
var rever: IntProgression val rever = if (tcList.size < tcListCompare.size) {
if (tcList.size < tcListCompare.size) { (tcListCompare.indices).reversed()
rever = (tcListCompare.indices).reversed()
} else { } else {
rever = (tcList.indices).reversed() (tcList.indices).reversed()
} }
if (type == 3) { if (type == 3) {
var compare = tcListCompare.size - tcList.size var compare = tcListCompare.size - tcList.size
if (compare > 0) { if (compare > 0) {
for (Int in 1..compare) { for (Int in 1..compare) {
tcList.add(tcList.size,BloodLipidDataBean.ModelBean(0f,0f,0f,0f,tcListCompare[tcList.size].time)) tcList.add(
tcList.size,
BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
tcListCompare[tcList.size].time
)
)
} }
} else if (compare < 0) { } else if (compare < 0) {
compare = 0 - compare compare = 0 - compare
for (Int in 1..compare) { for (Int in 1..compare) {
tcListCompare.add( tcListCompare.add(
tcListCompare.size, tcListCompare.size,
BloodLipidDataBean.ModelBean(0f,0f,0f,0f,tcList[tcListCompare.size].time) BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
tcList[tcListCompare.size].time
)
) )
} }
} }
} }
for (i in rever) { for (i in rever) {
//中间两端在x轴显示尺度 其他情况下不显示 //中间两端在x轴显示尺度 其他情况下不显示
if (type == 1) { when (type) {
var listTipG = mutableListOf<String>() 1 -> {
listTipG.add(tcList[tcList.size - 1 - i].time) val listTipG = mutableListOf<String>()
listTipG.add("0") listTipG.add(tcList[tcList.size - 1 - i].time)
listTipG.add(tcList[tcList.size - 1 - i].tc.toString()) listTipG.add("0")
listTipG.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString()) listTipG.add(tcList[tcList.size - 1 - i].tc.toString())
listTipG.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString())
if (tcList[tcList.size - 1 - i].tc == 0f) {
tcList[tcList.size - 1 - i].tc = Float.NaN if (tcList[tcList.size - 1 - i].tc == 0f) {
} else { tcList[tcList.size - 1 - i].tc = Float.NaN
tcList[tcList.size - 1 - i].tc } else {
} tcList[tcList.size - 1 - i].tc
tcBarValue.add( }
BarEntry( tcBarValue.add(
(tcList.size - 1 - i).toFloat(), BarEntry(
tcList[tcList.size - 1 - i].tc, (tcList.size - 1 - i).toFloat(),
listTipG tcList[tcList.size - 1 - i].tc,
listTipG
)
) )
)
if (tcListCompare[tcListCompare.size - 1 - i].tc == 0f) if (tcListCompare[tcListCompare.size - 1 - i].tc == 0f)
tcListCompare[tcListCompare.size - 1 - i].tc = Float.NaN tcListCompare[tcListCompare.size - 1 - i].tc = Float.NaN
else else
tcListCompare[tcListCompare.size - 1 - i].tc tcListCompare[tcListCompare.size - 1 - i].tc
tcBarValueCompare.add( tcBarValueCompare.add(
BarEntry( BarEntry(
(tcListCompare.size - 1 - i).toFloat(), (tcListCompare.size - 1 - i).toFloat(),
tcListCompare[tcListCompare.size - 1 - i].tc, tcListCompare[tcListCompare.size - 1 - i].tc,
listTipG listTipG
)
) )
)
} else if (type == 2) { }
var listTipW = mutableListOf<String>()
listTipW.add(weeker[weeker.size - i - 1]) 2 -> {
listTipW.add("0") val listTipW = mutableListOf<String>()
listTipW.add(tcList[tcList.size - 1 - i].tc.toString()) listTipW.add(weeker[weeker.size - i - 1])
listTipW.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString()) listTipW.add("0")
tcBarValue.add( listTipW.add(tcList[tcList.size - 1 - i].tc.toString())
BarEntry( listTipW.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString())
(tcList.size - 1 - i).toFloat(), tcBarValue.add(
tcList[tcList.size - 1 - i].tc, BarEntry(
listTipW (tcList.size - 1 - i).toFloat(),
tcList[tcList.size - 1 - i].tc,
listTipW
)
) )
) tcBarValueCompare.add(
tcBarValueCompare.add( BarEntry(
BarEntry( (tcListCompare.size - 1 - i).toFloat(),
(tcListCompare.size - 1 - i).toFloat(), tcListCompare[tcListCompare.size - 1 - i].tc,
tcListCompare[tcListCompare.size - 1 - i].tc, listTipW
listTipW )
) )
) }
} else if (type == 3) {
var listTipY = mutableListOf<String>() 3 -> {
listTipY.add(tcList[tcList.size - 1 - i].time) val listTipY = mutableListOf<String>()
listTipY.add("0") listTipY.add(tcList[tcList.size - 1 - i].time)
listTipY.add(tcList[tcList.size - 1 - i].tc.toString()) listTipY.add("0")
listTipY.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString()) listTipY.add(tcList[tcList.size - 1 - i].tc.toString())
tcBarValue.add( listTipY.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString())
BarEntry( tcBarValue.add(
(tcList.size - 1 - i).toFloat(), BarEntry(
tcList[tcList.size - 1 - i].tc, (tcList.size - 1 - i).toFloat(),
listTipY tcList[tcList.size - 1 - i].tc,
listTipY
)
) )
) tcBarValueCompare.add(
tcBarValueCompare.add( BarEntry(
BarEntry( (tcListCompare.size - 1 - i).toFloat(),
(tcListCompare.size - 1 - i).toFloat(), tcListCompare[tcListCompare.size - 1 - i].tc,
tcListCompare[tcListCompare.size - 1 - i].tc, listTipY
listTipY )
) )
) }
} else {
var listTipY = mutableListOf<String>() else -> {
listTipY.add(tcList[tcList.size - 1 - i].time) val listTipY = mutableListOf<String>()
listTipY.add("0") listTipY.add(tcList[tcList.size - 1 - i].time)
listTipY.add(tcList[tcList.size - 1 - i].tc.toString()) listTipY.add("0")
listTipY.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString()) listTipY.add(tcList[tcList.size - 1 - i].tc.toString())
tcBarValue.add( listTipY.add(tcListCompare[tcListCompare.size - 1 - i].tc.toString())
BarEntry( tcBarValue.add(
(tcList.size - 1 - i).toFloat(), BarEntry(
tcList[tcList.size - 1 - i].tc, (tcList.size - 1 - i).toFloat(),
listTipY tcList[tcList.size - 1 - i].tc,
listTipY
)
) )
) tcBarValueCompare.add(
tcBarValueCompare.add( BarEntry(
BarEntry( (tcListCompare.size - 1 - i).toFloat(),
(tcListCompare.size - 1 - i).toFloat(), tcListCompare[tcListCompare.size - 1 - i].tc,
tcListCompare[tcListCompare.size - 1 - i].tc, listTipY
listTipY )
) )
) }
} }
} }
binding.clTc.mBarChart.clear() binding.clTc.mBarChart.clear()
val min = BloodLipidGetMinMaxChart.getBloodLipidMix(
val min = data.value.minTc,
BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minTc, data.valueCompare.minTc) data.valueCompare.minTc
)
val max = val max = BloodLipidGetMinMaxChart.getBloodLipidMax(
BloodLipidGetMinMaxChart.getBloodLipidMax(data.value.maxTc, data.valueCompare.maxTc) data.value.maxTc,
data.valueCompare.maxTc
)
BaseChartInitUtils.initBarChartTwo( BaseChartInitUtils.initBarChartTwo(
requireContext(), binding.clTc.mBarChart, min, max, tcBarValue, tcBarValueCompare, requireContext(),
ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f binding.clTc.mBarChart,
min,
max,
tcBarValue,
tcBarValueCompare,
ICompareMarkView.MarkPage.BloodFilip,
"mmol/L",
type,
1f
) )
} }
lateinit var tgList: MutableList<BloodLipidDataBean.ModelBean> lateinit var tgList: MutableList<BloodLipidDataBean.ModelBean>
private lateinit var tgListCompare: MutableList<BloodLipidDataBean.ModelBean> private lateinit var tgListCompare: MutableList<BloodLipidDataBean.ModelBean>
var tgBarValue = arrayListOf<BarEntry>() //柱形数据 var tgBarValue = arrayListOf<BarEntry>() //柱形数据
var tgBarValueCompare = arrayListOf<BarEntry>() //柱形数据 var tgBarValueCompare = arrayListOf<BarEntry>() //柱形数据
private fun setTGChartData(data: BloodLipidDataBean) { private fun setTGChartData(data: BloodLipidDataBean) {
setAvgInfo(data,BloodFatType.Tg) setAvgInfo(data, BloodFatType.Tg)
tgList = data.model tgList = data.model
tgListCompare = data.modelCompare tgListCompare = data.modelCompare
tgBarValue.clear() tgBarValue.clear()
tgBarValueCompare.clear() tgBarValueCompare.clear()
var rever: IntProgression val rever = if (tgList.size < tgListCompare.size) {
if (tgList.size < tgListCompare.size) { (tgListCompare.indices).reversed()
rever = (tgListCompare.indices).reversed()
} else { } else {
rever = (tgList.indices).reversed() (tgList.indices).reversed()
} }
if (type == 3) { if (type == 3) {
var compare = tgListCompare.size - tgList.size var compare = tgListCompare.size - tgList.size
if (compare > 0) { if (compare > 0) {
for (Int in 1..compare) { for (Int in 1..compare) {
tgList.add(tgList.size,BloodLipidDataBean.ModelBean(0f,0f,0f,0f,tgListCompare[tgList.size].time)) tgList.add(
tgList.size,
BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
tgListCompare[tgList.size].time
)
)
} }
} else if (compare < 0) { } else if (compare < 0) {
compare = 0 - compare compare = 0 - compare
for (Int in 1..compare) { for (Int in 1..compare) {
tgListCompare.add( tgListCompare.add(
tgListCompare.size, tgListCompare.size,
BloodLipidDataBean.ModelBean(0f,0f,0f,0f,tgList[tgListCompare.size].time) BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
tgList[tgListCompare.size].time
)
) )
} }
} }
} }
for (i in rever) { for (i in rever) {
//中间两端在x轴显示尺度 其他情况下不显示 //中间两端在x轴显示尺度 其他情况下不显示
if (type == 1) { when (type) {
var listTipG = mutableListOf<String>() 1 -> {
listTipG.add(tgList[tgList.size - 1 - i].time) val listTipG = mutableListOf<String>()
listTipG.add("0") listTipG.add(tgList[tgList.size - 1 - i].time)
listTipG.add(tgList[tgList.size - 1 - i].tg.toString()) listTipG.add("0")
listTipG.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString()) listTipG.add(tgList[tgList.size - 1 - i].tg.toString())
listTipG.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString())
if (tgList[tgList.size - 1 - i].tg == 0f) {
tgList[tgList.size - 1 - i].tg = Float.NaN if (tgList[tgList.size - 1 - i].tg == 0f) {
} else { tgList[tgList.size - 1 - i].tg = Float.NaN
tgList[tgList.size - 1 - i].tg } else {
} tgList[tgList.size - 1 - i].tg
tgBarValue.add( }
BarEntry( tgBarValue.add(
(tgList.size - 1 - i).toFloat(), BarEntry(
tgList[tgList.size - 1 - i].tg, (tgList.size - 1 - i).toFloat(),
listTipG tgList[tgList.size - 1 - i].tg,
listTipG
)
) )
)
if (tgListCompare[tgListCompare.size - 1 - i].tg == 0f) if (tgListCompare[tgListCompare.size - 1 - i].tg == 0f)
tgListCompare[tgListCompare.size - 1 - i].tg = Float.NaN tgListCompare[tgListCompare.size - 1 - i].tg = Float.NaN
else else
tgListCompare[tgListCompare.size - 1 - i].tg tgListCompare[tgListCompare.size - 1 - i].tg
tgBarValueCompare.add( tgBarValueCompare.add(
BarEntry( BarEntry(
(tgListCompare.size - 1 - i).toFloat(), (tgListCompare.size - 1 - i).toFloat(),
tgListCompare[tgListCompare.size - 1 - i].tg, tgListCompare[tgListCompare.size - 1 - i].tg,
listTipG listTipG
)
) )
)
} else if (type == 2) { }
var listTipW = mutableListOf<String>()
listTipW.add(weeker[weeker.size - i - 1]) 2 -> {
listTipW.add("0") var listTipW = mutableListOf<String>()
listTipW.add(tgList[tgList.size - 1 - i].tg.toString()) listTipW.add(weeker[weeker.size - i - 1])
listTipW.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString()) listTipW.add("0")
tgBarValue.add( listTipW.add(tgList[tgList.size - 1 - i].tg.toString())
BarEntry( listTipW.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString())
(tgList.size - 1 - i).toFloat(), tgBarValue.add(
tgList[tgList.size - 1 - i].tg, BarEntry(
listTipW (tgList.size - 1 - i).toFloat(),
tgList[tgList.size - 1 - i].tg,
listTipW
)
) )
) tgBarValueCompare.add(
tgBarValueCompare.add( BarEntry(
BarEntry( (tgListCompare.size - 1 - i).toFloat(),
(tgListCompare.size - 1 - i).toFloat(), tgListCompare[tgListCompare.size - 1 - i].tg,
tgListCompare[tgListCompare.size - 1 - i].tg, listTipW
listTipW )
) )
) }
} else if (type == 3) {
var listTipY = mutableListOf<String>() 3 -> {
listTipY.add(tgList[tgList.size - 1 - i].time)
listTipY.add("0") var listTipY = mutableListOf<String>()
listTipY.add(tgList[tgList.size - 1 - i].tg.toString()) listTipY.add(tgList[tgList.size - 1 - i].time)
listTipY.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString()) listTipY.add("0")
tgBarValue.add( listTipY.add(tgList[tgList.size - 1 - i].tg.toString())
BarEntry( listTipY.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString())
(tgList.size - 1 - i).toFloat(), tgBarValue.add(
tgList[tgList.size - 1 - i].tg, BarEntry(
listTipY (tgList.size - 1 - i).toFloat(),
tgList[tgList.size - 1 - i].tg,
listTipY
)
) )
) tgBarValueCompare.add(
tgBarValueCompare.add( BarEntry(
BarEntry( (tgListCompare.size - 1 - i).toFloat(),
(tgListCompare.size - 1 - i).toFloat(), tgListCompare[tgListCompare.size - 1 - i].tg,
tgListCompare[tgListCompare.size - 1 - i].tg, listTipY
listTipY )
) )
) }
} else {
var listTipY = mutableListOf<String>() else -> {
listTipY.add(tgList[tgList.size - 1 - i].time) var listTipY = mutableListOf<String>()
listTipY.add("0") listTipY.add(tgList[tgList.size - 1 - i].time)
listTipY.add(tgList[tgList.size - 1 - i].tg.toString()) listTipY.add("0")
listTipY.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString()) listTipY.add(tgList[tgList.size - 1 - i].tg.toString())
tgBarValue.add( listTipY.add(tgListCompare[tgListCompare.size - 1 - i].tg.toString())
BarEntry( tgBarValue.add(
(tgList.size - 1 - i).toFloat(), BarEntry(
tgList[tgList.size - 1 - i].tg, (tgList.size - 1 - i).toFloat(),
listTipY tgList[tgList.size - 1 - i].tg,
listTipY
)
) )
) tgBarValueCompare.add(
tgBarValueCompare.add( BarEntry(
BarEntry( (tgListCompare.size - 1 - i).toFloat(),
(tgListCompare.size - 1 - i).toFloat(), tgListCompare[tgListCompare.size - 1 - i].tg,
tgListCompare[tgListCompare.size - 1 - i].tg, listTipY
listTipY )
) )
) }
} }
} }
binding.clTg.mBarChart.clear() binding.clTg.mBarChart.clear()
val min = val min =
BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minTg, data.valueCompare.minTg) BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minTg, data.valueCompare.minTg)
val max = val max =
BloodLipidGetMinMaxChart.getBloodLipidMax(data.value.maxTg, data.valueCompare.maxTg) BloodLipidGetMinMaxChart.getBloodLipidMax(data.value.maxTg, data.valueCompare.maxTg)
@ -999,13 +1042,14 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f
) )
} }
lateinit var hdlList: MutableList<BloodLipidDataBean.ModelBean> lateinit var hdlList: MutableList<BloodLipidDataBean.ModelBean>
private lateinit var hdlListCompare: MutableList<BloodLipidDataBean.ModelBean> private lateinit var hdlListCompare: MutableList<BloodLipidDataBean.ModelBean>
var hdlBarValue = arrayListOf<BarEntry>() //柱形数据 var hdlBarValue = arrayListOf<BarEntry>() //柱形数据
var hdlBarValueCompare = arrayListOf<BarEntry>() //柱形数据 var hdlBarValueCompare = arrayListOf<BarEntry>() //柱形数据
private fun setHDLChartData(data: BloodLipidDataBean) { private fun setHDLChartData(data: BloodLipidDataBean) {
setAvgInfo(data,BloodFatType.Hdl) setAvgInfo(data, BloodFatType.Hdl)
hdlList = data.model hdlList = data.model
hdlListCompare = data.modelCompare hdlListCompare = data.modelCompare
hdlBarValue.clear() hdlBarValue.clear()
@ -1020,14 +1064,29 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
var compare = hdlListCompare.size - hdlList.size var compare = hdlListCompare.size - hdlList.size
if (compare > 0) { if (compare > 0) {
for (Int in 1..compare) { for (Int in 1..compare) {
hdlList.add(hdlList.size,BloodLipidDataBean.ModelBean(0f,0f,0f,0f,hdlListCompare[hdlList.size].time)) hdlList.add(
hdlList.size,
BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
hdlListCompare[hdlList.size].time
)
)
} }
} else if (compare < 0) { } else if (compare < 0) {
compare = 0 - compare compare = 0 - compare
for (Int in 1..compare) { for (Int in 1..compare) {
hdlListCompare.add( hdlListCompare.add(
hdlListCompare.size, hdlListCompare.size,
BloodLipidDataBean.ModelBean(0f,0f,0f,0f,hdlList[hdlListCompare.size].time) BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
hdlList[hdlListCompare.size].time
)
) )
} }
} }
@ -1133,13 +1192,11 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
} }
binding.clHdl.mBarChart.clear() binding.clHdl.mBarChart.clear()
val min = val min =
BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minHdl, data.valueCompare.minHdl) BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minHdl, data.valueCompare.minHdl)
val max = val max =
BloodLipidGetMinMaxChart.getBloodLipidMax(data.value.maxHdl, data.valueCompare.maxHdl) BloodLipidGetMinMaxChart.getBloodLipidMax(data.value.maxHdl, data.valueCompare.maxHdl)
BaseChartInitUtils.initBarChartTwo( BaseChartInitUtils.initBarChartTwo(
requireContext(), binding.clHdl.mBarChart, min, max, hdlBarValue, hdlBarValueCompare, requireContext(), binding.clHdl.mBarChart, min, max, hdlBarValue, hdlBarValueCompare,
ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f
@ -1152,7 +1209,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
var ldlBarValue = arrayListOf<BarEntry>() //柱形数据 var ldlBarValue = arrayListOf<BarEntry>() //柱形数据
var ldlBarValueCompare = arrayListOf<BarEntry>() //柱形数据 var ldlBarValueCompare = arrayListOf<BarEntry>() //柱形数据
private fun setLDLChartData(data: BloodLipidDataBean) { private fun setLDLChartData(data: BloodLipidDataBean) {
setAvgInfo(data,BloodFatType.Ldl) setAvgInfo(data, BloodFatType.Ldl)
ldlList = data.model ldlList = data.model
ldlListCompare = data.modelCompare ldlListCompare = data.modelCompare
ldlBarValue.clear() ldlBarValue.clear()
@ -1167,14 +1224,29 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
var compare = ldlListCompare.size - ldlList.size var compare = ldlListCompare.size - ldlList.size
if (compare > 0) { if (compare > 0) {
for (Int in 1..compare) { for (Int in 1..compare) {
ldlList.add(ldlList.size,BloodLipidDataBean.ModelBean(0f,0f,0f,0f,ldlListCompare[ldlList.size].time)) ldlList.add(
ldlList.size,
BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
ldlListCompare[ldlList.size].time
)
)
} }
} else if (compare < 0) { } else if (compare < 0) {
compare = 0 - compare compare = 0 - compare
for (Int in 1..compare) { for (Int in 1..compare) {
ldlListCompare.add( ldlListCompare.add(
ldlListCompare.size, ldlListCompare.size,
BloodLipidDataBean.ModelBean(0f,0f,0f,0f,ldlList[ldlListCompare.size].time) BloodLipidDataBean.ModelBean(
0f,
0f,
0f,
0f,
ldlList[ldlListCompare.size].time
)
) )
} }
} }
@ -1281,7 +1353,6 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
binding.clLdl.mBarChart.clear() binding.clLdl.mBarChart.clear()
val min = val min =
BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minLdl, data.valueCompare.minLdl) BloodLipidGetMinMaxChart.getBloodLipidMix(data.value.minLdl, data.valueCompare.minLdl)
@ -1292,8 +1363,9 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f ICompareMarkView.MarkPage.BloodFilip, "mmol/L", type, 1f
) )
} }
@SuppressLint("SuspiciousIndentation") @SuppressLint("SuspiciousIndentation")
private fun setAvgInfo(valueData: BloodLipidDataBean,dataType: BloodFatType) { private fun setAvgInfo(valueData: BloodLipidDataBean, dataType: BloodFatType) {
var list: MutableList<ValueMap> = mutableListOf() var list: MutableList<ValueMap> = mutableListOf()
list = BloodLipidDataDealWithList.setDataList( list = BloodLipidDataDealWithList.setDataList(
valueData.value, valueData.value,
@ -1304,22 +1376,24 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
dataType, dataType,
list list
) )
when(dataType){ when (dataType) {
BloodFatType.Tc ->{ BloodFatType.Tc -> {
tcAdapter.setNewInstance(list) tcAdapter.setNewInstance(list)
} }
BloodFatType.Tg ->{
BloodFatType.Tg -> {
tgAdapter.setNewInstance(list) tgAdapter.setNewInstance(list)
} }
BloodFatType.Hdl ->{
BloodFatType.Hdl -> {
hdlAdapter.setNewInstance(list) hdlAdapter.setNewInstance(list)
} }
BloodFatType.Ldl ->{
BloodFatType.Ldl -> {
ldlAdapter.setNewInstance(list) ldlAdapter.setNewInstance(list)
} }
} }
} }
/*private fun calculateBarWidth(dataCount: Int): Float { /*private fun calculateBarWidth(dataCount: Int): Float {
val maximumBarWidth = 0.38f // 设置最大柱形图宽度 val maximumBarWidth = 0.38f // 设置最大柱形图宽度
@ -1360,7 +1434,7 @@ class BloodFatCompareDataFrag : BaseVmFrag<BloodFatCompareVm>() {
binding.clLdl.mRecycle.adapter = ldlAdapter binding.clLdl.mRecycle.adapter = ldlAdapter
} }
fun initCharts(){ fun initCharts() {
binding.clTc.mBarChart.setNoDataText(getString(R.string.line_chart_not_data)) binding.clTc.mBarChart.setNoDataText(getString(R.string.line_chart_not_data))
binding.clTc.mBarChart.setNoDataTextColor( binding.clTc.mBarChart.setNoDataTextColor(
ContextCompat.getColor( ContextCompat.getColor(

@ -28,18 +28,16 @@ class BloodFatExceptionDataAct : BaseExceptionDataAct<ExceptionVm>() {
} }
override fun getHint(): String { override fun getHint(): String {
if(binding.title.mTvTitle.text.toString().equals("总胆固醇偏高")){ return if(binding.title.mTvTitle.text.toString() == "总胆固醇偏高"){
return "正常范围5.23-5.69mmol/L" "正常范围2.83-5.20mmol/L"
}else if(binding.title.mTvTitle.text.toString().equals("甘油三酯偏高")){ }else if(binding.title.mTvTitle.text.toString() == "甘油三酯偏高"){
return "正常范围0.45-1.69mmol/L" "正常范围0.45-1.69mmol/L"
}else if(binding.title.mTvTitle.text.toString() == "高密度脂蛋白偏低"){
}else if(binding.title.mTvTitle.text.toString().equals("高密度脂蛋白偏低")){ "正常范围0.93-1.93mmol/L"
return "正常范围0.93-1.93mmol/L" }else if (binding.title.mTvTitle.text.toString() == "低密度脂蛋白偏高"){
"正常范围0-3.12mmol/L"
}else if (binding.title.mTvTitle.text.toString().equals("低密度脂蛋白偏高")){
return "正常范围0-3.12mmol/L"
}else{ }else{
return "正常范围5.23-5.69mmol/L" "正常范围2.83-5.20mmol/L"
} }
} }
@ -56,7 +54,6 @@ class BloodFatExceptionDataAct : BaseExceptionDataAct<ExceptionVm>() {
leftAxis.setLabelCountAndMaxMinValue(6, true, 0f, 160f) leftAxis.setLabelCountAndMaxMinValue(6, true, 0f, 160f)
} }
} }
} }
override fun getMarkView(): IMarker? { override fun getMarkView(): IMarker? {

@ -1,5 +1,6 @@
package com.zj365.health.fragment.bloodlipid package com.zj365.health.fragment.bloodlipid
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.view.View import android.view.View
import android.widget.TextView import android.widget.TextView
@ -22,50 +23,63 @@ class BloodFatExceptionFrag: BaseExceptionDataFragment<ExceptionVm>() {
} }
override fun getHint(): String { override fun getHint(): String {
if (binding.tvListTitle.text == "总胆固醇"){ return when (binding.tvListTitle.text) {
return "正常范围2.83-5.20mmol/L" "总胆固醇" -> {
}else if(binding.tvListTitle.text == "甘油三酯"){ "正常范围2.83-5.20mmol/L"
return "正常范围0.45-1.69mmol/L" }
}else if(binding.tvListTitle.text == "高密度脂蛋白"){
return "正常范围0.93-1.93mmol/L" "甘油三酯" -> {
}else{ "正常范围0.45-1.69mmol/L"
return "正常范围0-3.12mmol/L" }
}
"高密度脂蛋白" -> {
"正常范围0.93-1.93mmol/L"
}
else -> {
"正常范围0-3.12mmol/L"
}
}
} }
override fun setLabelCount(leftAxis: YAxis) { override fun setLabelCount(leftAxis: YAxis) {
leftAxis.setLabelCountAndMaxMinValue(6,false,0f,8f) leftAxis.setLabelCountAndMaxMinValue(6, false, 0f, 8f)
} }
override fun getMarkView(): IMarker? { override fun getMarkView(): IMarker? {
return CustomMarkerViewXueyang( return CustomMarkerViewXuezhi(
this.requireContext(), this.requireContext(),
R.layout.custom_marker_view_xueyang,result) R.layout.custom_marker_view_xuezhi, result
)
} }
class CustomMarkerViewXueyang(context: Context?, layoutResource: Int, var result:MutableList<ExceptionBean>) : @SuppressLint("ViewConstructor")
MarkerView(context, layoutResource) { class CustomMarkerViewXuezhi(
private val mData: TextView context: Context?,
private val mTime: TextView layoutResource: Int,
var result: MutableList<ExceptionBean>
) : MarkerView(context, layoutResource) {
private val mXueZhiData = findViewById<View>(R.id.tvXueZhiData) as TextView
private val mXueZhiTime = findViewById<View>(R.id.tvXueZhiTime) as TextView
@SuppressLint("SimpleDateFormat", "SetTextI18n")
override fun refreshContent(e: Entry, highlight: Highlight) { override fun refreshContent(e: Entry, highlight: Highlight) {
// 在 refreshContent 方法中设置需要显示的内容。 // 在 refreshContent 方法中设置需要显示的内容。
val barEntry = e as BarEntry val barEntry = e as BarEntry
val x = barEntry.x val x = barEntry.x
val get = result.get(x.toInt()) val get = result[x.toInt()]
var data = get.data+"%" val data = get.data
mData.setText(data) mXueZhiData.text = data
mTime.setText( RxTimeTool.milliseconds2String( mXueZhiTime.text = RxTimeTool.milliseconds2String(
get.time.toLong() * 1000, get.time.toLong() * 1000,
SimpleDateFormat("HH :mm") SimpleDateFormat("HH :mm")
)) )
setOffset((-getWidth() / 2).toFloat(), (-getHeight()).toFloat() - 10f); setOffset((-width / 2).toFloat(), (-height).toFloat() - 10f)
} }
init { init {
// 在构造函数中获取 MarkerView 中的 TextView。 // 在构造函数中获取 MarkerView 中的 TextView。
mData = findViewById<View>(R.id.tvData) as TextView
mTime = findViewById<View>(R.id.tvTime) as TextView
} }
} }

@ -43,6 +43,7 @@ import com.xty.common.TimeSelect
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager import com.xty.common.arouter.RouteManager
import com.xty.common.event.BloodFilipOpenSuccessEvent import com.xty.common.event.BloodFilipOpenSuccessEvent
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.SpannableUtils import com.xty.common.util.SpannableUtils
import com.xty.common.weight.tablayout.TabEntity import com.xty.common.weight.tablayout.TabEntity
import com.xty.common.weight.tablayout.listener.CustomTabEntity import com.xty.common.weight.tablayout.listener.CustomTabEntity
@ -81,7 +82,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
val fomartStr by lazy { arrayOf("HH:mm", "HH:mm", "MM-dd", "MM-dd", "yy-MM") } val fomartStr by lazy { arrayOf("HH:mm", "HH:mm", "MM-dd", "MM-dd", "yy-MM") }
private val weekStr by lazy { resources.getStringArray(R.array.week_day) } private val weekStr by lazy { resources.getStringArray(R.array.week_day) }
val dialogBind by lazy { val dialogBind by lazy {
DialogTip(requireContext(), "需绑定中健三六五健康手表,才能查看", "去绑定") { DialogTip(requireContext(), "需绑定安瑜健康手表,才能查看", "去绑定") {
RouteManager.goAct(ARouterUrl.DEVICE_CHOICE) RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
} }
} }
@ -97,7 +98,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
type = 1 type = 1
dayDate = binding.tvShowDate.text.toString() dayDate = binding.tvShowDate.text.toString()
mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate) mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate)
mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate) // mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate)
} }
} }
@ -106,7 +107,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
type = 3 type = 3
mouthDate = binding.tvShowDate.text.toString() mouthDate = binding.tvShowDate.text.toString()
mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate) mViewModel.getBloodFatInfo(type, binding.tvShowDate.text.toString(), id, isDemonstrate)
} }
} }
@ -121,7 +121,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
} }
var tips = "" private var tips = ""
val tipDialog by lazy { val tipDialog by lazy {
HealthDialog(requireContext(), true, tips) { HealthDialog(requireContext(), true, tips) {
} }
@ -155,6 +155,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
} }
@SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.tgLayout.tvBloodValue.text = "甘油三酯 (TG)" binding.tgLayout.tvBloodValue.text = "甘油三酯 (TG)"
@ -239,12 +240,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
binding.tvBloodLipidAdjust.setOnClickListener { binding.tvBloodLipidAdjust.setOnClickListener {
if (bloodFatStatus == 1) { if (bloodFatStatus == 1) {
// val tip = "尿酸建模出值重要提示:\n" + tips = "1、建模期间累计有效佩戴满72小时\n" +
// "1、建模期间累计有效佩戴满72小时\n" + "2、建模完成后每天18:00至第二天6:00期间佩戴时长累计满6小时APP出具血脂值\n" +
// "2、建模完成后每天18:00至第二天6:00期间佩戴时长累计满6小时APP出具尿酸值\n" + "3、血脂值每天700出值。本次值为前一天18:00到当天早上6:00血脂平均值。"
// "3、尿酸值每天700出值。本次值为前一天18:00到当天早上6:00尿酸平均值。" tipDialog.setContent(tips)
// tipDialog.setContent(tip) tipDialog.show()
// tipDialog.show()
} else { } else {
RouteManager.goAct(ARouterUrl.BL_ADJUST) RouteManager.goAct(ARouterUrl.BL_ADJUST)
} }
@ -260,13 +260,20 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
private fun setKindLayoutClickListener(view: BloodFatChartBinding) { private fun setKindLayoutClickListener(view: BloodFatChartBinding) {
view.mLineChart.setNoDataText(getString(R.string.line_chart_not_data)) view.mLineChart.setNoDataText(getString(R.string.line_chart_not_data))
view.mLineChart.setNoDataTextColor( view.mLineChart.setNoDataTextColor(
ContextCompat.getColor( ContextCompat.getColor(
requireContext(), requireContext(),
R.color.col_455 R.color.col_455
) )
) )
view.mBarChart.setNoDataText(getString(R.string.line_chart_not_data))
view.mBarChart.setNoDataTextColor(
ContextCompat.getColor(
requireContext(),
R.color.col_455
)
)
view.zhexianTv.setOnClickListener { view.zhexianTv.setOnClickListener {
view.mLineChart.visibility = View.VISIBLE view.mLineChart.visibility = View.VISIBLE
view.mBarChart.visibility = View.GONE view.mBarChart.visibility = View.GONE
@ -352,22 +359,23 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
RouteManager.goAct(ARouterUrl.BL_FAT_EXCEPTION_DATA, bundle) RouteManager.goAct(ARouterUrl.BL_FAT_EXCEPTION_DATA, bundle)
} }
@SuppressLint("SetTextI18n", "SimpleDateFormat")
override fun observer() { override fun observer() {
mViewModel.bloodFatHeadInfo.observe(this) { mViewModel.bloodFatHeadInfo.observe(this) {
expireTimeStr = it.data.expireTime expireTimeStr = it.data.expireTime
bloodFatStatus = it.data.status bloodFatStatus = it.data.status
if (!TextUtils.isEmpty(expireTimeStr)) { if (!TextUtils.isEmpty(expireTimeStr)) {
binding.tvEndTime.text = "到期时间:${expireTimeStr}" binding.tvEndTime.text = "到期时间${expireTimeStr}"
} else { } else {
binding.tvEndTime.text = "" binding.tvEndTime.text = ""
} }
when (it.data.status) { when (it.data.status) {
0 -> { //没有开通 0 -> { //没有开通
setNoOpenBloodLipid(0) setNoOpenBloodLipid(0, it.data.data)
} }
1 -> { //建模中 1 -> { //建模中
setNoOpenBloodLipid(1) setNoOpenBloodLipid(1, it.data.data)
} }
else -> { else -> {
@ -477,7 +485,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
} }
//设置数据 //设置数据
private fun setValuss( private fun setValuss(
daysModelList: MutableList<BloodFatBean.Model>, daysModelList: MutableList<BloodFatBean.Model>,
@ -549,6 +556,45 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
} }
if (selectDay()) {
setOrganStatus(chartType)
}
when (chartType) {
0 -> {
binding.tcLayout.mLineChart.clear()
binding.tcLayout.mBarChart.clear()
}
1 -> {
binding.tgLayout.mLineChart.clear()
binding.tgLayout.mBarChart.clear()
}
2 -> {
binding.hdlLayout.mLineChart.clear()
binding.hdlLayout.mBarChart.clear()
}
else -> {
binding.ldlLayout.mLineChart.clear()
binding.ldlLayout.mBarChart.clear()
}
}
if (list.isNullOrEmpty()) {
return
}
for ((index, modelCompare) in list.withIndex()) {
modelCompare.index = index
// modelCompare.uaValue = if (modelCompare.uaValue > 0f) {
// modelCompare.uaValue
// } else {
// Float.NaN
// }
}
for (i in list.indices) { for (i in list.indices) {
//中间两端在x轴显示尺度 其他情况下不显示 //中间两端在x轴显示尺度 其他情况下不显示
lineValue.add( lineValue.add(
@ -569,26 +615,34 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
when (chartType) { when (chartType) {
0 -> { 0 -> {
binding.tcLayout.mLineChart.clear() // binding.tcLayout.mLineChart.clear()
binding.tcLayout.mBarChart.clear() // binding.tcLayout.mBarChart.clear()
initChart(list, bean.value.minTc, bean.value.maxTc, chartType, lineValue, barValue) initChart(
if (selectDay()) { list,
setOrganStatus(chartType) bean.value.minTc,
} bean.value.maxTc,
chartType,
lineValue,
barValue
)
} }
1 -> { 1 -> {
binding.tgLayout.mLineChart.clear() // binding.tgLayout.mLineChart.clear()
binding.tgLayout.mBarChart.clear() // binding.tgLayout.mBarChart.clear()
initChart(list, bean.value.minTg, bean.value.maxTg, chartType, lineValue, barValue) initChart(
if (selectDay()) { list,
setOrganStatus(chartType) bean.value.minTg,
} bean.value.maxTg,
chartType,
lineValue,
barValue
)
} }
2 -> { 2 -> {
binding.hdlLayout.mLineChart.clear() // binding.hdlLayout.mLineChart.clear()
binding.hdlLayout.mBarChart.clear() // binding.hdlLayout.mBarChart.clear()
initChart( initChart(
list, list,
bean.value.minHdl, bean.value.minHdl,
@ -597,15 +651,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
lineValue, lineValue,
barValue barValue
) )
if (selectDay()) {
setOrganStatus(chartType)
}
} }
else -> { else -> {
binding.ldlLayout.mLineChart.clear() // binding.ldlLayout.mLineChart.clear()
binding.ldlLayout.mBarChart.clear() // binding.ldlLayout.mBarChart.clear()
initChart( initChart(
list, list,
bean.value.minLdl, bean.value.minLdl,
@ -614,9 +664,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
lineValue, lineValue,
barValue barValue
) )
if (selectDay()) {
setOrganStatus(chartType)
}
} }
} }
} }
@ -650,17 +697,17 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
): String { ): String {
when (type) { when (type) {
1 -> { 1 -> {
/*if (bean.uaValue == 0f) { // if (bean.uaValue == 0f) {
bean.uaValue = Float.NaN // bean.uaValue = Float.NaN
}*/ // }
return bean.formatTime return bean.time
} }
3 -> { 3 -> {
/* if (bean.uaValue == 0f) { /* if (bean.uaValue == 0f) {
bean.uaValue = Float.NaN bean.uaValue = Float.NaN
}*/ }*/
return bean.time return bean.formatTime
} }
2 -> { 2 -> {
@ -711,7 +758,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
1 -> { 1 -> {
when (OrganStatusCalcUtil.tgStatus(data.tg)) { when (OrganStatusCalcUtil.tgStatus(data.tg)) {
1 -> { 1 -> {
tgAbNormalTime++ tgAbNormalTime++
@ -726,7 +772,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
2 -> { 2 -> {
when (OrganStatusCalcUtil.hdlStatus(data.hdl)) { when (OrganStatusCalcUtil.hdlStatus(data.hdl)) {
1 -> { 1 -> {
hdlAbNormalTime++ hdlAbNormalTime++
@ -828,26 +873,18 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
val barsetsNew = ArrayList<ILineDataSet>() val barsetsNew = ArrayList<ILineDataSet>()
val segments = splitDataIntoSegments(list) val segments = splitDataIntoSegments(list)
// if (segments.size > 0) {
// segments = checkData(segments)
// }
val dataSets = segments.mapNotNull { segment -> val dataSets = segments.mapNotNull { segment ->
if (segment.isEmpty()) return@mapNotNull null if (segment.isEmpty()) return@mapNotNull null
val entries = segment.mapIndexed { index, model -> val entries = segment.mapIndexed { index, model ->
val time = if (type == 1 || type == 2 || type == 3) {
model.formatTime
} else {
model.time
}
var indes = 0
list.forEachIndexed { index, modelCompare ->
if (time == modelCompare.formatTime || time == modelCompare.time) {
indes = index
}
}
Entry( Entry(
indes.toFloat(), model.index.toFloat(),
model.uaValue, model.uaValue,
lineValue[indes].data lineValue[model.index].data
) )
} }
return@mapNotNull setData(entries, chartType) return@mapNotNull setData(entries, chartType)
@ -893,23 +930,10 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
if (segment.isEmpty()) return@mapNotNull null if (segment.isEmpty()) return@mapNotNull null
val entries = segment.mapIndexed { index, model -> val entries = segment.mapIndexed { index, model ->
val time = if (type == 1 || type == 2 || type == 3) {
model.formatTime
} else {
model.time
}
var indes = 0
list.forEachIndexed { index, modelCompare ->
if (time == modelCompare.formatTime || time == modelCompare.time) {
indes = index
}
}
BarEntry( BarEntry(
indes.toFloat(), model.index.toFloat(),
model.uaValue, model.uaValue,
barValue[indes].data barValue[model.index].data
) )
} }
return@mapNotNull setBarData(entries, chartType) return@mapNotNull setBarData(entries, chartType)
@ -980,21 +1004,24 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
return max(minimumBarWidth, min(maximumBarWidth, calculatedBarWidth)) return max(minimumBarWidth, min(maximumBarWidth, calculatedBarWidth))
} }
fun splitDataIntoSegments(dataList: MutableList<BloodFatBean.ModelCompare>): MutableList<MutableList<BloodFatBean.ModelCompare>> { fun splitDataIntoSegments(
dataList: MutableList<BloodFatBean.ModelCompare>
): MutableList<MutableList<BloodFatBean.ModelCompare>> {
val segments = mutableListOf<MutableList<BloodFatBean.ModelCompare>>() val segments = mutableListOf<MutableList<BloodFatBean.ModelCompare>>()
var currentSegment = mutableListOf<BloodFatBean.ModelCompare>() var currentSegment = mutableListOf<BloodFatBean.ModelCompare>()
for (model in dataList) { for (model in dataList) {
if (model.uaValue.isNaN()) { // if (model.uaValue.isNaN()) {
// 遇到 Float.NaN如果当前线段不为空则添加到结果中并开始新的线段 // // 遇到 Float.NaN如果当前线段不为空则添加到结果中并开始新的线段
if (currentSegment.isNotEmpty()) { // if (currentSegment.isNotEmpty()) {
segments.add(currentSegment) // segments.add(currentSegment)
currentSegment = mutableListOf() // currentSegment = mutableListOf()
} // }
} else { // } else {
// 遇到有效数据,将其添加到当前线段中 // // 遇到有效数据,将其添加到当前线段中
currentSegment.add(model) // currentSegment.add(model)
} // }
currentSegment.add(model)
} }
// 将最后一个线段添加到结果中 // 将最后一个线段添加到结果中
@ -1005,12 +1032,14 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
return segments return segments
} }
private fun checkData(segmentsCompare: MutableList<MutableList<BloodFatBean.ModelCompare>>): MutableList<MutableList<BloodFatBean.ModelCompare>> { private fun checkData(
segmentsCompare: MutableList<MutableList<BloodFatBean.ModelCompare>>
): MutableList<MutableList<BloodFatBean.ModelCompare>> {
when (type) { when (type) {
1 -> { 1 -> {
if (segmentsCompare[0][0].time != "00:00") { if (segmentsCompare[0][0].time != "05:00") {
val d = mutableListOf<BloodFatBean.ModelCompare>() val d = mutableListOf<BloodFatBean.ModelCompare>()
val b = BloodFatBean.ModelCompare(0f, "00:00") val b = BloodFatBean.ModelCompare(0f, "05:00")
d.add(b) d.add(b)
segmentsCompare.add(d) segmentsCompare.add(d)
} }
@ -1018,10 +1047,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
binding.tvShowDate.text.toString(), binding.tvShowDate.text.toString(),
SimpleDateFormat("yyyy-MM-dd") SimpleDateFormat("yyyy-MM-dd")
) && ) &&
segmentsCompare[segmentsCompare.size - 1][segmentsCompare[segmentsCompare.size - 1].size - 1].time != "23:50" segmentsCompare[segmentsCompare.size - 1]
[segmentsCompare[segmentsCompare.size - 1].size - 1].time != "09:00"
) { ) {
val d = mutableListOf<BloodFatBean.ModelCompare>() val d = mutableListOf<BloodFatBean.ModelCompare>()
val b = BloodFatBean.ModelCompare(0f, "23:50") val b = BloodFatBean.ModelCompare(0f, "09:00")
d.add(b) d.add(b)
segmentsCompare.add(d) segmentsCompare.add(d)
} }
@ -1191,7 +1221,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
values, values,
lineChart, lineChart,
2.5f, 2.5f,
2f, 4f,
true true
) )
} }
@ -1407,16 +1437,19 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
when (chartType) { when (chartType) {
0 -> { 0 -> {
binding.clCurTc.mOrganView.tvFirstValue.text = SpannableUtils.setSpan( binding.clCurTc.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
tcNormalTime, Color.parseColor("#313131") tcNormalTime,
Color.parseColor("#313131")
) )
if (tcNormalTime > 0) { if (tcNormalTime >= 0) {
binding.clCurTc.mOrganView.ivFirst.visibility = View.VISIBLE binding.clCurTc.mOrganView.ivFirst.visibility = View.VISIBLE
} else { } else {
binding.clCurTc.mOrganView.ivFirst.visibility = View.INVISIBLE binding.clCurTc.mOrganView.ivFirst.visibility = View.INVISIBLE
} }
binding.clCurTc.mOrganView.tvSecondValue.text = binding.clCurTc.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
SpannableUtils.setSpan(tcAbNormalTime, Color.parseColor("#313131")) tcAbNormalTime,
Color.parseColor("#313131")
)
if (tcAbNormalTime > 0) { if (tcAbNormalTime > 0) {
binding.clCurTc.mOrganView.ivSecond.visibility = View.VISIBLE binding.clCurTc.mOrganView.ivSecond.visibility = View.VISIBLE
} else { } else {
@ -1425,9 +1458,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
1 -> { 1 -> {
binding.clCurTg.mOrganView.tvFirstValue.text = binding.clCurTg.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
SpannableUtils.setSpan(tgNormalTime, Color.parseColor("#313131")) tgNormalTime,
if (tgNormalTime > 0) { Color.parseColor("#313131")
)
if (tgNormalTime >= 0) {
binding.clCurTg.mOrganView.ivFirst.visibility = View.VISIBLE binding.clCurTg.mOrganView.ivFirst.visibility = View.VISIBLE
} else { } else {
binding.clCurTg.mOrganView.ivFirst.visibility = View.INVISIBLE binding.clCurTg.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1445,7 +1480,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
2 -> { 2 -> {
binding.clCurHdl.mOrganView.tvFirstValue.text = binding.clCurHdl.mOrganView.tvFirstValue.text =
SpannableUtils.setSpan(hdlNormalTime, Color.parseColor("#313131")) SpannableUtils.setSpan(hdlNormalTime, Color.parseColor("#313131"))
if (hdlNormalTime > 0) { if (hdlNormalTime >= 0) {
binding.clCurHdl.mOrganView.ivFirst.visibility = View.VISIBLE binding.clCurHdl.mOrganView.ivFirst.visibility = View.VISIBLE
} else { } else {
binding.clCurHdl.mOrganView.ivFirst.visibility = View.INVISIBLE binding.clCurHdl.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1463,7 +1498,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
else -> { else -> {
binding.clCurLdl.mOrganView.tvFirstValue.text = binding.clCurLdl.mOrganView.tvFirstValue.text =
SpannableUtils.setSpan(ldlNormalTime, Color.parseColor("#313131")) SpannableUtils.setSpan(ldlNormalTime, Color.parseColor("#313131"))
if (ldlNormalTime > 0) { if (ldlNormalTime >= 0) {
binding.clCurLdl.mOrganView.ivFirst.visibility = View.VISIBLE binding.clCurLdl.mOrganView.ivFirst.visibility = View.VISIBLE
} else { } else {
binding.clCurLdl.mOrganView.ivFirst.visibility = View.INVISIBLE binding.clCurLdl.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1481,91 +1516,172 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
fun setNoOpenBloodLipid(status: Int) { fun setNoOpenBloodLipid(status: Int, data: BloodFatHeadInfo.Data?) {
var valueDesc = "" var valueDesc = ""
if (status == 0) { if (status == 0) {
valueDesc = "未开通" if (TextUtils.isEmpty(expireTimeStr)) {
binding.llRenew.visibility = View.GONE valueDesc = "未开通"
binding.tvOpen.visibility = View.VISIBLE
binding.tvRenew.visibility = View.GONE
binding.compareTv.visibility = View.GONE
binding.llRenew.visibility = View.GONE
binding.tcLayout.llEmpty.visibility = View.VISIBLE
binding.tgLayout.llEmpty.visibility = View.VISIBLE
binding.hdlLayout.llEmpty.visibility = View.VISIBLE
binding.ldlLayout.llEmpty.visibility = View.VISIBLE
binding.tcLayout.mBarChart.visibility = View.GONE
binding.tcLayout.mLineChart.visibility = View.GONE
binding.tgLayout.mBarChart.visibility = View.GONE
binding.tgLayout.mLineChart.visibility = View.GONE
binding.hdlLayout.mBarChart.visibility = View.GONE
binding.hdlLayout.mLineChart.visibility = View.GONE
binding.ldlLayout.mBarChart.visibility = View.GONE
binding.ldlLayout.mLineChart.visibility = View.GONE
binding.tcLayout.zhexianTv.visibility = View.GONE
binding.tcLayout.zhuzhuanTv.visibility = View.GONE
binding.tcLayout.mDesc.visibility = View.GONE
binding.tgLayout.zhexianTv.visibility = View.GONE
binding.tgLayout.zhuzhuanTv.visibility = View.GONE
binding.tgLayout.mDesc.visibility = View.GONE
binding.hdlLayout.zhexianTv.visibility = View.GONE
binding.hdlLayout.zhuzhuanTv.visibility = View.GONE
binding.hdlLayout.mDesc.visibility = View.GONE
binding.ldlLayout.zhexianTv.visibility = View.GONE
binding.ldlLayout.zhuzhuanTv.visibility = View.GONE
binding.ldlLayout.mDesc.visibility = View.GONE
} else {
valueDesc = "--"
binding.tvOpen.visibility = View.GONE
binding.compareTv.visibility = View.VISIBLE
binding.tvRenew.visibility = View.VISIBLE
binding.llRenew.visibility = View.VISIBLE
}
} else if (status == 1) { } else if (status == 1) {
valueDesc = "建模中" valueDesc = "建模中"
binding.llRenew.visibility = View.VISIBLE binding.llRenew.visibility = View.VISIBLE
binding.tvRenew.visibility = View.GONE
binding.tvBloodLipidAdjust.text = "建模说明" binding.tvBloodLipidAdjust.text = "建模说明"
binding.tvRenew.visibility = View.GONE
binding.tvOpen.visibility = View.GONE
binding.compareTv.visibility = View.VISIBLE
binding.tcLayout.llEmpty.visibility = View.VISIBLE
binding.tgLayout.llEmpty.visibility = View.VISIBLE
binding.hdlLayout.llEmpty.visibility = View.VISIBLE
binding.ldlLayout.llEmpty.visibility = View.VISIBLE
binding.tcLayout.mBarChart.visibility = View.GONE
binding.tcLayout.mLineChart.visibility = View.GONE
binding.tgLayout.mBarChart.visibility = View.GONE
binding.tgLayout.mLineChart.visibility = View.GONE
binding.hdlLayout.mBarChart.visibility = View.GONE
binding.hdlLayout.mLineChart.visibility = View.GONE
binding.ldlLayout.mBarChart.visibility = View.GONE
binding.ldlLayout.mLineChart.visibility = View.GONE
binding.tcLayout.zhexianTv.visibility = View.GONE
binding.tcLayout.zhuzhuanTv.visibility = View.GONE
binding.tcLayout.mDesc.visibility = View.GONE
binding.tgLayout.zhexianTv.visibility = View.GONE
binding.tgLayout.zhuzhuanTv.visibility = View.GONE
binding.tgLayout.mDesc.visibility = View.GONE
binding.hdlLayout.zhexianTv.visibility = View.GONE
binding.hdlLayout.zhuzhuanTv.visibility = View.GONE
binding.hdlLayout.mDesc.visibility = View.GONE
binding.ldlLayout.zhexianTv.visibility = View.GONE
binding.ldlLayout.zhuzhuanTv.visibility = View.GONE
binding.ldlLayout.mDesc.visibility = View.GONE
}
binding.clCurTc.tvBloodValue.text = if (data != null) {
if (data.tc > 0) {
data.tc.toString()
} else {
valueDesc
}
} else {
valueDesc
} }
binding.tvOpen.visibility = View.VISIBLE
binding.compareTv.visibility = View.GONE
binding.tcLayout.zhexianTv.visibility = View.GONE
binding.tcLayout.zhuzhuanTv.visibility = View.GONE
binding.tcLayout.mDesc.visibility = View.GONE
binding.tcLayout.mBarChart.visibility = View.GONE
binding.tcLayout.mLineChart.visibility = View.GONE
binding.tcLayout.llEmpty.visibility = View.VISIBLE
binding.tgLayout.zhexianTv.visibility = View.GONE
binding.tgLayout.zhuzhuanTv.visibility = View.GONE
binding.tgLayout.mDesc.visibility = View.GONE
binding.tgLayout.mBarChart.visibility = View.GONE
binding.tgLayout.mLineChart.visibility = View.GONE
binding.tgLayout.llEmpty.visibility = View.VISIBLE
binding.hdlLayout.zhexianTv.visibility = View.GONE
binding.hdlLayout.zhuzhuanTv.visibility = View.GONE
binding.hdlLayout.mDesc.visibility = View.GONE
binding.hdlLayout.mBarChart.visibility = View.GONE
binding.hdlLayout.mLineChart.visibility = View.GONE
binding.hdlLayout.llEmpty.visibility = View.VISIBLE
binding.ldlLayout.zhexianTv.visibility = View.GONE
binding.ldlLayout.zhuzhuanTv.visibility = View.GONE
binding.ldlLayout.mDesc.visibility = View.GONE
binding.ldlLayout.mBarChart.visibility = View.GONE
binding.ldlLayout.mLineChart.visibility = View.GONE
binding.ldlLayout.llEmpty.visibility = View.VISIBLE
binding.clCurTc.tvBloodValue.text = valueDesc
binding.clCurTc.tvTestTime.text = "mmol/L ${ binding.clCurTc.tvTestTime.text = "mmol/L ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format) Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format)
}" }"
binding.clCurTc.mOrganView.tvFirstValue.text = SpannableUtils.setSpan( binding.clCurTc.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") 0,
Color.parseColor("#313131")
) )
binding.clCurTc.mOrganView.tvSecondValue.text = SpannableUtils.setSpan( binding.clCurTc.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") tcAbNormalTime,
Color.parseColor("#313131")
) )
binding.clCurTg.tvBloodValue.text = valueDesc binding.clCurTg.tvBloodValue.text = if (data != null) {
if (data.tg > 0) {
data.tg.toString()
} else {
valueDesc
}
} else {
valueDesc
}
binding.clCurTg.tvTestTime.text = "mmol/L ${ binding.clCurTg.tvTestTime.text = "mmol/L ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format) Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}" }"
binding.clCurTg.mOrganView.tvFirstValue.text = SpannableUtils.setSpan( binding.clCurTg.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") 0,
Color.parseColor("#313131")
) )
binding.clCurTg.mOrganView.tvSecondValue.text = SpannableUtils.setSpan( binding.clCurTg.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") tgAbNormalTime,
Color.parseColor("#313131")
) )
binding.clCurHdl.tvBloodValue.text = valueDesc binding.clCurHdl.tvBloodValue.text = if (data != null) {
if (data.hdl > 0) {
data.hdl.toString()
} else {
valueDesc
}
} else {
valueDesc
}
binding.clCurHdl.tvTestTime.text = "mmol/L ${ binding.clCurHdl.tvTestTime.text = "mmol/L ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format) Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}" }"
binding.clCurHdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan( binding.clCurHdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") 0,
Color.parseColor("#313131")
) )
binding.clCurHdl.mOrganView.tvSecondValue.text = SpannableUtils.setSpan( binding.clCurHdl.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") hdlAbNormalTime,
Color.parseColor("#313131")
) )
binding.clCurLdl.tvBloodValue.text = valueDesc binding.clCurLdl.tvBloodValue.text = if (data != null) {
if (data.ldl > 0) {
data.ldl.toString()
} else {
valueDesc
}
} else {
valueDesc
}
binding.clCurLdl.tvTestTime.text = "mmol/L ${ binding.clCurLdl.tvTestTime.text = "mmol/L ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format) Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}" }"
binding.clCurLdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan( binding.clCurLdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") 0,
Color.parseColor("#313131")
) )
binding.clCurLdl.mOrganView.tvSecondValue.text = SpannableUtils.setSpan( binding.clCurLdl.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131") ldlAbNormalTime,
Color.parseColor("#313131")
) )
} }
@ -1575,6 +1691,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
binding.tvRenew.visibility = View.GONE binding.tvRenew.visibility = View.GONE
binding.compareTv.visibility = View.VISIBLE binding.compareTv.visibility = View.VISIBLE
binding.llRenew.visibility = View.GONE binding.llRenew.visibility = View.GONE
binding.tvEndTime.text = "2088-12-21 18:00:00"
binding.clCurTc.tvBloodValue.text = "5.07" binding.clCurTc.tvBloodValue.text = "5.07"
binding.clCurTc.tvTestTime.text = "mmol/L ${ binding.clCurTc.tvTestTime.text = "mmol/L ${

@ -1,43 +1,40 @@
package com.zj365.health.fragment.bloodlipid package com.zj365.health.fragment.bloodlipid
import kotlin.math.max import kotlin.math.max
import kotlin.math.min
object BloodLipidGetMinMaxChart { object BloodLipidGetMinMaxChart {
fun getBloodLipidMax(maxValue: Float, maxCompareValue: Float): Float {
fun getBloodLipidMax(maxValue:Float,maxCompareValue: Float):Float{ val max = if (maxValue != 0f && maxCompareValue != 0f) {
val max = if (maxValue != 0f && maxCompareValue != 0f) { if (maxValue > maxCompareValue) {
if(maxValue >maxCompareValue){
maxValue maxValue
}else{ } else {
maxCompareValue maxCompareValue
} }
} else if (maxValue== 0f && maxCompareValue != 0f) { } else if (maxValue == 0f && maxCompareValue != 0f) {
maxCompareValue maxCompareValue
} else if(maxValue!= 0f && maxCompareValue== 0f) { } else if (maxValue != 0f && maxCompareValue == 0f) {
maxValue maxValue
}else{ } else {
max(maxValue,maxCompareValue) max(maxValue, maxCompareValue)
} }
return max return max
} }
fun getBloodLipidMix(minValue:Float,minCompareValue: Float):Float{
fun getBloodLipidMix(minValue: Float, minCompareValue: Float): Float {
val mix = if (minValue != 0f && minCompareValue != 0f) { val mix = if (minValue != 0f && minCompareValue != 0f) {
if(minValue >minCompareValue){ if (minValue > minCompareValue) {
minValue
}else{
minCompareValue minCompareValue
} else {
minValue
} }
} else if (minValue== 0f && minCompareValue != 0f) { } else if (minValue == 0f && minCompareValue != 0f) {
minCompareValue
} else if(minValue!= 0f && minCompareValue== 0f) {
minValue minValue
}else{ } else if (minValue != 0f && minCompareValue == 0f) {
max(minValue,minCompareValue) minCompareValue
} else {
min(minValue, minCompareValue)
} }
return mix return mix
} }
} }

@ -8,7 +8,6 @@ import org.json.JSONObject
class BloodFatCompareVm : BaseVm() { class BloodFatCompareVm : BaseVm() {
// val avgLive by lazy { MutableLiveData<MutableMap<Int, XlAvg>>() }
val dataLive by lazy { MutableLiveData<RespBody< BloodLipidDataBean>>() } val dataLive by lazy { MutableLiveData<RespBody< BloodLipidDataBean>>() }
val setting by lazy { MutableLiveData<RespBody<List<InfoSetting>>>() } val setting by lazy { MutableLiveData<RespBody<List<InfoSetting>>>() }

@ -12,34 +12,24 @@ class SkinMeasurementVm: BaseVm() {
val payObservable by lazy { MutableLiveData<RespBody<PayBean>>() } val payObservable by lazy { MutableLiveData<RespBody<PayBean>>() }
val haveOrder by lazy { MutableLiveData<RespBody<Boolean>>() }
fun getAIoods(){ fun getAIGoods(){
startHttp { startHttp {
apiInterface().getTongueGoods() apiInterface().getTongueGoods()
var response = apiInterface().getTongueGoods() var response = apiInterface().getAISugarMedicineGoods()
response.getCodeStatus(payGoodsObservable, nowData) response.getCodeStatus(payGoodsObservable, nowData)
} }
} }
//获取有无未完成订单
fun aiHasNoFinishOrder() {
startHttp {
var json = JSONObject()
var response =
apiInterface().tongueHasNoFinishOrder(retrofits.getRequestBody(json.toString()))
response.getCodeStatus(haveOrder, nowData)
}
}
//获取支付信息 //获取支付信息
fun payTongueOrder(goodsId:String,isWeChatPay:Boolean){ fun payAISugarMedicineOrder(goodsId:String,isWeChatPay:Boolean){
startHttp { startHttp {
var json = JSONObject() var json = JSONObject()
json.put("goodsId",goodsId) json.put("goodsId",goodsId)
json.put("channelName", if (isWeChatPay) "WEIXIN_APP" else "ALIPAY_APP") json.put("channelName", if (isWeChatPay) "WEIXIN_APP" else "ALIPAY_APP")
var response = apiInterface().payTongueOrder(retrofits.getRequestBody(json.toString())) var response = apiInterface().payAISugarMedicineOrder(retrofits.getRequestBody(json.toString()))
response.getCodeStatus(payObservable, nowData) response.getCodeStatus(payObservable, nowData)
} }
} }

@ -9,10 +9,24 @@
android:id="@+id/title" android:id="@+id/title"
layout="@layout/title_white_bar" /> layout="@layout/title_white_bar" />
<TextView
android:id="@+id/mTip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_14"
android:drawableEnd="@mipmap/ic_data_none"
android:drawablePadding="@dimen/dp_6"
android:text="注:血脂校准须知"
android:textColor="@color/col_f23"
android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/title" android:layout_below="@+id/mTip"
android:layout_marginTop="@dimen/dp_14"> android:layout_marginTop="@dimen/dp_14">
<LinearLayout <LinearLayout

@ -701,7 +701,22 @@
</LinearLayout> </LinearLayout>
<LinearLayout <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewGridding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_6"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_6"/>
<!--<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6" android:layout_marginStart="@dimen/dp_6"
@ -806,7 +821,7 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>-->
</LinearLayout> </LinearLayout>

@ -711,7 +711,22 @@
</LinearLayout> </LinearLayout>
<LinearLayout <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewGridding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_16"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"/>
<!--<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16" android:layout_marginStart="@dimen/dp_16"
@ -816,7 +831,7 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>-->
</LinearLayout> </LinearLayout>

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/ic_bg_mask_xinlv"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="5dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tvXueZhiData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="93%"
android:textColor="@color/col_c7c"
android:textSize="@dimen/sp_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="mmol/L"
android:textColor="@color/col_c7c"
android:textSize="@dimen/sp_10" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tvXueZhiTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6.5小时"
android:textColor="@color/col_c7c"
android:textSize="@dimen/sp_10" />
</LinearLayout>
</LinearLayout>

@ -7,23 +7,26 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/col_6f7" android:background="@color/col_6f7"
android:orientation="vertical"> android:orientation="vertical">
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/nested_scroll_view" android:id="@+id/nested_scroll_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="vertical" android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_14" android:layout_margin="@dimen/dp_14"
android:background="@drawable/shape_round_white" android:background="@drawable/shape_round_white"
android:layout_height="wrap_content"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -33,7 +36,8 @@
android:id="@+id/commonTabLayout" android:id="@+id/commonTabLayout"
android:layout_width="@dimen/dp_150" android:layout_width="@dimen/dp_150"
android:layout_height="@dimen/dp_40" android:layout_height="@dimen/dp_40"
android:layout_marginEnd="@dimen/dp_12" android:layout_marginTop="@dimen/dp_4"
android:layout_marginStart="@dimen/dp_4"
app:tl_iconVisible="false" app:tl_iconVisible="false"
app:tl_indicator_color="@color/col_02c" app:tl_indicator_color="@color/col_02c"
app:tl_indicator_corner_radius="@dimen/dp_2" app:tl_indicator_corner_radius="@dimen/dp_2"
@ -46,111 +50,127 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginHorizontal="@dimen/dp_16">
<TextView <TextView
android:id="@+id/show_title" android:id="@+id/show_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/dp_10" android:layout_gravity="center_vertical"
android:drawableLeft="@drawable/shape_dot_9bd" android:drawableStart="@drawable/shape_dot_9bd"
android:drawablePadding="@dimen/dp_10" android:drawablePadding="@dimen/dp_10"
android:textColor="@color/col_313"
android:text="选择日期" android:text="选择日期"
android:textSize="@dimen/dp_16"/> android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
<TextView <TextView
android:id="@+id/tvShowDate" android:id="@+id/tvShowDate"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_40" android:layout_height="wrap_content"
tools:text="2023-02-24 至 2023-02-24" android:paddingVertical="@dimen/dp_18"
android:drawableEnd="@mipmap/arrow_right"
android:drawablePadding="@dimen/dp_5"
android:gravity="center_vertical|right" android:gravity="center_vertical|right"
android:layout_marginRight="@dimen/dp_6"
android:drawableRight="@mipmap/arrow_right"
android:textColor="@color/col_c7c" android:textColor="@color/col_c7c"
android:textSize="@dimen/dp_14" android:textSize="@dimen/sp_15"
android:drawablePadding="@dimen/dp_5"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints" /> tools:ignore="MissingConstraints,RtlHardcoded,UseCompatTextViewDrawableXml"
tools:text="2023-02-24 至 2023-02-24" />
</LinearLayout> </LinearLayout>
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_20" android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_20" android:background="@color/picture_color_f2" />
android:background="@color/picture_color_f2"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_16"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/hide_title" android:id="@+id/hide_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/dp_10" android:drawableStart="@drawable/shape_dot_96d"
android:drawableLeft="@drawable/shape_dot_96d"
android:drawablePadding="@dimen/dp_10" android:drawablePadding="@dimen/dp_10"
android:textColor="@color/col_313" android:layout_gravity="center_vertical"
android:text="对比日期" android:text="对比日期"
android:textSize="@dimen/dp_16"/> android:textColor="@color/col_313"
android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
<TextView <TextView
android:id="@+id/tvHideDate" android:id="@+id/tvHideDate"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_40" android:layout_height="wrap_content"
tools:text="2023-02-24" android:paddingVertical="@dimen/dp_18"
android:layout_marginRight="@dimen/dp_6" android:drawableEnd="@mipmap/arrow_right"
android:drawablePadding="@dimen/dp_4"
android:gravity="center_vertical|right" android:gravity="center_vertical|right"
android:drawableRight="@mipmap/arrow_right"
android:textColor="@color/col_c7c" android:textColor="@color/col_c7c"
android:textSize="@dimen/dp_14" android:textSize="@dimen/sp_15"
android:drawablePadding="@dimen/dp_4"/> tools:text="2023-02-24"
tools:ignore="RtlHardcoded,UseCompatTextViewDrawableXml" />
</LinearLayout> </LinearLayout>
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_20" android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_20" android:background="@color/picture_color_f2" />
android:background="@color/picture_color_f2"/>
</LinearLayout> </LinearLayout>
<!--CombinedChart 线形图与柱状图混合体--> <!--CombinedChart 线形图与柱状图混合体-->
<include <include
android:id="@+id/cl_tc" android:id="@+id/cl_tc"
layout="@layout/layout_blood_lipid_data_view"/> layout="@layout/layout_blood_lipid_data_view" />
<include <include
android:id="@+id/cl_tg" android:id="@+id/cl_tg"
layout="@layout/layout_blood_lipid_data_view"/> layout="@layout/layout_blood_lipid_data_view" />
<include <include
android:id="@+id/cl_hdl" android:id="@+id/cl_hdl"
layout="@layout/layout_blood_lipid_data_view"/> layout="@layout/layout_blood_lipid_data_view" />
<include <include
android:id="@+id/cl_ldl" android:id="@+id/cl_ldl"
layout="@layout/layout_blood_lipid_data_view"/> layout="@layout/layout_blood_lipid_data_view" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="vertical" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_14" android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14" android:layout_marginRight="@dimen/dp_14"
android:layout_marginBottom="@dimen/dp_14" android:layout_marginBottom="@dimen/dp_14"
android:background="@drawable/shape_round_white" android:background="@drawable/shape_round_white"
android:layout_height="wrap_content"> android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/dp_10" android:layout_marginTop="@dimen/dp_22"
android:drawableLeft="@drawable/shape_head_tip_new" android:layout_marginStart="@dimen/dp_16"
android:drawableStart="@drawable/shape_head_tip_new"
android:drawablePadding="@dimen/dp_10" android:drawablePadding="@dimen/dp_10"
android:text="血脂对比结论分析"
android:textColor="@color/col_313" android:textColor="@color/col_313"
android:textSize="@dimen/sp_17"
android:textStyle="bold" android:textStyle="bold"
android:text="血脂对比结论分析" tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
android:textSize="@dimen/sp_17"/>
<TextView <TextView
android:id="@+id/comprehensiveBlContent" android:id="@+id/comprehensiveBlContent"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -158,22 +178,24 @@
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_20"
android:padding="@dimen/dp_10" android:padding="@dimen/dp_10"
android:textColor="@color/col_c7c" android:textColor="@color/col_c7c"
tools:text="对于多数人来说是正常的不必过于担心。窦性心动过缓是指心率低于60次/分钟的人是否会出现此症状与其心跳过缓的频率和引起心跳过缓的原因有关。在安静状态下。长期从事体力劳动的人一般人的心率若在4050次/分钟之间。" android:textSize="@dimen/sp_13"
android:textSize="@dimen/sp_13"/> tools:text="对于多数人来说是正常的不必过于担心。窦性心动过缓是指心率低于60次/分钟的人是否会出现此症状与其心跳过缓的频率和引起心跳过缓的原因有关。在安静状态下。长期从事体力劳动的人一般人的心率若在4050次/分钟之间。" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="@dimen/dp_15"
android:textColor="@color/read_dot_bg"
android:layout_marginLeft="@dimen/dp_14" android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14" android:layout_marginRight="@dimen/dp_14"
android:layout_marginBottom="@dimen/dp_14" android:layout_marginBottom="@dimen/dp_14"
android:text="温馨提示:手表数据仅作为参考,不作为诊断、治疗依据。"
android:textColor="@color/read_dot_bg"
android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText" />
android:text="温馨提示:手表数据仅作为参考,不作为诊断、治疗依据。"/>
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</LinearLayout> </LinearLayout>

@ -29,19 +29,20 @@
android:id="@+id/compare_tv" android:id="@+id/compare_tv"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_16" android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_22" android:layout_marginTop="@dimen/dp_22"
android:layout_marginRight="@dimen/dp_12" android:layout_marginEnd="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_27" android:layout_marginBottom="@dimen/dp_27"
android:drawableRight="@mipmap/arrow_right" android:drawableEnd="@mipmap/arrow_right"
android:drawablePadding="@dimen/dp_6" android:drawablePadding="@dimen/dp_6"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="查看数据对比" android:text="查看数据对比"
android:textColor="@color/col_c7c" android:textColor="@color/col_c7c"
android:textSize="@dimen/dp_13" android:textSize="@dimen/sp_13"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
<TextView <TextView
android:id="@+id/tvOpen" android:id="@+id/tvOpen"
@ -68,24 +69,25 @@
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_16" android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_22" android:layout_marginTop="@dimen/dp_22"
android:drawableLeft="@drawable/shape_head_tip_new" android:drawableStart="@drawable/shape_head_tip_new"
android:drawablePadding="@dimen/dp_10" android:drawablePadding="@dimen/dp_10"
android:text="当前血脂" android:text="当前血脂"
android:textColor="#313131" android:textColor="#313131"
android:textSize="@dimen/sp_17" android:textSize="@dimen/sp_17"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText,UseCompatTextViewDrawableXml" />
<LinearLayout <LinearLayout
android:id="@+id/ll_value" android:id="@+id/ll_value"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_16" android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_17" android:layout_marginTop="@dimen/dp_17"
android:layout_marginBottom="@dimen/dp_15" android:layout_marginBottom="@dimen/dp_22"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -118,12 +120,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_25" /> android:layout_marginTop="@dimen/dp_25" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_blood_fat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<LinearLayout <LinearLayout
android:id="@+id/ll_renew" android:id="@+id/ll_renew"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -135,13 +131,14 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_horizontal"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:id="@+id/tv_end_time" android:id="@+id/tv_end_time"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textColor="@color/col_7c7" android:textColor="@color/col_7c7"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
tools:text="2023-02-24 15:41:05" /> tools:text="2023-02-24 15:41:05" />
@ -150,12 +147,15 @@
android:id="@+id/tv_renew" android:id="@+id/tv_renew"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_9" android:layout_gravity="center_vertical"
android:text="续费" android:paddingStart="@dimen/dp_9"
android:textColor="@color/col_02c" android:text="立即续费"
android:textSize="@dimen/sp_12" android:textColor="@color/red_ff"
android:textSize="@dimen/sp_15"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" /> android:visibility="gone"
tools:ignore="HardcodedText,RtlSymmetry"
tools:visibility="visible" />
</LinearLayout> </LinearLayout>
@ -164,12 +164,12 @@
android:layout_width="@dimen/dp_77" android:layout_width="@dimen/dp_77"
android:layout_height="@dimen/dp_31" android:layout_height="@dimen/dp_31"
android:layout_marginTop="@dimen/dp_12" android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_18"
android:background="@drawable/shape_r15_storke_25c" android:background="@drawable/shape_r15_storke_25c"
android:gravity="center" android:gravity="center"
android:text="血脂校准" android:text="血脂校准"
android:textColor="@color/col_02c" android:textColor="@color/col_02c"
android:textSize="@dimen/sp_13" /> android:textSize="@dimen/sp_13"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
@ -232,7 +232,8 @@
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ivPosition" app:layout_constraintEnd_toStartOf="@+id/ivPosition"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tvShowDate" android:id="@+id/tvShowDate"
@ -243,7 +244,8 @@
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ivPosition" app:layout_constraintEnd_toStartOf="@+id/ivPosition"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -268,11 +270,12 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_17" android:layout_marginTop="@dimen/dp_11"
android:layout_marginBottom="@dimen/dp_40" android:layout_marginBottom="@dimen/dp_40"
android:text="温馨提示:手表数据仅作为参考,不作为诊断、治疗依据。" android:text="温馨提示:手表数据仅作为参考,不作为诊断、治疗依据。"
android:textColor="@color/col_2628" android:textColor="@color/col_2628"
android:textSize="@dimen/sp_15" /> android:textSize="@dimen/sp_15"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@ -13,8 +13,8 @@
<LinearLayout <LinearLayout
android:layout_width="@dimen/dp_129" android:layout_width="@dimen/dp_129"
android:layout_height="@dimen/dp_129" android:layout_height="@dimen/dp_129"
android:gravity="center" android:background="@mipmap/ic_bg_oval"
android:background="@mipmap/ic_bg_oval" > android:gravity="center">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -39,9 +39,11 @@
android:layout_gravity="center" android:layout_gravity="center"
android:textColor="@color/col_6B6" android:textColor="@color/col_6B6"
android:textSize="@dimen/sp_11" android:textSize="@dimen/sp_11"
tools:text="mmol/L 16:30" android:textStyle="bold"
android:textStyle="bold" /> tools:text="mmol/L 16:30" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -54,10 +56,10 @@
android:id="@+id/tv_blood_name" android:id="@+id/tv_blood_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="总胆固醇(TC)"
android:layout_marginTop="@dimen/dp_22" android:layout_marginTop="@dimen/dp_22"
android:textSize="@dimen/sp_16" android:text="总胆固醇(TC)"
android:textColor="@color/col_313"/> android:textColor="@color/col_313"
android:textSize="@dimen/sp_16" />
<include <include
android:id="@+id/mOrganView" android:id="@+id/mOrganView"
@ -67,16 +69,17 @@
android:layout_marginBottom="@dimen/dp_20" /> android:layout_marginBottom="@dimen/dp_20" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<View <View
android:id="@+id/v_line" android:id="@+id/v_line"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:visibility="gone"
android:layout_marginStart="@dimen/dp_15" android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_11" android:layout_marginTop="@dimen/dp_11"
android:background="@color/col_6f7"/> android:layout_marginEnd="@dimen/dp_15"
android:background="@color/col_6f7"
android:visibility="gone" />
</LinearLayout> </LinearLayout>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvSignData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_13"
android:textColor="@color/col_c7c"
android:textSize="@dimen/sp_13"
tools:text="平均心率: 92次/分" />
</LinearLayout>

@ -1559,6 +1559,18 @@ interface ApiInterface {
@POST("customer/tongue/order/getTongueGoods") @POST("customer/tongue/order/getTongueGoods")
suspend fun getTongueGoods(): RespBody<PayGoodsBean> suspend fun getTongueGoods(): RespBody<PayGoodsBean>
/**
* AI 糖医
*/
@POST("customer/sugarMedicine/getSugarMedicineGoods")
suspend fun getAISugarMedicineGoods():RespBody<PayGoodsBean>
/**
* AI 糖医支付
*/
@POST("pay/paySugarMedicineOrder")
suspend fun payAISugarMedicineOrder(@Body rb: RequestBody): RespBody<PayBean>
//上传信息 //上传信息
@POST("customer/tongue/order/updateOrder") @POST("customer/tongue/order/updateOrder")
suspend fun updateTongueOrder(@Body rb: RequestBody): RespBody<Any> suspend fun updateTongueOrder(@Body rb: RequestBody): RespBody<Any>
@ -1886,7 +1898,7 @@ interface ApiInterface {
* 创建订单 * 创建订单
*/ */
@POST("customer/mall/order/createOrder") @POST("customer/mall/order/createOrder")
suspend fun createOrder(@Body rb: RequestBody):RespBody<Any> suspend fun createOrder(@Body rb: RequestBody):RespBody<ShopGoodsOrderBean>
/** /**
* 确认收货 * 确认收货

@ -81,12 +81,16 @@ data class BloodFatBean(
data class ModelCompare( data class ModelCompare(
var uaValue: Float, var uaValue: Float,
var time: String, var time: String,
var formatTime: String = "" var formatTime: String = "",
var index: Int = 0
) )
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
fun mapDataToTime(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> { fun mapDataToTime(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val mappedData = mutableListOf<ModelCompare>() val mappedData = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("HH:mm", Locale.getDefault()) val dateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
// 创建一天的时间节点 // 创建一天的时间节点
@ -164,6 +168,9 @@ data class BloodFatBean(
dataList: MutableList<ModelCompare>, dataList: MutableList<ModelCompare>,
month: String month: String
): MutableList<ModelCompare> { ): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>() val filledDataList = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("MM-dd", Locale.getDefault()) val dateFormat = SimpleDateFormat("MM-dd", Locale.getDefault())
@ -213,6 +220,9 @@ data class BloodFatBean(
startDate: String, startDate: String,
endDate: String endDate: String
): MutableList<ModelCompare> { ): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>() val filledDataList = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
@ -292,6 +302,9 @@ data class BloodFatBean(
} }
fun fillMissingData(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> { fun fillMissingData(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>() val filledDataList = mutableListOf<ModelCompare>()
// 初始化日期范围 // 初始化日期范围

@ -32,19 +32,19 @@ data class BloodLipidDataBean(
val tcNormal:Int, val tcNormal:Int,
val avgTg:Float, val avgTg:Float,
val avgTc:Float, val avgTc:Float,
val tgNormal:Float, val tgNormal:Int,
val minTc:Float, val minTc:Float,
val minTg:Float, val minTg:Float,
val hdlAbnormal:Float, val hdlAbnormal:Int,
val avgLdl:Float, val avgLdl:Float,
val hdlNormal:Float, val hdlNormal:Int,
val minLdl:Float, val minLdl:Float,
val maxTg:Float, val maxTg:Float,
val ldlNormal:Float, val ldlNormal:Int,
val ldlAbnormal:Float, val ldlAbnormal:Int,
val maxTc:Float, val maxTc:Float,
val maxLdl:Float, val maxLdl:Float,
val tgAbnormal:Float val tgAbnormal:Int
) )
@ -77,17 +77,17 @@ data class BloodLipidDataBean(
var endTime = calendar.time var endTime = calendar.time
// 如果是时间是今天endTime为最近的时间 // 如果是时间是今天endTime为最近的时间
/* val now = Calendar.getInstance() /* val now = Calendar.getInstance()
val today = now.clone() as Calendar val today = now.clone() as Calendar
now.timeInMillis = now.timeInMillis =
if (dataList.isEmpty()) System.currentTimeMillis() else dataList.first().time.toLong() * 1000 if (dataList.isEmpty()) System.currentTimeMillis() else dataList.first().time.toLong() * 1000
if (today.get(Calendar.YEAR) == now.get(Calendar.YEAR) && if (today.get(Calendar.YEAR) == now.get(Calendar.YEAR) &&
today.get(Calendar.DAY_OF_YEAR) == now.get(Calendar.DAY_OF_YEAR) today.get(Calendar.DAY_OF_YEAR) == now.get(Calendar.DAY_OF_YEAR)
) { ) {
// If today, use the last time in the range // If today, use the last time in the range
endTime = now.time endTime = now.time
}*/ }*/
// 初始化时间节点和默认值 // 初始化时间节点和默认值
var currentTime = startTime var currentTime = startTime

@ -5,7 +5,7 @@ import java.io.Serializable
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Calendar import java.util.Calendar
data class ReportBean ( data class ReportBean(
val adorn: Adorn,//佩戴信息 val adorn: Adorn,//佩戴信息
val status: String?, val status: String?,
val star: String,//星级评分 val star: String,//星级评分
@ -18,66 +18,68 @@ data class ReportBean (
var healthTotal: List<totalBean>, //健康统计 var healthTotal: List<totalBean>, //健康统计
var healthTrend: List<ChildStatus>, //健康趋势 var healthTrend: List<ChildStatus>, //健康趋势
var statistical: List<StatisTical>? = null, //统计测量 var statistical: List<StatisTical>? = null, //统计测量
var signData:SingData,//基础信息 var signData: SingData,//基础信息
var notifyMsg:String,//预警消息 var notifyMsg: String,//预警消息
override var itemType: Int) override var itemType: Int
: MultiItemEntity, Serializable { ) : MultiItemEntity, Serializable {
data class SingData ( data class SingData(
var temp:HrInfo,//体温 var temp: HrInfo,//体温
var dbp:HrInfo,//血压 var dbp: HrInfo,//血压
var hr:HrInfo,//心率 var hr: HrInfo,//心率
var so:HrInfo,//血氧 var so: HrInfo,//血氧
var uricAcid:UricAcid,//尿酸 var uricAcid: UricAcid,//尿酸
var step:HrInfo,//步数 var step: HrInfo,//步数
var stepData:HrInfo,//步数 var stepData: HrInfo,//步数
var respiratory:HrInfo,//呼吸率 var respiratory: HrInfo,//呼吸率
var bloodSugar:HrInfo,//血糖 var bloodSugar: HrInfo,//血糖
var sleep:HrInfo,//睡眠 var sleep: HrInfo,//睡眠
var bloodFat:BloodFatInfo //血脂 var bloodFat: BloodFatInfo //血脂
): Serializable ) : Serializable
data class UricAcid(val min: String,val max:String,val avg:String,val count: String):Serializable data class UricAcid(
val min: String,
val max: String,
val avg: String,
val count: String
) : Serializable
data class HrInfo( data class HrInfo(
var name:String, //名字 var name: String, //名字
var avg:String, //平均 var avg: String, //平均
var min:String,//最小 var min: String,//最小
var max:String,//最大 var max: String,//最大
var count:String,//次数 var count: String,//次数
var step:String,//步数 var step: String,//步数
var srcId:Int,//图片ID var srcId: Int,//图片ID
var avgLight:String? = null,//平均浅睡 var avgLight: String? = null,//平均浅睡
var maxTime:String?= null,//最大睡眠时间 var maxTime: String? = null,//最大睡眠时间
var avgTime:String?=null,//平均睡眠时间 var avgTime: String? = null,//平均睡眠时间
var minTime:String?=null,//最少睡眠时间 var minTime: String? = null,//最少睡眠时间
var avgDeep:String?=null,//平均深睡 var avgDeep: String? = null,//平均深睡
var sleepDuration:Int?=null//(周近7天近30天)睡眠时长 var sleepDuration: Int? = null//(周近7天近30天)睡眠时长
) : Serializable
): Serializable
data class BloodFatInfo( data class BloodFatInfo(
val ldlMin:Float, val ldlMin: Float,
val ldlAvg:Float, val ldlAvg: String,
val tgMax:Float, val tgMax: Float,
val tcMax:Float, val tcMax: Float,
val count:Int, val count: Int,
val hdlMin:Float, val hdlMin: Float,
val hdlAvg:Float, val hdlAvg: String,
val tgMin:Float, val tgMin: Float,
val tgAvg: String,
val tgAvg:String, val ldlMax: Float,
val ldlMax:Float, val tcMin: Float,
val tcMin:Float, val tcAvg: String,
val hdlMax: Float
val tcAvg:Float,
val hdlMax:Float ) : Serializable
):Serializable
data class totalBean( data class totalBean(
var result : Int, var result: Int,
var count : Int, var count: Int,
):Serializable ) : Serializable
data class Organ( data class Organ(
var kidney: OrganChild,//肾脏 var kidney: OrganChild,//肾脏
@ -90,9 +92,9 @@ data class ReportBean (
var cholecystListData: List<ChildStatus>, var cholecystListData: List<ChildStatus>,
var liver: OrganChild, //肝脏 var liver: OrganChild, //肝脏
var liverListData: List<ChildStatus>, var liverListData: List<ChildStatus>,
var spleen:OrganChild,//脾脏 var spleen: OrganChild,//脾脏
var spleenListData: List<ChildStatus>, var spleenListData: List<ChildStatus>,
var largeIntestine:OrganChild, //大肠 var largeIntestine: OrganChild, //大肠
var largeIntestineListData: List<ChildStatus>, var largeIntestineListData: List<ChildStatus>,
var bladder: OrganChild, //膀胱 var bladder: OrganChild, //膀胱
var bladderListData: List<ChildStatus>, var bladderListData: List<ChildStatus>,
@ -104,12 +106,12 @@ data class ReportBean (
var smallIntestineListData: List<ChildStatus>, var smallIntestineListData: List<ChildStatus>,
var heart: OrganChild, //心脏 var heart: OrganChild, //心脏
var heartListData: List<ChildStatus>, var heartListData: List<ChildStatus>,
): Serializable ) : Serializable
data class OrganChild( data class OrganChild(
var model:ChildStatus, var model: ChildStatus,
var value:List<ChildStatus>, var value: List<ChildStatus>,
): Serializable ) : Serializable
data class Analysis( data class Analysis(
var sleep: List<Content>? = null, //睡眠方案建议 var sleep: List<Content>? = null, //睡眠方案建议
@ -120,20 +122,21 @@ data class ReportBean (
var exercise: List<Content>? = null,//运动指导 var exercise: List<Content>? = null,//运动指导
var tcm: List<Content>? = null,//中医养生指导 var tcm: List<Content>? = null,//中医养生指导
var diet: List<Content>? = null,//饮食指导 var diet: List<Content>? = null,//饮食指导
): Serializable ) : Serializable
data class Healthy( data class Healthy(
var healthyId:String, var healthyId: String,
var userId:String, var userId: String,
var createTime:String, var createTime: String,
var result:Int,// -1 建模中 0数据不足 1健康 2亚健康 3疾病 var result: Int,// -1 建模中 0数据不足 1健康 2亚健康 3疾病
): Serializable ) : Serializable
data class Content( data class Content(
var name: String, var name: String,
var dictName: String, var dictName: String,
var content: String var content: String
): Serializable ) : Serializable
data class Analyse( data class Analyse(
val sleep: String, val sleep: String,
@ -144,14 +147,20 @@ data class ReportBean (
val so: String, val so: String,
val respiratory: String, val respiratory: String,
val status: String,//-1 建模中 0数据不足 1健康 2亚健康 3疾病 val status: String,//-1 建模中 0数据不足 1健康 2亚健康 3疾病
val hr: String val hr: String,
): Serializable val bloodsugar: String,
val uricAcid: String,//尿酸
val tc: String,//总胆固醇
val tg: String,//甘油三酯
val hdl: String,//高密度脂蛋白
val ldl: String//低密度脂蛋白
) : Serializable
data class Adorn( data class Adorn(
val activeWear: Int, val activeWear: Int,
val dormancy: Int, val dormancy: Int,
val wearCount: Int val wearCount: Int
): Serializable ) : Serializable
data class User( data class User(
val actCity: Any, val actCity: Any,
@ -207,12 +216,14 @@ data class ReportBean (
var historyName: String, var historyName: String,
var tumour: String, var tumour: String,
var diseaseList: MutableList<Operation> var diseaseList: MutableList<Operation>
): Serializable ) : Serializable
data class Operation( data class Operation(
var name:String, var name: String,
var time:String, var time: String,
var type:Int var type: Int
): Serializable ) : Serializable
data class StatisTical( data class StatisTical(
var start_time: Long, var start_time: Long,
var min: Int, var min: Int,
@ -221,7 +232,7 @@ data class ReportBean (
var minStartTime: Long, var minStartTime: Long,
var count: Int, var count: Int,
var validCount: Int, var validCount: Int,
): Serializable ) : Serializable
data class ChildStatus( data class ChildStatus(
var id: Int, var id: Int,
@ -230,8 +241,8 @@ data class ReportBean (
var sumNoEnough: Int,//-1建模中>=0,完成了经络分析 var sumNoEnough: Int,//-1建模中>=0,完成了经络分析
var userId: Int, var userId: Int,
var createTime: String, var createTime: String,
): Serializable{ ) : Serializable {
constructor():this(0,0 ,0 ,0,0,"") constructor() : this(0, 0, 0, 0, 0, "")
} }
//演示模式逻辑 //演示模式逻辑

@ -0,0 +1,7 @@
package com.xty.network.model
data class ShopGoodsOrderBean(
var order_no:String,
var pay_price:Double
) {
}
Loading…
Cancel
Save