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

develop
wlh 2 years ago
parent 1faf1b65e5
commit eda1955a7e

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

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

@ -1,18 +1,43 @@
package com.zj365.dc.activity.shop
import android.view.LayoutInflater
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.model.CreateOrderBean
import com.xty.base.utils.PayUtils
import com.xty.base.vm.BaseVm
import com.xty.common.arouter.ARouterUrl
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.databinding.ActCreateGoodsOrderBinding
import com.zj365.dc.vm.ShopMallVm
import com.zj365.health.R
@Route(path = ARouterUrl.CREATE_SHOP_ORDER_ACT)
class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
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() {
mViewModel.createOrderLiveData.observe(this){
PayUtils(this).payForGoods(it.data.pay_price.toFloat(),it.data.order_no)
}
}
override fun initView() {
@ -23,12 +48,36 @@ class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
finish()
}
bean = intent.getParcelableExtra("bean")
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(){
binding.tvPay.setOnClickListener {
bean?.let {
mViewModel.createOrder(it.skuId.toString(),it.skuNum,addrId,couponsId)
}
}
binding.tvChooseAddress.setOnClickListener {
@ -53,4 +102,5 @@ class CreateGoodsOrderAct : BaseVmAct<ShopMallVm>() {
override fun setLayout()=binding.root
}

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

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

@ -626,17 +626,69 @@ class DynamicManagementVm : BaseVm() {
)
)
}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(
HealthMonitoringListBean(
"血脂",
0,
"",
"敬请期待",
statusXZ,
mTimeXZ,
contentXZ,
R.mipmap.bg_fat,
R.mipmap.ic_fat,
10,
it.type,
calorie = bean.healthCount.toString()
it.type
)
)
}

