记得上下班打卡 | git大法好,push需谨慎

Commit 0a6ade42 authored by 胡佳晨's avatar 胡佳晨

erp 同步物流

parent b872aa20
...@@ -8,4 +8,6 @@ public interface IGoblinErpService { ...@@ -8,4 +8,6 @@ public interface IGoblinErpService {
ResponseDto<Boolean> pushTrade(String orderId); ResponseDto<Boolean> pushTrade(String orderId);
ResponseDto<Boolean> syncErpLogistic();
} }
...@@ -32,7 +32,7 @@ public interface IGoblinStoreOrderService { ...@@ -32,7 +32,7 @@ public interface IGoblinStoreOrderService {
ResponseDto<Boolean> refundOrderSku(String orderId, String orderSkuId, BigDecimal price); ResponseDto<Boolean> refundOrderSku(String orderId, String orderSkuId, BigDecimal price);
ResponseDto<Boolean> express(String orderId, String orderSkuIds,String mailNo,String uid); ResponseDto<Boolean> express(String orderId, String orderSkuIds,String mailNo,String uid,String orderCode);
ResponseDto<Boolean> changeExpressMailNo(String orderId, String mailId,String mailNo); ResponseDto<Boolean> changeExpressMailNo(String orderId, String mailId,String mailNo);
......
...@@ -14,7 +14,7 @@ public class LogisticsListParam implements Cloneable { ...@@ -14,7 +14,7 @@ public class LogisticsListParam implements Cloneable {
// 回写状态: 0成功 1失败 // 回写状态: 0成功 1失败
private int status; private int status;
// 相关描述信息,可在erp的物流同步界面看到 // 相关描述信息,可在erp的物流同步界面看到
private BigDecimal message; private String message;
private static final LogisticsListParam obj = new LogisticsListParam(); private static final LogisticsListParam obj = new LogisticsListParam();
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
public class LogisticsSyncVo implements Cloneable { public class LogisticsSyncVo implements Cloneable {
// 主键,用于logistics_sync_ack回写状态 // 主键,用于logistics_sync_ack回写状态
private String rec_id; private int rec_id;
// 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置) // 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置)
private String shop_no; private String shop_no;
// 原始订单编号,商城或平台订单号 // 原始订单编号,商城或平台订单号
......
...@@ -132,6 +132,7 @@ global-auth: ...@@ -132,6 +132,7 @@ global-auth:
- ${liquidnet.info.context}/nftGoods/payType - ${liquidnet.info.context}/nftGoods/payType
- ${liquidnet.info.context}/app/mix/list - ${liquidnet.info.context}/app/mix/list
- ${liquidnet.info.context}/app/mix/details - ${liquidnet.info.context}/app/mix/details
- ${liquidnet.info.context}/wdt/**
oncheck-url-pattern: oncheck-url-pattern:
- -
# ----------------------------------------------------------- # -----------------------------------------------------------
......
package com.liquidnet.service.feign.platform.task; package com.liquidnet.service.feign.goblin.task;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
...@@ -9,15 +9,22 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -9,15 +9,22 @@ import org.springframework.web.bind.annotation.RequestParam;
@Component @Component
@FeignClient( @FeignClient(
name = "liquidnet-service-platform", name = "liquidnet-service-goblin",
contextId = "FeignPlatformErpTaskClient", contextId = "FeignGoblinErpTaskClient",
path = "platform", path = "goblin",
url = "${liquidnet.service.platform.url}", url = "${liquidnet.service.goblin.url}",
fallback = FallbackFactory.Default.class fallback = FallbackFactory.Default.class
) )
public interface FeignPlatformErpTaskClient { public interface FeignGoblinErpTaskClient {
@PostMapping("wdt/syncErpSpuStock") @PostMapping("wdt/syncErpSpuStock")
ResponseDto<Boolean> syncErpSpuStock(@RequestParam("spuId") String spuId,@RequestParam("min") Integer min); ResponseDto<Boolean> syncErpSpuStock(@RequestParam("spuId") String spuId, @RequestParam("min") Integer min);
@PostMapping("wdt/pushErpTrade")
ResponseDto<Boolean> pushErpTrade();
@PostMapping("wdt/syncErpLogistic")
ResponseDto<Boolean> syncErpLogistic();
} }
package com.liquidnet.service.executor.main.handler; package com.liquidnet.service.executor.main.handler;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.service.feign.goblin.task.FeignGoblinErpTaskClient;
import com.liquidnet.commons.lang.util.DESUtils;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.feign.platform.task.FeignPlatformErpTaskClient;
import com.liquidnet.service.feign.platform.task.FeignPlatformGoblinTaskClient;
import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
/** /**
* platform:goblin * platform:goblin
...@@ -20,12 +12,35 @@ import org.springframework.util.LinkedMultiValueMap; ...@@ -20,12 +12,35 @@ import org.springframework.util.LinkedMultiValueMap;
@Component @Component
public class PlatformErpTaskHandler { public class PlatformErpTaskHandler {
@Autowired @Autowired
private FeignPlatformErpTaskClient feignPlatformErpTaskClient; private FeignGoblinErpTaskClient feignGoblinErpTaskClient;
//库存
@XxlJob(value = "sev-platform:syncErpSpuStock") @XxlJob(value = "sev-platform:syncErpSpuStock")
public void syncErpSpuStock() { public void syncErpSpuStock() {
try { try {
XxlJobHelper.handleSuccess("结果:" + feignPlatformErpTaskClient.syncErpSpuStock("",Integer.parseInt(XxlJobHelper.getJobParam())).getData()); XxlJobHelper.handleSuccess("结果:" + feignGoblinErpTaskClient.syncErpSpuStock("",Integer.parseInt(XxlJobHelper.getJobParam())).getData());
} catch (Exception e) {
XxlJobHelper.log(e);
XxlJobHelper.handleFail();
}
}
//订单
@XxlJob(value = "sev-platform:syncErpSpuStock")
public void pushErpTrade() {
try {
XxlJobHelper.handleSuccess("结果:" + feignGoblinErpTaskClient.pushErpTrade().getData());
} catch (Exception e) {
XxlJobHelper.log(e);
XxlJobHelper.handleFail();
}
}
//物流
@XxlJob(value = "sev-platform:syncErpSpuStock")
public void syncErpLogistic() {
try {
XxlJobHelper.handleSuccess("结果:" + feignGoblinErpTaskClient.syncErpLogistic().getData());
} catch (Exception e) { } catch (Exception e) {
XxlJobHelper.log(e); XxlJobHelper.log(e);
XxlJobHelper.handleFail(); XxlJobHelper.handleFail();
......
...@@ -46,4 +46,11 @@ public class WdtController { ...@@ -46,4 +46,11 @@ public class WdtController {
return goblinErpService.pushTrade(orderId); return goblinErpService.pushTrade(orderId);
} }
@PostMapping("syncErpLogistic")
@ApiOperation("同步物流")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> syncErpLogistic() {
return goblinErpService.syncErpLogistic();
}
} }
...@@ -135,7 +135,7 @@ public class GoblinStoreOrderController { ...@@ -135,7 +135,7 @@ public class GoblinStoreOrderController {
public ResponseDto<Boolean> express(@RequestParam(value = "orderId", required = true) @Valid String orderId, public ResponseDto<Boolean> express(@RequestParam(value = "orderId", required = true) @Valid String orderId,
@RequestParam(value = "orderSkuIds", required = false) @Valid String orderSkuIds, @RequestParam(value = "orderSkuIds", required = false) @Valid String orderSkuIds,
@RequestParam(value = "mailNo", required = true) @Valid String mailNo) { @RequestParam(value = "mailNo", required = true) @Valid String mailNo) {
return goblinStoreOrderService.express(orderId, orderSkuIds, mailNo, CurrentUtil.getCurrentUid()); return goblinStoreOrderService.express(orderId, orderSkuIds, mailNo, CurrentUtil.getCurrentUid(),"");
} }
@ApiOperation(value = "修改快递单号") @ApiOperation(value = "修改快递单号")
......
...@@ -49,7 +49,7 @@ public class GoblinImportServiceImpl implements IGoblinImportService { ...@@ -49,7 +49,7 @@ public class GoblinImportServiceImpl implements IGoblinImportService {
if (mailNo == null || mailNo.equals("")) { if (mailNo == null || mailNo.equals("")) {
log.error("发货失败 orderId = " + orderId + "skuIds = " + skuIds + " 快递单号空"); log.error("发货失败 orderId = " + orderId + "skuIds = " + skuIds + " 快递单号空");
} }
ResponseDto<Boolean> express = iGoblinStoreOrderService.express(orderId, skuIds, mailNo, CurrentUtil.getCurrentUid()); ResponseDto<Boolean> express = iGoblinStoreOrderService.express(orderId, skuIds, mailNo, CurrentUtil.getCurrentUid(),"");
if (express.getCode().equals("0")) { if (express.getCode().equals("0")) {
} else { } else {
log.error("发货失败 orderId = " + orderId + "skuIds = " + skuIds + " mailNo = " + mailNo); log.error("发货失败 orderId = " + orderId + "skuIds = " + skuIds + " mailNo = " + mailNo);
......
...@@ -9,19 +9,18 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -9,19 +9,18 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.erp.config.ErpWdtClient; import com.liquidnet.service.erp.config.ErpWdtClient;
import com.liquidnet.service.erp.constant.ErpEnum; import com.liquidnet.service.erp.constant.ErpEnum;
import com.liquidnet.service.erp.param.LogisticsListParam;
import com.liquidnet.service.erp.param.OrderListParam; import com.liquidnet.service.erp.param.OrderListParam;
import com.liquidnet.service.erp.param.TradeListParam; import com.liquidnet.service.erp.param.TradeListParam;
import com.liquidnet.service.erp.utils.ErpObjectUtil; import com.liquidnet.service.erp.utils.ErpObjectUtil;
import com.liquidnet.service.erp.vo.StockQueryBaseVo; import com.liquidnet.service.erp.vo.*;
import com.liquidnet.service.erp.vo.StockQueryVo;
import com.liquidnet.service.erp.vo.SyncStockVo;
import com.liquidnet.service.erp.vo.TradePushVo;
import com.liquidnet.service.goblin.constant.GoblinRedisConst; import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.mapper.GoblinGoodsSkuMapper;
import com.liquidnet.service.goblin.service.IGoblinErpService; import com.liquidnet.service.goblin.service.IGoblinErpService;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreOrderService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils; import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils; import com.liquidnet.service.goblin.util.QueueUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -53,17 +52,15 @@ public class WdtServiceImpl implements IGoblinErpService { ...@@ -53,17 +52,15 @@ public class WdtServiceImpl implements IGoblinErpService {
@Autowired @Autowired
ErpWdtClient erpWdtClient; ErpWdtClient erpWdtClient;
@Autowired @Autowired
GoblinGoodsSkuMapper goblinGoodsSkuMapper;
@Autowired
GoblinRedisUtils goblinRedisUtils; GoblinRedisUtils goblinRedisUtils;
@Autowired @Autowired
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;
@Autowired @Autowired
MongoConverter mongoConverter; MongoConverter mongoConverter;
@Autowired @Autowired
IGoblinStoreOrderService goblinStoreOrderService;
@Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Value("${liquidnet.erp.wdt.contentSize}")
private int contentSize;
@Value("${liquidnet.erp.wdt.redisSize}") @Value("${liquidnet.erp.wdt.redisSize}")
private int redisSize; private int redisSize;
@Value("${liquidnet.erp.wdt.store.shop_no}") @Value("${liquidnet.erp.wdt.store.shop_no}")
...@@ -208,14 +205,13 @@ public class WdtServiceImpl implements IGoblinErpService { ...@@ -208,14 +205,13 @@ public class WdtServiceImpl implements IGoblinErpService {
String json = erpWdtClient.execute(ErpEnum.WdtAPI.TRADE_PUSH.getUri(), param); String json = erpWdtClient.execute(ErpEnum.WdtAPI.TRADE_PUSH.getUri(), param);
TradePushVo data = JsonUtils.fromJson(json, TradePushVo.class); TradePushVo data = JsonUtils.fromJson(json, TradePushVo.class);
int newCount = data.getNew_count(); int newCount = data.getNew_count();
if(listOrder.size()<newCount){ if (listOrder.size() < newCount) {
log.error("同步 erp 失败 "); log.error("同步 erp 失败 ");
} }
} }
return ResponseDto.success(); return ResponseDto.success();
} }
//构建 商品订单数据 //构建 商品订单数据
private List<TradeListParam> goblinOrderData(String orderId, List<TradeListParam> listOrder) { private List<TradeListParam> goblinOrderData(String orderId, List<TradeListParam> listOrder) {
TradeListParam tradeListParam = TradeListParam.getNew(); TradeListParam tradeListParam = TradeListParam.getNew();
...@@ -262,14 +258,14 @@ public class WdtServiceImpl implements IGoblinErpService { ...@@ -262,14 +258,14 @@ public class WdtServiceImpl implements IGoblinErpService {
tradeListParam.setPay_time(orderVo.getPayTime()); tradeListParam.setPay_time(orderVo.getPayTime());
tradeListParam.setBuyer_nick(orderVo.getUserName()); tradeListParam.setBuyer_nick(orderVo.getUserName());
tradeListParam.setPay_id(orderVo.getPayCode()); tradeListParam.setPay_id(orderVo.getPayCode());
if(orderVo.getOrderAttrVo().getExpressAddress().equals("")){ if (orderVo.getOrderAttrVo().getExpressAddress().equals("")) {
tradeListParam.setReceiver_name("正在映画"); tradeListParam.setReceiver_name("正在映画");
tradeListParam.setReceiver_province("北京市"); tradeListParam.setReceiver_province("北京市");
tradeListParam.setReceiver_city("北京市"); tradeListParam.setReceiver_city("北京市");
tradeListParam.setReceiver_district("朝阳区"); tradeListParam.setReceiver_district("朝阳区");
tradeListParam.setReceiver_address("广渠路 创1985园区 3-12"); tradeListParam.setReceiver_address("广渠路 创1985园区 3-12");
tradeListParam.setReceiver_mobile("15901093014"); tradeListParam.setReceiver_mobile("15901093014");
}else { } else {
tradeListParam.setReceiver_name(orderVo.getOrderAttrVo().getExpressContacts()); tradeListParam.setReceiver_name(orderVo.getOrderAttrVo().getExpressContacts());
String[] address = orderVo.getOrderAttrVo().getExpressAddress().split(" "); String[] address = orderVo.getOrderAttrVo().getExpressAddress().split(" ");
if (address.length > 0) { if (address.length > 0) {
...@@ -345,4 +341,43 @@ public class WdtServiceImpl implements IGoblinErpService { ...@@ -345,4 +341,43 @@ public class WdtServiceImpl implements IGoblinErpService {
} }
return listOrder; return listOrder;
} }
@Override
public ResponseDto<Boolean> syncErpLogistic() {
Map<String, String> paramSync = CollectionUtil.linkMapStringString();
paramSync.put("shop_no", shopNo);
paramSync.put("limit", "100");
String jsonSyc = erpWdtClient.execute(ErpEnum.WdtAPI.LOGISTICS_SYNC_QUERY.getUri(), paramSync);
LogisticSyncBaseVo dataSyc = JsonUtils.fromJson(jsonSyc, LogisticSyncBaseVo.class);
//处理平台发货
List<LogisticsSyncVo> logisticsSyncVos = dataSyc.getTrades();
List<LogisticsListParam> listParams = ObjectUtil.logisticsListParam();
for (LogisticsSyncVo vo : logisticsSyncVos) {
String orderCode = vo.getTid();
String mailNo = vo.getLogistics_no();
int recId = vo.getRec_id();
ResponseDto<Boolean> response = goblinStoreOrderService.express("", null, mailNo, "ERP", orderCode);
boolean result = response.getData();
LogisticsListParam ack = LogisticsListParam.getNew();
ack.setRec_id(recId);
if(result){
ack.setStatus(0);
ack.setMessage("正在现场物流同步成功");
}else{
ack.setStatus(1);
ack.setMessage("正在现场物流同步失败");
}
listParams.add(ack);
}
//确认物流同步 ACK
Map<String, String> paramAck = CollectionUtil.linkMapStringString();
paramAck.put("shop_no", shopNo);
paramAck.put("limit", "100");
paramAck.put("logistics_list", JSON.toJSONString(listParams));
String jsonAck = erpWdtClient.execute(ErpEnum.WdtAPI.LOGISTICS_SYNC_ACK.getUri(), paramAck);
LogisticSyncAckBaseVo dataAck = JsonUtils.fromJson(jsonAck, LogisticSyncAckBaseVo.class);
return ResponseDto.success();
}
} }
...@@ -550,7 +550,7 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService { ...@@ -550,7 +550,7 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService {
} }
@Override @Override
public ResponseDto<Boolean> express(String orderId, String orderSkuIds, String mailNo, String uid) { public ResponseDto<Boolean> express(String orderId, String orderSkuIds, String mailNo, String uid, String orderCode) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String nowStr = DateUtil.getNowTime(); String nowStr = DateUtil.getNowTime();
LinkedList<String> sqls = CollectionUtil.linkedListString(); LinkedList<String> sqls = CollectionUtil.linkedListString();
...@@ -560,12 +560,18 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService { ...@@ -560,12 +560,18 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService {
sqls.add(SqlMapping.get("goblin_order.store.express")); sqls.add(SqlMapping.get("goblin_order.store.express"));
sqls.add(SqlMapping.get("goblin_order.store.orderSkuStatus")); sqls.add(SqlMapping.get("goblin_order.store.orderSkuStatus"));
sqls.add(SqlMapping.get("goblin_order.mail")); sqls.add(SqlMapping.get("goblin_order.mail"));
GoblinStoreInfoVo storeInfoVo = redisUtils.getStoreInfoVoByUid(uid); // GoblinStoreInfoVo storeInfoVo = redisUtils.getStoreInfoVoByUid(uid);
if (storeInfoVo == null) { // if (storeInfoVo == null) {
return ResponseDto.failure("无法查看"); // return ResponseDto.failure("无法查看");
// }
GoblinStoreOrderVo orderVo = null;
if (null ==orderCode || "".equals(orderCode)) {
orderVo = redisUtils.getGoblinOrder(orderId);
} else {
orderVo = mongoUtils.getGoblinStoreOrderVoByCode(orderCode);
orderId = orderVo.getOrderId();
} }
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId); if (orderVo == null) {//|| !orderVo.getStoreId().equals(storeInfoVo.getStoreId())
if (orderVo == null || !orderVo.getStoreId().equals(storeInfoVo.getStoreId())) {
return ResponseDto.failure("无法查看"); return ResponseDto.failure("无法查看");
} }
if (orderVo.getStatus() != GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) { if (orderVo.getStatus() != GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {
......
...@@ -1115,6 +1115,10 @@ public class GoblinMongoUtils { ...@@ -1115,6 +1115,10 @@ public class GoblinMongoUtils {
return mongoTemplate.insert(vo, GoblinStoreOrderVo.class.getSimpleName()); return mongoTemplate.insert(vo, GoblinStoreOrderVo.class.getSimpleName());
} }
public GoblinStoreOrderVo getGoblinStoreOrderVoByCode(String orderCode) {
return mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(orderCode)), GoblinStoreOrderVo.class, GoblinStoreOrderVo.class.getSimpleName());
}
public UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) { public UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) {
BasicDBObject object = ObjectUtil.cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(data)); BasicDBObject object = ObjectUtil.cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(data));
return mongoTemplate.getCollection(GoblinStoreOrderVo.class.getSimpleName()).updateOne( return mongoTemplate.getCollection(GoblinStoreOrderVo.class.getSimpleName()).updateOne(
......
package com.liquidnet.service.goblin.util; package com.liquidnet.service.goblin.util;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.erp.param.LogisticsListParam;
import com.liquidnet.service.erp.param.OrderListParam; import com.liquidnet.service.erp.param.OrderListParam;
import com.liquidnet.service.erp.param.TradeListParam; import com.liquidnet.service.erp.param.TradeListParam;
import com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto; import com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto;
...@@ -103,6 +104,7 @@ public class ObjectUtil { ...@@ -103,6 +104,7 @@ public class ObjectUtil {
private static final ArrayList<GoblinMixAppListVo> goblinMixAppListVo = new ArrayList<>(); private static final ArrayList<GoblinMixAppListVo> goblinMixAppListVo = new ArrayList<>();
private static final ArrayList<CouponCountVo> couponCountVos = new ArrayList<>(); private static final ArrayList<CouponCountVo> couponCountVos = new ArrayList<>();
private static final ArrayList<GoblinMixDetailsVo> goblinMixDetailsVo = new ArrayList<>(); private static final ArrayList<GoblinMixDetailsVo> goblinMixDetailsVo = new ArrayList<>();
private static final ArrayList<LogisticsListParam> logisticsListParam = new ArrayList<>();
private static final HashMap<String, String[]> mixIdMap = new HashMap(); private static final HashMap<String, String[]> mixIdMap = new HashMap();
...@@ -110,7 +112,9 @@ public class ObjectUtil { ...@@ -110,7 +112,9 @@ public class ObjectUtil {
return (HashMap<String, String[]>) mixIdMap.clone(); return (HashMap<String, String[]>) mixIdMap.clone();
} }
public static ArrayList<LogisticsListParam> logisticsListParam() {
return (ArrayList<LogisticsListParam>) logisticsListParam.clone();
}
public static ArrayList<CouponCountVo> couponCountVos() { public static ArrayList<CouponCountVo> couponCountVos() {
return (ArrayList<CouponCountVo>) couponCountVos.clone(); return (ArrayList<CouponCountVo>) couponCountVos.clone();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment