Itempriceadjust.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package restcontroller.webmanage.sale.itempriceadjust;
  2. import beans.data.BatchDeleteErr;
  3. import beans.datacontrllog.DataContrlLog;
  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;
  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.math.BigDecimal;
  17. import java.util.ArrayList;
  18. import java.util.Set;
  19. @API(title = "商品价格调整单")
  20. public class Itempriceadjust extends Controller {
  21. /**
  22. * 构造函数
  23. *
  24. * @param content
  25. */
  26. public Itempriceadjust(JSONObject content) throws YosException {
  27. super(content);
  28. }
  29. @API(title = "商品价格调整单新增或更新", apiversion = R.ID20221024163804.v1.class, intervaltime = 200)
  30. @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class})
  31. public String insert_update() throws YosException {
  32. ArrayList<String> sqlList = new ArrayList<>();
  33. Long sa_itempriceadjustid = content.getLong("sa_itempriceadjustid");
  34. SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单新增");
  35. if (sa_itempriceadjustid <= 0 || dbConnect
  36. .runSqlQuery("select sa_itempriceadjustid from sa_itempriceadjust where sa_itempriceadjustid="
  37. + sa_itempriceadjustid
  38. + " and siteid = '"
  39. + siteid
  40. + "'")
  41. .isEmpty()) {
  42. sa_itempriceadjustid = createTableID("sa_itempriceadjust");
  43. String itempriceadjust = createBillCode("itempriceadjust");
  44. sqlFactory.addParameter("billno", itempriceadjust);
  45. String sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "新增", "商品调价单新增:" + sa_itempriceadjustid).getSQL();
  46. sqlList.add(sql);
  47. } else {
  48. if (dbConnect.runSqlQuery("select status from sa_itempriceadjust where sa_itempriceadjustid="
  49. + sa_itempriceadjustid
  50. + " and siteid = '"
  51. + siteid
  52. + "'").get(0).getString("status").equals("审核")) {
  53. return getErrReturnObject().setErrMsg("审核中无法更改").toString();
  54. }
  55. sqlFactory = new SQLFactory(this, "商品价格调整单更新");
  56. String sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "更新", "商品调价单更新:" + sa_itempriceadjustid).getSQL();
  57. sqlList.add(sql);
  58. }
  59. sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid);
  60. sqlFactory.addParameter("siteid", siteid);
  61. sqlFactory.addParameter("username", username);
  62. sqlFactory.addParameter("userid", userid);
  63. sqlFactory.addParameter("remarks", content.getString("remarks"));
  64. sqlList.add(sqlFactory.getSQL());
  65. dbConnect.runSqlUpdate(sqlList);
  66. content.put("sa_itempriceadjustid", sa_itempriceadjustid);
  67. return queryById();
  68. }
  69. @API(title = "商品价格调价单列表查询", apiversion = R.ID20221024163504.v1.class)
  70. @CACHEING
  71. public String query() throws YosException {
  72. StringBuffer where = new StringBuffer(" 1=1 ");
  73. if (content.containsKey("where")) {
  74. JSONObject whereObject = content.getJSONObject("where");
  75. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  76. where.append(" and (").append("createby like '%").append(whereObject.getString("condition")).append("%'");
  77. where.append(" or ").append("changeby like '%").append(whereObject.getString("condition")).append("%'");
  78. where.append(" or ").append("checkby like '%").append(whereObject.getString("condition")).append("%'");
  79. where.append(" or ").append("billno like '%").append(whereObject.getString("condition")).append("%'");
  80. where.append(" or ").append("remarks like '%").append(whereObject.getString("condition")).append("%'");
  81. where.append(" or ").append("status like '%").append(whereObject.getString("condition")).append("%')");
  82. }
  83. }
  84. SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单列表查询", pageSize, pageNumber, pageSorting);
  85. sqlFactory.addParameter("siteid", siteid);
  86. sqlFactory.addParameter_SQL("where", where);
  87. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  88. return getSucReturnObject().setData(rows).toString();
  89. }
  90. @API(title = "删除商品价格调整单", apiversion = R.ID20221025092904.v1.class)
  91. @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class})
  92. public String delete() throws YosException {
  93. JSONArray sa_itempriceadjustids = content.getJSONArray("sa_itempriceadjustids");
  94. ArrayList<String> sqlList = new ArrayList<>();
  95. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_itempriceadjustids.size());
  96. for (Object object : sa_itempriceadjustids) {
  97. Long sa_itempriceadjustid = Long.valueOf(object.toString());
  98. Rows rows = dbConnect.runSqlQuery("select status from sa_itempriceadjust where sa_itempriceadjustid = " + sa_itempriceadjustid + " and siteid= '" + siteid + "'");
  99. if (rows.isEmpty()) {
  100. batchDeleteErr.addErr(sa_itempriceadjustid, "该数据不存在,删除失败");
  101. continue;
  102. } else if (rows.get(0).getString("status").equals("审核")) {
  103. batchDeleteErr.addErr(sa_itempriceadjustid, "该调整单为审核状态,不可删除");
  104. continue;
  105. }
  106. String sql = "delete from sa_itempriceadjust_itemprice where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid;
  107. sqlList.add(sql);
  108. sql = "delete from sa_itempriceadjust_items where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid;
  109. sqlList.add(sql);
  110. sql = "delete from sa_itempriceadjust where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid;
  111. sqlList.add(sql);
  112. sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "删除", "商品调价单删除:" + sa_itempriceadjustid).getSQL();
  113. sqlList.add(sql);
  114. }
  115. dbConnect.runSqlUpdate(sqlList);
  116. return batchDeleteErr.getReturnObject().toString();
  117. }
  118. @API(title = "商品价格调整单审核", apiversion = R.ID20221025094304.v1.class)
  119. @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class})
  120. public String audit() throws YosException {
  121. Long sa_itempriceadjustid = content.getLong("sa_itempriceadjustid");
  122. ArrayList<String> sqlList = new ArrayList<>();
  123. SQLFactory sqlFactory = new SQLFactory(this, "商品调价单商品价格列表查询");
  124. sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid);
  125. sqlFactory.addParameter("siteid", siteid);
  126. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  127. sqlFactory = new SQLFactory(this, "查询指定商品原价");
  128. sqlFactory.addParameter("siteid", siteid);
  129. sqlFactory.addParameter_in("itemids", rows.toArray("itemid"));
  130. RowsMap itemPriceRowsMap = dbConnect.runSqlQuery(sqlFactory.getSQL()).toRowsMap("itemid");
  131. sqlFactory = new SQLFactory(this, "查询指定商品");
  132. sqlFactory.addParameter("siteid", siteid);
  133. sqlFactory.addParameter_in("itemids", rows.toArray("itemid"));
  134. RowsMap itemRowsMap = dbConnect.runSqlQuery(sqlFactory.getSQL()).toRowsMap("itemid");
  135. Set<String> itemidList = itemRowsMap.keySet();
  136. RowsMap itemrowsmap = rows.toRowsMap("itemid");
  137. for (String itemid : itemrowsmap.keySet()) {
  138. Rows itemrows = itemrowsmap.get(itemid);
  139. BigDecimal marketprice = itemrows.get(0).getBigDecimal("marketprice");
  140. if (marketprice.compareTo(BigDecimal.ZERO) < 0) {
  141. return getErrReturnObject().setErrMsg("商品牌价必须大于0").toString();
  142. } else if (itemRowsMap.get(itemid).get(0).getBigDecimal("marketprice").compareTo(itemrows.get(0).getBigDecimal("oldmarketprice")) != 0) {
  143. String itemno = getItemRow(itemid).getString("itemno");
  144. return getErrReturnObject().setErrMsg("编号为【" + itemno + "】商品牌价发生修改,请点击【价格刷新】后再试").toString();
  145. }
  146. sqlList.add("update plm_item set marketprice=" + itemrows.get(0).getBigDecimal("marketprice") + " where siteid='" + siteid + "' and itemid=" + itemid);
  147. }
  148. for (Row row : rows) {
  149. String itemid = row.getString("itemid");
  150. String pricegrade = row.getString("pricegrade");
  151. if (!itemidList.contains(itemid)) {
  152. continue;
  153. }
  154. if (row.getBigDecimal("oldprice").compareTo(BigDecimal.ZERO) >= 0 && row.getBigDecimal("price").compareTo(BigDecimal.ZERO) < 0) {
  155. return getErrReturnObject().setErrMsg("商品调整价必须大于或等于0").toString();
  156. }
  157. RowsMap gradePriceRowsMap = itemPriceRowsMap.get(itemid).toRowsMap("pricegrade");
  158. if (gradePriceRowsMap.containsKey("pricegrade")) {
  159. Rows priceRows = gradePriceRowsMap.get(pricegrade);
  160. if (priceRows.get(0).getBigDecimal("price").compareTo(row.getBigDecimal("oldprice")) != 0) {
  161. String itemno = getItemRow(itemid).getString("itemno");
  162. return getErrReturnObject().setErrMsg("编号为【" + itemno + "】商品原价发生修改,请点击【价格刷新】后再试").toString();
  163. }
  164. }
  165. if (!itemPriceRowsMap.containsKey(itemid) || !itemPriceRowsMap.get(itemid).toArrayList("pricegrade").contains(pricegrade)) {
  166. sqlFactory = new SQLFactory(this, "商品价格新增");
  167. sqlFactory.addParameter("sa_itempriceid", createTableID("sa_itemprice"));
  168. sqlFactory.addParameter("itemno", itemRowsMap.get(itemid).get(0).getString("itemno"));
  169. } else {
  170. sqlFactory = new SQLFactory(this, "商品价格更新");
  171. }
  172. sqlFactory.addParameter("siteid", siteid);
  173. sqlFactory.addParameter("itemid", itemid);
  174. sqlFactory.addParameter("userid", userid);
  175. sqlFactory.addParameter("price", row.getBigDecimal("price"));
  176. sqlFactory.addParameter("pricegrade", pricegrade);
  177. sqlList.add(sqlFactory.getSQL());
  178. }
  179. sqlFactory = new SQLFactory(this, "商品价格调整单审核");
  180. sqlFactory.addParameter("siteid", siteid);
  181. sqlFactory.addParameter("checkby", username);
  182. sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid);
  183. sqlList.add(sqlFactory.getSQL());
  184. sqlList.add(DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "审核", "调价单审核:" + sa_itempriceadjustid).getSQL());
  185. dbConnect.runSqlUpdate(sqlList);
  186. return getSucReturnObject().toString();
  187. }
  188. public Row getItemRow(String itemid) throws YosException {
  189. return dbConnect.runSqlQuery(0, "SELECT * from plm_item WHERE itemid='" + itemid + "' and siteid='" + siteid + "'");
  190. }
  191. @API(title = "商品价格调整单详情查询", apiversion = R.ID20221025093404.v1.class)
  192. public String queryById() throws YosException {
  193. SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单详情查询");
  194. sqlFactory.addParameter("siteid", siteid);
  195. sqlFactory.addParameter("sa_itempriceadjustid", content.getLong("sa_itempriceadjustid"));
  196. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  197. return getSucReturnObject().setData(rows).toString();
  198. }
  199. }