packinfo.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #include "packinfo.h"
  2. #include "globalinfo.h"
  3. #include <QDateTime>
  4. int PackInfo::lastMin = 0;
  5. int PackInfo::lastNum = 1;
  6. QString getDecimalbit(double v, int i)
  7. {
  8. QString tmp;
  9. switch(i)
  10. {
  11. case 0 :
  12. tmp.sprintf("%.0lf",v);
  13. break;
  14. case 1:
  15. tmp.sprintf("%.1lf",v);
  16. break;
  17. case 2:
  18. tmp.sprintf("%.2lf",v);
  19. break;
  20. case 3:
  21. tmp.sprintf("%.3lf",v);
  22. break;
  23. case 4:
  24. tmp.sprintf("%.4lf",v);
  25. break;
  26. case 5:
  27. tmp.sprintf("%.5lf",v);
  28. break;
  29. case 6:
  30. tmp.sprintf("%.6lf",v);
  31. break;
  32. case 7:
  33. tmp.sprintf("%.7lf",v);
  34. break;
  35. case 8:
  36. tmp.sprintf("%.8lf",v);
  37. break;
  38. default:
  39. tmp.sprintf("%.9lf",v);
  40. break;
  41. }
  42. return tmp;
  43. }
  44. PackInfo::PackInfo(const QSharedPointer<ProjectInfo> & info) : _info(info)
  45. {
  46. code_single = buildPackId();
  47. if(!info.isNull())
  48. goods_id = info->goods_id;
  49. _time = QDateTime::currentSecsSinceEpoch();
  50. }
  51. BoxInfo::BoxInfo(QSharedPointer<PackInfo> pack,QString code):case_number(code),parent(pack)
  52. {}
  53. QJsonObject BoxInfo::toObject()
  54. {
  55. QJsonObject ret;
  56. //todo: 小宋
  57. return ret;
  58. }
  59. QSharedPointer<BoxInfo> BoxInfo::fromObject(QSharedPointer<PackInfo> & pack,QJsonObject & obj)
  60. {
  61. QString case_number = obj.value("case_number").toString();
  62. if(case_number.isEmpty()) return QSharedPointer<BoxInfo>();
  63. QSharedPointer<BoxInfo> ret(new BoxInfo(pack,""));
  64. ret->case_number = case_number;
  65. // TODO 小宋
  66. return ret;
  67. }
  68. QJsonObject PackInfo::toObject()
  69. {
  70. QJsonObject ret;
  71. ret.insert("time",QString::number(this->time()));
  72. //todo: 小宋
  73. return ret;
  74. }
  75. QSharedPointer<PackInfo> PackInfo::fromObject(QJsonObject &obj)
  76. {
  77. QSharedPointer<PackInfo> ret;
  78. QString code_single = obj.value("code_single").toString();
  79. QString batch_no = obj.value("batch_no").toString();
  80. auto project = GlobalInfo::this_()->project(batch_no);
  81. if(code_single.isEmpty()) return ret;
  82. ret.reset(new PackInfo(project));
  83. ret->code_single = code_single;
  84. ret->_time = obj.value("time").toString().toLongLong();
  85. //todo: 小宋
  86. return ret;
  87. }
  88. QString PackInfo::buildPackId()
  89. {
  90. QDateTime now = QDateTime::currentDateTime();
  91. int min = now.time().minute();
  92. if(min != lastMin) lastNum = 1;
  93. else lastNum ++;
  94. QString packId = GlobalInfo::this_()->packNum() + now.toString("yyMMddhhmmss") + QString::asprintf("%03d",lastNum);
  95. if(lastNum > 999) return QString();
  96. return packId;
  97. }
  98. QString PackInfo::buildBoxId()
  99. {
  100. int nowNum = boxes().size() + 1;
  101. QDateTime now = QDateTime::currentDateTime();
  102. QString id = now.toString("yyMMddhhmmss") + /*GlobalInfo::this_()->packNum() +*/ QString::asprintf("%03d",nowNum);
  103. return id;
  104. }
  105. int PackInfo::tube_number()
  106. {
  107. int ret = 0;
  108. for(int i = 0; i < _boxes.size();++i){
  109. ret += _boxes.at(i)->tube_number;
  110. }
  111. return ret;
  112. }
  113. int PackInfo::gross_weight()
  114. {
  115. int ret = 0;
  116. for(int i = 0; i < _boxes.size();++i){
  117. ret += _boxes.at(i)->gross_weight;
  118. }
  119. return ret;
  120. }
  121. int PackInfo::net_weight()
  122. {
  123. int ret = 0;
  124. for(int i = 0; i < _boxes.size();++i){
  125. ret += _boxes.at(i)->net_weight;
  126. }
  127. return ret;
  128. }
  129. QSharedPointer<BoxInfo> PackInfo::addBoxInfo()
  130. {
  131. QSharedPointer<BoxInfo> ret(new BoxInfo(sharedFromThis(),buildBoxId()));
  132. return ret;
  133. }
  134. void PackInfo::addBoxInfoList(QSharedPointer<BoxInfo> boxes)
  135. {
  136. _boxes.append(boxes);
  137. }
  138. void PackInfo::delBoxInfoAt(int num)
  139. {
  140. qDebug()<<"size"<<_boxes.size();
  141. qDebug()<<"num"<<num;
  142. _boxes.removeAt(num);
  143. }
  144. QSharedPointer<BoxInfo> PackInfo::boxInfoAt(int num)
  145. {
  146. return _boxes.at(num);
  147. }
  148. int PackInfo::boxInfoSize()
  149. {
  150. return _boxes.size();
  151. }