浏览代码

添加了同步百胜订单状态的方法

liuzhiwei 7 年之前
父节点
当前提交
d01eb4b22e

+ 22 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 import java.util.List;
 
@@ -59,4 +61,24 @@ public interface SalesOrderService {
      */
     List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem);
 
+    /**
+     * 添加订单信息
+     * @param obj
+     */
+    void addSalesOrderList(JSONObject obj) throws Exception;
+
+    /**
+     * 批量修改订单信息
+     * @param list
+     * @return
+     */
+    Integer updateOrderList(JSONArray orderList, List<SalesOrder> list);
+
+    /**
+     * 批量修改退货订单状态
+     * @param orderList
+     * @param list
+     * @return
+     */
+    Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list);
 }

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/EfastOrderService.java

@@ -68,4 +68,14 @@ public interface EfastOrderService {
      * @throws Exception
      */
     int getPayType(String payName) throws Exception;
+
+    /**
+     * 批量查询百胜退货订单数据
+     * @param pageNo
+     * @param pageSize
+     * @param date
+     * @return
+     * @throws Exception
+     */
+    JSONObject listReturnOrderFormEfast(int pageNo,int pageSize, String date) throws Exception;
 }

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java

@@ -91,6 +91,13 @@ public interface SysService {
     List<Relu> ListSysRelu(Relu relu);
 
     /**
+     * 修改规则表数据
+     * @param relu
+     * @return
+     */
+    Integer updateRelu(Relu relu);
+
+    /**
      * 添加管理员信息
      * @param admin
      * @return

+ 189 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -2,11 +2,22 @@ package com.iamberry.rst.service.cm;
 
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.cm.StoreInfo;
+import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.cm.StoreInfoService;
+import com.iamberry.rst.faces.order.EfastOrderService;
+import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
+import com.iamberry.wechat.tools.DateTimeUtil;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -17,6 +28,14 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
     @Autowired
     private SalesOrderMapper salesOrderMapper;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private StoreInfoService storeInfoService;
+    @Autowired
+    private EfastOrderService efastOrderService;
+    @Autowired
+    private SalesOrderService salesOrderService;
 
     @Override
     public Integer addSalesOrder(SalesOrder salesOrder) {
@@ -73,4 +92,174 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
         return salesOrderMapper.listSalesOrderItem(salesOrderItem);
     }
+
+    @Override
+    public Integer updateOrderList(JSONArray orderList, List<SalesOrder> list) {
+        List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
+        //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
+        for (int i = 0;i < orderList.size();i++) {
+            JSONObject orderInfo = orderList.getJSONObject(i);
+            for (SalesOrder salesOrder : list) {
+                if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId())
+                        && (orderInfo.getInt("order_status") != salesOrder.getSalesStatus()
+                        || orderInfo.getInt("shipping_status") != salesOrder.getSalesShippingStatus()
+                        || orderInfo.getInt("pay_status") != salesOrder.getSalesPayStatus()
+                        || orderInfo.getInt("process_status") != salesOrder.getSalesProcessStatus()
+                        || orderInfo.getInt("is_send") != salesOrder.getSalesIsSend()
+                        || orderInfo.getInt("is_locked") != salesOrder.getSalesIsLocked()
+                        || orderInfo.getInt("is_separate") != salesOrder.getSalesIsSeparate()
+                        || !orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm())
+                        || !orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum())
+                )) {
+                    SalesOrder order = new SalesOrder();
+                    order.setSalesId(salesOrder.getSalesId());
+                    order.setSalesOrderStatus(orderInfo.getInt("order_status"));
+                    order.setSalesShippingStatus(orderInfo.getInt("shipping_status"));
+                    order.setSalesPayStatus(orderInfo.getInt("pay_status"));
+                    order.setSalesProcessStatus(orderInfo.getInt("process_status"));
+                    order.setSalesIsSend(orderInfo.getInt("is_send"));
+                    order.setSalesIsLocked(orderInfo.getInt("is_locked"));
+                    order.setSalesIsSeparate(orderInfo.getInt("is_separate"));
+                    order.setSalesPostFirm(orderInfo.getString("shipping_name"));
+                    order.setSalesPostNum(orderInfo.getString("invoice_no"));
+                    salesOrders.add(order);
+                }
+            }
+        }
+        //批量修改订单状态等信息
+        return salesOrderMapper.updateOrderList(list);
+    }
+
+    @Override
+    public Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list) {
+        List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
+        //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
+        for (int i = 0;i < orderList.size();i++) {
+            JSONObject orderInfo = orderList.getJSONObject(i);
+            for (SalesOrder salesOrder : list) {
+                if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) {
+                    SalesOrder order = new SalesOrder();
+                    switch (orderInfo.getInt("process_type")) {
+                        case 1://退货
+                            order.setSalesOrderStatus(3);
+                            break;
+                        case 4://换货
+                            order.setSalesOrderStatus(2);
+                            break;
+                        default:
+                            order.setSalesOrderStatus(3);
+                            break;
+                    }
+                    order.setSalesId(salesOrder.getSalesId());
+                    salesOrders.add(order);
+                }
+            }
+        }
+        //批量修改订单状态等信息
+        return salesOrderMapper.updateOrderList(list);
+    }
+
+    @Override
+    public void addSalesOrderList(JSONObject obj) throws Exception{
+        if (obj == null) {
+            return;
+        }
+        JSONArray orderList = obj.getJSONArray("list");
+        if (orderList == null || orderList.size() == 0) {
+            return;
+        }
+        for (int i = 0;i < orderList.size();i++) {
+            JSONObject order = orderList.getJSONObject(i);
+            //获取订单详情
+            JSONObject orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
+            if (orderInfo == null) {
+                return;
+            }
+            //获取订单项集合
+            JSONArray itemArray = orderInfo.getJSONArray("orders");
+            if (itemArray == null || itemArray.size() == 0) {
+                return;
+            }
+
+            SalesOrder salesOrder = new SalesOrder();
+            salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
+            salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
+            salesOrder.setSalesOrderStatus(1);//订单状态
+            salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
+            salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
+            salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
+            salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
+            salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
+            salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
+            salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
+			/*if (orderStatus == 2 || orderStatus == 3) {
+				continue;
+			}*/
+            salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码
+            salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号
+            salesOrder.setSalesOpenId(order.getString("mobile"));//唯一标识
+            salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name")));//支付方式
+            salesOrder.setSalesPayTime(new Date(order.getInt("pay_time")*1000));//支付时间
+            salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
+            salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
+            salesOrder.setSalesAmount(order.getInt("order_amount")*100);//应付款
+            salesOrder.setSalesPayMoney(order.getInt("money_paid")*100);//已付款
+            salesOrder.setSalesAddressName(order.getString("consignee"));//收货人
+            salesOrder.setSalesAddressTel(order.getString("mobile"));//收货人电话
+            salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
+            salesOrder.setSalesShippingFee(order.getInt("shipping_fee")*100);//邮费
+            salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
+            if (StringUtils.isNotEmpty(order.getString("delivery_time"))) {
+                salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
+            }
+            salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
+            salesOrder.setSalesPledgeMoney(0);//押金金额
+            salesOrder.setSalesRemainDeposit(0);//待提取金额
+            salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
+            salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
+            salesOrder.setSalesWaitMoney(0);//待付金额
+            salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
+            salesOrder.setSalesPayNumber("0000");//支付尾号
+            salesOrder.setSalesType(1);//订单类型
+            //查询店铺信息
+            StoreInfo storeInfo = new StoreInfo();
+            storeInfo.setStoreEfast(order.getString("sd_id"));
+            List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
+            int storeId = 0;
+            int companyId = 0;
+            if (storeList != null && storeList.size() > 0) {
+                storeInfo = storeList.get(0);
+                storeId = storeInfo.getStoreId();
+                companyId = storeInfo.getCompanyId();
+            }
+            salesOrder.setSalesStoreId(storeId);//店铺id
+            salesOrder.setSalesCompanyId(companyId);//销售公司id
+            List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
+            for (int j = 0;j < itemArray.size();j++) {
+                ProductColor color = new ProductColor();
+                JSONObject itemJson = itemArray.getJSONObject(j);
+                SalesOrderItem item = new SalesOrderItem();
+                color.setColorBar(itemJson.getString("goods_sn"));
+                List<ProductColor> colorList = productService.listproductAndColor(color);
+                if (colorList == null || colorList.size() == 0) {
+                    return;
+                }
+                color = colorList.get(0);
+                item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
+                item.setItemNum(itemJson.getInt("sn"));//商品数量
+                item.setItemCreateTime(salesOrder.getSalesCreateTime());
+                item.setItemColorId(color.getColorId());
+                item.setItemProductColor(color.getColorName());
+                item.setItemProductDiscount(color.getColorDiscount());
+                item.setItemProductId(color.getColorProductId());
+                item.setItemProductName(color.getProductName());
+                item.setItemProductPic(color.getColorPicture());
+                item.setItemProductType(color.getProductType());
+                item.setItemProductPrice(color.getColorPrice());
+                itemList.add(item);
+            }
+            //添加订单和订单项
+            salesOrderService.addOrderAndItem(salesOrder,itemList);
+        }
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -62,4 +62,11 @@ public interface SalesOrderMapper {
      * @return
      */
     Integer getOrderInfoCount(SalesOrder salesOrder);
+
+    /**
+     * 批量修改订单信息
+     * @param list
+     * @return
+     */
+    Integer updateOrderList(List<SalesOrder> list);
 }

