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