ShoppingCart.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. package restcontroller.sale.shoppingcart;
  2. import beans.datacontrllog.DataContrlLog;
  3. import beans.itemprice.ItemPrice;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import common.Controller;
  7. import common.YosException;
  8. import common.annotation.API;
  9. import common.annotation.CACHEING_CLEAN;
  10. import common.data.Row;
  11. import common.data.Rows;
  12. import common.data.RowsMap;
  13. import common.data.SQLFactory;
  14. import restcontroller.R;
  15. import java.io.IOException;
  16. import java.math.BigDecimal;
  17. import java.util.ArrayList;
  18. import java.util.HashMap;
  19. @API(title = "购物车管理")
  20. public class ShoppingCart extends Controller {
  21. /**
  22. * 构造函数
  23. *
  24. * @param content
  25. */
  26. public ShoppingCart(JSONObject content) throws YosException {
  27. super(content);
  28. }
  29. @API(title = "新增或更新", apiversion = R.ID20220924095102.v1.class)
  30. @CACHEING_CLEAN(apiversions = {R.ID20220924095302.class})
  31. public String insertOrUpdate() throws YosException {
  32. Long sa_brandid = content.getLongValue("sa_brandid");
  33. Long itemid = content.getLong("itemid");
  34. BigDecimal qty = content.getBigDecimal("qty");
  35. BigDecimal length = content.getBigDecimal("length");
  36. BigDecimal width = content.getBigDecimal("width");
  37. String itemno = content.getString("itemno");
  38. String tradefield = content.getStringValue("tradefield");
  39. SQLFactory sqlFactory = new SQLFactory(this, "购物车新增");
  40. Long sa_shoppingcartid = 0L;
  41. Rows rows = dbConnect.runSqlQuery("SELECT sa_shoppingcartid FROM sa_shoppingcart WHERE siteid = '" + siteid +
  42. "' AND sa_brandid = " + sa_brandid +
  43. " and length="+length+" and width="+width+" AND itemid = " + itemid +
  44. " AND sys_enterpriseid = " + sys_enterpriseid +
  45. " AND tradefield = '" + tradefield +
  46. "' AND itemno = '" + itemno + "'");
  47. if (rows.isNotEmpty()) {
  48. sa_shoppingcartid = rows.get(0).getLong("sa_shoppingcartid");
  49. }
  50. ArrayList<String> sqlList = new ArrayList<>();
  51. if (sa_shoppingcartid <= 0) {
  52. sa_shoppingcartid = createTableID("sa_shoppingcart");
  53. sqlList.add(DataContrlLog.createLog(this, "sa_shoppingcart", sa_shoppingcartid, "新增", "购物车新增" + sa_shoppingcartid).getSQL());
  54. } else {
  55. sqlFactory = new SQLFactory(this, "购物车更新");
  56. sqlList.add(DataContrlLog.createLog(this, "sa_shoppingcart", sa_shoppingcartid, "更新", "购物车更新" + sa_shoppingcartid).getSQL());
  57. }
  58. sqlFactory.addParameter("siteid", siteid);
  59. sqlFactory.addParameter("itemid", itemid);
  60. sqlFactory.addParameter("username", username);
  61. sqlFactory.addParameter("userid", userid);
  62. sqlFactory.addParameter("itemno", itemno);
  63. sqlFactory.addParameter("length", length);
  64. sqlFactory.addParameter("width", width);
  65. sqlFactory.addParameter("tradefield", tradefield);
  66. sqlFactory.addParameter("sa_shoppingcartid", sa_shoppingcartid);
  67. sqlFactory.addParameter("sa_brandid", sa_brandid);
  68. sqlFactory.addParameter("qty", qty);
  69. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  70. sqlList.add(sqlFactory.getSQL());
  71. dbConnect.runSqlUpdate(sqlList);
  72. content.put("sa_shoppingcartid", sa_shoppingcartid);
  73. return queryDetail();
  74. }
  75. @API(title = "更新数量", apiversion = R.ID20220924104302.v1.class)
  76. @CACHEING_CLEAN(apiversions = {R.ID20220924095302.class})
  77. public String updateQty() throws YosException {
  78. Long sa_shoppingcartid = content.getLong("sa_shoppingcartid");
  79. BigDecimal qty = content.getBigDecimal("qty");
  80. BigDecimal length = content.getBigDecimal("length");
  81. BigDecimal width = content.getBigDecimal("width");
  82. ArrayList<String> sqlList = new ArrayList<>();
  83. SQLFactory sqlFactory = new SQLFactory(this, "购物车更新数量");
  84. sqlFactory.addParameter("siteid", siteid);
  85. sqlFactory.addParameter("username", username);
  86. sqlFactory.addParameter("sa_shoppingcartid", sa_shoppingcartid);
  87. sqlFactory.addParameter("qty", qty);
  88. sqlFactory.addParameter("length", length);
  89. sqlFactory.addParameter("width", width);
  90. sqlList.add(sqlFactory.getSQL());
  91. //操作记录
  92. sqlList.add(DataContrlLog.createLog(this, "sa_shoppingcart", sa_shoppingcartid, "更新数量", "更新数量" + qty).getSQL());
  93. dbConnect.runSqlUpdate(sqlList);
  94. content.put("sa_shoppingcartid", sa_shoppingcartid);
  95. return queryDetail();
  96. }
  97. @API(title = "删除", apiversion = R.ID20220924095202.v1.class)
  98. @CACHEING_CLEAN(apiversions = {R.ID20220924095302.class})
  99. public String delete() throws YosException {
  100. JSONArray jsonArray = content.getJSONArray("sa_shoppingcartids");
  101. ArrayList<String> sqlList = new ArrayList<>();
  102. SQLFactory sqlFactory = new SQLFactory(this, "购物车删除");
  103. sqlFactory.addParameter_in("sa_shoppingcartid", jsonArray.toArray());
  104. sqlFactory.addParameter("siteid", siteid);
  105. sqlList.add(sqlFactory.getSQL());
  106. for (Object obj : jsonArray) {
  107. //操作记录
  108. sqlList.add(DataContrlLog.createLog(this, "sa_shoppingcart", Long.valueOf(obj.toString()), "删除", "删除" + obj).getSQL());
  109. }
  110. dbConnect.runSqlUpdate(sqlFactory);
  111. return getSucReturnObject().toString();
  112. }
  113. @API(title = "购物车列表", apiversion = R.ID20220924095302.v1.class)
  114. public String queryList() throws YosException, IOException {
  115. StringBuffer where = new StringBuffer(" 1=1 ");
  116. if (content.containsKey("where")) {
  117. JSONObject whereObject = content.getJSONObject("where");
  118. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  119. where.append(" and(");
  120. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  121. where.append("or t2.brandname like'%").append(whereObject.getString("condition")).append("%' ");
  122. where.append("or t3.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  123. where.append("or t3.model like'%").append(whereObject.getString("condition")).append("%' ");
  124. where.append("or t3.spec like'%").append(whereObject.getString("condition")).append("%' ");
  125. where.append(")");
  126. }
  127. }
  128. boolean isExport = content.getBooleanValue("isExport");
  129. Long istool = content.getLongValue("istool");
  130. SQLFactory sqlFactory = new SQLFactory(this, "购物车列表", pageSize, pageNumber, pageSorting);
  131. if (isExport) {
  132. sqlFactory = new SQLFactory(this, "购物车列表");
  133. }
  134. sqlFactory.addParameter("siteid", siteid);
  135. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  136. sqlFactory.addParameter("istool", istool);
  137. sqlFactory.addParameter_SQL("where", where);
  138. String sql = sqlFactory.getSQL();
  139. Rows rows = dbConnect.runSqlQuery(sql);
  140. ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
  141. //默认商品图片
  142. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  143. //附件
  144. RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
  145. //商品领域
  146. RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, ids);
  147. for (Row row : rows) {
  148. if ((attRowsMap.getOrDefault(row.getString("itemid"), new Rows())).isEmpty()) {
  149. row.put("attinfos", defaultImageRows);
  150. } else {
  151. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  152. }
  153. try {
  154. ItemPrice itemPrice = ItemPrice.getItemPrice(this, sys_enterpriseid, row.getLong("itemid"));
  155. row.put("oldprice", istool == 0 ?itemPrice.getContractprice():itemPrice.getMarketprice());
  156. // row.put("gradeprice", istool == 0 ?itemPrice.getContractprice():itemPrice.getMarketprice());
  157. } catch (Exception e) {
  158. e.printStackTrace();
  159. row.put("oldprice", 0);
  160. // row.put("gradeprice", 0);
  161. }
  162. row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  163. }
  164. // if (isExport) {
  165. // //去除不需要导出项
  166. // String[] removeFieldList = {"sa_shoppingcartid", "sa_brandid", "itemid", "unitgroupname", "orderminqty", "orderaddqty", "orderminqty_auxunit", "orderaddqty_auxunit"};
  167. // for (String key : removeFieldList) {
  168. // rows.getFieldList().remove(key);
  169. // }
  170. //
  171. // Rows uploadRows = uploadExcelToObs("order", "订单商品明细_列表", rows, getTitleMap());
  172. // return getSucReturnObject().setData(uploadRows).toString();
  173. // }
  174. return getSucReturnObject().setData(rows).toString();
  175. }
  176. //返回导出的标题
  177. public HashMap<String, String> getTitleMap() {
  178. HashMap<String, String> titleMap = new HashMap<>();
  179. titleMap.put("qty", "数量");
  180. titleMap.put("itemno", "产品编号");
  181. titleMap.put("tradefield", "领域");
  182. titleMap.put("brandname", "品牌");
  183. titleMap.put("itemname", "产品名称");
  184. titleMap.put("model", "型号");
  185. titleMap.put("spec", "规格尺寸");
  186. titleMap.put("unitname", "主单位");
  187. titleMap.put("auxunitname", "辅助单位");
  188. return titleMap;
  189. }
  190. @API(title = "购物车数量", apiversion = R.ID20220927093202.v1.class)
  191. public String getNum() throws YosException {
  192. Rows rows = dbConnect.runSqlQuery("SELECT COUNT(0) num FROM sa_shoppingcart t1 WHERE t1.sys_enterpriseid=" + sys_enterpriseid + " AND t1.siteid= '" + siteid + "'");
  193. return getSucReturnObject().setData(rows.get(0)).toString();
  194. }
  195. @API(title = "详情", apiversion = R.ID20220924095402.v1.class)
  196. public String queryDetail() throws YosException {
  197. Long sa_shoppingcartid = content.getLong("sa_shoppingcartid");
  198. SQLFactory sqlFactory = new SQLFactory(this, "购物车详情", pageSize, pageNumber, pageSorting);
  199. sqlFactory.addParameter("siteid", siteid);
  200. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  201. sqlFactory.addParameter("sa_shoppingcartid", sa_shoppingcartid);
  202. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  203. ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
  204. //附件
  205. RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
  206. for (Row row : rows) {
  207. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  208. try {
  209. ItemPrice itemPrice = ItemPrice.getItemPrice(this, sys_enterpriseid, row.getLong("itemid"));
  210. row.put("oldprice", itemPrice.getPrice());
  211. row.put("gradeprice", itemPrice.getGraderateprice());
  212. } catch (Exception e) {
  213. e.printStackTrace();
  214. row.put("oldprice", 0);
  215. row.put("gradeprice", 0);
  216. }
  217. }
  218. return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Row()).toString();
  219. }
  220. }