18 changed files with 427 additions and 80 deletions
-
3uappbase/bean/dbtype/acid_distrubt_record.hpp
-
9uappbase/bean/dbtype/device_acid_volume.hpp
-
126ui/ui.h
-
12usrc/db/dao/acid_ch_cfg_dao.cpp
-
5usrc/db/dao/acid_ch_cfg_dao.hpp
-
18usrc/db/dao/acid_distrubt_record_dao.cpp
-
3usrc/db/dao/acid_distrubt_record_dao.hpp
-
2usrc/db/dao/acid_use_record_dao.cpp
-
2usrc/db/dao/acid_use_record_dao.hpp
-
70usrc/db/dao/device_acid_volume_dao.cpp
-
15usrc/db/dao/device_acid_volume_dao.hpp
-
14usrc/db/dao/user_dao.cpp
-
4usrc/db/dao/user_dao.hpp
-
4usrc/service/app_core.cpp
-
2usrc/service/remote_controler_event_processer.cpp
-
207usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp
-
4usrc/uicontroler/page/navi_page.cpp
-
7usrc/uicontroler/ui_controler.cpp
@ -0,0 +1,9 @@ |
|||
#pragma once
|
|||
#include "uappbase/appdep.hpp"
|
|||
|
|||
namespace iflytop { |
|||
typedef struct { |
|||
uint8_t id; |
|||
float acidVolume[4]; |
|||
} device_acid_volume_t; |
|||
} // namespace iflytop
|
@ -0,0 +1,70 @@ |
|||
#include "device_acid_volume_dao.hpp"
|
|||
|
|||
#include "uappbase/zhdb/zhdb.hpp"
|
|||
|
|||
#define TAG "DeviceAcidVolume"
|
|||
|
|||
using namespace iflytop; |
|||
|
|||
/***********************************************************************************************************************
|
|||
* MARCO * |
|||
***********************************************************************************************************************/ |
|||
#define TABLE_VERSION TABLE_BASE_VERSION
|
|||
#define TABLE_NAME "device_acid_vlume"
|
|||
|
|||
/***********************************************************************************************************************
|
|||
* STATIC VAR * |
|||
***********************************************************************************************************************/ |
|||
|
|||
static zhdb_table_t* table; |
|||
static bool module_inited; |
|||
static struct { |
|||
uint32_t version; |
|||
uint32_t maxid; |
|||
device_acid_volume_t item[1]; |
|||
uint32_t end; |
|||
}* tabledata; |
|||
|
|||
/***********************************************************************************************************************
|
|||
* FUNCTION * |
|||
***********************************************************************************************************************/ |
|||
static void storgeTableData() { ZHDB::storageData((uint8_t*)tabledata, sizeof(*tabledata)); } |
|||
void DeviceAcidVolume::init() { |
|||
//
|
|||
table = ZHDB::allocTable(TABLE_NAME, sizeof(*tabledata)); |
|||
ASSERT(table != NULL, "alloc table failed"); |
|||
tabledata = (decltype(tabledata))table->add; |
|||
|
|||
if (TABLE_VERSION != tabledata->version || TABLE_VERSION != tabledata->end) { |
|||
ZLOGI(TAG, "%s table version not match, reset table", TABLE_NAME); |
|||
|
|||
tabledata->version = TABLE_VERSION; |
|||
tabledata->end = TABLE_VERSION; |
|||
|
|||
// ³õʼ»¯ËáÒºÃû³Æ
|
|||
tabledata->item[0].id = tabledata->maxid++; |
|||
memset(tabledata->item[0].acidVolume, 0, sizeof(tabledata->item[0].acidVolume)); |
|||
} |
|||
storgeTableData(); |
|||
module_inited = true; |
|||
|
|||
ZLOGI(TAG, "init success"); |
|||
} |
|||
|
|||
void DeviceAcidVolume::updateAcidVolume(int index, float volume) { |
|||
ZASSERT_INFO(module_inited, "device acid volume dao not inited"); |
|||
if (index < 0 || index >= sizeof(tabledata->item[0].acidVolume) / sizeof(tabledata->item[0].acidVolume[0])) { |
|||
ZLOGE(TAG, "updateAcidVolume fail,index out of range index=%d", index); |
|||
return; |
|||
} |
|||
tabledata->item[0].acidVolume[index] = volume; |
|||
storgeTableData(); |
|||
} |
|||
float DeviceAcidVolume::getAcidVolume(int index) { |
|||
ZASSERT_INFO(module_inited, "device acid volume dao not inited"); |
|||
if (index < 0 || index >= sizeof(tabledata->item[0].acidVolume) / sizeof(tabledata->item[0].acidVolume[0])) { |
|||
ZLOGE(TAG, "getAcidVolume fail,index out of range index=%d", index); |
|||
return 0; |
|||
} |
|||
return tabledata->item[0].acidVolume[index]; |
|||
} |
@ -0,0 +1,15 @@ |
|||
#pragma once
|
|||
#include "error/errno.hpp"
|
|||
#include "uappbase/base.hpp"
|
|||
#include "uappbase/bean/dbtype/device_acid_volume.hpp"
|
|||
|
|||
namespace iflytop { |
|||
|
|||
class DeviceAcidVolume { |
|||
public: |
|||
static void init(); |
|||
static void updateAcidVolume(int index, float volume); |
|||
static float getAcidVolume(int index); |
|||
}; |
|||
|
|||
} // namespace iflytop
|
@ -0,0 +1,207 @@ |
|||
|
|||
#include "db/dao/acid_distrubt_record_dao.hpp"
|
|||
#include "db/dao/acid_name_dao.hpp"
|
|||
#include "db/dao/user_dao.hpp"
|
|||
#include "uappbase/apphal/apphal.hpp"
|
|||
#include "ui/ui.h"
|
|||
#include "uicontroler/base/page_processer.hpp"
|
|||
#include "usrc/db/dao/acid_ch_cfg_dao.hpp"
|
|||
//
|
|||
#include "db/dao/acid_ch_cfg_dao.hpp"
|
|||
#include "db/dao/acid_use_record_dao.hpp"
|
|||
#include "db/dao/device_acid_volume_dao.hpp"
|
|||
#include "db/dao/device_setting_dao.hpp"
|
|||
//
|
|||
#include "service/pump_ctrl_service.hpp"
|
|||
#include "service/remote_controler.hpp"
|
|||
|
|||
namespace iflytop { |
|||
using namespace std; |
|||
#define TAG "MuAcidDistMgrPage"
|
|||
|
|||
typedef struct { |
|||
uint8_t val[5]; // 时间
|
|||
} table_iterm_t; |
|||
|
|||
static table_iterm_t cfgbid_table[] = { |
|||
{ob_muAcidDistMgr_h0, ob_muAcidDistMgr_h1, ob_muAcidDistMgr_h2, ob_muAcidDistMgr_h3, ob_muAcidDistMgr_h4}, |
|||
{ob_muAcidDistMgr_val00, ob_muAcidDistMgr_val01, ob_muAcidDistMgr_val02, ob_muAcidDistMgr_val03, ob_muAcidDistMgr_val04}, |
|||
{ob_muAcidDistMgr_val10, ob_muAcidDistMgr_val11, ob_muAcidDistMgr_val12, ob_muAcidDistMgr_val13, ob_muAcidDistMgr_val14}, |
|||
{ob_muAcidDistMgr_val20, ob_muAcidDistMgr_val21, ob_muAcidDistMgr_val22, ob_muAcidDistMgr_val23, ob_muAcidDistMgr_val24}, |
|||
{ob_muAcidDistMgr_val30, ob_muAcidDistMgr_val31, ob_muAcidDistMgr_val32, ob_muAcidDistMgr_val33, ob_muAcidDistMgr_val34}, |
|||
{ob_muAcidDistMgr_val40, ob_muAcidDistMgr_val41, ob_muAcidDistMgr_val42, ob_muAcidDistMgr_val43, ob_muAcidDistMgr_val44}, |
|||
{ob_muAcidDistMgr_val50, ob_muAcidDistMgr_val51, ob_muAcidDistMgr_val52, ob_muAcidDistMgr_val53, ob_muAcidDistMgr_val54}, |
|||
{ob_muAcidDistMgr_val60, ob_muAcidDistMgr_val61, ob_muAcidDistMgr_val62, ob_muAcidDistMgr_val63, ob_muAcidDistMgr_val64}, |
|||
{ob_muAcidDistMgr_val70, ob_muAcidDistMgr_val71, ob_muAcidDistMgr_val72, ob_muAcidDistMgr_val73, ob_muAcidDistMgr_val74}, |
|||
}; |
|||
|
|||
static int m_takePers = 0; |
|||
static int m_chId = 0; |
|||
static int m_volumeVal = 0; |
|||
|
|||
class MuAcidDistMgrPage : public IPageProcesser { |
|||
public: |
|||
MuAcidDistMgrPage() : IPageProcesser(TAG, pg_muAcidDistMgr) {} |
|||
|
|||
virtual void initialize() override { |
|||
IPageProcesser::initialize(); |
|||
|
|||
setText(cfgbid_table[0].val[0], "时间"); |
|||
setText(cfgbid_table[0].val[1], "发放人"); |
|||
setText(cfgbid_table[0].val[2], "领酸人"); |
|||
setText(cfgbid_table[0].val[3], "酸液名称"); |
|||
setText(cfgbid_table[0].val[4], "容量"); |
|||
|
|||
for (int i = 0; i < 8; i++) { |
|||
setText(cfgbid_table[i + 1].val[0], ""); |
|||
setText(cfgbid_table[i + 1].val[1], ""); |
|||
setText(cfgbid_table[i + 1].val[2], ""); |
|||
setText(cfgbid_table[i + 1].val[3], ""); |
|||
setText(cfgbid_table[i + 1].val[4], ""); |
|||
} |
|||
} |
|||
|
|||
/***********************************************************************************************************************
|
|||
* CALL_BAK * |
|||
***********************************************************************************************************************/ |
|||
|
|||
virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; |
|||
/**
|
|||
* @brief 返回上一页 |
|||
*/ |
|||
virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); } |
|||
virtual void onChangePageEvent() override { |
|||
resetForm(); |
|||
updateTableVolume(); |
|||
} |
|||
virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { |
|||
/***********************************************************************************************************************
|
|||
* 添加记录 * |
|||
***********************************************************************************************************************/ |
|||
/**
|
|||
* 绑定键盘 |
|||
*/ |
|||
if (bid == ob_muAcidDistMgr_takePers) { |
|||
UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, UserDao::getUsrNameTable()); |
|||
} else if (bid == ob_muAcidDistMgr_chId) { |
|||
UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, AcidChCfgDao::getAcidCHNameList()); |
|||
} else if (bid == ob_muAcidDistMgr_volumeVal) { |
|||
UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, ""); |
|||
} |
|||
|
|||
if (bid == ob_muAcidDistMgr_addNew) { |
|||
if (m_volumeVal <= 0) { |
|||
UIControler::ins()->popWarningWin("请输入容量"); |
|||
return; |
|||
} |
|||
if (m_takePers < 0) { |
|||
UIControler::ins()->popWarningWin("请选择发放人"); |
|||
return; |
|||
} |
|||
|
|||
if (m_chId < 0) { |
|||
UIControler::ins()->popWarningWin("请选择酸液名称"); |
|||
return; |
|||
} |
|||
|
|||
{ |
|||
UILoadingCxt ctx; |
|||
acid_distrubt_record_t record; |
|||
AppHal::rtc_get(&record.date); |
|||
record.distrubtAcidUsrid = GStateMgr::ins()->getUserId(); |
|||
record.takeAcidUsrid = m_takePers; |
|||
record.distribuCh = m_chId; |
|||
record.distribuVolume = m_volumeVal; |
|||
AcidDistrubtRecordDao::addRecord(record); |
|||
|
|||
DeviceAcidVolume::updateAcidVolume(m_chId, m_volumeVal); |
|||
GStateMgr::ins()->setAcidRemain(m_chId, m_volumeVal); |
|||
resetForm(); |
|||
} |
|||
} |
|||
|
|||
/***********************************************************************************************************************
|
|||
* 表格操作 * |
|||
***********************************************************************************************************************/ |
|||
|
|||
if (bid == ob_muAcidDistMgr_clearRecord) { |
|||
UIControler::ins()->popConfirmWin("您确定要清空领酸记录?", [this](bool isOk) { |
|||
if (isOk) { |
|||
UILoadingCxt loadingCxt; |
|||
AcidUseRecordDao::clearRecord(); |
|||
AcidUseRecordDao::sync(); |
|||
UIControler::ins()->chpage(thisPage, true); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
if (bid == ob_muAcidDistMgr_export) { |
|||
} |
|||
} |
|||
virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { |
|||
if (bid == ob_muAcidDistMgr_takePers) { |
|||
m_takePers = slecId; |
|||
setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name); |
|||
} else if (bid == ob_muAcidDistMgr_chId) { |
|||
if (slecId < 0 || slecId > 3) { |
|||
ZLOGI(TAG, "slecId out of range"); |
|||
return; |
|||
} |
|||
m_chId = slecId; |
|||
setText(bid, "%s(%d)", AcidChCfgDao::getCfg(slecId)->acidChooseName, slecId); |
|||
} else if (bid == ob_muAcidDistMgr_volumeVal) { |
|||
float val = atof(text); |
|||
if (val < 0) { |
|||
UIControler::ins()->popInfoWin("体积不能小于0"); |
|||
return; |
|||
} |
|||
|
|||
m_volumeVal = val; |
|||
setText(bid, "%d", (int)val); |
|||
} |
|||
} |
|||
|
|||
/***********************************************************************************************************************
|
|||
* UTILS * |
|||
***********************************************************************************************************************/ |
|||
|
|||
void updateTableVolume() { |
|||
// set val
|
|||
UIControler::ins()->chpage(thisPage, false); |
|||
|
|||
AcidDistrubtRcordPage page; |
|||
AcidDistrubtRecordDao::getRecord(0, &page); |
|||
for (int i = 0; i < page.recordNum; i++) { |
|||
setText(cfgbid_table[i + 1].val[0], "%d/%d/%d %02d:%02d:%02d", page.record[i]->date.year, page.record[i]->date.month, page.record[i]->date.day, page.record[i]->date.hours, page.record[i]->date.minutes, page.record[i]->date.seconds); |
|||
setText(cfgbid_table[i + 1].val[1], "%s", UserDao::getUserByIdNotNull(page.record[i]->distrubtAcidUsrid)->name); |
|||
setText(cfgbid_table[i + 1].val[2], "%s", UserDao::getUserByIdNotNull(page.record[i]->takeAcidUsrid)->name); |
|||
setText(cfgbid_table[i + 1].val[3], "%s", AcidChCfgDao::getCfg(page.record[i]->distribuCh)->acidChooseName); |
|||
setText(cfgbid_table[i + 1].val[4], "%d", page.record[i]->distribuVolume); |
|||
} |
|||
|
|||
for (int i = page.recordNum; i < 8; i++) { |
|||
setText(cfgbid_table[i + 1].val[0], ""); |
|||
setText(cfgbid_table[i + 1].val[1], ""); |
|||
setText(cfgbid_table[i + 1].val[2], ""); |
|||
setText(cfgbid_table[i + 1].val[3], ""); |
|||
setText(cfgbid_table[i + 1].val[4], ""); |
|||
} |
|||
} |
|||
|
|||
void resetForm() { |
|||
m_takePers = -1; |
|||
m_chId = -1; |
|||
m_volumeVal = -1; |
|||
|
|||
updateTableVolume(); |
|||
setText(ob_muAcidDistMgr_distPerso, "%s", GStateMgr::ins()->getLoginUsr()); |
|||
setText(ob_muAcidDistMgr_takePers, ""); |
|||
setText(ob_muAcidDistMgr_chId, ""); |
|||
setText(ob_muAcidDistMgr_volumeVal, ""); |
|||
} |
|||
}; |
|||
|
|||
// 实例化Page, 使其自动注册
|
|||
static MuAcidDistMgrPage instance; |
|||
|
|||
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue