mirror of https://github.com/jeecgboot/jeecg-boot
feat : (WIP) sku temp build
parent
08528696c7
commit
e2cfbf031f
|
@ -0,0 +1,123 @@
|
||||||
|
package org.jeecg.modules.business.domain.api.mabang.doSearchSkuListNew;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jeecg.modules.business.domain.api.mabang.getorderlist.NetworkDataStream;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class provide stream of order.
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class UnpairedSkuListStream implements NetworkDataStream<SkuData> {
|
||||||
|
|
||||||
|
private final NetworkDataStream<SkuListResponse> rawStream;
|
||||||
|
|
||||||
|
private List<SkuData> skus;
|
||||||
|
|
||||||
|
private int index;
|
||||||
|
|
||||||
|
private boolean began;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag of current data is already empty,
|
||||||
|
* either currentOrders is null or currentIndex arrives at the end.
|
||||||
|
* In both case, we should call next() of the rawStream.
|
||||||
|
*/
|
||||||
|
private boolean empty;
|
||||||
|
|
||||||
|
|
||||||
|
public UnpairedSkuListStream(NetworkDataStream<SkuListResponse> rawStream) {
|
||||||
|
this.rawStream = rawStream;
|
||||||
|
skus = null;
|
||||||
|
this.index = 0;
|
||||||
|
this.empty = true;
|
||||||
|
this.began = false;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<SkuData> all() {
|
||||||
|
SkuData firstElement = attempt();
|
||||||
|
if (firstElement == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<SkuData> res = new ArrayList<>();
|
||||||
|
if (firstElement.getStatus().equals(SkuStatus.AutomaticallyCreated)) {
|
||||||
|
res.add(firstElement);
|
||||||
|
}
|
||||||
|
while (hasNext()) {
|
||||||
|
SkuData nextSku = next();
|
||||||
|
if(nextSku.getStatus().equals(SkuStatus.AutomaticallyCreated)) {
|
||||||
|
res.add(nextSku);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public SkuData attempt() {
|
||||||
|
began = true;
|
||||||
|
log.info("Attempting for the first request");
|
||||||
|
SkuListResponse response = rawStream.attempt();
|
||||||
|
if (response == null) {
|
||||||
|
log.info("No response");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (response.getData().isEmpty()) {
|
||||||
|
log.info("Response with empty data");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
skus = response.getData().toJavaList(SkuData.class);
|
||||||
|
log.info("Raw response: {}", response.getData());
|
||||||
|
index = 1;
|
||||||
|
log.info("Returned the first element");
|
||||||
|
empty = index >= skus.size();
|
||||||
|
return skus.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
// the first time
|
||||||
|
if (!began) {
|
||||||
|
throw new IllegalStateException("Calling hasNext before begin");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Current data is not yet empty
|
||||||
|
if (index < skus.size()) {
|
||||||
|
log.debug("Current order list is not empty yet");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Current data is empty */
|
||||||
|
this.empty = true;
|
||||||
|
log.debug("Current order list is already empty,");
|
||||||
|
// and raw stream is empty too.
|
||||||
|
if (!rawStream.hasNext()) {
|
||||||
|
log.debug("and source stream is empty too, hasNext: false");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// but raw stream not empty.
|
||||||
|
else {
|
||||||
|
log.debug("but source stream still has data, hasNext: true");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SkuData next() {
|
||||||
|
if (!hasNext()) {
|
||||||
|
throw new NoSuchElementException("Stream is empty!");
|
||||||
|
}
|
||||||
|
if (empty) {
|
||||||
|
skus = this.rawStream.next().getData().toJavaList(SkuData.class);
|
||||||
|
empty = false;
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
log.debug("Return data at {}", index);
|
||||||
|
SkuData res = skus.get(index);
|
||||||
|
index++;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package org.jeecg.modules.business.domain.job;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.codehaus.jettison.json.JSONException;
|
||||||
|
import org.codehaus.jettison.json.JSONObject;
|
||||||
|
import org.jeecg.modules.business.domain.api.mabang.doSearchSkuListNew.*;
|
||||||
|
import org.quartz.Job;
|
||||||
|
import org.quartz.JobDataMap;
|
||||||
|
import org.quartz.JobExecutionContext;
|
||||||
|
import org.quartz.JobExecutionException;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class MabangUnpairedSkuJob implements Job {
|
||||||
|
@Override
|
||||||
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
|
JobDataMap jobDataMap = context.getMergedJobDataMap();
|
||||||
|
List<String> skuList = new ArrayList<>();
|
||||||
|
String parameter = ((String) jobDataMap.get("parameter"));
|
||||||
|
if (parameter != null) {
|
||||||
|
try {
|
||||||
|
JSONObject jsonObject = new JSONObject(parameter);
|
||||||
|
if (!jsonObject.isNull("skus")) {
|
||||||
|
for (int i = 0; i < jsonObject.getJSONArray("skus").length(); i++) {
|
||||||
|
skuList.add(jsonObject.getJSONArray("skus").getString(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("Error while parsing parameter as JSON, falling back to default parameters.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(skuList.isEmpty()) {
|
||||||
|
log.error("No skus provided, exiting job.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SkuListRequestBody body = new SkuListRequestBody();
|
||||||
|
body.setStockSkuList(String.join(",", skuList));
|
||||||
|
SkuListRawStream rawStream = new SkuListRawStream(body);
|
||||||
|
UnpairedSkuListStream stream = new UnpairedSkuListStream(rawStream);
|
||||||
|
List<SkuData> skusFromMabang = stream.all();
|
||||||
|
// System.out.println("skus from mabang : " + skusFromMabang);
|
||||||
|
}
|
||||||
|
}
|
|
@ -107,7 +107,7 @@
|
||||||
JOIN client c ON s.owner_id = c.id
|
JOIN client c ON s.owner_id = c.id
|
||||||
JOIN client_category cc ON c.client_category_id = cc.id
|
JOIN client_category cc ON c.client_category_id = cc.id
|
||||||
WHERE po.erp_status IN (1,2)
|
WHERE po.erp_status IN (1,2)
|
||||||
AND cc.name = 'self-service'
|
AND cc.name IN ('self-service', 'confirmed')
|
||||||
AND po.order_time >= #{start}
|
AND po.order_time >= #{start}
|
||||||
ORDER BY po.order_time
|
ORDER BY po.order_time
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in New Issue