favorites.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package restcontroller.sale.favorites;
  2. import beans.itemprice.ItemPrice;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import common.Controller;
  6. import common.YosException;
  7. import common.annotation.API;
  8. import common.annotation.CACHEING;
  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 org.apache.commons.lang.StringUtils;
  15. import restcontroller.R;
  16. import restcontroller.webmanage.sale.itemgroup.itemgroup;
  17. import java.math.BigDecimal;
  18. import java.util.ArrayList;
  19. public class favorites extends Controller {
  20. /**
  21. * 构造函数
  22. *
  23. * @param content
  24. */
  25. public favorites(JSONObject content) throws YosException {
  26. super(content);
  27. }
  28. /**
  29. * 商品收藏
  30. *
  31. * @return
  32. */
  33. @API(title = "商品收藏", apiversion = R.ID20231121143403.v1.class, intervaltime = 200)
  34. @CACHEING_CLEAN(apiClass = {itemgroup.class, restcontroller.sale.itemgroup.itemgroup.class, favorites.class})
  35. public String insertormodify_item() throws YosException {
  36. long itemid = content.getLongValue("itemid");
  37. boolean iscollection = content.getBooleanValue("iscollection");
  38. BigDecimal qty = content.getBigDecimalValue("qty");
  39. BigDecimal width = content.getBigDecimalValue("width");
  40. BigDecimal length = content.getBigDecimalValue("length");
  41. Rows favoritesRows = dbConnect.runSqlQuery("select * from sa_favorites where sys_enterpriseid=" + sys_enterpriseid + " and siteid='" + siteid + "' and itemid='" + itemid + "'");
  42. ArrayList<String> sqllist = new ArrayList<>();
  43. SQLFactory sqlAddFactory = new SQLFactory(this, "商品收藏记录新增");
  44. if (favoritesRows.isEmpty()) {
  45. sqlAddFactory.addParameter("itemid", itemid);
  46. sqlAddFactory.addParameter("sa_favoritesid", createTableID("sa_favorites"));
  47. sqlAddFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  48. sqlAddFactory.addParameter("iscollection", iscollection);
  49. sqlAddFactory.addParameter("siteid", siteid);
  50. } else {
  51. sqlAddFactory = new SQLFactory(this, "商品收藏记录更新");
  52. sqlAddFactory.addParameter("sa_favoritesid", favoritesRows.get(0).getLong("sa_favoritesid"));
  53. sqlAddFactory.addParameter("iscollection", iscollection);
  54. sqlAddFactory.addParameter("siteid", siteid);
  55. sqlAddFactory.addParameter("qty", qty);
  56. sqlAddFactory.addParameter("width", width);
  57. sqlAddFactory.addParameter("length", length);
  58. }
  59. sqllist.add(sqlAddFactory.getSQL());
  60. dbConnect.runSqlUpdate(sqllist);
  61. return getSucReturnObject().toString();
  62. }
  63. /**
  64. * 商品批量收藏
  65. *
  66. * @return
  67. */
  68. @API(title = "商品批量收藏", apiversion = R.ID20231122102803.v1.class, intervaltime = 200)
  69. @CACHEING_CLEAN(apiClass = {itemgroup.class, restcontroller.sale.itemgroup.itemgroup.class, favorites.class})
  70. public String items_collect() throws YosException {
  71. JSONArray itemids = content.getJSONArray("itemids");
  72. boolean iscollection = content.getBooleanValue("iscollection");
  73. ArrayList<String> sqllist = new ArrayList<>();
  74. SQLFactory sqlFactory = new SQLFactory(this, "商品收藏记录批量更新");
  75. sqlFactory.addParameter_in("itemids", itemids.toArray());
  76. sqlFactory.addParameter("iscollection", iscollection);
  77. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  78. sqlFactory.addParameter("siteid", siteid);
  79. sqllist.add(sqlFactory.getSQL());
  80. dbConnect.runSqlUpdate(sqllist);
  81. return getSucReturnObject().toString();
  82. }
  83. @API(title = "商品收藏列表", apiversion = R.ID20231121145103.v1.class)
  84. @CACHEING
  85. public String querycollectionmx() throws YosException {
  86. /*
  87. 过滤条件设置
  88. */
  89. StringBuffer where = new StringBuffer(" 1=1 ");
  90. if (content.containsKey("where")) {
  91. JSONObject whereObject = content.getJSONObject("where");
  92. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  93. where.append(" and(");
  94. where.append("t2.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  95. where.append("or t2.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  96. where.append(")");
  97. }
  98. }
  99. /**
  100. * 查询商品明细
  101. */
  102. SQLFactory priceSqlFactory = new SQLFactory(this, "查询收藏商品原价");
  103. priceSqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  104. priceSqlFactory.addParameter("siteid", siteid);
  105. Rows pricerows = dbConnect.runSqlQuery(priceSqlFactory);
  106. RowsMap pricerowsMap = pricerows.toRowsMap("itemid");
  107. SQLFactory sqlFactory = new SQLFactory(this, "查询收藏商品列表", pageSize, pageNumber, pageSorting);
  108. sqlFactory.addParameter_SQL("where", where);
  109. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  110. sqlFactory.addParameter("siteid", siteid);
  111. Rows itemrows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  112. Rows sizecustomizedschemes = dbConnect.runSqlQuery("select * from sa_sizecustomizedscheme where siteid='" + siteid + "' ");
  113. RowsMap sizecustomizedschemesRowsMap = sizecustomizedschemes.toRowsMap("sa_sizecustomizedschemeid");
  114. Rows sizeschemedetails = dbConnect.runSqlQuery("select * from sa_sizeschemedetail where siteid='" + siteid + "' ");
  115. RowsMap sizeschemedetailsRowsMap = sizeschemedetails.toRowsMap("sa_sizecustomizedschemeid");
  116. for (Row row : itemrows) {
  117. ItemPrice itemPrice = ItemPrice.getItemPrice(this, sys_enterpriseid, row.getLong("itemid"));
  118. row.put("oldprice", itemPrice.getPrice());
  119. if (sys_enterpriseid > 0 || (usertype == 21 || usertype == 22)) {
  120. row.put("gradeprice", itemPrice.getContractprice());
  121. } else {
  122. if (pricerowsMap.containsKey(row.getString("itemid"))) {
  123. if (pricerowsMap.get(row.getString("itemid")).isNotEmpty()) {
  124. row.put("gradeprice", pricerowsMap.get(row.getString("itemid")).get(0).getBigDecimal("price"));
  125. } else {
  126. row.put("gradeprice", 0);
  127. }
  128. } else {
  129. row.put("gradeprice", 0);
  130. }
  131. }
  132. if (row.getLong("widthschemeid") != 0) {
  133. if (sizecustomizedschemesRowsMap.containsKey(row.getString("widthschemeid"))) {
  134. if (sizecustomizedschemesRowsMap.get(row.getString("widthschemeid")).isNotEmpty()) {
  135. row.put("widthtype", sizecustomizedschemesRowsMap.get(row.getString("widthschemeid")).get(0).getString("type"));
  136. row.put("widthmin", sizecustomizedschemesRowsMap.get(row.getString("widthschemeid")).get(0).getBigDecimal("min"));
  137. row.put("widthmax", sizecustomizedschemesRowsMap.get(row.getString("widthschemeid")).get(0).getBigDecimal("max"));
  138. row.put("widthdecimalplaces", sizecustomizedschemesRowsMap.get(row.getString("widthschemeid")).get(0).getBigDecimal("decimalplaces"));
  139. if (sizeschemedetailsRowsMap.containsKey(row.getString("widthschemeid"))) {
  140. row.put("widthschemedetails", sizeschemedetailsRowsMap.get(row.getString("widthschemeid")));
  141. } else {
  142. row.put("widthschemedetails", new JSONArray());
  143. }
  144. }
  145. }
  146. }
  147. if (row.getLong("lengthschemeid") != 0) {
  148. if (sizecustomizedschemesRowsMap.containsKey(row.getString("lengthschemeid"))) {
  149. if (sizecustomizedschemesRowsMap.get(row.getString("lengthschemeid")).isNotEmpty()) {
  150. row.put("lengthtype", sizecustomizedschemesRowsMap.get(row.getString("lengthschemeid")).get(0).getString("type"));
  151. row.put("lengthmin", sizecustomizedschemesRowsMap.get(row.getString("lengthschemeid")).get(0).getBigDecimal("min"));
  152. row.put("lengthmax", sizecustomizedschemesRowsMap.get(row.getString("lengthschemeid")).get(0).getBigDecimal("max"));
  153. row.put("lengthdecimalplaces", sizecustomizedschemesRowsMap.get(row.getString("lengthschemeid")).get(0).getBigDecimal("decimalplaces"));
  154. if (sizeschemedetailsRowsMap.containsKey(row.getString("lengthschemeid"))) {
  155. row.put("lengthschemedetails", sizeschemedetailsRowsMap.get(row.getString("lengthschemeid")));
  156. } else {
  157. row.put("lengthschemedetails", new JSONArray());
  158. }
  159. }
  160. }
  161. }
  162. }
  163. ArrayList<Long> ids = itemrows.toArrayList("itemid", new ArrayList<>());
  164. //默认商品图片
  165. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  166. // 封面cover
  167. RowsMap coverRowsMap = getAttachmentUrl("plm_item", ids, "cover");
  168. // 附件
  169. RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
  170. Rows rowsitemclass = dbConnect.runSqlQuery(
  171. " select t7.itemclassname,t6.itemid,t8.brandname from sa_itemsaleclass t6 inner JOIN plm_itemclass t7 ON t7.itemclassid = t6.itemclassid AND t7.siteid = t6.siteid LEFT JOIN sa_brand t8 ON t8.sa_brandid = t7.sa_brandid AND t8.siteid = t7.siteid where t6.siteid='"
  172. + siteid + "'");
  173. RowsMap itemclassRowsMap = rowsitemclass.toRowsMap("itemid");
  174. // 货品档案领域
  175. Rows rowstradefield = dbConnect.runSqlQuery(
  176. " select t6.itemid,t6.tradefield from plm_item_tradefield t6 where t6.siteid='" + siteid + "'");
  177. RowsMap tradefieldRowsMap = rowstradefield.toRowsMap("itemid");
  178. // 品牌
  179. Rows rowsbrand = dbConnect.runSqlQuery(
  180. " select distinct t8.sa_brandid,t6.itemid,t8.brandname from sa_itemsaleclass t6 inner JOIN plm_itemclass t7 ON t7.itemclassid = t6.itemclassid AND t7.siteid = t6.siteid LEFT JOIN sa_brand t8 ON t8.sa_brandid = t7.sa_brandid AND t8.siteid = t7.siteid where t6.siteid='"
  181. + siteid + "'");
  182. RowsMap brandRowsMap = rowsbrand.toRowsMap("itemid");
  183. for (Row row : itemrows) {
  184. Rows coverRows = coverRowsMap.get(row.getString("itemid"));
  185. if (coverRows.isEmpty()) {
  186. row.put("cover", "");
  187. } else {
  188. row.put("cover", coverRows.get(0).getString("url"));
  189. }
  190. if ((attRowsMap.getOrDefault(row.getString("itemid"), new Rows())).isEmpty()) {
  191. row.put("attinfos", defaultImageRows);
  192. } else {
  193. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  194. }
  195. row.put("itemclass", itemclassRowsMap.get(row.getString("itemid")));
  196. Rows tradefieldRows = tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows());
  197. row.put("tradefield", tradefieldRows);
  198. row.put("tradefield_shoppingcart", StringUtils.join(tradefieldRows.toArray("tradefield"), ","));
  199. row.put("brand", brandRowsMap.get(row.getString("itemid")));
  200. }
  201. return getSucReturnObject().setData(itemrows).toString();
  202. }
  203. }