+ 44 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -80,6 +80,9 @@
       <if test="salesAddressName !=null and salesAddressName !=''">
         AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
       </if>
+      <if test="salesCreateTime != null and salesCreateTime != ''">
+        AND tb_rst_sales_order_info <![CDATA[>=]]> #{salesCreateTime}
+      </if>
     </where>
     ORDER BY sales_create_time DESC
   </select>
@@ -278,4 +281,45 @@
     </set>
     where sales_id = #{salesId,jdbcType=INTEGER}
   </update>
+
+  <!-- 批量修改订单信息 -->
+  <update id="updateOrderList" parameterType="java.util.List">
+    <foreach collection="list" item="item" index="index" separator=";" open="" close="">
+      update tb_rst_sales_order_info
+      <set >
+        <if test="item.salesOrderStatus != null">
+          sales_order_status = #{item.salesOrderStatus,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesStatus != null">
+          sales_status = #{item.salesStatus,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesShippingStatus != null">
+          sales_shipping_status = #{item.salesShippingStatus,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesPayStatus != null">
+          sales_pay_status = #{item.salesPayStatus,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesProcessStatus != null">
+          sales_process_status = #{item.salesProcessStatus,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesIsSend != null">
+          sales_is_send = #{item.salesIsSend,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesIsLocked != null">
+          sales_is_locked = #{item.salesIsLocked,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesIsSeparate != null">
+          sales_is_separate = #{item.salesIsSeparate,jdbcType=INTEGER},
+        </if>
+        <if test="item.salesPostFirm != null" >
+          sales_post_firm = #{item.salesPostFirm,jdbcType=VARCHAR},
+        </if>
+        <if test="item.salesPostNum != null" >
+          sales_post_num = #{item.salesPostNum,jdbcType=VARCHAR},
+        </if>
+      </set>
+      where sales_id = #{item.salesId,jdbcType=INTEGER}
+    </foreach>
+  </update>
+
 </mapper>

