入库出库查询软件——qt

miniMes系统操作说明
一:功能说明
主界面有扫描--查询两个界面,扫描界面如下

1:默认开启自动入库出库功能
2:右上角限制位数可根据需求设定二维码字符串的位数,设置完成后点击设定,弹窗设定成功即可
3:运行逻辑如下,鼠标点击二维码输入框,扫描二维码,未入库的产品会执行《入库操作》
4:两秒内再次扫描该产品(输入同样的二维码)不会触发《出库操作》,若是扫描其他产品则会正常入库与出库,该功能主要为了避免二维码扫描周期太快造成的重复输入
5:两秒后扫描产品,已经入库的产品会执行《出库操作》
6:查询界面如下图所示:

7:输入二维码可以查询该产品的入库与出库时间,双击QR可修改QR
8:选择开始与结束时间,点击导出会生成对应时间段的csv文件(名称为开始时间),时间段依据是入库时间

二:软件运行说明
1:mes文件对应存储的所有二维码数据,目前测试10万数据约500k,所以长时间内无需清理,如果明显感到入库,出库与查询的时间很长,需要将该文件修改名称即可(最好以日期区分),修改名称后我会自动创建mes文件进行存储

部分代码:

  • 查询出入库
点击查看代码
bool MesMini::isBePutInStore(const QString &qrStr)
{
    //model->clear();
    try
    {
        //eg: "select * from LoginTable where USERNAME == 'user0';"
        QSqlQuery sql_query("select * from QRTable where QR == '" + qrStr + "';");
        if (!sql_query.exec())
        {
            QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
            return false;
        }
        else
        {
            if (sql_query.next()) {
                return false;
            } else {
                // 没有结果
                return true;//可以入库了
            }

        }
    }
    catch (...)
    {
        return false;
    }
}
  • 出库操作
点击查看代码
void MesMini::autoInsert_slot(const QString &strTmp){

    index = ui->spinBox->value();
    if(strTmp == ""){
        return;
    }
    int charCount = strTmp.length();
    if(charCount != index){
        return;
    }
    //查询是否入库
    if(isBePutInStore(strTmp)){
        //开始入库操作
        QDateTime currentTime = QDateTime::currentDateTime();
        QString formattedTime = currentTime.toString("yyyy-MM-dd HH:mm:ss ");
        bool isInsert = InsertData("QRTable",formattedTime,"",strTmp);
        if(isInsert){
            appendToLog(strTmp + QStringLiteral(" 入库成功"));
            ui->lineEdit_QRInsert->clear();
            lastQrStr = strTmp;
            startTime = QTime::currentTime();
        }
        else{
            appendToLog(strTmp + QStringLiteral(" 入库失败"));
        }
        return;
    }
    //是否入库未出库
    if(lastQrStr == strTmp){
        endTime = QTime::currentTime();
        int millis = fabs(endTime.msecsTo(startTime));
        if(millis < 2000){
            ui->lineEdit_QRInsert->clear();
            return;
        }

    }
    if(isNotOutOfStore(strTmp)){
        //开始出库操作
        QDateTime currentTime = QDateTime::currentDateTime();
        QString formattedTime = currentTime.toString("yyyy-MM-dd HH:mm:ss ");
        bool isUpdate = updateSql(formattedTime,strTmp);
        if(isUpdate){
            appendToLog(strTmp + QStringLiteral(" 出库成功"));
            ui->lineEdit_QRInsert->clear();
        }
        else{
            appendToLog(strTmp + QStringLiteral(" 出库失败"));
        }
        return;

    }
}

posted on 2024-12-10 15:49  代码的无意义  阅读(73)  评论(0)    收藏  举报

导航