package restcontroller.webmanage.sale.itempriceadjust; import beans.data.BatchDeleteErr; import beans.datacontrllog.DataContrlLog; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import common.Controller; import common.YosException; import common.annotation.API; import common.annotation.CACHEING; import common.annotation.CACHEING_CLEAN; import common.data.Row; import common.data.Rows; import common.data.RowsMap; import common.data.SQLFactory; import restcontroller.R; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Set; @API(title = "商品价格调整单") public class Itempriceadjust extends Controller { /** * 构造函数 * * @param content */ public Itempriceadjust(JSONObject content) throws YosException { super(content); } @API(title = "商品价格调整单新增或更新", apiversion = R.ID20221024163804.v1.class, intervaltime = 200) @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class}) public String insert_update() throws YosException { ArrayList sqlList = new ArrayList<>(); Long sa_itempriceadjustid = content.getLong("sa_itempriceadjustid"); SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单新增"); if (sa_itempriceadjustid <= 0 || dbConnect .runSqlQuery("select sa_itempriceadjustid from sa_itempriceadjust where sa_itempriceadjustid=" + sa_itempriceadjustid + " and siteid = '" + siteid + "'") .isEmpty()) { sa_itempriceadjustid = createTableID("sa_itempriceadjust"); String itempriceadjust = createBillCode("itempriceadjust"); sqlFactory.addParameter("billno", itempriceadjust); String sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "新增", "商品调价单新增:" + sa_itempriceadjustid).getSQL(); sqlList.add(sql); } else { if (dbConnect.runSqlQuery("select status from sa_itempriceadjust where sa_itempriceadjustid=" + sa_itempriceadjustid + " and siteid = '" + siteid + "'").get(0).getString("status").equals("审核")) { return getErrReturnObject().setErrMsg("审核中无法更改").toString(); } sqlFactory = new SQLFactory(this, "商品价格调整单更新"); String sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "更新", "商品调价单更新:" + sa_itempriceadjustid).getSQL(); sqlList.add(sql); } sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("username", username); sqlFactory.addParameter("userid", userid); sqlFactory.addParameter("remarks", content.getString("remarks")); sqlList.add(sqlFactory.getSQL()); dbConnect.runSqlUpdate(sqlList); content.put("sa_itempriceadjustid", sa_itempriceadjustid); return queryById(); } @API(title = "商品价格调价单列表查询", apiversion = R.ID20221024163504.v1.class) @CACHEING public String query() throws YosException { StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and (").append("createby like '%").append(whereObject.getString("condition")).append("%'"); where.append(" or ").append("changeby like '%").append(whereObject.getString("condition")).append("%'"); where.append(" or ").append("checkby like '%").append(whereObject.getString("condition")).append("%'"); where.append(" or ").append("billno like '%").append(whereObject.getString("condition")).append("%'"); where.append(" or ").append("remarks like '%").append(whereObject.getString("condition")).append("%'"); where.append(" or ").append("status like '%").append(whereObject.getString("condition")).append("%')"); } } SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单列表查询", pageSize, pageNumber, pageSorting); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter_SQL("where", where); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setData(rows).toString(); } @API(title = "删除商品价格调整单", apiversion = R.ID20221025092904.v1.class) @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class}) public String delete() throws YosException { JSONArray sa_itempriceadjustids = content.getJSONArray("sa_itempriceadjustids"); ArrayList sqlList = new ArrayList<>(); BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_itempriceadjustids.size()); for (Object object : sa_itempriceadjustids) { Long sa_itempriceadjustid = Long.valueOf(object.toString()); Rows rows = dbConnect.runSqlQuery("select status from sa_itempriceadjust where sa_itempriceadjustid = " + sa_itempriceadjustid + " and siteid= '" + siteid + "'"); if (rows.isEmpty()) { batchDeleteErr.addErr(sa_itempriceadjustid, "该数据不存在,删除失败"); continue; } else if (rows.get(0).getString("status").equals("审核")) { batchDeleteErr.addErr(sa_itempriceadjustid, "该调整单为审核状态,不可删除"); continue; } String sql = "delete from sa_itempriceadjust_itemprice where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid; sqlList.add(sql); sql = "delete from sa_itempriceadjust_items where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid; sqlList.add(sql); sql = "delete from sa_itempriceadjust where siteid = '" + siteid + "' and sa_itempriceadjustid = " + sa_itempriceadjustid; sqlList.add(sql); sql = DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "删除", "商品调价单删除:" + sa_itempriceadjustid).getSQL(); sqlList.add(sql); } dbConnect.runSqlUpdate(sqlList); return batchDeleteErr.getReturnObject().toString(); } @API(title = "商品价格调整单审核", apiversion = R.ID20221025094304.v1.class) @CACHEING_CLEAN(apiversions = {R.ID20221024163504.v1.class}) public String audit() throws YosException { Long sa_itempriceadjustid = content.getLong("sa_itempriceadjustid"); ArrayList sqlList = new ArrayList<>(); SQLFactory sqlFactory = new SQLFactory(this, "商品调价单商品价格列表查询"); sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid); sqlFactory.addParameter("siteid", siteid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); sqlFactory = new SQLFactory(this, "查询指定商品原价"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter_in("itemids", rows.toArray("itemid")); RowsMap itemPriceRowsMap = dbConnect.runSqlQuery(sqlFactory.getSQL()).toRowsMap("itemid"); sqlFactory = new SQLFactory(this, "查询指定商品"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter_in("itemids", rows.toArray("itemid")); RowsMap itemRowsMap = dbConnect.runSqlQuery(sqlFactory.getSQL()).toRowsMap("itemid"); Set itemidList = itemRowsMap.keySet(); RowsMap itemrowsmap = rows.toRowsMap("itemid"); for (String itemid : itemrowsmap.keySet()) { Rows itemrows = itemrowsmap.get(itemid); BigDecimal marketprice = itemrows.get(0).getBigDecimal("marketprice"); if (marketprice.compareTo(BigDecimal.ZERO) < 0) { return getErrReturnObject().setErrMsg("商品牌价必须大于0").toString(); } else if (itemRowsMap.get(itemid).get(0).getBigDecimal("marketprice").compareTo(itemrows.get(0).getBigDecimal("oldmarketprice")) != 0) { String itemno = getItemRow(itemid).getString("itemno"); return getErrReturnObject().setErrMsg("编号为【" + itemno + "】商品牌价发生修改,请点击【价格刷新】后再试").toString(); } sqlList.add("update plm_item set marketprice=" + itemrows.get(0).getBigDecimal("marketprice") + " where siteid='" + siteid + "' and itemid=" + itemid); } for (Row row : rows) { String itemid = row.getString("itemid"); String pricegrade = row.getString("pricegrade"); if (!itemidList.contains(itemid)) { continue; } if (row.getBigDecimal("oldprice").compareTo(BigDecimal.ZERO) >= 0 && row.getBigDecimal("price").compareTo(BigDecimal.ZERO) < 0) { return getErrReturnObject().setErrMsg("商品调整价必须大于或等于0").toString(); } RowsMap gradePriceRowsMap = itemPriceRowsMap.get(itemid).toRowsMap("pricegrade"); if (gradePriceRowsMap.containsKey("pricegrade")) { Rows priceRows = gradePriceRowsMap.get(pricegrade); if (priceRows.get(0).getBigDecimal("price").compareTo(row.getBigDecimal("oldprice")) != 0) { String itemno = getItemRow(itemid).getString("itemno"); return getErrReturnObject().setErrMsg("编号为【" + itemno + "】商品原价发生修改,请点击【价格刷新】后再试").toString(); } } if (!itemPriceRowsMap.containsKey(itemid) || !itemPriceRowsMap.get(itemid).toArrayList("pricegrade").contains(pricegrade)) { sqlFactory = new SQLFactory(this, "商品价格新增"); sqlFactory.addParameter("sa_itempriceid", createTableID("sa_itemprice")); sqlFactory.addParameter("itemno", itemRowsMap.get(itemid).get(0).getString("itemno")); } else { sqlFactory = new SQLFactory(this, "商品价格更新"); } sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("itemid", itemid); sqlFactory.addParameter("userid", userid); sqlFactory.addParameter("price", row.getBigDecimal("price")); sqlFactory.addParameter("pricegrade", pricegrade); sqlList.add(sqlFactory.getSQL()); } sqlFactory = new SQLFactory(this, "商品价格调整单审核"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("checkby", username); sqlFactory.addParameter("sa_itempriceadjustid", sa_itempriceadjustid); sqlList.add(sqlFactory.getSQL()); sqlList.add(DataContrlLog.createLog(this, "sa_itempriceadjust", sa_itempriceadjustid, "审核", "调价单审核:" + sa_itempriceadjustid).getSQL()); dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } public Row getItemRow(String itemid) throws YosException { return dbConnect.runSqlQuery(0, "SELECT * from plm_item WHERE itemid='" + itemid + "' and siteid='" + siteid + "'"); } @API(title = "商品价格调整单详情查询", apiversion = R.ID20221025093404.v1.class) public String queryById() throws YosException { SQLFactory sqlFactory = new SQLFactory(this, "商品价格调整单详情查询"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("sa_itempriceadjustid", content.getLong("sa_itempriceadjustid")); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setData(rows).toString(); } }