+ 29 - 5
watero-rst-service/src/main/java/com/iamberry/rst/service/order/EfastOrderServiceImpl.java

@@ -41,6 +41,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
     private static final String EFAST_ORDER_SELECT = "efast.trade.detail.get";
     private static final String EFAST_ORDER_INVALID = "efast.trade.invalid";
     private static final String EFAST_ORDER_SELECT_LIST = "efast.trade.list.get";
+    private static final String EFAST_RETURN_ORDER_LIST = "efast.order.return.list.fetch";
     private static final String COMPANY_TEL = "075523605578";
     private static Logger logger = LoggerFactory.getLogger(EfastOrderServiceImpl.class);
     private static final String[] PAY_TYPE = {"","weixinpay","cash","","bank","alipay"};
@@ -425,10 +426,33 @@ public class EfastOrderServiceImpl implements EfastOrderService {
         return payType;
     }
 
+    @Override
+    public JSONObject listReturnOrderFormEfast(int pageNo, int pageSize, String date) throws Exception {
+        java.text.SimpleDateFormat sim = new java.text.SimpleDateFormat("yyyy-MM-dd");
+        // 组装数据
+        Map<String, String> requestData = new HashMap<String, String>();
+        requestData.put("app_nick", NameUtils.getConfig("app_nick"));
+        requestData.put("app_key", NameUtils.getConfig("app_key"));
+        requestData.put("app_secret", NameUtils.getConfig("app_secret"));
+        requestData.put("timestamp",DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
+        requestData.put("app_act", EFAST_RETURN_ORDER_LIST);
+        requestData.put("start_time", date);
+        requestData.put("page_no", String.valueOf(pageNo));
+        requestData.put("page_size", String.valueOf(pageSize));
+        try {
+            String resultJson = HttpClient431Util.doPost(requestData, NameUtils.getConfig("efast_base_url"));
+            resultJson = StringEscapeUtils.unescapeJava(resultJson); // unicode
+            logger.info("get-百胜退单列表,百胜返回信息:" + resultJson);
+            JSONObject jsonObject = JSONObject.fromObject(resultJson);
 
-//    public Map<String,Object> saveEfastOrder(){
-//
-//    }
-
-
+            // default HTTP SUCCESS
+            JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+            logger.info("get-百胜退单列表,百胜返回信息:" + resultJson);
+            return respData;
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            logger.info("get-百胜退单列表,百胜返回信息,发生错误:" + e.getMessage());
+            return null;
+        }
+    }
 }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java