@ -6,6 +6,7 @@ import com.xty.base.vm.BaseVm
import com.xty.network.model.GoodsRecordsBean
import com.xty.network.model.RespBody
import com.xty.network.model.ShopCategoryBean
import com.xty.network.model.ShopGoodsOrderBean
class ShopMallVm : BaseVm() {
@ -13,7 +14,7 @@ class ShopMallVm : BaseVm() {
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){
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 {
var json = JSONObject()
json.put("skuId",skuId)
json.put("num",num)
json.put("addrId",addrId)
json.put("couponsId",couponsId)
addrId?.let {
json.put("addrId",it)
}
couponsId?.let {
json.put("couponsId",it)
}
var code = apiInterface().createOrder(retrofits.getRequestBody(json.toString()))
code.getCodeStatus(createOrderLiveData, nowData)
}

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

@ -6,6 +6,7 @@ import android.webkit.JavascriptInterface
import com.blankj.utilcode.util.GsonUtils
import com.google.gson.Gson
import com.xty.base.act.BaseVmAct
import com.xty.base.model.CreateOrderBean
import com.xty.base.model.ScienceDetailBean
import com.xty.base.model.WatchReChangeBean
import com.xty.base.utils.PayUtils
@ -86,7 +87,10 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
@JavascriptInterface
fun createOrder(str: String?){
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总胆固醇
return if (statu <= 5.20) {
return if (statu > 2.82f && statu < 5.21f) {//2.83-5.20
"正常"
} else {
"异常"
@ -206,7 +205,7 @@ object OrganStatusCalcUtil {
}
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
} else {
1
@ -214,8 +213,7 @@ object OrganStatusCalcUtil {
}
fun tgStatuText(statu: Float): String {//tg甘油三酯
return if (statu <= 1.69) {
return if (statu > 0.44f && statu < 1.70f) {//0.45-1.69
"正常"
} else {
"异常"
@ -223,15 +221,14 @@ object OrganStatusCalcUtil {
}
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
} else {
1
}
}
fun hdlStatuText(statu: Float): String {//hdl高密度脂蛋白
return if (statu >= 0.93) {
return if(statu > 0.92f && statu < 1.94f) {//0.93-1.93
"正常"
} else {
"异常"
@ -239,7 +236,7 @@ object OrganStatusCalcUtil {
}
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
} else {
1
@ -247,8 +244,7 @@ object OrganStatusCalcUtil {
}
fun ldlStatuText(statu: Float): String {//ldl低密度脂蛋白
return if (statu <= 3.12) {
return if (statu > -1f && statu < 3.13f) {//0.0-3.12
"正常"
} else {
"异常"
@ -256,7 +252,7 @@ object OrganStatusCalcUtil {
}
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
} else {
1

@ -41,7 +41,71 @@ open class PayUtils(var context: Context) {
var price:Float? = null
var isPayGoods:Boolean = false
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?.let { dialog ->
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")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
if(isPayGoods){
}else{
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
EventBus.getDefault().post(ReChangeEvent())
}
EventBus.getDefault().post(ReChangeEvent())
} else {
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
)
.show()
if(isPayGoods){
}else{
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
)
.show()
}
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
@ -218,13 +293,18 @@ open class PayUtils(var context: Context) {
bundle.putString("orderNo", orderNo)
bundle.putString("orderType", "1")
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)*/
EventBus.getDefault().post(ReChangeEvent())
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
if(isPayGoods){
}else{
EventBus.getDefault().post(ReChangeEvent())
Toast.makeText(
context,
"支付成功",
Toast.LENGTH_SHORT
)
.show()
}
}
BaseResp.ErrCode.ERR_USER_CANCEL -> {
@ -232,11 +312,16 @@ open class PayUtils(var context: Context) {
}
else -> {
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
).show()
if(isPayGoods){
}else{
Toast.makeText(
context,
"支付失败,请联系客服",
Toast.LENGTH_SHORT
).show()
}
}
}
}

@ -26,6 +26,7 @@ class ARouterUrl {
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_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"

@ -1,18 +1,19 @@
package com.zj365.health.act
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.widget.EditText
import android.widget.TextView
import androidx.core.view.get
import com.alibaba.android.arouter.facade.annotation.Route
import com.hjq.toast.ToastUtils
import com.tamsiree.rxkit.RxKeyboardTool
import com.xty.base.act.BaseVmAct
import com.xty.common.TimeSelect
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.util.ChineseNumberAndNumberUtils
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.PointLengthFilter
import com.zj365.health.R
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.weight.HealthDialog
/**
* 血脂校准
*/
@ -28,7 +30,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
val binding by lazy { ActBloodLipidAdjustBinding.inflate(layoutInflater) }
override fun setLayout() = binding.root
private val MAX_LENGTH=10
val timSelect by lazy {
TimeSelect(this) {
}.apply {
@ -40,7 +42,8 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
private val submitDialog by lazy {
HealthDialog(this, false, "请确保输入数据的准确性,确认是否提交?", true) {
val bloods: MutableList<BloodLipidAdjustBean> = getBloodLipidAdjustData() ?: return@HealthDialog
val bloods: MutableList<BloodLipidAdjustBean> =
getBloodLipidAdjustData() ?: return@HealthDialog
mViewModel.submitBloodLipidAdjustData(bloods)
}
}
@ -51,6 +54,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
finish()
}
}
override fun liveObserver() {
mViewModel.calibrationLive.observe(this) {
successDialog.setCancelable(false)
@ -66,7 +70,7 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
override fun initView() {
super.initView()
binding.title.mTvTitle.text ="血脂校准"
binding.title.mTvTitle.text = "血脂校准"
statusBar(binding.title.mView)
binding.title.mIvBack.setOnClickListener { finish() }
@ -83,15 +87,32 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
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(){
val childView = LayoutInflater.from(this).inflate(R.layout.item_blood_lipid_adjust,null)
@SuppressLint("SetTextI18n")
private fun addChildViews() {
val viewIndex = binding.childLayout.childCount
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.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.mEditHDL).filters = arrayOf(PointLengthFilter(2))
@ -112,42 +133,90 @@ class BloodLipidAdjustAct : BaseVmAct<BloodLipidAdjustVm>() {
else binding.childLayout[index].findViewById(childId)
}
private fun getBloodLipidAdjustData(): MutableList<BloodLipidAdjustBean>?{
val list:MutableList<BloodLipidAdjustBean> = mutableListOf()
for(i in 0 until binding.childLayout.childCount){
private fun getBloodLipidAdjustData(): MutableList<BloodLipidAdjustBean>? {
val list = mutableListOf<BloodLipidAdjustBean>()
for (i in 0 until binding.childLayout.childCount) {
val bloodLipidAdjustBean = BloodLipidAdjustBean()
bloodLipidAdjustBean.bpTime = (getChildView(i,R.id.mVTimeView) as TextView).text.toString()
bloodLipidAdjustBean.tc = (getChildView(i,R.id.mEditCholesterol) as TextView).text.toString()
bloodLipidAdjustBean.tg = (getChildView(i,R.id.mEditTg) as TextView).text.toString()
bloodLipidAdjustBean.hdl = (getChildView(i,R.id.mEditHDL) as TextView).text.toString()
bloodLipidAdjustBean.ldl = (getChildView(i,R.id.mEditLDL) as TextView).text.toString()
if (bloodLipidAdjustBean.bpTime.isNullOrEmpty()){
ToastUtils.show("请选择测量时间")
return null
}
if(bloodLipidAdjustBean.tc.isNullOrEmpty()){
ToastUtils.show("请填写总胆固醇数值")
return null
bloodLipidAdjustBean.bpTime = (getChildView(
i,
R.id.mVTimeView
) as TextView).text.toString()
bloodLipidAdjustBean.tc = (getChildView(
i,
R.id.mEditCholesterol
) as TextView).text.toString()
bloodLipidAdjustBean.tg = (getChildView(
i,
R.id.mEditTg
) as TextView).text.toString()
bloodLipidAdjustBean.hdl = (getChildView(
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"
list.add(bloodLipidAdjustBean)
}
if (list.size < 1) {
CommonToastUtils.showToast("数据不完整,请检查后再提交")
return null
}
return list
}
}

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

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

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

@ -53,6 +53,7 @@ import com.zj365.health.weight.GridDividerItemDecoration
import com.zj365.health.weight.HealthDialog
import com.xty.network.model.ReportBean
import com.xty.network.model.RespBody
import com.zj365.health.adapter.HealthSignDataAdapter
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
@ -107,6 +108,14 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
private val infoAdapter by lazy { DayReportInfoAdapter() }
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>()
@ -562,6 +571,14 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.mTvTime.setOnClickListener {
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 {
@ -911,7 +928,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
)
)
/*if(bsseInfo.bloodFat == null){
if(bsseInfo.bloodFat == null){
listInfo.add(
ReportBean.HrInfo(
"血脂",
@ -936,7 +953,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
R.mipmap.ic_uric_acid_small
)
)
}*/
}
if (bsseInfo.uricAcid == null) { //如果服务端没有返回数据,也就是演示模式,我们自己新增一些假数据用于展示
listInfo.add(
@ -1171,7 +1188,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
}
list.add(uricAcid)
/* val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
com.xty.common.model.ReportBean().apply {
title = "血脂"
count = 1
@ -1208,7 +1225,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
isShow = true
}
}
list.add(bloodFat)*/
list.add(bloodFat)
val yundong = com.xty.common.model.ReportBean().apply {
title = "运动"
@ -1692,8 +1709,8 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
* 设置综合分析内容
*/
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
private fun setAnalysisInfo(it: RespBody<com.xty.network.model.ReportBean>) {
binding.analysisTv1.text = "平均心率:" + it.data.signData.hr.avg + "次/分"
private fun setAnalysisInfo(it: RespBody<ReportBean>) {
/* binding.analysisTv1.text = "平均心率:" + it.data.signData.hr.avg + "次/分"
binding.analysisTv2.text = "平均血氧:" + it.data.signData.so.avg + "%"
binding.analysisTv3.text = "平均呼吸率:" + it.data.signData.respiratory.avg + "次/分"
if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) {
@ -1710,7 +1727,7 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.analysisTv5.text = "平均运动:" + it.data.signData.stepData.avg + ""
binding.analysisTv6.text =
"平均睡眠:${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)){
binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol"
@ -1719,50 +1736,228 @@ class HealthSkyHourReportAct : BaseVmAct<ReportVm>() {
binding.analysisTv9.text = "平均血脂0mmol"
}*/
binding.state.apply {
val statusInt = it.data.healthy.result
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]
val signData = it.data.signData
if (signData != null) {
val list = mutableListOf<String>()
val hrAvg = signData.hr.avg.toInt()
list.add(
"平均心率:${
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 selectStarImage = UserInfoDefin.getStarImage(context, statusInt)
selectStarImage.setBounds(
0,
0,
selectStarImage.minimumWidth,
selectStarImage.minimumHeight
val avgTime = signData.sleep.avgTime!!.toInt()
val sleepAvgTime = minutesToHours(avgTime.toString())
list.add(
"平均睡眠时间:${
if (avgTime > 0) {
sleepAvgTime
} else {
"--小时"
}
}"
)
val unSelectStarImage = context.getDrawable(R.mipmap.icon_insufficient)
unSelectStarImage?.setBounds(
0,
0,
unSelectStarImage.minimumWidth,
unSelectStarImage.minimumHeight
val dbpAvg = signData.dbp.avg
val split = dbpAvg.split("/")
val s = split[0].toInt()
val s1 = split[1].toInt()
list.add(
"平均血压:${
if (s > 0) {
s
} else {
"--"
}
}/${
if (s1 > 0) {
s1
} else {
"--"
}
}mmHg"
)
for (i in 1..5) {//五颗星
val spanStr = SpannableString("custom$i ")
val span =
(if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable ->
CenterImageSpan(starDrawable)
val bloodSugarAvg = signData.bloodSugar.avg.toFloat()
list.add(
"平均血糖:${
if (bloodSugarAvg > 0) {
bloodSugarAvg
} else {
"--"
}
spanStr.setSpan(span, 0, spanStr.length - 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
//添加至textview
append(spanStr)
}mmol/L"
)
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 {
tipDialog.show()
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.tipsIcon.apply {
setOnClickListener {
tipDialog.show()
binding.state.apply {
val statusInt = it.data.healthy.result
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.PopWindowUserInfo
import com.xty.network.model.RespBody
import com.zj365.health.adapter.HealthSignDataAdapter
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
@ -141,6 +142,15 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
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>()
private val tipDialog by lazy {
@ -315,6 +325,14 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
else -> {}
}
}
/**
* 综合分析列表
*/
binding.recyclerViewGridding.layoutManager = GridLayoutManager(this, 2)
binding.recyclerViewGridding.adapter = healthSignDataGriddingAdapter
binding.recyclerViewList.layoutManager = LinearLayoutManager(this)
binding.recyclerViewList.adapter = healthSignDataAdapter
}
@SuppressLint("SetTextI18n")
@ -1350,7 +1368,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
)
}
/*if(bsseInfo.bloodFat == null){
if(bsseInfo.bloodFat == null){
listInfo.add(
com.xty.network.model.ReportBean.HrInfo(
"血脂",
@ -1375,7 +1393,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
R.mipmap.ic_uric_acid_small
)
)
}*/
}
infoAdapter.setNewInstance(listInfo)
@ -1582,7 +1600,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
}
list.add(uricAcid)
/*val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据
ReportBean().apply {
title = "血脂"
count = 1
@ -1619,7 +1637,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
isShow = true
}
}
list.add(bloodFat)*/
list.add(bloodFat)
val yundong = ReportBean().apply {
title = "运动"
@ -1951,11 +1969,60 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
*/
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
private fun setAnalysisInfo(it: RespBody<com.xty.network.model.ReportBean>) {
var sleep = it.data.analyse.sleep
if (sleep == null) {
sleep = ""
}
binding.analysisTv1.text = "平均心率: " + it.data.analyse.hr
val analyse = it.data.analyse
if (analyse != null) {
var sleep = analyse.sleep
if (TextUtils.isEmpty(sleep)) {
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.analysisTv3.text = "平均呼吸率: " + it.data.analyse.respiratory
if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) {
@ -1971,59 +2038,60 @@ class HealthWeekMonthHourReportAct : BaseVmAct<ReportVm>() {
}
binding.analysisTv5.text = "平均步数: " + it.data.analyse.exerciseStep
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"
}else{
binding.analysisTv9.text = "平均血脂0mmol"
}*/
binding.state.apply {
val statusInt = it.data.analyse.status.toInt()
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]
binding.state.apply {
val statusInt = analyse.status.toInt()
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
)
)
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
)
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()
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()
binding.tipsIcon.apply {
setOnClickListener {
tipDialog.show()
}
}
}
}

@ -142,73 +142,76 @@ class PreventCancertAct : BaseVmAct<PayCancerVm>() {
var bottomSheetDialog: BottomSheetDialog? = null
fun initBottomDialog() {
if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
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 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
price?.let {
if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
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(it)
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
tvZhifu.text = "确认支付"
}
val llDuihuan = view.findViewById<LinearLayout>(R.id.llDuihuan)
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
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.payUrl(goodsId, "ALIPAY_APP", "")
} else if (tvWeixin.isSelected) {
//微信
mViewModel.payUrl(goodsId, "WEIXIN_APP", "")
} else {
//跳转兑换
tvZhifu.setOnClickListener {
//支付
if (tvZhifubao.isSelected) {
//支付宝
mViewModel.payUrl(goodsId, "ALIPAY_APP", "")
} else if (tvWeixin.isSelected) {
//微信
mViewModel.payUrl(goodsId, "WEIXIN_APP", "")
} else {
//跳转兑换
// bundle.clear()
// bundle.putString("id",goodsId)
// RouteManager.goAct(ARouterUrl.DUIHUAN, bundle)
bundle.clear()
bundle.putString("id", goodsId)
bundle.putString("orderNo", orderNo)
RouteManager.goAct(ARouterUrl.DUIHUAN, bundle)
bundle.clear()
bundle.putString("id", goodsId)
bundle.putString("orderNo", orderNo)
RouteManager.goAct(ARouterUrl.DUIHUAN, bundle)
}
dialog.dismiss()
}
dialog.dismiss()
}
}
}
}
private val SDK_PAY_FLAG = 1
private val WEIXIN_PAY_FLAG = 2
var price:Float = 0f
var price:Float? = null
var goodsId = ""
var orderNo = ""
var filePath = ""

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

@ -11,6 +11,7 @@ import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import com.alibaba.android.arouter.facade.annotation.Route
import com.alipay.sdk.app.PayTask
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.tencent.mm.opensdk.modelbase.BaseResp
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.RouteManager
import com.xty.common.event.WxPayEvent
import com.xty.common.setImage
import com.xty.common.util.SpannableUtils
import com.xty.network.model.PayGoodsBean
import com.xty.network.model.WeixinPayBean
@ -43,18 +45,51 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
var bottomSheetDialog: BottomSheetDialog? = null
lateinit var payGoodsBean: PayGoodsBean
var payGoodsBean: PayGoodsBean? = null
val tipDialog by lazy {
/* val tipDialog by lazy {
CancerDialog(this, false, "温馨提示", {
bottomSheetDialog?.show()
}, {
bundle.clear()
RouteManager.goAct(ARouterUrl.TONGUE_ORDER_LIST_ACTIVITY, bundle)
})
}
}*/
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
@ -70,6 +105,7 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
binding.title.mTvRight.visibility = View.VISIBLE
}else{
binding.title.mTvTitle.text ="AI糖医"
mViewModel.getAIGoods()
}
binding.title.mTvRight.setOnClickListener {
@ -81,74 +117,72 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
}
binding.tvSubmit.setOnClickListener {
if (isShowTip) {
tipDialog.setContent("您的舌诊评估记录中,有存在未完成的记录确认需要再次购买吗?")
tipDialog?.show()
} else {
bottomSheetDialog?.show()
}
bottomSheetDialog?.show()
}
initBottomDialog()
mViewModel.getAIoods()
mViewModel.aiHasNoFinishOrder()
}
fun initBottomDialog() {
if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
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 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
payGoodsBean?.let { bean ->
if (bottomSheetDialog == null) {
bottomSheetDialog = BottomSheetDialog(this,R.style.Theme_ChartDialogManager)
bottomSheetDialog?.let { dialog ->
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(bean.price!!)
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
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 = "去兑换"
}
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.visibility = View.GONE
llDuihuan.setOnClickListener {
tvWeixin.isSelected = false
tvZhifubao.isSelected = false
tvDuihuanma.isSelected = true
tvZhifu.text = "去兑换"
}
tvZhifu.setOnClickListener {
//支付
if (tvZhifubao.isSelected) {
//支付宝
mViewModel.payTongueOrder(payGoodsBean.id.toString(), false)
} else {
//微信
mViewModel.payTongueOrder(payGoodsBean.id.toString(), true)
tvZhifu.setOnClickListener {
//支付
if (tvZhifubao.isSelected) {
//支付宝
mViewModel.payAISugarMedicineOrder(bean.id.toString(), false)
} else {
//微信
mViewModel.payAISugarMedicineOrder(bean.id.toString(), true)
}
dialog.dismiss()
}
dialog.dismiss()
}
}
}
}
private val SDK_PAY_FLAG = 1
@ -207,35 +241,31 @@ class SkinMeasurementMainAct : BaseVmAct<SkinMeasurementVm>() {
val resultStatus: String = payResult.getResultStatus()
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
// Toast.makeText(this@PreventCancertAct,"支付成功"+payResult,Toast.LENGTH_SHORT).show()
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
// this@PayDemoActivity,
// getString(R.string.pay_success) + payResult
// )
bundle.clear()
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
bundle.putString("orderType", payGoodsBean.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
payGoodsBean?.let {
bundle.clear()
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
bundle.putString("orderType", it.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
}
} else {
Toast.makeText(this@SkinMeasurementMainAct, "支付失败,请联系客服", Toast.LENGTH_SHORT)
.show()
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
// com.alipay.sdk.pay.demo.PayDemoActivity.showAlert(
// this@PayDemoActivity,
// getString(R.string.pay_failed) + payResult
// )
}
}
WEIXIN_PAY_FLAG -> {
val event = msg.obj as WxPayEvent
when (event.code) {
BaseResp.ErrCode.ERR_OK -> {
bundle.clear()
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
bundle.putString("orderType", payGoodsBean.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
payGoodsBean?.let {
bundle.clear()
bundle.putString("orderNo", mViewModel.payObservable.value?.data?.orderNo)
bundle.putString("orderType", it.goodsType.toString())
RouteManager.goAct(ARouterUrl.PAY_SUCCESS, bundle)
}
}
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.text.SpannableString
@ -10,10 +10,10 @@ import androidx.core.content.ContextCompat
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter
import com.xty.common.Dateutils
import com.zj365.health.R
import com.xty.network.model.BloodFatBean
import com.xty.network.model.BloodFatHeadInfo
import com.xty.network.model.BloodFatType
import com.zj365.health.R
class BloodFatAdapter : BaseAdapter<BloodFatHeadInfo.BloodFat>(R.layout.item_blood_fat) {
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.widget.ImageView
@ -7,12 +7,10 @@ import androidx.core.content.ContextCompat
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.xty.base.adapter.BaseAdapter
import com.xty.common.SizeUtil
import com.zj365.health.R
import com.xty.network.model.BloodLipidAdjustBean
import com.zj365.health.R
class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>(
R.layout.item_blood_lipid_records
) {
class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>(R.layout.item_blood_lipid_records) {
var isSelect = false
@ -35,7 +33,6 @@ class BloodLipidAdjustAdapter : BaseAdapter<BloodLipidAdjustBean>(
holder: BaseViewHolder,
item: BloodLipidAdjustBean
) {
holder.setGone(R.id.ivSelected, !isSelect)
val view = holder.getView<ImageView>(R.id.ivSelected)
view.isSelected = item.isSelected

@ -291,7 +291,7 @@ object BaseChartInitUtils {
y.setDrawGridLines(true) //绘制横者的x轴
y.setDrawZeroLine(true)
y.xOffset = 5f
var markerView = ICompareMarkView(
val markerView = ICompareMarkView(
context, R.layout.mark_view_compare, unit,
mark
)
@ -430,8 +430,8 @@ object BaseChartInitUtils {
) {
chart.let {
it.clear()
it.setNoDataText(context.getString(com.zj365.health.R.string.line_chart_not_data))
it.setNoDataTextColor(ContextCompat.getColor(context, com.zj365.health.R.color.col_455))
it.setNoDataText(context.getString(R.string.line_chart_not_data))
it.setNoDataTextColor(ContextCompat.getColor(context, R.color.col_455))
it.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
it.setBackgroundColor(Color.WHITE) ///color
@ -471,7 +471,7 @@ object BaseChartInitUtils {
val x = it.xAxis
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.setDrawGridLines(false) //不绘制y
x.setDrawAxisLine(false)
@ -489,10 +489,10 @@ object BaseChartInitUtils {
//y轴
val y = it.axisLeft
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.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.setDrawGridLines(true) //绘制横者的x轴
y.setDrawZeroLine(true)
@ -541,16 +541,16 @@ object BaseChartInitUtils {
lineDataSet.circleRadius = circleRadius
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.setCircleColor(
ContextCompat.getColor(
context,
com.zj365.health.R.color.col_41c
R.color.col_41c
)
) //#41C4AF
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.fillAlpha = 100
if (isShadow) {
@ -596,16 +596,16 @@ object BaseChartInitUtils {
lineDataSet.setDrawCircleHole(false)
lineDataSet.circleRadius = 3.5f
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.setCircleColor(
ContextCompat.getColor(
context,
com.zj365.health.R.color.col_9BD
R.color.col_9BD
)
) //#41C4AF
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.fillAlpha = 100
lineDataSet.setDrawHorizontalHighlightIndicator(false)

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

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

@ -1,5 +1,6 @@
package com.zj365.health.fragment.bloodlipid
import android.annotation.SuppressLint
import android.content.Context
import android.view.View
import android.widget.TextView
@ -22,50 +23,63 @@ class BloodFatExceptionFrag: BaseExceptionDataFragment<ExceptionVm>() {
}
override fun getHint(): String {
if (binding.tvListTitle.text == "总胆固醇"){
return "正常范围2.83-5.20mmol/L"
}else if(binding.tvListTitle.text == "甘油三酯"){
return "正常范围0.45-1.69mmol/L"
}else if(binding.tvListTitle.text == "高密度脂蛋白"){
return "正常范围0.93-1.93mmol/L"
}else{
return "正常范围0-3.12mmol/L"
}
return when (binding.tvListTitle.text) {
"总胆固醇" -> {
"正常范围2.83-5.20mmol/L"
}
"甘油三酯" -> {
"正常范围0.45-1.69mmol/L"
}
"高密度脂蛋白" -> {
"正常范围0.93-1.93mmol/L"
}
else -> {
"正常范围0-3.12mmol/L"
}
}
}
override fun setLabelCount(leftAxis: YAxis) {
leftAxis.setLabelCountAndMaxMinValue(6,false,0f,8f)
leftAxis.setLabelCountAndMaxMinValue(6, false, 0f, 8f)
}
override fun getMarkView(): IMarker? {
return CustomMarkerViewXueyang(
return CustomMarkerViewXuezhi(
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>) :
MarkerView(context, layoutResource) {
private val mData: TextView
private val mTime: TextView
@SuppressLint("ViewConstructor")
class CustomMarkerViewXuezhi(
context: Context?,
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) {
// 在 refreshContent 方法中设置需要显示的内容。
val barEntry = e as BarEntry
val x = barEntry.x
val get = result.get(x.toInt())
var data = get.data+"%"
mData.setText(data)
mTime.setText( RxTimeTool.milliseconds2String(
val get = result[x.toInt()]
val data = get.data
mXueZhiData.text = data
mXueZhiTime.text = RxTimeTool.milliseconds2String(
get.time.toLong() * 1000,
SimpleDateFormat("HH :mm")
))
setOffset((-getWidth() / 2).toFloat(), (-getHeight()).toFloat() - 10f);
)
setOffset((-width / 2).toFloat(), (-height).toFloat() - 10f)
}
init {
// 在构造函数中获取 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.RouteManager
import com.xty.common.event.BloodFilipOpenSuccessEvent
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.SpannableUtils
import com.xty.common.weight.tablayout.TabEntity
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") }
private val weekStr by lazy { resources.getStringArray(R.array.week_day) }
val dialogBind by lazy {
DialogTip(requireContext(), "需绑定中健三六五健康手表,才能查看", "去绑定") {
DialogTip(requireContext(), "需绑定安瑜健康手表,才能查看", "去绑定") {
RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
}
}
@ -97,7 +98,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
type = 1
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)
}
}
@ -106,7 +107,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
type = 3
mouthDate = binding.tvShowDate.text.toString()
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 {
HealthDialog(requireContext(), true, tips) {
}
@ -155,6 +155,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
}
@SuppressLint("SetTextI18n")
override fun initView() {
super.initView()
binding.tgLayout.tvBloodValue.text = "甘油三酯 (TG)"
@ -239,12 +240,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
binding.tvBloodLipidAdjust.setOnClickListener {
if (bloodFatStatus == 1) {
// val tip = "尿酸建模出值重要提示:\n" +
// "1、建模期间累计有效佩戴满72小时\n" +
// "2、建模完成后每天18:00至第二天6:00期间佩戴时长累计满6小时APP出具尿酸值\n" +
// "3、尿酸值每天700出值。本次值为前一天18:00到当天早上6:00尿酸平均值。"
// tipDialog.setContent(tip)
// tipDialog.show()
tips = "1、建模期间累计有效佩戴满72小时\n" +
"2、建模完成后每天18:00至第二天6:00期间佩戴时长累计满6小时APP出具血脂值\n" +
"3、血脂值每天700出值。本次值为前一天18:00到当天早上6:00血脂平均值。"
tipDialog.setContent(tips)
tipDialog.show()
} else {
RouteManager.goAct(ARouterUrl.BL_ADJUST)
}
@ -260,13 +260,20 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
private fun setKindLayoutClickListener(view: BloodFatChartBinding) {
view.mLineChart.setNoDataText(getString(R.string.line_chart_not_data))
view.mLineChart.setNoDataTextColor(
ContextCompat.getColor(
requireContext(),
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.mLineChart.visibility = View.VISIBLE
view.mBarChart.visibility = View.GONE
@ -352,22 +359,23 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
RouteManager.goAct(ARouterUrl.BL_FAT_EXCEPTION_DATA, bundle)
}
@SuppressLint("SetTextI18n", "SimpleDateFormat")
override fun observer() {
mViewModel.bloodFatHeadInfo.observe(this) {
expireTimeStr = it.data.expireTime
bloodFatStatus = it.data.status
if (!TextUtils.isEmpty(expireTimeStr)) {
binding.tvEndTime.text = "到期时间:${expireTimeStr}"
binding.tvEndTime.text = "到期时间${expireTimeStr}"
} else {
binding.tvEndTime.text = ""
}
when (it.data.status) {
0 -> { //没有开通
setNoOpenBloodLipid(0)
setNoOpenBloodLipid(0, it.data.data)
}
1 -> { //建模中
setNoOpenBloodLipid(1)
setNoOpenBloodLipid(1, it.data.data)
}
else -> {
@ -477,7 +485,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
}
//设置数据
private fun setValuss(
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) {
//中间两端在x轴显示尺度 其他情况下不显示
lineValue.add(
@ -569,26 +615,34 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
when (chartType) {
0 -> {
binding.tcLayout.mLineChart.clear()
binding.tcLayout.mBarChart.clear()
initChart(list, bean.value.minTc, bean.value.maxTc, chartType, lineValue, barValue)
if (selectDay()) {
setOrganStatus(chartType)
}
// binding.tcLayout.mLineChart.clear()
// binding.tcLayout.mBarChart.clear()
initChart(
list,
bean.value.minTc,
bean.value.maxTc,
chartType,
lineValue,
barValue
)
}
1 -> {
binding.tgLayout.mLineChart.clear()
binding.tgLayout.mBarChart.clear()
initChart(list, bean.value.minTg, bean.value.maxTg, chartType, lineValue, barValue)
if (selectDay()) {
setOrganStatus(chartType)
}
// binding.tgLayout.mLineChart.clear()
// binding.tgLayout.mBarChart.clear()
initChart(
list,
bean.value.minTg,
bean.value.maxTg,
chartType,
lineValue,
barValue
)
}
2 -> {
binding.hdlLayout.mLineChart.clear()
binding.hdlLayout.mBarChart.clear()
// binding.hdlLayout.mLineChart.clear()
// binding.hdlLayout.mBarChart.clear()
initChart(
list,
bean.value.minHdl,
@ -597,15 +651,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
lineValue,
barValue
)
if (selectDay()) {
setOrganStatus(chartType)
}
}
else -> {
binding.ldlLayout.mLineChart.clear()
binding.ldlLayout.mBarChart.clear()
// binding.ldlLayout.mLineChart.clear()
// binding.ldlLayout.mBarChart.clear()
initChart(
list,
bean.value.minLdl,
@ -614,9 +664,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
lineValue,
barValue
)
if (selectDay()) {
setOrganStatus(chartType)
}
}
}
}
@ -650,17 +697,17 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
): String {
when (type) {
1 -> {
/*if (bean.uaValue == 0f) {
bean.uaValue = Float.NaN
}*/
return bean.formatTime
// if (bean.uaValue == 0f) {
// bean.uaValue = Float.NaN
// }
return bean.time
}
3 -> {
/* if (bean.uaValue == 0f) {
bean.uaValue = Float.NaN
}*/
return bean.time
/* if (bean.uaValue == 0f) {
bean.uaValue = Float.NaN
}*/
return bean.formatTime
}
2 -> {
@ -711,7 +758,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
1 -> {
when (OrganStatusCalcUtil.tgStatus(data.tg)) {
1 -> {
tgAbNormalTime++
@ -726,7 +772,6 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
2 -> {
when (OrganStatusCalcUtil.hdlStatus(data.hdl)) {
1 -> {
hdlAbNormalTime++
@ -828,26 +873,18 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
val barsetsNew = ArrayList<ILineDataSet>()
val segments = splitDataIntoSegments(list)
// if (segments.size > 0) {
// segments = checkData(segments)
// }
val dataSets = segments.mapNotNull { segment ->
if (segment.isEmpty()) return@mapNotNull null
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(
indes.toFloat(),
model.index.toFloat(),
model.uaValue,
lineValue[indes].data
lineValue[model.index].data
)
}
return@mapNotNull setData(entries, chartType)
@ -893,23 +930,10 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
if (segment.isEmpty()) return@mapNotNull null
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(
indes.toFloat(),
model.index.toFloat(),
model.uaValue,
barValue[indes].data
barValue[model.index].data
)
}
return@mapNotNull setBarData(entries, chartType)
@ -980,21 +1004,24 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
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>>()
var currentSegment = mutableListOf<BloodFatBean.ModelCompare>()
for (model in dataList) {
if (model.uaValue.isNaN()) {
// 遇到 Float.NaN如果当前线段不为空则添加到结果中并开始新的线段
if (currentSegment.isNotEmpty()) {
segments.add(currentSegment)
currentSegment = mutableListOf()
}
} else {
// 遇到有效数据,将其添加到当前线段中
currentSegment.add(model)
}
// if (model.uaValue.isNaN()) {
// // 遇到 Float.NaN如果当前线段不为空则添加到结果中并开始新的线段
// if (currentSegment.isNotEmpty()) {
// segments.add(currentSegment)
// currentSegment = mutableListOf()
// }
// } else {
// // 遇到有效数据,将其添加到当前线段中
// currentSegment.add(model)
// }
currentSegment.add(model)
}
// 将最后一个线段添加到结果中
@ -1005,12 +1032,14 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
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) {
1 -> {
if (segmentsCompare[0][0].time != "00:00") {
if (segmentsCompare[0][0].time != "05:00") {
val d = mutableListOf<BloodFatBean.ModelCompare>()
val b = BloodFatBean.ModelCompare(0f, "00:00")
val b = BloodFatBean.ModelCompare(0f, "05:00")
d.add(b)
segmentsCompare.add(d)
}
@ -1018,10 +1047,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
binding.tvShowDate.text.toString(),
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 b = BloodFatBean.ModelCompare(0f, "23:50")
val b = BloodFatBean.ModelCompare(0f, "09:00")
d.add(b)
segmentsCompare.add(d)
}
@ -1191,7 +1221,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
values,
lineChart,
2.5f,
2f,
4f,
true
)
}
@ -1407,16 +1437,19 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
when (chartType) {
0 -> {
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
} else {
binding.clCurTc.mOrganView.ivFirst.visibility = View.INVISIBLE
}
binding.clCurTc.mOrganView.tvSecondValue.text =
SpannableUtils.setSpan(tcAbNormalTime, Color.parseColor("#313131"))
binding.clCurTc.mOrganView.tvSecondValue.text = SpannableUtils.setSpan(
tcAbNormalTime,
Color.parseColor("#313131")
)
if (tcAbNormalTime > 0) {
binding.clCurTc.mOrganView.ivSecond.visibility = View.VISIBLE
} else {
@ -1425,9 +1458,11 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
1 -> {
binding.clCurTg.mOrganView.tvFirstValue.text =
SpannableUtils.setSpan(tgNormalTime, Color.parseColor("#313131"))
if (tgNormalTime > 0) {
binding.clCurTg.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
tgNormalTime,
Color.parseColor("#313131")
)
if (tgNormalTime >= 0) {
binding.clCurTg.mOrganView.ivFirst.visibility = View.VISIBLE
} else {
binding.clCurTg.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1445,7 +1480,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
2 -> {
binding.clCurHdl.mOrganView.tvFirstValue.text =
SpannableUtils.setSpan(hdlNormalTime, Color.parseColor("#313131"))
if (hdlNormalTime > 0) {
if (hdlNormalTime >= 0) {
binding.clCurHdl.mOrganView.ivFirst.visibility = View.VISIBLE
} else {
binding.clCurHdl.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1463,7 +1498,7 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
else -> {
binding.clCurLdl.mOrganView.tvFirstValue.text =
SpannableUtils.setSpan(ldlNormalTime, Color.parseColor("#313131"))
if (ldlNormalTime > 0) {
if (ldlNormalTime >= 0) {
binding.clCurLdl.mOrganView.ivFirst.visibility = View.VISIBLE
} else {
binding.clCurLdl.mOrganView.ivFirst.visibility = View.INVISIBLE
@ -1481,91 +1516,172 @@ class BloodFatFrag : BaseVmFrag<BloodFatVm>() {
}
@SuppressLint("SetTextI18n")
fun setNoOpenBloodLipid(status: Int) {
fun setNoOpenBloodLipid(status: Int, data: BloodFatHeadInfo.Data?) {
var valueDesc = ""
if (status == 0) {
valueDesc = "未开通"
binding.llRenew.visibility = View.GONE
if (TextUtils.isEmpty(expireTimeStr)) {
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) {
valueDesc = "建模中"
binding.llRenew.visibility = View.VISIBLE
binding.tvRenew.visibility = View.GONE
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 ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format)
}"
binding.clCurTc.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131")
0,
Color.parseColor("#313131")
)
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 ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format)
Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}"
binding.clCurTg.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131")
0,
Color.parseColor("#313131")
)
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 ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format)
Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}"
binding.clCurHdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131")
0,
Color.parseColor("#313131")
)
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 ${
Dateutils.formatTime(System.currentTimeMillis(), Dateutils.HH_MM_Format)
Dateutils.formatTime(
System.currentTimeMillis(),
Dateutils.HH_MM_Format
)
}"
binding.clCurLdl.mOrganView.tvFirstValue.text = SpannableUtils.setSpan(
0, Color.parseColor("#313131")
0,
Color.parseColor("#313131")
)
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.compareTv.visibility = View.VISIBLE
binding.llRenew.visibility = View.GONE
binding.tvEndTime.text = "2088-12-21 18:00:00"
binding.clCurTc.tvBloodValue.text = "5.07"
binding.clCurTc.tvTestTime.text = "mmol/L ${

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

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

@ -12,34 +12,24 @@ class SkinMeasurementVm: BaseVm() {
val payObservable by lazy { MutableLiveData<RespBody<PayBean>>() }
val haveOrder by lazy { MutableLiveData<RespBody<Boolean>>() }
fun getAIoods(){
fun getAIGoods(){
startHttp {
apiInterface().getTongueGoods()
var response = apiInterface().getTongueGoods()
var response = apiInterface().getAISugarMedicineGoods()
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 {
var json = JSONObject()
json.put("goodsId",goodsId)
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)
}
}

@ -9,10 +9,24 @@
android:id="@+id/title"
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
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_below="@+id/mTip"
android:layout_marginTop="@dimen/dp_14">
<LinearLayout

@ -701,7 +701,22 @@
</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_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
@ -806,7 +821,7 @@
</LinearLayout>
</LinearLayout>
</LinearLayout>-->
</LinearLayout>

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

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

@ -1,8 +1,8 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
<LinearLayout
@ -13,8 +13,8 @@
<LinearLayout
android:layout_width="@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
android:layout_width="wrap_content"
@ -39,9 +39,11 @@
android:layout_gravity="center"
android:textColor="@color/col_6B6"
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
@ -54,10 +56,10 @@
android:id="@+id/tv_blood_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总胆固醇(TC)"
android:layout_marginTop="@dimen/dp_22"
android:textSize="@dimen/sp_16"
android:textColor="@color/col_313"/>
android:text="总胆固醇(TC)"
android:textColor="@color/col_313"
android:textSize="@dimen/sp_16" />
<include
android:id="@+id/mOrganView"
@ -67,16 +69,17 @@
android:layout_marginBottom="@dimen/dp_20" />
</LinearLayout>
</LinearLayout>
<View
android:id="@+id/v_line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:visibility="gone"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
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>

@ -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")
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")
suspend fun updateTongueOrder(@Body rb: RequestBody): RespBody<Any>
@ -1886,7 +1898,7 @@ interface ApiInterface {
* 创建订单
*/
@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(
var uaValue: Float,
var time: String,
var formatTime: String = ""
var formatTime: String = "",
var index: Int = 0
)
@RequiresApi(Build.VERSION_CODES.O)
fun mapDataToTime(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val mappedData = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
// 创建一天的时间节点
@ -164,6 +168,9 @@ data class BloodFatBean(
dataList: MutableList<ModelCompare>,
month: String
): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("MM-dd", Locale.getDefault())
@ -213,6 +220,9 @@ data class BloodFatBean(
startDate: String,
endDate: String
): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>()
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
@ -292,6 +302,9 @@ data class BloodFatBean(
}
fun fillMissingData(dataList: MutableList<ModelCompare>): MutableList<ModelCompare> {
if (dataList.isEmpty()) {
return mutableListOf()
}
val filledDataList = mutableListOf<ModelCompare>()
// 初始化日期范围

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

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