|
@@ -104,6 +104,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
|
|
|
//配置小亚通拉取订单时间参数设置id
|
|
|
private static final Integer CONFIG_ID = 9;
|
|
|
+ //配置小亚通定时拉取京东仓发货的订单
|
|
|
+ private static final Integer PULL_JD_ID = 10;
|
|
|
SimpleDateFormat SYS_CONFIG_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
@@ -238,7 +240,9 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
}
|
|
|
String errorMsg = (String) map.get("errorMsg");//失败订单号
|
|
|
stringBuffer.append(errorMsg);
|
|
|
- if(amountNum < pageSize){
|
|
|
+
|
|
|
+ Integer pullAmount = (Integer) map.get("pullAmount");
|
|
|
+ if(pullAmount < pageSize){
|
|
|
pullFlag = false;
|
|
|
}
|
|
|
pageNumber++;
|
|
@@ -317,6 +321,150 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
return amountSuccessAllNum;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 拉取京东订单(所有订单)
|
|
|
+ * 1:定时任务 2:手动同步
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public synchronized Integer syncXYTOrderByJD(Integer type) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ if(type == 1){
|
|
|
+ SysConfig sysConfig = sysConfigMapper.getSysConfigAllLock(PULL_JD_ID);
|
|
|
+ Date date = new Date();
|
|
|
+ try {
|
|
|
+ date = SYS_CONFIG_SDF.parse(sysConfig.getConfigRemarks());
|
|
|
+ Calendar newDate = Calendar.getInstance();
|
|
|
+ if(calendar.get(Calendar.DATE) == newDate.get(Calendar.DATE)){
|
|
|
+ logger.info("该定时任务已经运行!");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY,0);
|
|
|
+ calendar.set(Calendar.MINUTE,0);
|
|
|
+ calendar.set(Calendar.SECOND,0);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ logger.info("获取配置文件失败!");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ calendar.add(Calendar.DATE,-1);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY,0);
|
|
|
+ calendar.set(Calendar.MINUTE,0);
|
|
|
+ calendar.set(Calendar.SECOND,0);
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderSyncPlatform orderSyncPlatform = getXYTPlatform();
|
|
|
+ if(orderSyncPlatform.getSyncPlatStatus() != 1){
|
|
|
+ logger.info("小亚通接口已关闭!");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> paramsMap = new HashMap<>();
|
|
|
+ List<Map<String,Object>> conditionTypeList = new ArrayList<>();
|
|
|
+ Map<String,Object> beginCreateTimeMap = new HashMap<>();
|
|
|
+ beginCreateTimeMap.put("condType","beginCreateTime");
|
|
|
+ String[] condValueCreatImes = new String[1];
|
|
|
+ condValueCreatImes[0] = sdf.format(calendar.getTime());
|
|
|
+ beginCreateTimeMap.put("condValue", condValueCreatImes);//生成开始时间
|
|
|
+ conditionTypeList.add(beginCreateTimeMap);
|
|
|
+
|
|
|
+ //结束时间
|
|
|
+// Date endCreateTime = new Date();
|
|
|
+// Map<String,Object> endCreateTimeMap = new HashMap<>();
|
|
|
+// endCreateTimeMap.put("condType","endCreateTime"); //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
|
|
|
+// String[] condValueEndCreateTimes = new String[1];
|
|
|
+// condValueEndCreateTimes[0] = sdf.format(endCreateTime);
|
|
|
+// endCreateTimeMap.put("condValue",condValueEndCreateTimes);//生成结束时间
|
|
|
+// conditionTypeList.add(endCreateTimeMap);
|
|
|
+
|
|
|
+ //订单状态 只获取发货的订单
|
|
|
+// Map<String,Object> statusTimeMap = new HashMap<>();
|
|
|
+// statusTimeMap.put("condType","orderStatus"); //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
|
|
|
+// String[] condValueStatuss = new String[1];
|
|
|
+// condValueStatuss[0] = "60"; //只查询待发货
|
|
|
+// statusTimeMap.put("condValue",condValueStatuss);
|
|
|
+// conditionTypeList.add(statusTimeMap);
|
|
|
+
|
|
|
+ Map<String,Object> shopMap = new HashMap<>();
|
|
|
+ shopMap.put("condType","shopId");
|
|
|
+ String[] shopIds = new String[1];
|
|
|
+ shopIds[0] = "100206182446";
|
|
|
+ shopMap.put("condValue",shopIds);
|
|
|
+ conditionTypeList.add(shopMap);
|
|
|
+
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ Integer amountAllNum = 0; //同步总数量
|
|
|
+ Integer amountSuccessAllNum = 0; //同步成功总数量
|
|
|
+ String batchId = ""; //批次id
|
|
|
+
|
|
|
+ //判断是否还有订单,继续拉取
|
|
|
+ boolean pullFlag = true;
|
|
|
+ Integer pageNumber = 1,pageSize=20; //控制分页
|
|
|
+ while (pullFlag){
|
|
|
+ Map<String,Object> condMap = new HashMap<>();
|
|
|
+ condMap.put("pageNumber",pageNumber);
|
|
|
+ condMap.put("pageSize",pageSize);
|
|
|
+ condMap.put("conditionType",conditionTypeList);
|
|
|
+ paramsMap.put("cond",condMap);
|
|
|
+ String json = this.syncXYT("IOrderService.query",paramsMap);
|
|
|
+
|
|
|
+ //添加订单
|
|
|
+ Map<String,Object> map = this.saveOrder(1,json,batchId);
|
|
|
+ Integer status = (Integer) map.get("status");
|
|
|
+ batchId = (String) map.get("batchId"); //批次ID
|
|
|
+ Integer amountNum = (Integer) map.get("amountNum"); //拉取订单数量
|
|
|
+ Integer amountSuccessNum = (Integer) map.get("amountSuccessNum");//保存成功数量
|
|
|
+ if(status == 1){ //0.拉取订单失败 1.拉取订单成功
|
|
|
+ amountAllNum+=amountNum;
|
|
|
+ amountSuccessAllNum+=amountSuccessNum;
|
|
|
+ }
|
|
|
+ String errorMsg = (String) map.get("errorMsg");//失败订单号
|
|
|
+ stringBuffer.append(errorMsg);
|
|
|
+
|
|
|
+ Integer pullAmount = (Integer) map.get("pullAmount");
|
|
|
+ if(pullAmount < pageSize){
|
|
|
+ pullFlag = false;
|
|
|
+ }
|
|
|
+ pageNumber++;
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
+ orderSyncLog.setSyncPlatId(orderSyncPlatform.getSyncPlatId());
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
+ orderSyncLog.setSyncLogMode(type);
|
|
|
+ orderSyncLog.setSyncLogRecentNum(amountAllNum); //同步总数量
|
|
|
+ orderSyncLog.setSyncLogErrorNum(amountAllNum - amountSuccessAllNum); //同步失败数量
|
|
|
+ if(batchId != ""){
|
|
|
+ batchId = "批次编号:"+batchId;
|
|
|
+ }
|
|
|
+ orderSyncLog.setSyncLogMsg("京东批量拉取,"+batchId); //备注
|
|
|
+ if(!stringBuffer.toString().equals("")){
|
|
|
+ String newErrorMsg = stringBuffer.toString();
|
|
|
+ if(newErrorMsg.length() > 5000){
|
|
|
+ newErrorMsg = newErrorMsg.substring(0,4999);
|
|
|
+ }
|
|
|
+ orderSyncLog.setSyncLogErrorMsg(newErrorMsg); //失败信息
|
|
|
+ }
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
+
|
|
|
+ //修改配置文件
|
|
|
+ if(type == 1){
|
|
|
+ Calendar newConfigDate = Calendar.getInstance();
|
|
|
+ newConfigDate.set(Calendar.MINUTE,0);
|
|
|
+ newConfigDate.set(Calendar.SECOND,0);
|
|
|
+ SysConfig newSysConfig = new SysConfig();
|
|
|
+ newSysConfig.setConfigId(PULL_JD_ID);
|
|
|
+ newSysConfig.setConfigParameter("2");
|
|
|
+ newSysConfig.setConfigRemarks(SYS_CONFIG_SDF.format(newConfigDate.getTime()));
|
|
|
+ sysConfigMapper.updateSysConfig(newSysConfig);
|
|
|
+ }
|
|
|
+ return amountSuccessAllNum;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Integer syncXYTOrderPostNum(Integer salesId){
|
|
|
SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesId);
|
|
@@ -974,8 +1122,9 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
Map<String,Object> returnMap = new HashMap<>();
|
|
|
|
|
|
Integer status = 0; //状态 0.拉取订单失败 1.拉取订单成功
|
|
|
- Integer amountNum = 0; //本次拉取的订单数量
|
|
|
+ Integer amountNum = 0; //本次拉取的订单数量(实际需要添加的)
|
|
|
Integer amountSuccessNum = 0; //保存成功数量
|
|
|
+ Integer pullAmount = 0; //拉取的总数量
|
|
|
String msg = ""; //备注
|
|
|
StringBuffer errorMsg = new StringBuffer(); //未防止部分拉取失败,所以加入失败原因
|
|
|
JSONObject jsonObj = new JSONObject(json);//转化为json格式
|
|
@@ -985,7 +1134,9 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
msg = "拉取订单成功";
|
|
|
|
|
|
JSONObject dataObj = jsonObj.getJSONObject("data"); //数据
|
|
|
+
|
|
|
JSONArray beanListArray = dataObj.getJSONArray("beanList");
|
|
|
+ pullAmount = beanListArray.length();
|
|
|
amountNum = beanListArray.length();
|
|
|
if(beanListArray.length() > 0){
|
|
|
for(int i=0;i<beanListArray.length();i++){
|
|
@@ -1010,7 +1161,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
salesOrder.setSalesIsSend(0);//是否通知配货0:否1:是
|
|
|
salesOrder.setSalesDeliver(1); //出库状态1:未出库2:已出库
|
|
|
salesOrder.setSalesShippingStatus(0);////发货状态0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货)11(已通知配货,后加)
|
|
|
- salesOrder.setSalesStatus(1); //确认状态 0(未确认)1(确认)2(挂起)3(作废) 4:京东自发 -- 在订单项判断中,可能会变成京东仓库自发状态
|
|
|
+ salesOrder.setSalesStatus(0); //确认状态 0(未确认)1(确认)2(挂起)3(作废) 4:京东自发 -- 在订单项判断中,可能会变成京东仓库自发状态
|
|
|
|
|
|
//小亚通订单编号
|
|
|
otherOrderId = infoObj.getLong("orderId");
|
|
@@ -1024,6 +1175,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
switch (orderStatus){
|
|
|
case 20:
|
|
|
break;
|
|
|
+ case 70: //70 已签收和已发货一样,
|
|
|
case 60:
|
|
|
salesOrder.setSalesIsSend(1);//是否通知配货0:否1:是
|
|
|
salesOrder.setSalesDeliver(2); //出库状态1:未出库2:已出库
|
|
@@ -1616,7 +1768,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
|
|
|
returnMap.put("batchId",batchId); //批次id
|
|
|
returnMap.put("status",status); //拉取订单成功
|
|
|
- returnMap.put("amountNum",amountNum); //拉取订单成功
|
|
|
+ returnMap.put("pullAmount",pullAmount); //拉取订单总数量
|
|
|
+ returnMap.put("amountNum",amountNum); //拉取实际有用的订单数量
|
|
|
returnMap.put("amountSuccessNum",amountSuccessNum); //保存成功数量
|
|
|
returnMap.put("msg",msg); //拉取订单成功
|
|
|
returnMap.put("errorMsg",errorMsg.toString()); //失败订单号
|