#include "packinfo.h" #include "globalinfo.h" #include int PackInfo::lastMin = 0; int PackInfo::lastNum = 1; QString getDecimalbit(double v, int i) { QString tmp; switch(i) { case 0 : tmp.sprintf("%.0lf",v); break; case 1: tmp.sprintf("%.1lf",v); break; case 2: tmp.sprintf("%.2lf",v); break; case 3: tmp.sprintf("%.3lf",v); break; case 4: tmp.sprintf("%.4lf",v); break; case 5: tmp.sprintf("%.5lf",v); break; case 6: tmp.sprintf("%.6lf",v); break; case 7: tmp.sprintf("%.7lf",v); break; case 8: tmp.sprintf("%.8lf",v); break; default: tmp.sprintf("%.9lf",v); break; } return tmp; } PackInfo::PackInfo(const QSharedPointer & info) : _info(info) { code_single = buildPackId(); if(!info.isNull()) goods_id = info->goods_id; _time = QDateTime::currentSecsSinceEpoch(); } BoxInfo::BoxInfo(QSharedPointer pack,QString code):case_number(code),parent(pack) {} QJsonObject BoxInfo::toObject() { QJsonObject ret; ret.insert("box_weight",box_weight); ret.insert("tube_weight",tube_number); ret.insert("bucket_weight",bucket_weight); ret.insert("gross_weight",bucket_weight); ret.insert("net_weight",net_weight); ret.insert("Level",Level); ret.insert("twist_type",twist_type); ret.insert("bucket_color",bucket_color); ret.insert("sort",sort); ret.insert("remark",remark); return ret; } QSharedPointer BoxInfo::fromObject(QSharedPointer & pack,QJsonObject & obj) { QString case_number = obj.value("case_number").toString(); if(case_number.isEmpty()) return QSharedPointer(); QSharedPointer ret(new BoxInfo(pack,"")); ret->case_number = case_number; ret->box_weight = obj.value("box_weight").toInt(); ret->tube_number = obj.value("tube_number").toInt(); ret->bucket_weight = obj.value("tube_number").toInt(); ret->gross_weight = obj.value("gross_weight").toInt(); ret->net_weight = obj.value("net_weight").toInt(); ret->Level = obj.value("Level").toString(); ret->twist_type = obj.value("bucket_color").toString(); ret->bucket_color = obj.value("bucket_color").toString(); ret->sort = obj.value("sort").toString(); ret->remark = obj.value("remark").toString(); ret->parent = pack; return ret; } QJsonObject PackInfo::toObject() { QJsonObject ret; ret.insert("time",QString::number(this->time())); //todo: 小宋 ? _boxes存那里去了? ret.insert("quantity",quantity); ret.insert("level_id",level_id); ret.insert("level",level); ret.insert("machine_no",machine_no); ret.insert("packing_time",packing_time); ret.insert("packing_type",packing_type); ret.insert("operator_id",operator_id); ret.insert("carton_type",carton_type); ret.insert("remark",remark); ret.insert("telephone",telephone); ret.insert("customer",customer); ret.insert("batch_no",_info->batch_no); return ret; } QSharedPointer PackInfo::fromObject(QJsonObject &obj) { QSharedPointer ret; QString code_single = obj.value("code_single").toString(); QString batch_no = obj.value("batch_no").toString(); auto project = GlobalInfo::this_()->project(batch_no); if(code_single.isEmpty()) return ret; ret.reset(new PackInfo(project)); ret->code_single = code_single; ret->_time = obj.value("time").toString().toLongLong(); //todo: 小宋, _boxes 从那里取? ret->quantity = obj.value("quantity").toInt(); ret->level_id = obj.value("level_id").toInt(); ret->level = obj.value("level").toString(); ret->machine_no = obj.value("machine_no").toString(); ret->packing_time = obj.value("packing_time").toString(); ret->packing_type = obj.value("packing_type").toString(); ret->operator_id = obj.value("operator_id").toInt(); ret->carton_type = obj.value("canton_type").toString(); ret->remark = obj.value("remark").toString(); ret->telephone = obj.value("telephone").toString(); ret->customer = obj.value("customer").toString(); return ret; } QString PackInfo::buildPackId() { QDateTime now = QDateTime::currentDateTime(); int min = now.time().minute(); if(min != lastMin) lastNum = 1; else lastNum ++; QString packId = GlobalInfo::this_()->packNum() + now.toString("yyMMddhhmmss") + QString::asprintf("%03d",lastNum); if(lastNum > 999) return QString(); return packId; } QString PackInfo::buildBoxId() { int nowNum = boxes().size() + 1; QDateTime now = QDateTime::currentDateTime(); QString id = now.toString("yyMMddhhmmss") + /*GlobalInfo::this_()->packNum() +*/ QString::asprintf("%03d",nowNum); return id; } int PackInfo::tube_number() { int ret = 0; for(int i = 0; i < _boxes.size();++i){ ret += _boxes.at(i)->tube_number; } return ret; } int PackInfo::gross_weight() { int ret = 0; for(int i = 0; i < _boxes.size();++i){ ret += _boxes.at(i)->gross_weight; } return ret; } int PackInfo::net_weight() { int ret = 0; for(int i = 0; i < _boxes.size();++i){ ret += _boxes.at(i)->net_weight; } return ret; } QSharedPointer PackInfo::addBoxInfo() { QSharedPointer ret(new BoxInfo(sharedFromThis(),buildBoxId())); return ret; } void PackInfo::addBoxInfoList(QSharedPointer boxes) { _boxes.append(boxes); } void PackInfo::delBoxInfoAt(int num) { qDebug()<<"size"<<_boxes.size(); qDebug()<<"num"< PackInfo::boxInfoAt(int num) { return _boxes.at(num); } int PackInfo::boxInfoSize() { return _boxes.size(); }