|
|
@@ -1,10 +1,7 @@
|
|
|
package com.uas.search.console.jms;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
|
|
|
-import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
@@ -27,9 +24,14 @@ import com.uas.search.console.model.BrandSimpleInfo;
|
|
|
import com.uas.search.console.model.ComponentSimpleInfo;
|
|
|
import com.uas.search.console.model.KindSimpleInfo;
|
|
|
import com.uas.search.console.model.OrderDetailSimpleInfo;
|
|
|
+import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
|
|
|
import com.uas.search.console.model.OrderInvoiceSimpleInfo;
|
|
|
import com.uas.search.console.model.OrderSimpleInfo;
|
|
|
import com.uas.search.console.model.ParsedQueueMessage;
|
|
|
+import com.uas.search.console.model.PurchaseDetailSimpleInfo;
|
|
|
+import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
|
|
|
+import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
|
|
|
+import com.uas.search.console.model.PurchaseSimpleInfo;
|
|
|
import com.uas.search.console.service.InnerOrderSearchService;
|
|
|
import com.uas.search.console.service.InnerSearchService;
|
|
|
import com.uas.search.console.util.SearchConstants;
|
|
|
@@ -129,7 +131,7 @@ public class QueueMessageParser {
|
|
|
} else if (table.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
|
|
|
objects = parseOrderInvoice(jsonObject);
|
|
|
} else if (table.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
|
|
|
- objects = parseOrderDetailInvoice(jsonObject);
|
|
|
+ objects = parseOrderInvoiceDetail(jsonObject);
|
|
|
} else if (table.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
|
|
|
objects = parsePurchase(jsonObject);
|
|
|
} else if (table.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
|
|
|
@@ -137,7 +139,7 @@ public class QueueMessageParser {
|
|
|
} else if (table.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
|
|
|
objects = parsePurchaseInvoice(jsonObject);
|
|
|
} else if (table.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
|
|
|
- objects = parsePurchaseDetailInvoice(jsonObject);
|
|
|
+ objects = parsePurchaseInvoiceDetail(jsonObject);
|
|
|
} else {
|
|
|
return null;
|
|
|
}
|
|
|
@@ -392,84 +394,213 @@ public class QueueMessageParser {
|
|
|
return orderInvoices;
|
|
|
}
|
|
|
|
|
|
- private Object[] parsePurchaseDetailInvoice(JSONObject jsonObject) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 对销售发货单明细进行解析
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @return 销售发货单明细对象数组
|
|
|
+ * @throws JSONException
|
|
|
+ */
|
|
|
+ // {"method":"insert","table":"trade$invoice_fmor_dt","ids":[124]}
|
|
|
+ private OrderInvoiceDetailSimpleInfo[] parseOrderInvoiceDetail(JSONObject jsonObject) throws JSONException {
|
|
|
+ Object[] ids = jsonObject.getJSONArray("ids").toArray();
|
|
|
+ OrderInvoiceDetailSimpleInfo[] orderInvoiceDetails = new OrderInvoiceDetailSimpleInfo[ids.length];
|
|
|
+ for (int i = 0; i < ids.length; i++) {
|
|
|
+ Long id = Long.parseLong(ids[i].toString());
|
|
|
+ OrderInvoiceDetailSimpleInfo orderInvoiceDetail = orderInvoiceDetailDao.findById(id);
|
|
|
+ OrderInvoiceDetailSimpleInfo localOrderInvoiceDetail = innerOrderSearchService.getOrderInvoiceDetail(id);
|
|
|
+ // 删除操作
|
|
|
+ if (jsonObject.getString("method").equals("delete")) {
|
|
|
+ if (orderInvoiceDetail != null) {
|
|
|
+ // 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
+ if (localOrderInvoiceDetail == null || localOrderInvoiceDetail.equals(orderInvoiceDetail)) {
|
|
|
+ orderInvoiceDetail = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (localOrderInvoiceDetail != null) {
|
|
|
+ orderInvoiceDetail = new OrderInvoiceDetailSimpleInfo();
|
|
|
+ orderInvoiceDetail.setId(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新或者插入操作
|
|
|
+ else {
|
|
|
+ // 本地有相同的数据,不更新索引
|
|
|
+ if (localOrderInvoiceDetail != null && localOrderInvoiceDetail.equals(orderInvoiceDetail)) {
|
|
|
+ orderInvoiceDetail = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orderInvoiceDetails[i] = orderInvoiceDetail;
|
|
|
+ }
|
|
|
+ return orderInvoiceDetails;
|
|
|
}
|
|
|
|
|
|
- private Object[] parsePurchaseInvoice(JSONObject jsonObject) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 对采购单进行解析
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @return 采购单对象数组
|
|
|
+ * @throws JSONException
|
|
|
+ */
|
|
|
+ // {"method":"insert","table":"trade$purchase","ids":[124]}
|
|
|
+ private PurchaseSimpleInfo[] parsePurchase(JSONObject jsonObject) throws JSONException {
|
|
|
+ Object[] ids = jsonObject.getJSONArray("ids").toArray();
|
|
|
+ System.out.println("purchase ids " + ids.length + " " + Arrays.toString(ids));
|
|
|
+ PurchaseSimpleInfo[] purchases = new PurchaseSimpleInfo[ids.length];
|
|
|
+ for (int i = 0; i < ids.length; i++) {
|
|
|
+ Long id = Long.parseLong(ids[i].toString());
|
|
|
+ PurchaseSimpleInfo purchase = purchaseDao.findById(id);
|
|
|
+ PurchaseSimpleInfo localPurchase = innerOrderSearchService.getPurchase(id);
|
|
|
+ // 删除操作
|
|
|
+ if (jsonObject.getString("method").equals("delete")) {
|
|
|
+ if (purchase != null) {
|
|
|
+ // 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
+ if (localPurchase == null || localPurchase.equals(purchase)) {
|
|
|
+ purchase = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (localPurchase != null) {
|
|
|
+ purchase = new PurchaseSimpleInfo();
|
|
|
+ purchase.setId(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新或者插入操作
|
|
|
+ else {
|
|
|
+ // 本地有相同的数据,不更新索引
|
|
|
+ if (localPurchase != null && localPurchase.equals(purchase)) {
|
|
|
+ purchase = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchases[i] = purchase;
|
|
|
+ }
|
|
|
+ return purchases;
|
|
|
}
|
|
|
|
|
|
- private Object[] parsePurchaseDetail(JSONObject jsonObject) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 对采购单明细进行解析
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @return 采购单对象数组
|
|
|
+ * @throws JSONException
|
|
|
+ */
|
|
|
+ // {"method":"insert","table":"trade$purchase_detail","ids":[124]}
|
|
|
+ private PurchaseDetailSimpleInfo[] parsePurchaseDetail(JSONObject jsonObject) throws JSONException {
|
|
|
+ Object[] ids = jsonObject.getJSONArray("ids").toArray();
|
|
|
+ System.out.println("purchaseDetail ids " + ids.length + " " + Arrays.toString(ids));
|
|
|
+ PurchaseDetailSimpleInfo[] purchaseDetails = new PurchaseDetailSimpleInfo[ids.length];
|
|
|
+ for (int i = 0; i < ids.length; i++) {
|
|
|
+ Long id = Long.parseLong(ids[i].toString());
|
|
|
+ PurchaseDetailSimpleInfo purchaseDetail = purchaseDetailDao.findById(id);
|
|
|
+ PurchaseDetailSimpleInfo localPurchaseDetail = innerOrderSearchService.getPurchaseDetail(id);
|
|
|
+ // 删除操作
|
|
|
+ if (jsonObject.getString("method").equals("delete")) {
|
|
|
+ if (purchaseDetail != null) {
|
|
|
+ // 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
+ if (localPurchaseDetail == null || localPurchaseDetail.equals(purchaseDetail)) {
|
|
|
+ purchaseDetail = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (localPurchaseDetail != null) {
|
|
|
+ purchaseDetail = new PurchaseDetailSimpleInfo();
|
|
|
+ purchaseDetail.setId(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新或者插入操作
|
|
|
+ else {
|
|
|
+ // 本地有相同的数据,不更新索引
|
|
|
+ if (localPurchaseDetail != null && localPurchaseDetail.equals(purchaseDetail)) {
|
|
|
+ purchaseDetail = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchaseDetails[i] = purchaseDetail;
|
|
|
+ }
|
|
|
+ return purchaseDetails;
|
|
|
}
|
|
|
|
|
|
- private Object[] parsePurchase(JSONObject jsonObject) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 对采购发货单进行解析
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @return 采购发货单对象数组
|
|
|
+ * @throws JSONException
|
|
|
+ */
|
|
|
+ // {"method":"insert","table":"trade$invoice_fmpu","ids":[124]}
|
|
|
+ private PurchaseInvoiceSimpleInfo[] parsePurchaseInvoice(JSONObject jsonObject) throws JSONException {
|
|
|
+ Object[] ids = jsonObject.getJSONArray("ids").toArray();
|
|
|
+ PurchaseInvoiceSimpleInfo[] purchaseInvoices = new PurchaseInvoiceSimpleInfo[ids.length];
|
|
|
+ for (int i = 0; i < ids.length; i++) {
|
|
|
+ Long id = Long.parseLong(ids[i].toString());
|
|
|
+ PurchaseInvoiceSimpleInfo purchaseInvoice = purchaseInvoiceDao.findById(id);
|
|
|
+ PurchaseInvoiceSimpleInfo localPurchaseInvoice = innerOrderSearchService.getPurchaseInvoice(id);
|
|
|
+ // 删除操作
|
|
|
+ if (jsonObject.getString("method").equals("delete")) {
|
|
|
+ if (purchaseInvoice != null) {
|
|
|
+ // 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
+ if (localPurchaseInvoice == null || localPurchaseInvoice.equals(purchaseInvoice)) {
|
|
|
+ purchaseInvoice = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (localPurchaseInvoice != null) {
|
|
|
+ purchaseInvoice = new PurchaseInvoiceSimpleInfo();
|
|
|
+ purchaseInvoice.setId(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新或者插入操作
|
|
|
+ else {
|
|
|
+ // 本地有相同的数据,不更新索引
|
|
|
+ if (localPurchaseInvoice != null && localPurchaseInvoice.equals(purchaseInvoice)) {
|
|
|
+ purchaseInvoice = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchaseInvoices[i] = purchaseInvoice;
|
|
|
+ }
|
|
|
+ return purchaseInvoices;
|
|
|
}
|
|
|
|
|
|
- private Object[] parseOrderDetailInvoice(JSONObject jsonObject) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ /**
|
|
|
+ * 对采购发货单明细进行解析
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @return 采购发货单明细对象数组
|
|
|
+ * @throws JSONException
|
|
|
+ */
|
|
|
+ // {"method":"insert","table":"trade$invoice_fmpu_dt","ids":[124]}
|
|
|
+ private PurchaseInvoiceDetailSimpleInfo[] parsePurchaseInvoiceDetail(JSONObject jsonObject) throws JSONException {
|
|
|
+ Object[] ids = jsonObject.getJSONArray("ids").toArray();
|
|
|
+ PurchaseInvoiceDetailSimpleInfo[] purchaseInvoiceDetails = new PurchaseInvoiceDetailSimpleInfo[ids.length];
|
|
|
+ for (int i = 0; i < ids.length; i++) {
|
|
|
+ Long id = Long.parseLong(ids[i].toString());
|
|
|
+ PurchaseInvoiceDetailSimpleInfo purchaseInvoiceDetail = purchaseInvoiceDetailDao.findById(id);
|
|
|
+ PurchaseInvoiceDetailSimpleInfo localPurchaseInvoiceDetail = innerOrderSearchService
|
|
|
+ .getPurchaseInvoiceDetail(id);
|
|
|
+ // 删除操作
|
|
|
+ if (jsonObject.getString("method").equals("delete")) {
|
|
|
+ if (purchaseInvoiceDetail != null) {
|
|
|
+ // 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
+ if (localPurchaseInvoiceDetail == null
|
|
|
+ || localPurchaseInvoiceDetail.equals(purchaseInvoiceDetail)) {
|
|
|
+ purchaseInvoiceDetail = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (localPurchaseInvoiceDetail != null) {
|
|
|
+ purchaseInvoiceDetail = new PurchaseInvoiceDetailSimpleInfo();
|
|
|
+ purchaseInvoiceDetail.setId(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新或者插入操作
|
|
|
+ else {
|
|
|
+ // 本地有相同的数据,不更新索引
|
|
|
+ if (localPurchaseInvoiceDetail != null && localPurchaseInvoiceDetail.equals(purchaseInvoiceDetail)) {
|
|
|
+ purchaseInvoiceDetail = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchaseInvoiceDetails[i] = purchaseInvoiceDetail;
|
|
|
+ }
|
|
|
+ return purchaseInvoiceDetails;
|
|
|
}
|
|
|
|
|
|
- // private OrderSimpleInfo[] parseOrder2(JSONObject jsonObject) throws
|
|
|
- // JSONException {
|
|
|
- // HashSet<Long> ids = parseIds(jsonObject);
|
|
|
- // // 一次性从数据库获取同一次批处理下ids中对应的所有数据(删除操作,数据可能为空)
|
|
|
- // List<OrderSimpleInfo> orderList = orderDao.findAll(ids);
|
|
|
- // System.out.println("orderList: " + orderList.size() + " " + orderList);
|
|
|
- // for (int i = 0; i < orderList.size(); i++) {
|
|
|
- // OrderSimpleInfo order = orderList.get(i);
|
|
|
- // Long id = order.getId();
|
|
|
- // System.out.println("id " + id);
|
|
|
- // OrderSimpleInfo localOrder = innerOrderSearchService.getOrder(id);
|
|
|
- // System.out.println("localOrder " + localOrder);
|
|
|
- // // 删除操作
|
|
|
- // if (jsonObject.getString("method").equals("delete")) {
|
|
|
- // // 删除之后,数据还存在,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
|
|
|
- // if (localOrder == null || localOrder.equals(order)) {
|
|
|
- // orderList.remove(i);
|
|
|
- // i--;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // // 更新或者插入操作
|
|
|
- // else {
|
|
|
- // // 本地有相同的数据,不更新索引
|
|
|
- // if (localOrder != null && localOrder.equals(order)) {
|
|
|
- // orderList.remove(i);
|
|
|
- // i--;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // System.out.println("removed orderList: " + orderList.size() + " " +
|
|
|
- // orderList);
|
|
|
- // if (CollectionUtils.isEmpty(orderList)) {
|
|
|
- // return null;
|
|
|
- // }
|
|
|
- // OrderSimpleInfo[] orders = new OrderSimpleInfo[orderList.size()];
|
|
|
- // orderList.toArray(orders);
|
|
|
- // System.out.println("orders: " + orders.length + " " + orders);
|
|
|
- // return orders;
|
|
|
- // }
|
|
|
- //
|
|
|
- // private HashSet<Long> parseIds(JSONObject jsonObject) {
|
|
|
- // System.out.println("-------------------------------------");
|
|
|
- // Object[] objectIds = jsonObject.getJSONArray("ids").toArray();
|
|
|
- // System.out.println("objectIds: " + objectIds.length + " " +
|
|
|
- // Arrays.toString(objectIds));
|
|
|
- // // 先去重
|
|
|
- // HashSet<Long> hashSetIds = new HashSet<>();
|
|
|
- // for (Object objectId : objectIds) {
|
|
|
- // Long longId = Long.valueOf(objectId.toString());
|
|
|
- // hashSetIds.add(longId);
|
|
|
- // }
|
|
|
- // System.out.println("hashSetIds: " + hashSetIds.size() + " " +
|
|
|
- // hashSetIds);
|
|
|
- // return hashSetIds;
|
|
|
- // }
|
|
|
}
|