@@ -127,4 +127,9 @@ public class SysServiceImpl implements SysService {
     public List<Admin> listSelectAdmin(Admin admin) {
         return sysMapper.listAdmin(admin);
     }
+
+    @Override
+    public Integer updateRelu(Relu relu) {
+        return sysMapper.updateRelu(relu);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysMapper.java

@@ -80,6 +80,13 @@ public interface SysMapper {
     List<Relu> ListSysRelu(Relu relu);
 
     /**
+     * 修改规则表数据
+     * @param relu
+     * @return
+     */
+    Integer updateRelu(Relu relu);
+
+    /**
      * 添加管理员信息
      * @param admin
      * @return

+ 22 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml

@@ -169,11 +169,32 @@
 				r_id = #{rId}
 			</if>
 			<if test="rIsStatus != null">
-				r_is_status = #{rIsStatus}
+				and r_is_status = #{rIsStatus}
 			</if>
 		</where>
 	</select>
 
+	<!-- 修改规则表数据 -->
+	<update id="updateRelu" parameterType="Relu">
+		update tb_rst_admin_relu
+		<set>
+			<if test="rNum != null">
+				r_num = #{rNum},
+			</if>
+			<if test="rText != null">
+				r_text = #{rText},
+			</if>
+		</set>
+		<where>
+			<if test="rId != null">
+				r_id = #{rId}
+			</if>
+			<if test="rIsStatus != null">
+				and r_is_status = #{rIsStatus}
+			</if>
+		</where>
+	</update>
+
 	<!-- 添加管理员 -->
 	<insert id="saveAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="adminId">
 		INSERT INTO tb_rst_sys_admin

+ 107 - 121
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -7,12 +7,14 @@ import com.iamberry.rst.core.cm.StoreInfo;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sms.SmsMessage;
+import com.iamberry.rst.core.sys.Relu;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.MessageService;
 import com.iamberry.rst.faces.sms.SmsService;
+import com.iamberry.rst.faces.sys.SysService;
 import com.iamberry.rst.service.sms.mapper.MessageMapper;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
@@ -29,6 +31,7 @@ import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.locks.Lock;
@@ -48,11 +51,12 @@ public class MQTask implements InitializingBean {
 	@Autowired
 	private EfastOrderService efastOrderService;
 	@Autowired
-	private ProductService productService;
-	@Autowired
-	private StoreInfoService storeInfoService;
-	@Autowired
 	private SalesOrderService salesOrderService;
+	@Autowired
+	private SysService sysService;
+
+	private Object lock = new Object();
+	private Object lock1 = new Object();
 
 	public void afterPropertiesSet() throws Exception {
 	}
@@ -95,136 +99,118 @@ public class MQTask implements InitializingBean {
 		int pageSize = 20;
 		boolean flag = false;	//控制是否还需要获取百胜订单信息
 		String date = "";
-		//根据时间排序查询订单信息
-		List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
-		if (orderList != null && orderList.size() > 0) {
-			SalesOrder salesOrder = orderList.get(0);
-			date = salesOrder.getSalesCreateTime().toString();
-		} else {
-			date = "2016-04-01";
-		}
-		do {
-			//批量获取百胜订单信息
-			JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize,date);
-			if (obj == null) {
-				return;
-			}
-			int pageSize1 = obj.getInt("page_size");	//百胜返回数据条目数
-			if (pageSize <= pageSize1) {
-				flag = true;
-				pageNo++;
+		synchronized (lock) {
+			//根据时间排序查询订单信息
+			List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
+			if (orderList != null && orderList.size() > 0) {
+				SalesOrder salesOrder = orderList.get(0);
+				date = salesOrder.getSalesCreateTime().toString();
 			} else {
-				flag = false;
+				date = "2016-04-01";
 			}
-			this.addSalesOrderList(obj);
-		} while (flag);	//百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
+			do {
+				//批量获取百胜订单信息
+				JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date);
+				if (obj == null) {
+					return;
+				}
+				int pageSize1 = obj.getInt("page_size");    //百胜返回数据条目数
+				if (pageSize <= pageSize1) {
+					flag = true;
+					pageNo++;
+				} else {
+					flag = false;
+				}
+				salesOrderService.addSalesOrderList(obj);
+			} while (flag);    //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
+		}
 	}
 
 	/**
-	 * 添加订单信息
-	 * @param obj
+	 * 同步百胜订单状态等信息
 	 * @throws Exception
 	 */
-	public void addSalesOrderList(JSONObject obj) throws Exception {
-		if (obj == null) {
-			return;
-		}
-		JSONArray orderList = obj.getJSONArray("list");
-		if (orderList == null || orderList.size() == 0) {
-			return;
-		}
-		for (int i = 0;i < orderList.size();i++) {
-			JSONObject order = orderList.getJSONObject(i);
-			//获取订单详情
-			JSONObject orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
-			if (orderInfo == null) {
-				return;
+	//@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+	//@Scheduled(cron = "*/10 * * * * ?")
+	public void syncEfastOrderStatus() throws Exception {
+		int pageNo = 1;
+		int pageSize = 20;
+		boolean flag = false;	//控制是否还需要获取百胜订单信息
+
+		int returnPageNo = 1;
+		int returnPageSize = 20;
+		boolean returnFlag = false;	//控制是否还需要获取百胜退单信息
+		synchronized (lock1) {
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+			Date beginDate = new Date();
+			SalesOrder order = new SalesOrder();
+			Calendar date = Calendar.getInstance();
+
+			Relu relu = new Relu();
+			relu.setrId(6);
+			relu.setrIsStatus(1);
+			//获取同步百胜订单的开始时间
+			List<Relu> reluList = sysService.ListSysRelu(relu);
+			if (reluList == null || reluList.size() == 0) {
+				relu.setrNum(7);
+				relu.setrText("0");
+			} else {
+				relu = reluList.get(0);
 			}
-			//获取订单项集合
-			JSONArray itemArray = orderInfo.getJSONArray("orders");
-			if (itemArray == null || itemArray.size() == 0) {
+			if (Integer.parseInt(relu.getrText()) > 0) {
+				date.setTime(beginDate);
+				date.set(Calendar.DATE, date.get(Calendar.DATE) - (int) relu.getrNum());
+				order.setSalesCreateTime(format.parse(format.format(date.getTime())));
+			} else {
+				order.setSalesCreateTime(format.parse("2016-04-01"));
+				relu.setrText("1");
+				//从头开始同步,只同步一次
+				sysService.updateRelu(relu);
+			}
+			//根据创建时间获取订单信息
+			List<SalesOrder> orderlist = salesOrderService.listSalesOrder(order);
+			if (orderlist == null || orderlist.size() == 0) {
 				return;
 			}
+			do {
+				//批量获取百胜订单信息
+				JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, format.format(date.getTime()));
+				if (obj == null) {
+					return;
+				}
+				JSONArray orderList = obj.getJSONArray("list");
+				if (orderList == null || orderList.size() == 0) {
+					return;
+				}
+				salesOrderService.updateOrderList(orderList, orderlist);
+				int pageSize1 = obj.getInt("page_size");    //百胜返回数据条目数
+				if (pageSize <= pageSize1) {
+					flag = true;
+					pageNo++;
+				} else {
+					flag = false;
+				}
+			} while (flag);    //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
 
-			SalesOrder salesOrder = new SalesOrder();
-			salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
-			salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
-			salesOrder.setSalesOrderStatus(1);//订单状态
-			salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
-			salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
-			salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
-			salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
-			salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
-			salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
-			salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
-			/*if (orderStatus == 2 || orderStatus == 3) {
-				continue;
-			}*/
-			salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码
-			salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号
-			salesOrder.setSalesOpenId(order.getString("mobile"));//唯一标识
-			salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name")));//支付方式
-			salesOrder.setSalesPayTime(new Date(order.getInt("pay_time")*1000));//支付时间
-			salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
-			salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
-			salesOrder.setSalesAmount(order.getInt("order_amount")*100);//应付款
-			salesOrder.setSalesPayMoney(order.getInt("money_paid")*100);//已付款
-			salesOrder.setSalesAddressName(order.getString("consignee"));//收货人
-			salesOrder.setSalesAddressTel(order.getString("mobile"));//收货人电话
-			salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
-			salesOrder.setSalesShippingFee(order.getInt("shipping_fee")*100);//邮费
-			salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
-			if (StringUtils.isNotEmpty(order.getString("delivery_time"))) {
-				salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
-			}
-			salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
-			salesOrder.setSalesPledgeMoney(0);//押金金额
-			salesOrder.setSalesRemainDeposit(0);//待提取金额
-			salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
-			salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
-			salesOrder.setSalesWaitMoney(0);//待付金额
-			salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
-			salesOrder.setSalesPayNumber("0000");//支付尾号
-			salesOrder.setSalesType(1);//订单类型
-			//查询店铺信息
-			StoreInfo storeInfo = new StoreInfo();
-			storeInfo.setStoreEfast(order.getString("sd_id"));
-			List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
-			int storeId = 0;
-			int companyId = 0;
-			if (storeList != null && storeList.size() > 0) {
-				storeInfo = storeList.get(0);
-				storeId = storeInfo.getStoreId();
-				companyId = storeInfo.getCompanyId();
-			}
-			salesOrder.setSalesStoreId(storeId);//店铺id
-			salesOrder.setSalesCompanyId(companyId);//销售公司id
-			List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
-			for (int j = 0;j < itemArray.size();j++) {
-				ProductColor color = new ProductColor();
-				JSONObject itemJson = itemArray.getJSONObject(j);
-				SalesOrderItem item = new SalesOrderItem();
-				color.setColorBar(itemJson.getString("goods_sn"));
-				List<ProductColor> colorList = productService.listproductAndColor(color);
-				if (colorList == null || colorList.size() == 0) {
+			do {
+				//批量获取百胜退单信息
+				JSONObject obj = efastOrderService.listReturnOrderFormEfast(returnPageNo, returnPageSize, format.format(date.getTime()));
+				if (obj == null) {
 					return;
 				}
-				color = colorList.get(0);
-				item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
-				item.setItemNum(itemJson.getInt("sn"));//商品数量
-				item.setItemCreateTime(salesOrder.getSalesCreateTime());
-				item.setItemColorId(color.getColorId());
-				item.setItemProductColor(color.getColorName());
-				item.setItemProductDiscount(color.getColorDiscount());
-				item.setItemProductId(color.getColorProductId());
-				item.setItemProductName(color.getProductName());
-				item.setItemProductPic(color.getColorPicture());
-				item.setItemProductType(color.getProductType());
-				item.setItemProductPrice(color.getColorPrice());
-				itemList.add(item);
-			}
-			//添加订单和订单项
-			salesOrderService.addOrderAndItem(salesOrder,itemList);
+				JSONArray orderList = obj.getJSONArray("list");
+				if (orderList == null || orderList.size() == 0) {
+					return;
+				}
+				salesOrderService.updateReturnOrderList(orderList, orderlist);
+				int pageSize1 = obj.getInt("page_size");    //百胜返回数据条目数
+				if (returnPageSize <= pageSize1) {
+					returnFlag = true;
+					returnPageNo++;
+				} else {
+					returnFlag = false;
+				}
+			} while (returnFlag);    //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
 		}
 	}
 }