ShoppingCart.java 12 KB

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