Order.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package restcontroller.sale.order;
  2. import com.alibaba.fastjson2.JSONArray;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import common.Controller;
  5. import common.YosException;
  6. import common.annotation.API;
  7. import common.annotation.CACHEING;
  8. import common.data.*;
  9. import restcontroller.R;
  10. import java.io.IOException;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. public class Order extends Controller {
  14. /**
  15. * 构造函数
  16. *
  17. * @param content
  18. */
  19. public Order(JSONObject content) throws YosException {
  20. super(content);
  21. }
  22. @API(title = "查询订单列表(经销商)", apiversion = R.ID20221224180302.v1.class)
  23. public String selectList() throws YosException, IOException {
  24. ArrayList<String> statusList = new ArrayList<>();
  25. StringBuffer where = new StringBuffer(" 1=1 ");
  26. if (content.containsKey("where")) {
  27. JSONObject whereObject = content.getJSONObject("where");
  28. //状态
  29. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  30. JSONArray statusArray = whereObject.getJSONArray("status");
  31. for (int i = 0; i < statusArray.size(); i++) {
  32. statusList.add(statusArray.getString(i));
  33. }
  34. }
  35. //品牌
  36. if (whereObject.containsKey("brandname") && !"".equals(whereObject.getString("brandname"))) {
  37. where.append(" and(");
  38. where.append("t3.brandname like'%").append(whereObject.getString("brandname")).append("%' ");
  39. where.append(")");
  40. }
  41. //领域
  42. if (whereObject.containsKey("tradefield") && !"".equals(whereObject.getString("tradefield"))) {
  43. where.append(" and(");
  44. where.append("t1.tradefield like'%").append(whereObject.getString("tradefield")).append("%' ");
  45. where.append(")");
  46. }
  47. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  48. where.append(" and(");
  49. where.append("t1.type like'%").append(whereObject.getString("type")).append("%' ");
  50. where.append(")");
  51. }
  52. if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
  53. where.append(" and t1.billdate >='").append(whereObject.getString("begindate")).append("' ");
  54. }
  55. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  56. where.append(" and t1.billdate <='").append(whereObject.getString("enddate")).append("' ");
  57. }
  58. }
  59. boolean isExport = content.getBooleanValue("isExport");
  60. QuerySQL querySQL = queryList(where.toString());
  61. if (!statusList.isEmpty()) {
  62. querySQL.setWhere("t1.status", statusList);
  63. }
  64. querySQL.setOrderBy("t1.sa_orderid desc");
  65. querySQL.setPage(pageSize, pageNumber);
  66. Rows rows = querySQL.query();
  67. //查询数据:amount,defaultamount,qty
  68. ArrayList<Long> sa_orderids = rows.toArrayList("sa_orderid", new ArrayList<>());
  69. SQLFactory sqlFactory = new SQLFactory(this, "订单_查询数据");
  70. sqlFactory.addParameter("siteid", siteid);
  71. sqlFactory.addParameter_in("sa_orderid", sa_orderids);
  72. RowsMap dataRowsMap = dbConnect.runSqlQuery(sqlFactory).toRowsMap("sa_orderid");
  73. QuerySQL expressformQuery = SQLFactory.createQuerySQL(this, "expressform", "*").setTableAlias("t1");
  74. expressformQuery.addJoinTable(JOINTYPE.inner, "sa_expressform_stockbill", "t2", "t2.expressformid = t1.expressformid");
  75. expressformQuery.addJoinTable(JOINTYPE.inner, "st_stockbill_items", "t3", "t3.st_stockbillid = t2.st_stockbillid","sa_orderid");
  76. expressformQuery.setWhere("t3.sa_orderid", sa_orderids);
  77. expressformQuery.setOrderBy("t1.createdate desc");
  78. expressformQuery.setDistinct(true);
  79. Rows expressformrows = expressformQuery.query();
  80. RowsMap expressformrowsMap = expressformrows.toRowsMap("sa_orderid");
  81. RowsMap ContactsRowsMap = beans.order.Order.getContactsRowsMap(this, rows.toArrayList("rec_contactsid", new ArrayList<>()));
  82. for (Row row : rows) {
  83. Rows dataRows = dataRowsMap.getOrDefault(row.getString("sa_orderid"), new Rows());
  84. if (dataRows.isNotEmpty()) {
  85. row.putAll(dataRows.get(0));
  86. } else {
  87. row.put("amount", 0);
  88. row.put("qty", 0);
  89. }
  90. //查询收货人信息
  91. if(ContactsRowsMap.containsKey(row.getString("rec_contactsid"))){
  92. row.put("contacts", ContactsRowsMap.get(row.getString("rec_contactsid")).get(0));
  93. }else{
  94. row.put("contacts", new Row());
  95. }
  96. //查询快递信息
  97. if(expressformrowsMap.containsKey(row.getString("sa_orderid"))){
  98. row.put("expressform",expressformrowsMap.get(row.getString("sa_orderid")).get(0));
  99. }
  100. }
  101. sqlFactory = new SQLFactory(this, "订单-查询筛选出的价格");
  102. sqlFactory.addParameter("siteid", siteid);
  103. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  104. sqlFactory.addParameter_SQL("where", where);
  105. Rows amountrows = dbConnect.runSqlQuery(sqlFactory);
  106. return getSucReturnObject().setData(rows).setTips(amountrows.get(0).toJsonObject()).toString();
  107. }
  108. //查询订单列表(经销商)
  109. public QuerySQL queryList(String where) throws YosException {
  110. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_order",
  111. "sa_orderid", "sonum", "status", "type", "billdate", "tradefield", "remarks","rec_contactsid","checkdate","closedate","contact");
  112. querySQL.setTableAlias("t1");
  113. querySQL.addJoinTable(JOINTYPE.left, "sa_brand", "t3", "t3.sa_brandid = t1.sa_brandid",
  114. "brandname");
  115. querySQL.setCondition("t1.sonum", "t4.name", "t1.remarks");
  116. querySQL.setWhere("t1.siteid", siteid);
  117. querySQL.setWhere(where);
  118. querySQL.setWhere("t1.sys_enterpriseid = $sys_enterpriseid$");
  119. querySQL.setWhere("t1.deleted=0");
  120. querySQL.setWhere("((t1.createflag=1 and t1.status!='新建') or t1.createflag=0)");
  121. querySQL.addParameter("sys_enterpriseid", sys_enterpriseid);
  122. return querySQL;
  123. }
  124. @API(title = "获取当前经销商的所有订单的金额", apiversion = R.ID20221227161902.v1.class)
  125. @CACHEING
  126. public String getAmount() throws YosException {
  127. Rows rows = dbConnect.runSqlQuery("SELECT sum(amount) amount from sa_orderitems WHERE sa_orderid in (SELECT sa_orderid from sa_order WHERE sys_enterpriseid = " + sys_enterpriseid + " and siteid='" + siteid + "') and siteid='" + siteid + "'");
  128. return getSucReturnObject().setData(rows.get(0)).toString();
  129. }
  130. @API(title = "获取订单的金额", apiversion = R.ID20230105101102.v1.class)
  131. @CACHEING
  132. public String getOrderAmount() throws YosException {
  133. Long sa_orderid = content.getLong("sa_orderid");
  134. Rows rows = dbConnect.runSqlQuery("SELECT sum(amount) amount from sa_orderitems WHERE sa_orderid = '" + sa_orderid + "' and siteid='" + siteid + "'");
  135. return getSucReturnObject().setData(rows.get(0)).toString();
  136. }
  137. //返回导出的标题
  138. public HashMap<String, String> getTitleMap() {
  139. HashMap<String, String> titleMap = new HashMap<>();
  140. titleMap.put("sonum", "订单编号");
  141. titleMap.put("brandname", "品牌名称");
  142. titleMap.put("type", "订单类型");
  143. titleMap.put("tradefield", "领域");
  144. titleMap.put("remarks", "备注");
  145. titleMap.put("status", "状态");
  146. titleMap.put("createdate", "创建时间");
  147. titleMap.put("name", "收货人");
  148. titleMap.put("amount", "订单金额");
  149. titleMap.put("qty", "订单数量");
  150. return titleMap;
  151. }
  152. }