Преглед на файлове

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

wangxiaoming преди 6 години
родител
ревизия
972818b360
променени са 54 файла, в които са добавени 2999 реда и са изтрити 141 реда
  1. 13 11
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java
  2. 19 0
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/OrderNOUtil.java
  3. 2 2
      watero-rent-service/src/main/java/com/iamberry/rent/service/machine/MachineServiceImpl.java
  4. 250 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerStatisticalInfo.java
  5. 54 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  6. 66 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/DownsingleRuleInfo.java
  7. 55 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/DownsingleRuleItemInfo.java
  8. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java
  9. 65 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/LogisticsInfo.java
  10. 6 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  11. 35 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  12. 14 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/StoreInfoService.java
  13. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderService.java
  14. 6 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java
  15. 7 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  16. 229 7
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  17. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/StoreInfoServiceImpl.java
  18. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java
  19. 34 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  20. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/StoreInfoMapper.java
  21. 345 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  22. 133 3
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  23. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/storeInfoMapper.xml
  24. 21 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderServiceImpl.java
  25. 14 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/OrderMapper.java
  26. 90 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderMapper.xml
  27. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java
  28. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java
  29. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml
  30. 150 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  31. 231 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSalesOrderController.java
  32. 323 28
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java
  33. 240 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/MallOrderController.java
  34. 60 1
      watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java
  35. 18 1
      watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java
  36. 1 1
      watero-rst-web/src/main/resources/watero-rst-ioc.xml
  37. 4 0
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  38. 118 6
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/salesOrder/sales_order_list.ftl
  39. 18 35
      watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order.ftl
  40. 13 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/order/ProbationShopOrderService.java
  41. 12 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProbationShopOrderMapper.java
  42. 42 12
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/probationShopOrderMapper.xml
  43. 22 20
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java
  44. 16 1
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/order/ProbationShopOrderServiceImpl.java
  45. 61 1
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java
  46. 2 2
      watero-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml
  47. 2 0
      watero-wechat-web/src/main/resources/platform.properties
  48. 15 2
      wateroPF-wechat-interface/src/main/java/com/iamberry/wechat/face/order/ProbationShopOrderService.java
  49. 10 0
      wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProbationShopOrderMapper.java
  50. 29 0
      wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/probationShopOrderMapper.xml
  51. 6 5
      wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java
  52. 14 0
      wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/order/ProbationShopOrderServiceImpl.java
  53. 56 1
      wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java
  54. 3 0
      wateroPF-wechat-web/src/main/resources/platform.properties

+ 13 - 11
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java

@@ -148,7 +148,8 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		List<OrderItem> items = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid());
 		
 		// request url
-		String url = NameUtils.efast_base_url;
+		//String url = NameUtils.efast_base_url;
+		String url = NameUtils.getConfig("rst_base_url");
 		
 		// set Requeset Data
 		Map<String, String> requestData = new HashMap<String, String>();
@@ -175,12 +176,13 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		/**
 		 * 系统级参数
 		 */
-		requestData.put("app_nick", NameUtils.app_nick);
+		/*requestData.put("app_nick", NameUtils.app_nick);
 		requestData.put("app_key", NameUtils.app_key);
 		requestData.put("app_secret", NameUtils.app_secret);
 		requestData.put("timestamp",DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
-		requestData.put("app_act", message.getServiceOtherMessage()); // "efast.trade.new.add"
-		
+		requestData.put("app_act", message.getServiceOtherMessage());*/ // "efast.trade.new.add"
+		requestData.put("app_act", "rst.trade.new.add");
+
 		/**
 		 * 订单基本信息
 		 */
@@ -212,12 +214,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("consignee", order.getSalesAddressName());						// 收货人
 		orderData.put("district_name", addressDesc[2]);									// 区域
 		orderData.put("email", "");														// email
-		orderData.put("goods_amount", (order.getSalesAmount()/100.0));					// 产品总价
+		orderData.put("goods_amount", order.getSalesAmount());					// 产品总价
 		orderData.put("goods_count", items.size());										// 产品数量
 		orderData.put("mobile", order.getSalesAddressTel());							// 手机号码
-		orderData.put("money_paid", (money/100.0));					// 已付款
+		orderData.put("money_paid", money);					// 已付款
 		orderData.put("oid", order.getSalesOrderid());									// 订单号
-		orderData.put("order_amount", (order.getSalesAmount()/100.0));					// 订单金额
+		orderData.put("order_amount", order.getSalesAmount());					// 订单金额
 		
 		/**
 		 * 产品信息
@@ -227,9 +229,9 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 			Map<String, Object> orders1 = new HashMap<String, Object>();
 			orders1.put("goods_name", item.getItemProductName());							// 产品名称
 			orders1.put("goods_number", item.getItemNum());									// 产品数量
-			orders1.put("goods_price", (item.getItemProductPrice()/100.0));					// 产品原价
+			orders1.put("goods_price", item.getItemProductPrice());					// 产品原价
 			orders1.put("outer_sku", item.getProduectRemark());										// 产品SKU
-			orders1.put("payment_ft", (item.getItemProductDiscount()/100.0));												// 产品分摊价
+			orders1.put("payment_ft", item.getItemProductDiscount());												// 产品分摊价
 			maps.add(orders1);
 		}
 		
@@ -241,9 +243,9 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("sd_id", "001");													// 对应 efast 店铺 id
 		orderData.put("shipping_fee", 0);												// 快递费
 		orderData.put("shipping_name", "yto");											// 快递公司代码
-		orderData.put("tel", "");											// 我司电话
+		orderData.put("tel", order.getSalesAddressTel());											// 我司电话
 		orderData.put("to_buyer", "");													// 商家备注
-		orderData.put("total_amount", (order.getSalesAmount()/100.0));					// 商家备注
+		orderData.put("total_amount", order.getSalesAmount());					// 商家备注
 		orderData.put("user_name", order.getSalesOpenid());							// 买家账户   百胜根据user_name来判断是否有重复,传openId是为了防止重复
 		orderData.put("zipcode", order.getSalesAddressPostnum());						// 邮编
 		

+ 19 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/OrderNOUtil.java

@@ -28,4 +28,23 @@ public class OrderNOUtil {
 		code.append(chars[random.nextInt(chars.length)]);
 		return code.toString();
 	}
+
+	/**
+	 * Efast升级新订单生成规则
+	 * @param id
+	 * @param sdId
+	 * @return
+	 */
+	public static String createNewOrderCode(Integer id,String sdId) {
+		StringBuilder code = new StringBuilder();
+		//产生基本数据
+		code = code.append(StaticInfo.dateFormat.format(new Date()));
+		//避免同一秒内,操作多次
+		code.append(chars[random.nextInt(chars.length)]);
+		//避免多用户操作
+		code.append(id);
+		code.append(sdId);
+		code.append(chars[random.nextInt(chars.length)]);
+		return code.toString();
+	}
 }

+ 2 - 2
watero-rent-service/src/main/java/com/iamberry/rent/service/machine/MachineServiceImpl.java

@@ -627,8 +627,8 @@ public class MachineServiceImpl implements MachineService {
         return machineMapper.countMachineShare(machineShare);
     }
 
-	@Override
-	@Scheduled(cron = "0/10 * * * * ?")//每10秒执行一次
+	/*@Override
+	@Scheduled(cron = "0/10 * * * * ?")//每10秒执行一次*/
 	public synchronized void handlerNextCommand() {
 		// TODO Auto-generated method stub
         List<MachineInfo> listNextCommandMachine = machineMapper.listNextCommandMachine();

+ 250 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerStatisticalInfo.java

@@ -0,0 +1,250 @@
+package com.iamberry.rst.core.cm;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 客诉统计信息实体类
+ */
+public class CustomerStatisticalInfo implements Serializable {
+    private static final long serialVersionUID = 7150678136334412114L;
+    private Integer customerId;//客诉id
+    private Integer orderId;//订单id
+    private Date createTime;//创建日期
+    private String customerName;//姓名
+    private String customerTel;//联系电话
+    private String counselType;//类别
+    private String sourceType;//来源入口
+    private String complaintClassName;//问题类别
+    private String smallClassName;//小类名称
+    private String describeTitle;//客诉问题
+    private String describeHandleDesc;//处理过程
+    private String customerIsSolve;//处理结果
+    private Date salesPayTime;//购买日期
+    private String companyName;//销售公司
+    private String storeName;//销售渠道
+    private String itemProductName;//产品型号
+    private String itemProductColor;//产品颜色
+    private String itemNum;//产品数量
+    private String relationBackLogisticsCompany;//寄回快递
+    private String relationBackLogisticsNo;//寄回单号
+    private String relationBackReceiptDate;//签收日期
+    private String relationBackStatus;//寄回状态
+    private String relationSendLogisticsCompany;//寄出快递
+    private String relationSendLogisticsNo;//寄出单号
+    private String customerOutDamaged;//是否开箱损
+    private String customerSecondaryCustomer;//是否二次客诉
+
+    public Integer getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(Integer customerId) {
+        this.customerId = customerId;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+    public void setCustomerName(String customerName) {
+        this.customerName = customerName;
+    }
+
+    public String getCustomerTel() {
+        return customerTel;
+    }
+
+    public void setCustomerTel(String customerTel) {
+        this.customerTel = customerTel;
+    }
+
+    public String getCounselType() {
+        return counselType;
+    }
+
+    public void setCounselType(String counselType) {
+        this.counselType = counselType;
+    }
+
+    public String getSourceType() {
+        return sourceType;
+    }
+
+    public void setSourceType(String sourceType) {
+        this.sourceType = sourceType;
+    }
+
+    public String getComplaintClassName() {
+        return complaintClassName;
+    }
+
+    public void setComplaintClassName(String complaintClassName) {
+        this.complaintClassName = complaintClassName;
+    }
+
+    public String getSmallClassName() {
+        return smallClassName;
+    }
+
+    public void setSmallClassName(String smallClassName) {
+        this.smallClassName = smallClassName;
+    }
+
+    public String getDescribeTitle() {
+        return describeTitle;
+    }
+
+    public void setDescribeTitle(String describeTitle) {
+        this.describeTitle = describeTitle;
+    }
+
+    public String getDescribeHandleDesc() {
+        return describeHandleDesc;
+    }
+
+    public void setDescribeHandleDesc(String describeHandleDesc) {
+        this.describeHandleDesc = describeHandleDesc;
+    }
+
+    public String getCustomerIsSolve() {
+        return customerIsSolve;
+    }
+
+    public void setCustomerIsSolve(String customerIsSolve) {
+        this.customerIsSolve = customerIsSolve;
+    }
+
+    public Date getSalesPayTime() {
+        return salesPayTime;
+    }
+
+    public void setSalesPayTime(Date salesPayTime) {
+        this.salesPayTime = salesPayTime;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public String getItemProductName() {
+        return itemProductName;
+    }
+
+    public void setItemProductName(String itemProductName) {
+        this.itemProductName = itemProductName;
+    }
+
+    public String getItemProductColor() {
+        return itemProductColor;
+    }
+
+    public void setItemProductColor(String itemProductColor) {
+        this.itemProductColor = itemProductColor;
+    }
+
+    public String getItemNum() {
+        return itemNum;
+    }
+
+    public void setItemNum(String itemNum) {
+        this.itemNum = itemNum;
+    }
+
+    public String getRelationBackLogisticsCompany() {
+        return relationBackLogisticsCompany;
+    }
+
+    public void setRelationBackLogisticsCompany(String relationBackLogisticsCompany) {
+        this.relationBackLogisticsCompany = relationBackLogisticsCompany;
+    }
+
+    public String getRelationBackLogisticsNo() {
+        return relationBackLogisticsNo;
+    }
+
+    public void setRelationBackLogisticsNo(String relationBackLogisticsNo) {
+        this.relationBackLogisticsNo = relationBackLogisticsNo;
+    }
+
+    public String getRelationBackReceiptDate() {
+        return relationBackReceiptDate;
+    }
+
+    public void setRelationBackReceiptDate(String relationBackReceiptDate) {
+        this.relationBackReceiptDate = relationBackReceiptDate;
+    }
+
+    public String getRelationBackStatus() {
+        return relationBackStatus;
+    }
+
+    public void setRelationBackStatus(String relationBackStatus) {
+        this.relationBackStatus = relationBackStatus;
+    }
+
+    public String getRelationSendLogisticsCompany() {
+        return relationSendLogisticsCompany;
+    }
+
+    public void setRelationSendLogisticsCompany(String relationSendLogisticsCompany) {
+        this.relationSendLogisticsCompany = relationSendLogisticsCompany;
+    }
+
+    public String getRelationSendLogisticsNo() {
+        return relationSendLogisticsNo;
+    }
+
+    public void setRelationSendLogisticsNo(String relationSendLogisticsNo) {
+        this.relationSendLogisticsNo = relationSendLogisticsNo;
+    }
+
+    public String getCustomerOutDamaged() {
+        return customerOutDamaged;
+    }
+
+    public void setCustomerOutDamaged(String customerOutDamaged) {
+        this.customerOutDamaged = customerOutDamaged;
+    }
+
+    public String getCustomerSecondaryCustomer() {
+        return customerSecondaryCustomer;
+    }
+
+    public void setCustomerSecondaryCustomer(String customerSecondaryCustomer) {
+        this.customerSecondaryCustomer = customerSecondaryCustomer;
+    }
+}

+ 54 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -23,7 +23,11 @@ public class SalesOrder implements Serializable {
     private Integer salesRemainDeposit;     //待提取金额
     private Integer salesStatus;            //确认状态
     private Integer salesSendType;          //送货方式
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesSendTime;             //发货时间
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesSalesTime;            //订购时间
     private String salesPostNum;            //快递单号
     private String salesPostFirm;           //快递公司
@@ -56,6 +60,8 @@ public class SalesOrder implements Serializable {
     private Integer salesIsSend;            //是否通知配货
     private Integer salesIsLocked;          //是否锁定
     private Integer salesIsSeparate;        //是否缺货
+    private Integer salesIsDownload;        //是否下载过
+    private Integer salesMainOrderId;//主订单id(拆单用)
 
     private String companyName;             //销售公司名称
     private String storeName;               //店铺名称
@@ -71,6 +77,8 @@ public class SalesOrder implements Serializable {
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date endDate;                   //结束时间
 
+
+
     private List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
 
     //添加订单项属性,用于导出订单
@@ -82,6 +90,36 @@ public class SalesOrder implements Serializable {
     private String[] salesIds;        //传入mybatis的订单编号
     private String ids;        //前台传过来的订单编号
 
+    //Efast升级新增字段 2018-6-6
+    private String isHaveImport;//是否已导出过
+    private String isDeliverGoods;//是否已发货
+    private String styleColor;//上传订单结果颜色
+
+    public String getStyleColor() {
+        return styleColor;
+    }
+
+    public void setStyleColor(String styleColor) {
+        this.styleColor = styleColor;
+    }
+
+    public String getIsHaveImport() {
+        return isHaveImport;
+    }
+
+    public void setIsHaveImport(String isHaveImport) {
+        this.isHaveImport = isHaveImport;
+    }
+
+    public String getIsDeliverGoods() {
+        return isDeliverGoods;
+    }
+
+    public void setIsDeliverGoods(String isDeliverGoods) {
+        this.isDeliverGoods = isDeliverGoods;
+    }
+
+
     public String getItemProductName() {
         return itemProductName;
     }
@@ -481,4 +519,20 @@ public class SalesOrder implements Serializable {
     public void setIds(String ids) {
         this.ids = ids;
     }
+
+    public Integer getSalesIsDownload() {
+        return salesIsDownload;
+    }
+
+    public void setSalesIsDownload(Integer salesIsDownload) {
+        this.salesIsDownload = salesIsDownload;
+    }
+
+    public Integer getSalesMainOrderId() {
+        return salesMainOrderId;
+    }
+
+    public void setSalesMainOrderId(Integer salesMainOrderId) {
+        this.salesMainOrderId = salesMainOrderId;
+    }
 }

+ 66 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/DownsingleRuleInfo.java

@@ -0,0 +1,66 @@
+package com.iamberry.rst.core.order;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by Administrator on 2018/6/6.
+ */
+public class DownsingleRuleInfo implements Serializable {
+    private static final long serialVersionUID = 6907202311574752054L;
+    private Integer downsingleId;
+    private Integer downsingleStatus;//规则排序
+    private Integer downsingleSorting;//规则状态
+    private String downsingleDesc;//规则备注
+    private Date downsingleCreateTime;//创建时间
+    private List<DownsingleRuleItemInfo> downsingleRuleItemList;
+
+    public Integer getDownsingleId() {
+        return downsingleId;
+    }
+
+    public void setDownsingleId(Integer downsingleId) {
+        this.downsingleId = downsingleId;
+    }
+
+    public Integer getDownsingleStatus() {
+        return downsingleStatus;
+    }
+
+    public void setDownsingleStatus(Integer downsingleStatus) {
+        this.downsingleStatus = downsingleStatus;
+    }
+
+    public Integer getDownsingleSorting() {
+        return downsingleSorting;
+    }
+
+    public void setDownsingleSorting(Integer downsingleSorting) {
+        this.downsingleSorting = downsingleSorting;
+    }
+
+    public String getDownsingleDesc() {
+        return downsingleDesc;
+    }
+
+    public void setDownsingleDesc(String downsingleDesc) {
+        this.downsingleDesc = downsingleDesc;
+    }
+
+    public Date getDownsingleCreateTime() {
+        return downsingleCreateTime;
+    }
+
+    public void setDownsingleCreateTime(Date downsingleCreateTime) {
+        this.downsingleCreateTime = downsingleCreateTime;
+    }
+
+    public List<DownsingleRuleItemInfo> getDownsingleRuleItemList() {
+        return downsingleRuleItemList;
+    }
+
+    public void setDownsingleRuleItemList(List<DownsingleRuleItemInfo> downsingleRuleItemList) {
+        this.downsingleRuleItemList = downsingleRuleItemList;
+    }
+}

+ 55 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/DownsingleRuleItemInfo.java

@@ -0,0 +1,55 @@
+package com.iamberry.rst.core.order;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2018/6/6.
+ */
+public class DownsingleRuleItemInfo implements Serializable {
+    private Integer downsingleItemId;
+    private Integer downsingleId; //规则id
+    private String downsingleItemBar;//产品sku(69码)
+    private Integer downsingleItemNum;//产品数量
+    private Date downsingleItemCreateTime;//创建时间
+
+    public Integer getDownsingleItemId() {
+        return downsingleItemId;
+    }
+
+    public void setDownsingleItemId(Integer downsingleItemId) {
+        this.downsingleItemId = downsingleItemId;
+    }
+
+    public Integer getDownsingleId() {
+        return downsingleId;
+    }
+
+    public void setDownsingleId(Integer downsingleId) {
+        this.downsingleId = downsingleId;
+    }
+
+    public String getDownsingleItemBar() {
+        return downsingleItemBar;
+    }
+
+    public void setDownsingleItemBar(String downsingleItemBar) {
+        this.downsingleItemBar = downsingleItemBar;
+    }
+
+    public Integer getDownsingleItemNum() {
+        return downsingleItemNum;
+    }
+
+    public void setDownsingleItemNum(Integer downsingleItemNum) {
+        this.downsingleItemNum = downsingleItemNum;
+    }
+
+    public Date getDownsingleItemCreateTime() {
+        return downsingleItemCreateTime;
+    }
+
+    public void setDownsingleItemCreateTime(Date downsingleItemCreateTime) {
+        this.downsingleItemCreateTime = downsingleItemCreateTime;
+    }
+}

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java

@@ -53,6 +53,16 @@ public class EfastOrder implements Serializable{
     private String returnMsg;
     private String platformOrderId;         //平台订单号, 用于推送efast时  导出物流信息
 
+    private String styleColor;//订单上传后颜色显示
+
+    public String getStyleColor() {
+        return styleColor;
+    }
+
+    public void setStyleColor(String styleColor) {
+        this.styleColor = styleColor;
+    }
+
     public List<EfastOrderItem> getItemList() {
         return itemList;
     }

+ 65 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/LogisticsInfo.java

@@ -0,0 +1,65 @@
+package com.iamberry.rst.core.tools;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2018/5/30.
+ */
+public class LogisticsInfo implements Serializable {
+    private static final long serialVersionUID = -188450183704153868L;
+    private Integer logisticsId;//主键
+    private String logisticsName;//物流公司名称
+    private String logisticsRstCode;//rst物流公司代码
+    private String logisticsEfastCode;//Efast物流公司代码
+    private String logisticsOnehundredCode;//快递100物流公司代码
+    private Date createDate;//创建时间
+
+    public Integer getLogisticsId() {
+        return logisticsId;
+    }
+
+    public void setLogisticsId(Integer logisticsId) {
+        this.logisticsId = logisticsId;
+    }
+
+    public String getLogisticsName() {
+        return logisticsName;
+    }
+
+    public void setLogisticsName(String logisticsName) {
+        this.logisticsName = logisticsName;
+    }
+
+    public String getLogisticsRstCode() {
+        return logisticsRstCode;
+    }
+
+    public void setLogisticsRstCode(String logisticsRstCode) {
+        this.logisticsRstCode = logisticsRstCode;
+    }
+
+    public String getLogisticsEfastCode() {
+        return logisticsEfastCode;
+    }
+
+    public void setLogisticsEfastCode(String logisticsEfastCode) {
+        this.logisticsEfastCode = logisticsEfastCode;
+    }
+
+    public String getLogisticsOnehundredCode() {
+        return logisticsOnehundredCode;
+    }
+
+    public void setLogisticsOnehundredCode(String logisticsOnehundredCode) {
+        this.logisticsOnehundredCode = logisticsOnehundredCode;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+}

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java

@@ -156,4 +156,10 @@ public interface CustomerService {
 
     /*添加订单*/
     Integer addOrder(SalesOrder salesOrder);
+
+    /**
+     * 导出客诉信息到excel
+     * @return
+     */
+    List<CustomerStatisticalInfo> listStatisticalCustomer();
 }

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

@@ -2,7 +2,9 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.order.DownsingleRuleInfo;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
@@ -29,6 +31,8 @@ public interface SalesOrderService {
 
     SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) ;
 
+    boolean addRstOrderAndIteminfo(SalesOrder salesOrder) ;
+
     /**
      * 修改订单信息
      * @param salesOrder
@@ -127,4 +131,35 @@ public interface SalesOrderService {
      */
     Integer updateOrderItem(SalesOrderItem salesOrderItem);
 
+    /**
+     * 根据外部订单号查询订单信息
+     * **/
+    SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder);
+
+    /**
+     * 批量修改订单是否已下载状态
+     * @param list
+     * @return
+     */
+    Integer updateOrderListIsDownload(List<SalesOrder> list);
+
+    /**
+     * 根据交易号修改订单信息
+     * **/
+    Integer updateSalesOrderByDealCode(SalesOrder salesOrder);
+
+    /**
+     * 查询物流公司信息
+     * **/
+    List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo);
+
+    /**
+     * 查询所有拆单规则
+     */
+    List<DownsingleRuleInfo> listDownsingleRule();
+
+    /**
+     * 根据颜色sku/查询产品是否是水机
+     */
+    Integer getIsMachine(String colorBar);
 }

+ 14 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/StoreInfoService.java

@@ -15,4 +15,18 @@ public interface StoreInfoService {
      * @return
      */
     List<StoreInfo> listStore(StoreInfo storeInfo);
+
+    /**
+     * 根据id查询店铺信息
+     * @param storeEfast
+     * @return
+     */
+    StoreInfo getStoreInfoById(Integer storeEfast);
+
+    /**
+     * 根据efastid查询店铺信息
+     * @param storeEfast
+     * @return
+     */
+    StoreInfo getStoreInfoByEfastId(String storeEfast);
 }

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

@@ -1,5 +1,7 @@
 package com.iamberry.rst.faces.order;
 
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.order.*;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
@@ -272,4 +274,12 @@ public interface OrderService {
      * @return
      */
     Order getOrderByTelName(Order order);
+
+    EfastOrder getFromRstEfastOrderInfo(String orderDealCode);
+
+    List<SalesOrder> getFromRstSalesOrderInfo(String orderDealCode);
+
+    List<SalesOrder> querySalesOrderItemListBySalesId(int salesId);
+
+    public void updateSalesOrderPostType(SalesOrder salesOrders, String postType);
 }

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.faces.product;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
@@ -106,4 +107,9 @@ public interface ProductService {
 
     //根据客诉id查询产品类型
     ProductType getProductType(Integer customerId);
+    /**
+     * 根据sku查询配件信息
+     * @return
+     */
+    FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo);
 }

+ 7 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -1087,7 +1087,13 @@ public class CustomerServiceImpl implements CustomerService {
         }
         return orderNum;
     }
-        /**
+
+    @Override
+    public List<CustomerStatisticalInfo> listStatisticalCustomer() {
+        return customerInfoMapper.listStatisticalCustomer();
+    }
+
+    /**
          * 向Efast推送订单--添加订单
          * @return
          */

+ 229 - 7
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -5,9 +5,12 @@ import com.iamberry.rst.core.cm.FittingsInfo;
 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.DownsingleRuleInfo;
+import com.iamberry.rst.core.order.DownsingleRuleItemInfo;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.sys.SysConfig;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
@@ -20,18 +23,21 @@ import com.iamberry.wechat.tools.DateTimeUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONNull;
 import net.sf.json.JSONObject;
+import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.xml.crypto.Data;
 import java.beans.Transient;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.lang.reflect.InvocationTargetException;
+import java.util.*;
+
+import static sun.misc.MessageUtils.where;
 
 /**
  * Created by liuzhiwei on 2017/10/31.
@@ -93,7 +99,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transient
     public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
         if (list == null || list.size() == 0) {
-            throw  new RuntimeException("获取Efast订单信息出错!");
+            throw new RuntimeException("获取订单信息出错!");
         }
         SalesOrder verifyOrder = new SalesOrder();
         verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
@@ -106,9 +112,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         try {
             int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
             if (orderNum <= 0) {
-                throw  new RuntimeException("获取Efast订单信息出错!");
+                throw new RuntimeException("获取订单信息出错!");
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             return true;
         }
 
@@ -118,7 +124,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         //批量添加订单项数据
         int itemNum = salesOrderMapper.addOrderItemList(list);
         if (itemNum <= 0) {
-            throw  new RuntimeException("获取Efast订单信息出错!");
+            throw new RuntimeException("获取订单信息出错!");
         }
         return true;
     }
@@ -142,6 +148,192 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrder;
     }
 
+    public void parseOrder(SalesOrder oginerOrder, List<SalesOrder> listOrder) {
+        // 订单项拆分完成,直接返回
+        if (oginerOrder.getSalesOrderItemList().size() <= 0) {
+            return;
+        }
+
+        List<DownsingleRuleInfo> listDownsingleRuleInfo = salesOrderService.listDownsingleRule();
+        if(listDownsingleRuleInfo.size() < 1){
+            listOrder.add(oginerOrder);
+            return;
+        }
+
+        // 拆单,比较的是数量和产品
+        Map<String, SalesOrderItem> itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size());
+        for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) {
+            SalesOrderItem itemTwo = new SalesOrderItem();
+            BeanUtils.copyProperties(item,itemTwo);
+            itemMap.put(item.getItemColorBar(), itemTwo);
+        }
+
+        // 遍历拆单规则
+        int ruleCount = 0;
+        for (DownsingleRuleInfo rule : listDownsingleRuleInfo) {
+            // 一个拆单规则
+            int count = 0;
+            for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
+                if (itemMap.get(item.getDownsingleItemBar()) != null) {
+                    if (item.getDownsingleItemNum() <= itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
+                        count ++;
+                    }
+                }
+            }
+            if (count == rule.getDownsingleRuleItemList().size()) {
+                // 满足拆单条件
+                SalesOrder newOrder = new SalesOrder();
+                BeanUtils.copyProperties(oginerOrder,newOrder);
+                newOrder.setSalesOrderItemList(new ArrayList<SalesOrderItem>(count));
+                for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
+                    SalesOrderItem temp = new SalesOrderItem();
+                    BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp);
+                    temp.setItemNum(item.getDownsingleItemNum());
+                    newOrder.getSalesOrderItemList().add(temp);
+                }
+                listOrder.add(newOrder);
+
+                // 继续递归
+                for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
+                    if (item.getDownsingleItemNum() == itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
+                        // 数量和拆单规则相同,则删除原订单的订单项
+                        /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/
+                        for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
+                            if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
+                                oginerOrder.getSalesOrderItemList().remove(i);
+                            }
+                        }
+                    } else {
+//                        SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
+                        SalesOrderItem orderItem = new SalesOrderItem();
+                        BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),orderItem);
+                        int oldCount = orderItem.getItemNum();
+                        /*orderItem.setItemNum(oldCount - item.getDownsingleItemNum());*/
+                        for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
+                            if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
+                                oginerOrder.getSalesOrderItemList().get(i).setItemNum(oldCount - item.getDownsingleItemNum());
+                            }
+                        }
+                    }
+                }
+                parseOrder(oginerOrder, listOrder);
+                break;
+            } else {
+                // 不满足, 继续下一个规则
+                // 如果是最后一个拆单规则,则不拆单
+                if ((ruleCount + 1) == listDownsingleRuleInfo.size()) {
+                    if (oginerOrder.getSalesOrderItemList().size() > 0) {
+                        listOrder.add(oginerOrder);
+                    }
+                }
+            }
+            ruleCount++;
+        }
+
+    }
+
+
+    @Override
+    @Transactional
+    public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
+        //合并订单项-------------statr
+        List<SalesOrderItem> listItem = salesOrder.getSalesOrderItemList();
+        salesOrder.setSalesOrderItemList(null);
+        List<SalesOrderItem> list = new ArrayList<>();
+        for (int i = 0;i<listItem.size();i++){
+            if(i < listItem.size() - 1 ){
+                for(int j = 0;j<listItem.size();j++){
+                    if (i != j){
+                        if(listItem.get(i).getItemColorBar().equals(listItem.get(j).getItemColorBar())){
+                            listItem.get(i).setItemNum(listItem.get(i).getItemNum()+listItem.get(j).getItemNum());
+                        }
+                    }
+                }
+            }
+            boolean bl = true;
+            for (SalesOrderItem salesOrderItem : list){
+                if(salesOrderItem.getItemColorBar().equals(listItem.get(i).getItemColorBar())){
+                    bl = false;
+                }
+            }
+            if(bl){
+                list.add(listItem.get(i));
+            }
+        }
+        //合并订单项----------------------end
+        //匹配拆单规则 分割订单-------------state
+        List<SalesOrder> listSalesOrder = new ArrayList<>();
+        salesOrder.setSalesOrderItemList(list);
+        parseOrder(salesOrder, listSalesOrder);
+        //匹配拆单规则 分割订单-------------end
+        boolean msg = false;
+        //判断主从订单--------------------state
+        if (listSalesOrder.size() > 0){
+            SalesOrder mainOrder = null;
+            for (int s = 0;s < listSalesOrder.size();s++){
+                if(mainOrder == null){
+                    for(int i = 0;i<listSalesOrder.get(s).getSalesOrderItemList().size();i++){
+                        int isMachine = salesOrderService.getIsMachine(listSalesOrder.get(s).getSalesOrderItemList().get(i).getItemColorBar());
+                        if( isMachine == 1){//1:水机 2:其它产品 0:未查到
+                            mainOrder = listSalesOrder.get(s);
+                            listSalesOrder.remove(s);
+                            break;
+                        }
+                    }
+                }
+            }
+            if(mainOrder == null){//如果不存有水机的订单则默认第一个订单为主订单
+                mainOrder = listSalesOrder.get(0);
+            }
+
+            //判断主从订单--------------------end
+            try {
+                msg = addRstOrderinfo(mainOrder,listSalesOrder);
+            }catch (Exception e){
+                return false;
+            }
+        }
+        return msg;
+    }
+
+
+    @Transactional
+    private boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder) throws RuntimeException {
+        int orderNum = salesOrderMapper.addSalesOrder(mainOrder);
+        if (orderNum <= 0) {
+            throw  new RuntimeException("添加订单出错--------!");
+        }
+        for (SalesOrderItem item : mainOrder.getSalesOrderItemList()) {
+            item.setItemOrderId(mainOrder.getSalesId());
+        }
+        //批量添加订单项数据
+        int itemNum = salesOrderMapper.addOrderItemList(mainOrder.getSalesOrderItemList());
+        if (itemNum <= 0) {
+            throw  new RuntimeException("添加订单出错--------!");
+        }else{
+            if(listSalesOrder.size() > 0){
+                for (int i = 0;i<listSalesOrder.size();i++){
+                    listSalesOrder.get(i).setSalesDealCode(listSalesOrder.get(i).getSalesDealCode()+"-"+(i+1));
+                    listSalesOrder.get(i).setSalesMainOrderId(mainOrder.getSalesId());
+                    listSalesOrder.get(i).setSalesId(null);
+                    orderNum = salesOrderMapper.addSalesOrder(listSalesOrder.get(i));
+                    if (orderNum <= 0) {
+                        throw  new RuntimeException("添加订单出错--------!");
+                    }
+                    for (SalesOrderItem item : listSalesOrder.get(i).getSalesOrderItemList()) {
+                        item.setItemOrderId(listSalesOrder.get(i).getSalesId());
+                    }
+                    //批量添加订单项数据
+                    itemNum = salesOrderMapper.addOrderItemList(listSalesOrder.get(i).getSalesOrderItemList());
+                    if (itemNum <= 0) {
+                        throw  new RuntimeException("添加订单出错--------!");
+                    }
+                }
+            }
+        }
+        return true;
+    }
+
     @Override
     public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
         return salesOrderMapper.listSalesOrderItem(salesOrderItem);
@@ -513,4 +705,34 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     public Integer updateOrderItem(SalesOrderItem salesOrderItem) {
         return salesOrderMapper.updateOrderItem(salesOrderItem);
     }
+
+    @Override
+    public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) {
+        return salesOrderMapper.getSalesOrderByLogistics(salesOrder);
+    }
+
+    @Override
+    public Integer updateOrderListIsDownload(List<SalesOrder> list) {
+        return salesOrderMapper.updateOrderListIsDownload(list);
+    }
+
+    @Override
+    public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) {
+        return salesOrderMapper.updateSalesOrderByDealCode(salesOrder);
+    }
+
+    @Override
+    public List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo) {
+        return salesOrderMapper.getLogisticsInfo(logisticsInfo);
+    }
+
+    @Override
+    public List<DownsingleRuleInfo> listDownsingleRule() {
+        return salesOrderMapper.listDownsingleRule();
+    }
+
+    @Override
+    public Integer getIsMachine(String colorBar) {
+        return salesOrderMapper.getIsMachine(colorBar);
+    }
 }

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/StoreInfoServiceImpl.java

@@ -21,4 +21,14 @@ public class StoreInfoServiceImpl implements StoreInfoService {
     public List<StoreInfo> listStore(StoreInfo storeInfo) {
         return storeInfoMapper.listStore(storeInfo);
     }
+
+    @Override
+    public StoreInfo getStoreInfoById(Integer storeEfast) {
+        return storeInfoMapper.getStoreInfoById(storeEfast);
+    }
+
+    @Override
+    public StoreInfo getStoreInfoByEfastId(String storeEfast) {
+        return storeInfoMapper.getStoreInfoByEfastId(storeEfast);
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.cm.CustomerStatisticalInfo;
 import com.iamberry.rst.core.order.ProductType;
 
 import java.util.List;
@@ -48,4 +49,10 @@ public interface CustomerInfoMapper {
      */
     List<CustomerInfo> listOnCustomer(CustomerInfo customerInfo);
 
+    /**
+     * 导出客诉信息到excel
+     * @return
+     */
+    List<CustomerStatisticalInfo> listStatisticalCustomer();
+
 }

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

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.order.DownsingleRuleInfo;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 
 import java.util.List;
 
@@ -71,6 +73,13 @@ public interface SalesOrderMapper {
     Integer updateOrderList(List<SalesOrder> list);
 
     /**
+     * 批量修改订单信息
+     * @param list
+     * @return
+     */
+    Integer updateOrderListIsDownload(List<SalesOrder> list);
+
+    /**
      * 查询需要导出的订单信息
      * @param salesOrder
      * @return
@@ -85,4 +94,29 @@ public interface SalesOrderMapper {
      * 修改订单项数量
      */
     Integer updateOrderItem(SalesOrderItem salesOrderItem);
+
+    /**
+     * 根据外部订单号查询订单信息
+     * **/
+    SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder);
+
+    /**
+     * 根据交易号修改订单信息
+     * **/
+    Integer updateSalesOrderByDealCode(SalesOrder salesOrder);
+
+    /**
+     * 查询物流公司信息
+     * **/
+    List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo);
+
+    /**
+     * 查询所有拆单规则
+     */
+    List<DownsingleRuleInfo> listDownsingleRule();
+
+    /**
+     * 根据颜色sku/查询产品是否是水机
+     */
+    Integer getIsMachine(String colorBar);
 }

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

@@ -21,6 +21,13 @@ public interface StoreInfoMapper {
     StoreInfo getStoreInfoById(Integer storeId);
 
     /**
+     * 根据efastid查询店铺信息
+     * @param storeEfast
+     * @return
+     */
+    StoreInfo getStoreInfoByEfastId(String storeEfast);
+
+    /**
      * 修改店铺信息
      * @param storeInfo
      * @return

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

@@ -823,4 +823,349 @@
 
     ORDER BY c.customer_id desc
   </select>
+
+  <!-- 导出客诉信息到excel -->
+  <select id="listStatisticalCustomer" resultType="CustomerStatisticalInfo">
+SELECT
+	c.customer_id customerId,
+	cc.orderId orderId,
+	DATE_FORMAT(c.customer_create_time,'%Y-%m-%d')  AS createTime,
+	c.customer_name AS customerName,
+	c.customer_tel AS customerTel,
+(CASE
+WHEN c.customer_counsel_type = 1 THEN
+	'售前咨询'
+WHEN c.customer_counsel_type = 2 THEN
+	'售后咨询'
+WHEN c.customer_counsel_type = 3 THEN
+	'其它'
+ELSE
+	'未知'
+END) AS counselType,
+(CASE
+WHEN c.customer_source_type = 1 THEN
+	'400电话'
+WHEN c.customer_source_type = 2 THEN
+	'微信公众号'
+WHEN c.customer_source_type = 3 THEN
+	'其它'
+ELSE
+	'未知'
+END) AS sourceType,
+ct.complaint_class_name as complaintClassName,
+csc.small_class_name as smallClassName,
+qd.describe_title as describeTitle,
+qd.describe_handle_desc as describeHandleDesc,
+(CASE
+WHEN c.customer_is_solve = 1 THEN
+	'已解决'
+WHEN c.customer_is_solve = 2 THEN
+	'未解决'
+WHEN c.customer_is_solve = 3 THEN
+	'换新'
+WHEN c.customer_is_solve = 4 THEN
+	'维修'
+WHEN c.customer_is_solve = 5 THEN
+	'补发'
+WHEN c.customer_is_solve = 6 THEN
+	'退货'
+WHEN c.customer_is_solve = 7 THEN
+	'无理由退货'
+ELSE
+	'未知'
+END) AS customerIsSolve,
+DATE_FORMAT(oi.sales_pay_time,'%Y-%m-%d')  AS salesPayTime,
+sc.company_name AS companyName,
+si.store_name AS storeName,
+soi.item_product_name AS itemProductName,
+soi.item_product_color as itemProductColor,
+soi.item_num as itemNum,
+(CASE
+WHEN cc.relationBackLogisticsCompany = 'sto' THEN
+	'申通快递'
+WHEN cc.relationBackLogisticsCompany = 'yto' THEN
+	'圆通快递'
+WHEN cc.relationBackLogisticsCompany = 'sf' THEN
+	'顺丰快递'
+WHEN cc.relationBackLogisticsCompany = 'ems' THEN
+	'邮政EMS'
+WHEN cc.relationBackLogisticsCompany = 'zto' THEN
+	'中通快递'
+WHEN cc.relationBackLogisticsCompany = 'zjs' THEN
+	'宅急送'
+WHEN cc.relationBackLogisticsCompany = 'yunda' THEN
+	'韵达快递'
+WHEN cc.relationBackLogisticsCompany = 'cces' THEN
+	'cces快递'
+WHEN cc.relationBackLogisticsCompany = 'pick' THEN
+	'上门提货'
+WHEN cc.relationBackLogisticsCompany = 'htky' THEN
+	'汇通快递'
+WHEN cc.relationBackLogisticsCompany = 'ttkdex' THEN
+	'天天快递'
+WHEN cc.relationBackLogisticsCompany = 'stars' THEN
+	'星晨急便'
+WHEN cc.relationBackLogisticsCompany = 'jd' THEN
+	'京东快递'
+WHEN cc.relationBackLogisticsCompany = 'dbkd' THEN
+	'德邦快递'
+WHEN cc.relationBackLogisticsCompany = '02' THEN
+	'上门送货'
+WHEN cc.relationBackLogisticsCompany = 'lianhaowuliu' THEN
+	'联昊通'
+ELSE
+	'未知'
+END) AS relationBackLogisticsCompany,
+cc.relationBackLogisticsNo AS relationBackLogisticsNo,
+DATE_FORMAT(cc.relationBackReceiptDate,'%Y-%m-%d')  AS relationBackReceiptDate,
+(CASE
+WHEN cc.relationBackStatus = 1 THEN
+	'未寄回'
+WHEN cc.relationBackStatus = 2 THEN
+	'已寄回'
+WHEN cc.relationBackStatus = 3 THEN
+	'已收货'
+ELSE
+	'未知'
+END) AS relationBackStatus,
+(CASE
+WHEN cc.relationSendLogisticsCompany = 'sto' THEN
+	'申通快递'
+WHEN cc.relationSendLogisticsCompany = 'yto' THEN
+	'圆通快递'
+WHEN cc.relationSendLogisticsCompany = 'sf' THEN
+	'顺丰快递'
+WHEN cc.relationSendLogisticsCompany = 'ems' THEN
+	'邮政EMS'
+WHEN cc.relationSendLogisticsCompany = 'zto' THEN
+	'中通快递'
+WHEN cc.relationSendLogisticsCompany = 'zjs' THEN
+	'宅急送'
+WHEN cc.relationSendLogisticsCompany = 'yunda' THEN
+	'韵达快递'
+WHEN cc.relationSendLogisticsCompany = 'cces' THEN
+	'cces快递'
+WHEN cc.relationSendLogisticsCompany = 'pick' THEN
+	'上门提货'
+WHEN cc.relationSendLogisticsCompany = 'htky' THEN
+	'汇通快递'
+WHEN cc.relationSendLogisticsCompany = 'ttkdex' THEN
+	'天天快递'
+WHEN cc.relationSendLogisticsCompany = 'stars' THEN
+	'星晨急便'
+WHEN cc.relationSendLogisticsCompany = 'jd' THEN
+	'京东快递'
+WHEN cc.relationSendLogisticsCompany = 'dbkd' THEN
+	'德邦快递'
+WHEN cc.relationBackLogisticsCompany = '02' THEN
+	'上门送货'
+WHEN cc.relationSendLogisticsCompany = 'lianhaowuliu' THEN
+	'联昊通'
+ELSE
+	'未知'
+END) AS relationSendLogisticsCompany,
+cc.relationSendLogisticsNo AS relationSendLogisticsNo,
+(CASE
+WHEN c.customer_out_damaged = 1 THEN
+	'是'
+WHEN c.customer_out_damaged = 2 THEN
+	'否'
+ELSE
+	'未知'
+END) AS customerOutDamaged,
+(CASE
+WHEN c.customer_secondary_customer = 1 THEN
+	'是'
+WHEN c.customer_secondary_customer = 2 THEN
+	'否'
+ELSE
+	'未知'
+END) AS customerSecondaryCustomer
+FROM
+	tb_rst_customer_info c
+LEFT JOIN (
+		SELECT
+			'3' AS customerIsSolve,
+			renewed_id AS relationId,
+			customer_id AS customerId,
+			tb_rst_relation_order.sales_id AS orderId,
+			signclosed_id AS signclosedId,
+			renewed_back_efast_order_id AS relationBackEfastOrderId,
+			renewed_back_name AS relationBackName,
+			renewed_back_tel AS relationBackTel,
+			renewed_back_status AS relationBackStatus,
+			renewed_back_logistics_company AS relationBackLogisticsCompany,
+			renewed_back_logistics_no AS relationBackLogisticsNo,
+			renewed_back_postage AS relationBackPostage,
+			renewed_back_machine_no AS relationBackMachineNo,
+			renewed_send_status AS relationSendStatus,
+			renewed_send_name AS relationSendName,
+			renewed_send_tel AS relationSendTel,
+			province_number AS provinceNumber,
+			city_number AS cityNumber,
+			area_number AS areaNumber,
+			renewed_send_merge_address AS relationSendMergeAddress,
+			renewed_send_address AS relationSendAddress,
+			renewed_send_logistics_company AS relationSendLogisticsCompany,
+			renewed_send_logistics_no AS relationSendLogisticsNo,
+			renewed_desc AS relationDesc,
+			renewed_state AS relationState,
+			renewed_alipay AS relationAlipay,
+			renewed_is_transfer AS relationIsTransfer,
+			renewed_alipay_name AS relationAlipayName,
+			renewed_back_receipt_date AS relationBackReceiptDate
+		FROM
+			tb_rst_renewed
+		LEFT JOIN tb_rst_relation_order on tb_rst_relation_order.relation_id = tb_rst_renewed.renewed_id
+		where tb_rst_relation_order.relation_type = '3'
+		UNION ALL
+			SELECT
+				'4' AS customerIsSolve,
+				repair_id AS relationId,
+				customer_id AS customerId,
+				tb_rst_relation_order.sales_id AS orderId,
+				signclosed_id AS signclosedId,
+				repair_back_efast_order_id AS relationBackEfastOrderId,
+				repair_back_name AS relationBackName,
+				repair_back_tel AS relationBackTel,
+				repair_back_status AS relationBackStatus,
+				repair_back_logistics_company AS relationBackLogisticsCompany,
+				repair_back_logistics_no AS relationBackLogisticsNo,
+				repair_back_postage AS relationBackPostage,
+				repair_back_machine_no AS relationBackMachineNo,
+				repair_send_status AS relationSendStatus,
+				repair_send_name AS relationSendName,
+				repair_send_tel AS relationSendTel,
+				province_number AS provinceNumber,
+				city_number AS cityNumber,
+				area_number AS areaNumber,
+				repair_send_merge_address AS relationSendMergeAddress,
+				repair_send_address AS relationSendAddress,
+				repair_send_logistics_company AS relationSendLogisticsCompany,
+				repair_send_logistics_no AS relationSendLogisticsNo,
+				repair_desc AS relationDesc,
+				repair_state AS relationState,
+				repair_alipay AS relationAlipay,
+				repair_is_transfer AS relationIsTransfer,
+				repair_alipay_name AS relationAlipayName,
+				repair_back_receipt_date AS relationBackReceiptDate
+			FROM
+				tb_rst_repair
+			LEFT JOIN tb_rst_relation_order on tb_rst_relation_order.relation_id = tb_rst_repair.repair_id
+			where tb_rst_relation_order.relation_type = '4'
+			UNION ALL
+				SELECT
+					'5' AS customerIsSolve,
+					reissue_id AS relationId,
+					customer_id AS customerId,
+					tb_rst_relation_order.sales_id AS orderId,
+					NULL AS signclosedId,
+					reissue_back_efast_order_id AS relationBackEfastOrderId,
+					NULL AS relationBackName,
+					NULL AS relationBackTel,
+					NULL AS relationBackStatus,
+					NULL AS relationBackLogisticsCompany,
+					NULL AS relationBackLogisticsNo,
+					NULL AS relationBackPostage,
+					NULL AS relationBackMachineNo,
+					reissue_send_status AS relationSendStatus,
+					reissue_send_name AS relationSendName,
+					reissue_send_tel AS relationSendTel,
+					province_number AS provinceNumber,
+					city_number AS cityNumber,
+					area_number AS areaNumber,
+					reissue_send_merge_address AS relationSendMergeAddress,
+					reissue_send_address AS relationSendAddress,
+					reissue_send_logistics_company AS relationSendLogisticsCompany,
+					reissue_send_logistics_no AS relationSendLogisticsNo,
+					reissue_desc AS relationDesc,
+					reissue_state AS relationState,
+					NULL AS relationAlipay,
+					NULL AS relationIsTransfer,
+					NULL AS relationAlipayName,
+					NULL AS relationBackReceiptDate
+				FROM
+					tb_rst_reissue
+				LEFT JOIN tb_rst_relation_order on tb_rst_relation_order.relation_id = tb_rst_reissue.reissue_id
+				where tb_rst_relation_order.relation_type = '5'
+				UNION ALL
+					SELECT
+						'6' AS customerIsSolve,
+						back_goods_id AS relationId,
+						customer_id AS customerId,
+						tb_rst_relation_order.sales_id AS orderId,
+						signclosed_id AS signclosedId,
+						NULL AS relationBackEfastOrderId,
+						back_goods_back_name AS relationBackName,
+						back_goods_back_tel AS relationBackTel,
+						back_goods_back_status AS relationBackStatus,
+						back_goods_back_logistics_company AS relationBackLogisticsCompany,
+						back_goods_back_logistics_no AS relationBackLogisticsNo,
+						back_goods_back_postage AS relationBackPostage,
+						back_goods_back_machine_no AS relationBackMachineNo,
+						NULL AS relationSendStatus,
+						NULL AS relationSendName,
+						NULL AS relationSendTel,
+						NULL AS provinceNumber,
+						NULL AS cityNumber,
+						NULL AS areaNumber,
+						NULL AS relationSendMergeAddress,
+						NULL AS relationSendAddress,
+						NULL AS relationSendLogisticsCompany,
+						NULL AS relationSendLogisticsNo,
+						back_goods_desc AS relationDesc,
+						back_goods_state AS relationState,
+						back_goods_alipay AS relationAlipay,
+						back_goods_is_transfer AS relationIsTransfer,
+						back_goods_alipay_name AS relationAlipayName,
+						back_goods_back_receipt_date AS relationBackReceiptDate
+					FROM
+						tb_rst_back_goods
+					LEFT JOIN tb_rst_relation_order on tb_rst_relation_order.relation_id = tb_rst_back_goods.back_goods_id
+					where tb_rst_relation_order.relation_type = '6'
+					UNION ALL
+						SELECT
+							'7' AS customerIsSolve,
+							noreason_back_id AS relationId,
+							customer_id AS customerId,
+							tb_rst_relation_order.sales_id AS orderId,
+							signclosed_id AS signclosedId,
+							NULL AS relationBackEfastOrderId,
+							noreason_back_back_name AS relationBackName,
+							noreason_back_back_tel AS relationBackTel,
+							noreason_back_back_status AS relationBackStatus,
+							noreason_back_back_logistics_company AS relationBackLogisticsCompany,
+							noreason_back_back_logistics_no AS relationBackLogisticsNo,
+							noreason_back_back_postage AS relationBackPostage,
+							noreason_back_back_machine_no AS relationBackMachineNo,
+							NULL AS relationSendStatus,
+							NULL AS relationSendName,
+							NULL AS relationSendTel,
+							NULL AS provinceNumber,
+							NULL AS cityNumber,
+							NULL AS areaNumber,
+							NULL AS relationSendMergeAddress,
+							NULL AS relationSendAddress,
+							NULL AS relationSendLogisticsCompany,
+							NULL AS relationSendLogisticsNo,
+							noreason_back_desc AS relationDesc,
+							noreason_back_state AS relationState,
+							noreason_back_alipay AS relationAlipay,
+							noreason_back_is_transfer AS relationIsTransfer,
+							noreason_back_alipay_name AS relationAlipayName,
+							noreason_back_receipt_date AS relationBackReceiptDate
+						FROM
+							tb_rst_noreason_back
+						LEFT JOIN tb_rst_relation_order on tb_rst_relation_order.relation_id = tb_rst_noreason_back.noreason_back_id
+						where tb_rst_relation_order.relation_type = '7'
+	) cc ON cc.customerId = c.customer_id
+LEFT JOIN tb_rst_sales_order_info oi ON cc.orderId = oi.sales_id
+LEFT JOIN tb_rst_question_describe qd ON c.customer_id = qd.customer_id
+LEFT JOIN tb_rst_complaint_question cq ON c.question_id = cq.question_id
+LEFT JOIN tb_rst_complaint_small_class csc ON csc.small_class_id = cq.small_class_id
+LEFT JOIN tb_rst_complaint_type ct ON ct.complaint_id = csc.complaint_id
+LEFT JOIN tb_rst_sales_company sc ON c.company_id = sc.company_id
+LEFT JOIN tb_rst_store_info si ON c.store_id = si.store_id
+LEFT JOIN tb_rst_sales_order_item soi ON soi.item_order_id = oi.sales_id
+  </select>
 </mapper>

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

@@ -37,7 +37,7 @@
         sales_send_type,sales_send_time,sales_sales_time,sales_post_num,sales_post_firm,sales_address_info,sales_address_tel,
         sales_address_name,sales_amount,sales_pay_money,sales_pay_type,sales_wait_money,sales_last_money,sales_shipping_fee,sales_pay_time,
         sales_create_time,sales_admin_remark,sales_user_remark,sales_pay_number,sales_store_id,sales_company_id,sales_type,sales_deal_code,sales_order_status,
-        sales_status,sales_shipping_status,sales_pay_status,sales_process_status,sales_is_send,sales_is_locked,sales_is_separate
+        sales_status,sales_shipping_status,sales_pay_status,sales_process_status,sales_is_send,sales_is_locked,sales_is_separate,sales_is_download
   </sql>
 
   <!-- 根据id查询订单信息 -->
@@ -63,6 +63,12 @@
     LEFT JOIN tb_rst_sales_company trsc ON tb_rst_sales_order_info.sales_company_id = trsc.company_id
     LEFT JOIN tb_rst_store_info trsi ON tb_rst_sales_order_info.sales_store_id = trsi.store_id
     <where>
+      <if test="isHaveImport !=null and isHaveImport !=''">
+        AND sales_is_download = #{isHaveImport}
+      </if>
+      <if test="isDeliverGoods !=null and isDeliverGoods !=''">
+        AND sales_shipping_status = #{isDeliverGoods}
+      </if>
       <if test="salesStatus !=null and salesStatus !=''">
         AND sales_status = #{salesStatus}
       </if>
@@ -145,6 +151,15 @@
       LEFT JOIN tb_rst_store_info trsi ON o.sales_store_id = trsi.store_id
       LEFT JOIN tb_rst_sales_order_item i ON o.sales_id = i.item_order_id
       <where>
+        <if test="isHaveImport !=null and isHaveImport !=''">
+          AND sales_is_download = #{isHaveImport}
+        </if>
+        <if test="isDeliverGoods !=null and isDeliverGoods !=''">
+          AND sales_shipping_status = #{isDeliverGoods}
+        </if>
+        <if test="storeName !=null and storeName !=''">
+          AND sales_store_id = #{storeName}
+        </if>
         <if test="salesId !=null">
           o.sales_id like CONCAT('%',#{salesId},'%')
         </if>
@@ -163,6 +178,9 @@
         <if test="endDate != null and endDate != ''">
           AND o.sales_create_time <![CDATA[<=]]> #{endDate}
         </if>
+        <if test="salesIsDownload != null and endDate != ''">
+          AND o.sales_is_download  = #{salesIsDownload}
+        </if>
       </where>
   </select>
 
@@ -178,7 +196,7 @@
       sales_pay_time, sales_create_time, sales_admin_remark, 
       sales_user_remark, sales_pay_number, sales_store_id, 
       sales_company_id, sales_type,sales_deal_code,sales_order_status,sales_shipping_status,
-      sales_pay_status,sales_process_status,sales_is_send,sales_is_locked,sales_is_separate)
+      sales_pay_status,sales_process_status,sales_is_send,sales_is_locked,sales_is_separate,sales_is_download,sales_main_order_id)
     values (#{salesId,jdbcType=INTEGER}, #{salesOrderId,jdbcType=VARCHAR}, #{salesOpenId,jdbcType=VARCHAR},
       #{salesDiscountMoney,jdbcType=INTEGER}, #{salesPledgeMoney,jdbcType=INTEGER}, #{salesRemainDeposit,jdbcType=INTEGER}, 
       #{salesStatus,jdbcType=INTEGER}, #{salesSendType,jdbcType=INTEGER}, #{salesSendTime,jdbcType=TIMESTAMP}, 
@@ -190,7 +208,7 @@
       #{salesUserRemark,jdbcType=VARCHAR}, #{salesPayNumber,jdbcType=VARCHAR}, #{salesStoreId,jdbcType=INTEGER}, 
       #{salesCompanyId,jdbcType=INTEGER}, #{salesType,jdbcType=INTEGER},#{salesDealCode},#{salesOrderStatus},
       #{salesShippingStatus},#{salesPayStatus},#{salesProcessStatus},#{salesIsSend},#{salesIsLocked},
-      #{salesIsSeparate})
+      #{salesIsSeparate},#{salesIsDownload},#{salesMainOrderId})
   </insert>
 
   <!-- 批量添加订单项数据 -->
@@ -355,6 +373,9 @@
       <if test="salesType != null" >
         sales_type = #{salesType,jdbcType=INTEGER},
       </if>
+      <if test="salesIsDownload != null" >
+        sales_is_download = #{salesIsDownload,jdbcType=INTEGER},
+      </if>
     </set>
     where sales_id = #{salesId}
   </update>
@@ -411,4 +432,113 @@
     where item_order_id = #{itemOrderId}
     AND item_color_bar = #{itemColorBar}
   </update>
+
+
+  <!-- 根据外部商城订单号查询订单信息 -->
+  <select id="getSalesOrderByLogistics" resultType="SalesOrder" parameterType="SalesOrder" >
+    select
+    t.*,
+    trsc.company_name companyName,
+    trsi.store_efast  storeEfast,
+    trsi.store_name  storeName
+    from tb_rst_sales_order_info t
+    LEFT JOIN tb_rst_sales_company trsc ON t.sales_company_id = trsc.company_id
+    LEFT JOIN tb_rst_store_info trsi ON t.sales_store_id = trsi.store_id
+    <where>
+      <if test="salesDealCode != null">
+        sales_deal_code = #{salesDealCode}
+      </if>
+      <if test="salesOrderId != null">
+        and sales_orderId = #{salesOrderId}
+      </if>
+      <if test="salesCompanyId !=null and salesCompanyId !=''">
+        AND sales_company_id = #{salesCompanyId}
+      </if>
+    </where>
+  </select>
+
+
+  <!-- 批量修改订单信息 -->
+  <update id="updateOrderListIsDownload" parameterType="java.util.List">
+    <foreach collection="list" item="item" index="index" separator=";" open="" close="">
+      update tb_rst_sales_order_info
+      <set>
+        <!--<if test="item.salesIsDownload != null" >-->
+          sales_is_download = 2
+        <!--</if>-->
+      </set>
+      where sales_id = #{item.salesId}
+    </foreach>
+  </update>
+
+
+  <!-- 根据交易号修改订单信息 -->
+  <update id="updateSalesOrderByDealCode" parameterType="SalesOrder" >
+    update tb_rst_sales_order_info
+    <set >
+      <if test="salesOrderId != null" >
+        sales_orderId = #{salesOrderId,jdbcType=VARCHAR},
+      </if>
+      <if test="salesPostNum != null" >
+        sales_post_num = #{salesPostNum,jdbcType=VARCHAR},
+      </if>
+      <if test="salesPostFirm != null" >
+        sales_post_firm = #{salesPostFirm,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where sales_deal_code = #{salesDealCode}
+  </update>
+  
+  <select id="getLogisticsInfo" parameterType="LogisticsInfo" resultType="LogisticsInfo">
+    SELECT * from tb_rst_logistics_info
+    <where>
+      <if test="logisticsName != null and logisticsName != '' ">
+        logistics_name = #{logisticsName}
+      </if>
+      <if test="logisticsRstCode != null and logisticsRstCode != '' ">
+        and logistics_rst_code = #{logisticsRstCode}
+      </if>
+      <if test="logisticsEfastCode !=null and logisticsEfastCode !=''">
+        AND logistics_efast_code = #{logisticsEfastCode}
+      </if>
+      <if test="logisticsOnehundredCode !=null and logisticsOnehundredCode !=''">
+        AND logistics_onehundred_code = #{logisticsOnehundredCode}
+      </if>
+    </where>
+  </select>
+
+  <resultMap id="downsingleRuleMap" type="DownsingleRuleInfo">
+    <id column="downsingle_id" property="downsingleId"/>
+    <result column="downsingle_sorting" property="downsingleSorting"/>
+    <result column="downsingle_status" property="downsingleStatus"/>
+    <result column="downsingle_desc" property="downsingleDesc"/>
+    <result column="downsingle_create_time" property="downsingleCreateTime"/>
+    <collection property="downsingleRuleItemList" column="downsingle_id" ofType="DownsingleRuleItemInfo" select="listDownsingleRuleItem"/>
+  </resultMap>
+  <select id="listDownsingleRule" resultMap="downsingleRuleMap">
+          SELECT
+          downsingle_id,
+          downsingle_sorting,
+          downsingle_status,
+          downsingle_desc,
+          downsingle_create_time
+          FROM tb_rst_downsingle_rule
+          WHERE downsingle_status = 1
+          order BY downsingle_sorting
+  </select>
+  <select id="listDownsingleRuleItem" parameterType="Integer" resultType="DownsingleRuleItemInfo">
+     SELECT
+       downsingle_item_id as downsingleItemId,
+       downsingle_id as downsingleId,
+       downsingle_item_bar as downsingleItemBar,
+       downsingle_item_num as downsingleItemNum,
+       downsingle_item_create_time as downsingleItemCreateTime
+     FROM tb_rst_downsingle_rule_item
+    WHERE downsingle_id = #{downsingleId}
+  </select>
+<!-- 根据sku/查询产品是否是水机 -->
+  <select id="getIsMachine" parameterType="String" resultType="Integer">
+        SELECT  IFNULL(MAX(color_is_machine),0) from tb_rst_product_color where color_bar = #{colorBar}
+  </select>
+
 </mapper>

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

@@ -22,6 +22,14 @@
     where store_id = #{storeId,jdbcType=INTEGER}
   </select>
 
+  <!-- 根据efastid查询店铺信息 -->
+  <select id="getStoreInfoByEfastId" resultType="StoreInfo" parameterType="java.lang.String" >
+    select
+    <include refid="storeInfo" />
+    from tb_rst_store_info
+    where store_efast = #{storeEfast,jdbcType=VARCHAR}
+  </select>
+
   <!-- 根据条件查询店铺信息 -->
   <select id="listStore" parameterType="StoreInfo" resultType="StoreInfo">
     select

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderServiceImpl.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.order;
 
 import com.github.pagehelper.PageHelper;
 import com.iamberry.cache.LocalCache;
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.order.*;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
@@ -143,6 +145,25 @@ public class OrderServiceImpl implements OrderService{
         return orderMapper.getOrderByTelName(order);
     }
 
+
+    @Override
+    public EfastOrder getFromRstEfastOrderInfo(String orderDealCode) {
+        return orderMapper.getFromRstEfastOrderInfo(orderDealCode);
+    }
+
+    @Override
+    public List<SalesOrder> getFromRstSalesOrderInfo(String orderDealCode){
+        return orderMapper.getFromRstSalesOrderInfo(orderDealCode);
+    }
+
+    @Override
+    public List<SalesOrder> querySalesOrderItemListBySalesId(int salesId){
+        return orderMapper.querySalesOrderItemListBySalesId(salesId);
+    }
+    public void updateSalesOrderPostType(SalesOrder salesOrders, String postType){
+        salesOrders.setSalesPostFirm(postType);
+        orderMapper.updateSalesOrderPostType(salesOrders);
+    }
     @Override
     public OrderSource getSource(Integer sourceId) {
         return orderMapper.getSource(sourceId);

+ 14 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/OrderMapper.java

@@ -1,5 +1,7 @@
 package com.iamberry.rst.service.order.mapper;
 
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.order.*;
 import org.apache.ibatis.annotations.Param;
 
@@ -248,4 +250,16 @@ public interface OrderMapper {
      */
     Order getOrderByTelName(Order order);
 
+    /**
+     * Efast升级后获取订单详情
+     * @param orderDealCode
+     * @return
+     */
+    EfastOrder getFromRstEfastOrderInfo(String orderDealCode);
+
+    List<SalesOrder> getFromRstSalesOrderInfo(String orderDealCode);
+
+    List<SalesOrder> querySalesOrderItemListBySalesId(int salesId);
+
+    void updateSalesOrderPostType(SalesOrder salesOrders);
 }

+ 90 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderMapper.xml

@@ -729,4 +729,94 @@
         </if>
          1 = 1
     </select>
+
+    <!--Efast升级后获取订单详情-->
+    <!--<resultMap id="efastOrderResult" type="EfastOrder" autoMapping="true">
+        <id column="order_id" property="orderId" />
+        <collection property="orderItems" ofType="com.iamberry.rst.core.order.EfastOrder">
+            <id property="oid" column="sales_id" />
+            <result property="itemOrderId" column="Item_order_id"/>
+            <result property="itemProductId" column="item_product_id"/>
+            <result property="itemColorId" column="item_color_id"/>
+            <result property="itemProductType" column="item_product_type"/>
+            <result property="itemProductName" column="item_product_name"/>
+            <result property="itemProductPic" column="item_product_pic"/>
+            <result property="itemProductColor" column="item_product_color"/>
+            <result property="itemCreateTime" column="item_create_time"/>
+            <result property="itemColorBar" column="item_color_bar"/>
+            <result property="itemProductPrice" column="item_product_price"/>
+            <result property="itemProductDiscount" column="item_product_discount"/>
+        </collection>
+    </resultMap>-->
+    <resultMap type="com.iamberry.rst.core.order.EfastOrder" id="efastOrderResult">
+        <id property="oid" column="sales_id"/>
+        <result property="orderAddressName" column="sales_address_name" />
+        <result property="orderAddressTel" column="sales_address_tel" />
+        <result property="orderAddress" column="sales_address_info" />
+        <result property="orderPostFirm" column="sales_post_firm" />
+        <result property="orderPostNum" column="sales_post_num" />
+        <result property="orderProductName" column="item_product_name" />
+        <result property="orderNum" column="item_num" />
+    </resultMap>
+    <select id="getFromRstEfastOrderInfo" parameterType="java.lang.String" resultMap="efastOrderResult">
+        SELECT
+        a.sales_id,a.sales_address_name,a.sales_address_tel,a.sales_address_info,a.sales_post_firm,a.sales_post_num,
+        b.item_product_name,b.item_num
+        FROM
+        tb_rst_sales_order_info a
+        LEFT JOIN
+        tb_rst_sales_order_item b
+        ON
+        a.sales_id = b.item_order_id
+        WHERE
+        a.sales_deal_code = #{orderDealCode}
+    </select>
+    <!-- getFromRstSalesOrderInfo new 2018-6-12 -->
+    <resultMap type="com.iamberry.rst.core.cm.SalesOrder" id="salesOrderResult">
+        <id property="salesId" column="sales_id"/>
+        <result property="salesAddressName" column="sales_address_name" />
+        <result property="salesAddressTel" column="sales_address_tel" />
+        <result property="salesAddressInfo" column="sales_address_info" />
+        <result property="salesPostFirm" column="sales_post_firm" />
+        <result property="salesPostNum" column="sales_post_num" />
+        <result property="itemProductName" column="item_product_name" />
+        <result property="itemNum" column="item_num" />
+        <result property="salesDealCode" column="sales_deal_code" />
+    </resultMap>
+    <select id="getFromRstSalesOrderInfo" parameterType="java.lang.String" resultMap="salesOrderResult">
+        SELECT
+        a.sales_id,a.sales_address_name,a.sales_address_tel,a.sales_address_info,a.sales_post_firm,a.sales_post_num,
+        b.item_product_name,b.item_num,a.sales_deal_code
+        FROM
+        tb_rst_sales_order_info a
+        LEFT JOIN
+        tb_rst_sales_order_item b
+        ON
+        a.sales_id = b.item_order_id
+        WHERE
+        a.sales_deal_code = #{orderDealCode}
+    </select>
+    <!--querySalesOrderItemListBySalesId 查询订单项-->
+    <select id="querySalesOrderItemListBySalesId" parameterType="java.lang.Integer" resultMap="salesOrderResult">
+        SELECT
+        a.sales_id,a.sales_address_name,a.sales_address_tel,a.sales_address_info,a.sales_post_firm,a.sales_post_num,
+        b.item_product_name,b.item_num,a.sales_deal_code
+        FROM
+        tb_rst_sales_order_info a
+        LEFT JOIN
+        tb_rst_sales_order_item b
+        ON
+        a.sales_id = b.item_order_id
+        WHERE
+        a.sales_main_order_id = #{salesId}
+    </select>
+    <!--updateSalesOrderPostType-->
+    <update id="updateSalesOrderPostType" parameterType="SalesOrder">
+        UPDATE
+        tb_rst_sales_order_info
+        SET
+        sales_post_firm = #{salesPostFirm}
+        WHERE
+        sales_deal_code = #{salesDealCode}
+    </update>
 </mapper>

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.product;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
@@ -153,5 +154,10 @@ public class ProductServiceImpl implements ProductService {
         return productMapper.getProductType(customerId);
     }
 
+    @Override
+    public FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo) {
+        return productMapper.getFittingsBySku(fittingsInfo);
+    }
+
 
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.product.mapper;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductType;
@@ -86,4 +87,10 @@ public interface ProductMapper {
 
     //根据客诉id查询产品类型
     ProductType getProductType(Integer customerId);
+
+    /**
+     * 根据sku查询配件信息
+     * @return
+     */
+    FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo);
 }

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml

@@ -214,4 +214,14 @@
         LEFT JOIN tb_rst_customer_info ci on ci.type_id = pt.type_id
         WHERE ci.customer_id = #{customerId}
     </select>
+    <!--根据sku查询配件信息 -->
+    <select id="getFittingsBySku" resultType="FittingsInfo" parameterType="FittingsInfo">
+        SELECT
+        *
+        FROM
+        tb_rst_product_fittings
+        WHERE
+        fittings_bar = #{fittingsBar}
+    </select>
+
 </mapper>

+ 150 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -26,6 +26,7 @@ import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,8 +37,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -424,7 +429,7 @@ public class AdminCustomerController {
                 salesOrderItem.setItemIsSource(1);
                 salesAmount += productColor.getColorDiscount();
             } else if (salesOrderItem.getItemIsSource() == 2) {
-                Product product = productService.getProductByFittingsId(salesOrderItem.getItemProductId());
+                Product product = productService.getProductByFittingsId(salesOrderItem.getItemColorId());
                 FittingsInfo fittingsInfo = fittingsInfoService.getFittingsById(salesOrderItem.getItemColorId());
                 salesOrderItem.setItemProductType(product.getProductType());
                 salesOrderItem.setItemProductName(product.getProductName());
@@ -2013,5 +2018,149 @@ public class AdminCustomerController {
             return rj;
         }
     }
+
+
+
+    /**
+     * 下载客诉信息 (2018-05-29)
+     * @param request
+     * @param res
+     * @param
+     * @throws Exception
+     */
+    @RequestMapping("/download_customer_excel")
+    public void downloadEfastOrderExcel(HttpServletRequest request,HttpServletResponse res) throws Exception{
+        List<CustomerStatisticalInfo> customerList = customerService.listStatisticalCustomer();
+        String[] cells = {
+                "日期","姓名","联系电话","类别","来源入口",
+                "问题类别","小类名称","客诉问题","处理过程","购买日期",
+                "处理结果","销售公司","销售渠道","产品型号","产品颜色",
+                "产品数量","寄回快递","寄回单号","签收日期",
+                "状态","寄出快递","寄出快递","开箱损","二次客诉"
+        };
+        //导出订单Excel并下载
+        customerExcel(request,res,cells,customerList);
+
+    }
+
+
+    /**
+     * 导出订单Excel并下载
+     * @param request
+     * @param res
+     * @param cells
+     * @throws Exception
+     */
+    public void customerExcel(HttpServletRequest request,HttpServletResponse res,
+                                String[] cells,List<CustomerStatisticalInfo> customerList) throws Exception {
+
+        //创建一个workbook,对应一个Excel文件
+        HSSFWorkbook wb = new HSSFWorkbook();
+        //在workbook中添加一个sheet,对应Excel中的一个sheet
+        HSSFSheet sheet = wb.createSheet("导出订单");
+        //在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
+        HSSFRow row = sheet.createRow((int) 0);
+        //创建单元格,设置值表头,设置表头居中
+        HSSFCellStyle style = wb.createCellStyle();
+        //居中格式
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        //设置表头
+
+        if (cells == null || cells.length == 0) {
+            return;
+        }
+        //循环设置表头
+        HSSFCell cell = null;
+        for (int i = 0;i < cells.length;i++) {
+            String name = cells[i];
+            cell = row.createCell(i);
+            cell.setCellValue(name);
+            cell.setCellStyle(style);
+        }
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        for (int i = 0; i < customerList.size(); i++) {
+            row = sheet.createRow((int) i + 1);
+            CustomerStatisticalInfo customerStatisticalInfo = customerList.get(i);
+
+            String createTime = "";
+            if(customerStatisticalInfo.getCreateTime() != null){
+                createTime = format.format(customerStatisticalInfo.getCreateTime());
+            }
+
+            String salesPayTime = "";
+            if(customerStatisticalInfo.getSalesPayTime() != null ){
+                salesPayTime = format.format(customerStatisticalInfo.getSalesPayTime());
+            }
+
+            // 创建单元格,设置值
+            row.createCell(0).setCellValue(createTime);
+            row.createCell(1).setCellValue(customerStatisticalInfo.getCustomerName() == null ? null : customerStatisticalInfo.getCustomerName());
+            row.createCell(2).setCellValue(customerStatisticalInfo.getCustomerTel() == null ? null : customerStatisticalInfo.getCustomerTel());
+            row.createCell(3).setCellValue(customerStatisticalInfo.getCounselType() == null ? null : customerStatisticalInfo.getCounselType());
+            row.createCell(4).setCellValue(customerStatisticalInfo.getSourceType() == null ? null : customerStatisticalInfo.getSourceType());
+            row.createCell(5).setCellValue(customerStatisticalInfo.getComplaintClassName() == null ? null : customerStatisticalInfo.getComplaintClassName());
+            row.createCell(6).setCellValue(customerStatisticalInfo.getSmallClassName() == null ? null : customerStatisticalInfo.getSmallClassName());
+            row.createCell(7).setCellValue(customerStatisticalInfo.getDescribeTitle() == null ? null : customerStatisticalInfo.getDescribeTitle());
+            row.createCell(8).setCellValue(customerStatisticalInfo.getDescribeHandleDesc() == null ? null : customerStatisticalInfo.getDescribeHandleDesc());
+            row.createCell(9).setCellValue(customerStatisticalInfo.getCustomerIsSolve() == null ? null : customerStatisticalInfo.getCustomerIsSolve());
+            row.createCell(10).setCellValue(salesPayTime);
+            row.createCell(11).setCellValue(customerStatisticalInfo.getCompanyName() == null ? null : customerStatisticalInfo.getCompanyName());
+            row.createCell(12).setCellValue(customerStatisticalInfo.getStoreName() == null ? null : customerStatisticalInfo.getStoreName());
+            row.createCell(13).setCellValue(customerStatisticalInfo.getItemProductName() == null ? null : customerStatisticalInfo.getItemProductName());
+            row.createCell(14).setCellValue(customerStatisticalInfo.getItemProductColor() == null ? null : customerStatisticalInfo.getItemProductColor());
+            row.createCell(15).setCellValue(customerStatisticalInfo.getItemNum() == null ? null : customerStatisticalInfo.getItemNum());
+            row.createCell(16).setCellValue(customerStatisticalInfo.getRelationBackLogisticsCompany() == null ? null : customerStatisticalInfo.getRelationBackLogisticsCompany());
+            row.createCell(17).setCellValue(customerStatisticalInfo.getRelationBackLogisticsNo() == null ? null : customerStatisticalInfo.getRelationBackLogisticsNo());
+            row.createCell(18).setCellValue(customerStatisticalInfo.getRelationBackReceiptDate() == null ? null : customerStatisticalInfo.getRelationBackReceiptDate());
+            row.createCell(19).setCellValue(customerStatisticalInfo.getRelationBackStatus() == null ? null : customerStatisticalInfo.getRelationBackStatus());
+            row.createCell(20).setCellValue(customerStatisticalInfo.getRelationSendLogisticsCompany() == null ? null : customerStatisticalInfo.getRelationSendLogisticsCompany());
+            row.createCell(21).setCellValue(customerStatisticalInfo.getRelationSendLogisticsNo() == null ? null : customerStatisticalInfo.getRelationSendLogisticsNo());
+            row.createCell(22).setCellValue(customerStatisticalInfo.getCustomerOutDamaged() == null ? null : customerStatisticalInfo.getCustomerOutDamaged());
+            row.createCell(23).setCellValue(customerStatisticalInfo.getCustomerSecondaryCustomer() == null ? null : customerStatisticalInfo.getCustomerSecondaryCustomer());
+        }
+        //下载导出订单Excel
+        downloadCustomerExcel(res,wb);
+    }
+
+    /**
+     * 下载导出客诉到Excel
+     * @param res
+     * @param wb
+     * @throws Exception
+     */
+    public void downloadCustomerExcel(HttpServletResponse res, HSSFWorkbook wb) throws Exception{
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String fileName = format.format(new Date()) + "客诉报表";
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        wb.write(os);
+        byte[] content = os.toByteArray();
+        InputStream is = new ByteArrayInputStream(content);
+        // 设置response参数,可以打开下载页面
+        res.reset();
+        res.setContentType("application/vnd.ms-excel;charset=utf-8");
+        res.setHeader("Content-Disposition", "attachment;filename="
+                + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
+        ServletOutputStream out = res.getOutputStream();
+        BufferedInputStream bis = null;
+        BufferedOutputStream bos = null;
+        try {
+            bis = new BufferedInputStream(is);
+            bos = new BufferedOutputStream(out);
+            byte[] buff = new byte[2048];
+            int bytesRead;
+            // Simple read/write loop.
+            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
+                bos.write(buff, 0, bytesRead);
+            }
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        } finally {
+            if (bis != null)
+                bis.close();
+            if (bos != null)
+                bos.close();
+        }
+    }
 }
 

+ 231 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSalesOrderController.java

@@ -2,31 +2,41 @@ package com.iamberry.rst.controllers.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.page.PagedResult;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 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.utils.ExcelUtil;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import static com.iamberry.rst.util.SmsConfig.SEND_NOTICE;
+
 /**
  * 订单信息
  * Created by liuzhiwei on 2017/12/4.
@@ -40,6 +50,8 @@ public class AdminSalesOrderController {
     @Autowired
     private EfastOrderService efastOrderService;
 
+    @Autowired
+    private StoreInfoService storeInfoService;
     private Object lock = new Object();
 
     public static void main(String args[]){
@@ -74,8 +86,10 @@ public class AdminSalesOrderController {
         if (totalNum != 0) {
             pagedResult.setTotal(totalNum);
         }
+        List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
         salesOrder.setSalesOrderItemList(null);
         StitchAttrUtil.setModelAndView(salesOrder, mv, "/admin/salesOrder/list_order_page", pagedResult);
+        mv.addObject("listStoreInfo",listStoreInfo);
         return mv;
     }
 
@@ -294,6 +308,46 @@ public class AdminSalesOrderController {
     }
 
     /**
+     * 获取快递公司
+     * @param firm
+     * @return
+     */
+    public String getPostCode(String firm) {
+        if (firm == null || firm.equals("")) {
+            return "01";
+        }
+        LogisticsInfo logisticsInfo = new LogisticsInfo();
+        logisticsInfo.setLogisticsName(firm);
+        List<LogisticsInfo> listLogisticsInfo = salesOrderService.getLogisticsInfo(logisticsInfo);
+        if(listLogisticsInfo.size() > 0){
+            return listLogisticsInfo.get(0).getLogisticsRstCode();
+        }else{
+            return "01";
+        }
+        /*String postCode = "";
+        switch (firm) {
+            case "申通快递":postCode = "sto";break;
+            case "圆通快递":postCode = "yto";break;
+            case "顺丰快递":postCode = "sf";break;
+            case "邮政EMS":postCode = "ems";break;
+            case "省外EMS":postCode = "ems";break;
+            case "中通快递":postCode = "zto";break;
+            case "宅急送":postCode = "zjs";break;
+            case "韵达快递":postCode = "yunda";break;
+            case "cces快递":postCode = "cces";break;
+            case "上门提货":postCode = "pick";break;
+            case "汇通快递":postCode = "htky";break;
+            case "天天快递":postCode = "ttkdex";break;
+            case "星晨急便":postCode = "stars";break;
+            case "京东快递":postCode = "jd";break;
+            case "其他":postCode = "01";break;
+            case "上门送货":postCode = "02";break;
+            default:postCode = "sto";break;
+        }
+        return postCode;*/
+    }
+
+    /**
      * 同步百胜订单
      *
      * @return
@@ -333,4 +387,181 @@ public class AdminSalesOrderController {
     }
 
 
+    /**
+     * 下载efast订单 (2018-05-25)
+     * @param request
+     * @param res
+     * @param salesOrder
+     * @throws Exception
+     */
+    @RequiresPermissions("salesOrder:excel:salesOrder")
+    @RequestMapping("/download_efast_order")
+    public void downloadEfastOrderExcel(HttpServletRequest request,HttpServletResponse res,
+                                SalesOrder salesOrder) throws Exception{
+        //根据id查询订单数据
+        List<SalesOrder> orderList = salesOrderService.listOrderExcel(salesOrder);
+            String[] cells = {
+                    "订单序号(*)","下单日期(文本型*)","店铺代码(*)","交易号(*)","用户昵称(*)",
+                    "收货人","手机号","电话","顾客地址(*)","邮编",
+                    "支付方式","支付交易号","付款日期(货到付款时非必填*)","快递公司","运费",
+                    "其他折扣","商家备注","条形码(*)","均摊金额(单价二选一)",
+                    "单价","数量(*)","发票抬头","发票内容"
+            };
+            //导出订单Excel并下载
+            efastOrderExcel(request,res,cells,orderList);
+    }
+
+
+    /**
+     * 导出订单Excel并下载
+     * @param request
+     * @param res
+     * @param cells
+     * @param orderList
+     * @throws Exception
+     */
+    public void efastOrderExcel(HttpServletRequest request,HttpServletResponse res,
+                            String[] cells,List<SalesOrder> orderList) throws Exception {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+        //创建一个workbook,对应一个Excel文件
+        HSSFWorkbook wb = new HSSFWorkbook();
+        //在workbook中添加一个sheet,对应Excel中的一个sheet
+        HSSFSheet sheet = wb.createSheet("导出订单");
+        //在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
+        HSSFRow row = sheet.createRow((int) 0);
+        //创建单元格,设置值表头,设置表头居中
+        HSSFCellStyle style = wb.createCellStyle();
+        //居中格式
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        //设置表头
+
+        if (cells == null || cells.length == 0) {
+            return;
+        }
+        //循环设置表头
+        HSSFCell cell = null;
+        for (int i = 0;i < cells.length;i++) {
+            String name = cells[i];
+            cell = row.createCell(i);
+            cell.setCellValue(name);
+            cell.setCellStyle(style);
+        }
+        for (int i = 0; i < orderList.size(); i++) {
+            row = sheet.createRow((int) i + 1);
+            SalesOrder order = orderList.get(i);
+            String payType = "";
+            switch (order.getSalesPayType()) {
+                case 1:payType = "微信支付";break;
+                case 2:payType = "现金支付";break;
+                case 3:payType = "已支付定金¥99";break;
+                case 4:payType = "刷卡支付";break;
+                case 5:payType = "支付宝支付";break;
+            }
+
+            StoreInfo storeInfo = storeInfoService.getStoreInfoById(order.getSalesStoreId());
+
+            /**String[] cells = {
+             "订单序号(*)","下单日期(文本型*)","店铺代码(*)","交易号(*)","用户昵称(*)",
+             "收货人","手机号","电话","顾客地址(*)","邮编",
+             "支付方式","支付交易号","付款日期(货到付款时非必填*)","快递公司","运费",
+             "其他折扣","商家备注","条形码(*)","均摊金额(单价二选一)",
+             "单价","数量(*)","发票抬头","发票内容"
+             };**/
+
+            // 创建单元格,设置值
+            row.createCell(0).setCellValue(order.getSalesId());
+            row.createCell(1).setCellValue(order.getSalesSalesTime()==null?"":format2.format(order.getSalesSalesTime()));
+            if(storeInfo != null){
+                row.createCell(2).setCellValue(storeInfo.getStoreEfast());
+            }else{
+                row.createCell(2).setCellValue("");
+            }
+            row.createCell(3).setCellValue(order.getSalesDealCode());
+            row.createCell(4).setCellValue(order.getSalesAddressName());
+            row.createCell(5).setCellValue(order.getSalesAddressName());
+            row.createCell(6).setCellValue(order.getSalesAddressTel());
+            row.createCell(7).setCellValue("");
+            row.createCell(8).setCellValue(order.getSalesAddressInfo());
+            row.createCell(9).setCellValue("");
+            row.createCell(10).setCellValue(payType);
+            row.createCell(11).setCellValue(order.getSalesDealCode());
+            row.createCell(12).setCellValue(order.getSalesPayTime()==null?"":format.format(order.getSalesPayTime()));
+            row.createCell(13).setCellValue(order.getSalesPostFirm()==null?"":order.getSalesPostFirm());
+            row.createCell(14).setCellValue("");
+            row.createCell(15).setCellValue("");
+            row.createCell(16).setCellValue(order.getSalesAdminRemark() == null ? "":order.getSalesAdminRemark());
+            row.createCell(17).setCellValue(order.getItemColorBar());
+            row.createCell(18).setCellValue("");
+            row.createCell(19).setCellValue("");
+            row.createCell(20).setCellValue(order.getItemNum());
+            row.createCell(21).setCellValue("");
+            row.createCell(22).setCellValue("");
+        }
+        //修改订单是否已下载状态
+        if(orderList.size() > 0){
+            salesOrderService.updateOrderListIsDownload(orderList);
+        }
+        //下载导出订单Excel
+        downloadOrderExcel(res,wb);
+    }
+
+
+    /**
+     * 上传efast物流信息excel到系统订单
+     * @param response
+     * @return
+     */
+    @RequestMapping("/uploadLogisticsExcel")
+    @ResponseBody
+    public String uploadLogisticsExcel(HttpServletResponse response,HttpServletRequest request,@RequestParam("file") String file)throws IOException  {
+        Integer maxNumber = 100;
+        String path = request.getServletContext().getRealPath(file);
+        boolean flag = ExcelUtil.readExcelNumber(path,maxNumber);
+        if(!flag){
+            return "最大上传数量为一百条,请检查文档内的数据是否符合条件!";
+        }
+        List<String> listString  = ExcelUtil.readExcelHead(path);
+        if(listString == null){
+            return "数据不合格,请检查文档内的数据是否正常!";
+        }
+        List<String> tradings =   ExcelUtil.readCell2(path,listString.get(2));//外部交易号
+        List<String> oderIds =   ExcelUtil.readCell2(path,listString.get(4));//efast订单号
+        List<String> kuyaidi =   ExcelUtil.readCell2(path,listString.get(12));//快递公司
+        List<String> danhao =   ExcelUtil.readCell2(path,listString.get(15));//快递单号
+        if(oderIds == null || tradings == null || kuyaidi == null || danhao == null){
+            return "数据不合格,请检查文档内的数据是否正常!";
+        }
+        if(oderIds.size() != kuyaidi.size() || oderIds.size() != danhao.size()|| oderIds.size() != tradings.size()){
+            return "数据不合格,请检查文档内的数据是否正常!";
+        }
+        SalesOrder salesOrder = new SalesOrder();
+        Integer success = 0,error = 0;
+        List<String> errorOrders = new ArrayList();
+        for (int i = 0;i< tradings.size();i++){
+           if( tradings.get(i) != null &&  !tradings.get(i).equals("") &&
+                   oderIds.get(i) != null &&  !oderIds.get(i).equals("") &&
+                   kuyaidi.get(i) != null &&  !kuyaidi.get(i).equals("") &&
+                   danhao.get(i) != null &&  !danhao.get(i).equals("")){
+               String code = getPostCode(kuyaidi.get(i));
+               salesOrder.setSalesDealCode(tradings.get(i));
+               salesOrder.setSalesOrderId(oderIds.get(i));
+               salesOrder.setSalesPostFirm(code);
+               salesOrder.setSalesPostNum(danhao.get(i));
+               salesOrder.setSalesShippingStatus(1);//状态改为已发货
+               Integer msg = salesOrderService.updateSalesOrderByDealCode(salesOrder);
+               if(msg > 0){
+                   success++;
+               }else{
+                   errorOrders.add(tradings.get(i));
+                   error++;
+               }
+           }
+        }
+        String data = "上传完成,成功:"+success+"条,失败:"+error+"条";
+        if(error > 0){
+            data = data+errorOrders.toString();
+        }
+        return data;
+    }
 }

+ 323 - 28
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.controllers.order;
 
 import com.iamberry.rst.controllers.sys.SysController;
+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.*;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
@@ -10,6 +13,8 @@ import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.core.sys.OrderCheckStatus;
 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.order.OrderService;
 import com.iamberry.rst.faces.product.ProductService;
@@ -20,6 +25,7 @@ import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.ExcelUtil;
 import com.iamberry.rst.utils.OrderNoUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ObjectExcelView;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.payUtil.DatetimeUtil;
@@ -70,6 +76,11 @@ public class AdminOrderController {
     private MessageService messageService;
     @Autowired
     private SmsService smsService;
+    //Efast升级 2018-6-8
+    @Autowired
+    private SalesOrderService salesOrderService;
+    @Autowired
+    private StoreInfoService storeInfoService;
 
     /**
      * 进入更换滤芯页面
@@ -570,7 +581,7 @@ public class AdminOrderController {
     @RequiresPermissions("order:select:color")
     @ResponseBody
     @RequestMapping("/listProductColorByProductId")
-    public ResponseJson listProductColorByProductId(HttpServletRequest request, String colorProductId) {
+        public ResponseJson listProductColorByProductId(HttpServletRequest request, String colorProductId) {
         ResponseJson responseJson = new ResponseJson();
         if (colorProductId.trim().equals("")) {
             return responseJson;
@@ -584,6 +595,8 @@ public class AdminOrderController {
     public ModelAndView uploadExcel(@RequestParam("file") String file, HttpServletRequest request) throws IOException {
         ModelAndView mv = new ModelAndView("order/excel_to_order");
         // 到设置页面
+        List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
+        mv.addObject("listStoreInfo",listStoreInfo);
         mv.addObject("heads", ExcelUtil.readExcelHead(request.getServletContext().getRealPath(file)));
         mv.addObject("productUrl", file);
         return mv;
@@ -606,14 +619,16 @@ public class AdminOrderController {
         BufferedReader reader=null;
         String temp=null;
         List<EfastOrder> efastOrderList = new ArrayList<EfastOrder>();
+        List<SalesOrder> temporarySalesOrderList = new ArrayList<SalesOrder>();
         int line=1;
         try{
             reader=new BufferedReader(new FileReader(file));
             while((temp=reader.readLine())!=null){
-                String[] po = temp.split("@");
+                //Efast升级只取交易号 2018-6-8
+                //String[] po = temp.split("@");
                 EfastOrder efastOrder = new EfastOrder();
-                efastOrder.setPlatformOrderId(po[0]);
-                efastOrder.setOrderDealCode(po[1]);
+                //efastOrder.setPlatformOrderId(po[0]);
+                efastOrder.setOrderDealCode(temp);
                 efastOrderList.add(efastOrder);
                 line++;
             }
@@ -630,9 +645,44 @@ public class AdminOrderController {
                 }
             }
         }
+        Map<String,SalesOrder> mapsalesOrderList = new HashMap<>();
         for (int i=0;i<efastOrderList.size();i++){
-            EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(efastOrderList.get(i).getOrderDealCode());
-            if(efastOrder != null){
+            //EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(efastOrderList.get(i).getOrderDealCode());
+            //orderService
+            //EfastOrder efastOrder = orderService.getFromRstEfastOrderInfo(efastOrderList.get(i).getOrderDealCode());
+            List<SalesOrder> salesOrderList = orderService.getFromRstSalesOrderInfo(efastOrderList.get(i).getOrderDealCode());
+            /*if(salesOrderList != null && salesOrderList.size() > 0){
+                for (SalesOrder salesOrder: salesOrderList) {
+                    int salesId = salesOrder.getSalesId();
+                    salesOrderItemList = orderService.querySalesOrderItemListBySalesId(salesId);
+                    if(salesOrderItemList != null && salesOrderItemList.size() >0){
+                        for (SalesOrderItem salesOrderItem: salesOrderItemList) {
+                            int saId = salesOrderItem.getItemOrderId();
+                        }
+                    }
+                }
+            }*/
+            //List<SalesOrder> temporarySalesOrderList = new ArrayList<SalesOrder>();
+            //添加子订单
+            if(salesOrderList != null && salesOrderList.size() > 0) {
+                for (SalesOrder salesOrder : salesOrderList) {
+                    int salesId = salesOrder.getSalesId();
+                    List<SalesOrder> salesMainOrderList = orderService.querySalesOrderItemListBySalesId(salesId);//查询子订单
+                    if(salesMainOrderList != null && salesMainOrderList.size() > 0){
+                        for(SalesOrder salesMainOrder:salesMainOrderList){
+                            temporarySalesOrderList.add(salesMainOrder);
+                        }
+                    }
+                }
+            }
+            //添加主订单
+            if(salesOrderList != null && salesOrderList.size() > 0) {
+                for (SalesOrder salesOrder : salesOrderList) {
+                    temporarySalesOrderList.add(salesOrder);
+                }
+            }
+
+            /*if(efastOrder != null){
                 efastOrderList.get(i).setOrderAddressName(efastOrder.getOrderAddressName());
                 efastOrderList.get(i).setOrderAddressTel(efastOrder.getOrderAddressTel());
                 efastOrderList.get(i).setOrderAddress(efastOrder.getOrderAddress());
@@ -640,7 +690,7 @@ public class AdminOrderController {
                 efastOrderList.get(i).setOrderPostNum(efastOrder.getOrderPostNum());
                 efastOrderList.get(i).setOrderProductName(efastOrder.getOrderProductName());
                 efastOrderList.get(i).setOrderNum(efastOrder.getOrderNum());
-            }
+            }*/
         }
 
         // 准备model
@@ -661,19 +711,31 @@ public class AdminOrderController {
         model.put("titles", titles);
         PtsBatch ptsBatch = new PtsBatch();
         List<List<Object>> countexts = new ArrayList<List<Object>>();
-        for (EfastOrder efastOrder : efastOrderList) {
-            List<Object> row = new ArrayList<Object>();
-            row.add(efastOrder.getPlatformOrderId() == null ? null:efastOrder.getPlatformOrderId());
-            row.add(efastOrder.getOrderDealCode() == null ? null:efastOrder.getOrderDealCode());
-            row.add(efastOrder.getOrderAddressName() == null ? null:efastOrder.getOrderAddressName());
-            row.add(efastOrder.getOrderAddressTel() == null ? null:efastOrder.getOrderAddressTel());
-            row.add(efastOrder.getOrderAddress() == null ? null:efastOrder.getOrderAddress());
-            String frim = replace(efastOrder.getOrderPostFirm());
-            row.add(frim);
-            row.add(efastOrder.getOrderPostNum() == null ? null:efastOrder.getOrderPostNum());
-            row.add(efastOrder.getOrderProductName() == null ? null:efastOrder.getOrderProductName());
-            row.add(efastOrder.getOrderNum() == null ? null:efastOrder.getOrderNum());
-            countexts.add(row);
+        if(temporarySalesOrderList != null && temporarySalesOrderList.size() >0){
+            for (SalesOrder salesOrder : temporarySalesOrderList) {
+                List<Object> row = new ArrayList<Object>();
+                /*row.add(efastOrder.getPlatformOrderId() == null ? null:efastOrder.getPlatformOrderId());
+                row.add(efastOrder.getOrderDealCode() == null ? null:efastOrder.getOrderDealCode());
+                row.add(efastOrder.getOrderAddressName() == null ? null:efastOrder.getOrderAddressName());
+                row.add(efastOrder.getOrderAddressTel() == null ? null:efastOrder.getOrderAddressTel());
+                row.add(efastOrder.getOrderAddress() == null ? null:efastOrder.getOrderAddress());
+                String frim = replace(efastOrder.getOrderPostFirm());
+                row.add(frim);
+                row.add(efastOrder.getOrderPostNum() == null ? null:efastOrder.getOrderPostNum());
+                row.add(efastOrder.getOrderProductName() == null ? null:efastOrder.getOrderProductName());
+                row.add(efastOrder.getOrderNum() == null ? null:efastOrder.getOrderNum());*/
+                row.add(salesOrder.getSalesOrderId() == null ? null:salesOrder.getSalesOrderId());
+                row.add(salesOrder.getSalesDealCode() == null ? null:salesOrder.getSalesDealCode());
+                row.add(salesOrder.getSalesAddressName() == null ? null:salesOrder.getSalesAddressName());
+                row.add(salesOrder.getSalesAddressTel() == null ? null:salesOrder.getSalesAddressTel());
+                row.add(salesOrder.getSalesAddressInfo() == null ? null:salesOrder.getSalesAddressInfo());
+                String frim = replace(salesOrder.getSalesPostFirm());
+                row.add(frim);
+                row.add(salesOrder.getSalesPostNum() == null ? null:salesOrder.getSalesPostNum());
+                row.add(salesOrder.getItemProductName() == null ? null:salesOrder.getItemProductName());
+                row.add(salesOrder.getItemNum() == null ? null:salesOrder.getItemNum());
+                countexts.add(row);
+            }
         }
         model.put("varList", countexts);
         ObjectExcelView erv = new ObjectExcelView();
@@ -831,6 +893,84 @@ public class AdminOrderController {
      * @return
      * @throws Exception
      */
+    /*@ResponseBody
+    @RequestMapping("/toobj_sendefast")
+    public ResponseJson toObjSendEfast(@RequestParam("map[]") String[] maps,
+                                       @RequestParam("name[]") String name,
+                                       @RequestParam("platformOrder[]") String platformOrder,
+                                       @RequestParam("tel[]") String tel,
+                                       @RequestParam("info[]") String[] infos,
+                                       @RequestParam("num[]") String num,
+                                       @RequestParam("remark[]") String remark,
+                                       @RequestParam("filePath") String filePath,
+                                       @RequestParam("postType") String postType,
+                                       @RequestParam("productName") String productName,
+                                       @RequestParam("shopId") String shopId,
+                                       HttpServletRequest request) throws Exception {
+        logger.info("-----------根据excel内容推送到百胜开始,Excel路径:"+ filePath +"-----------");
+        // 获取产品颜色的映射
+        List<ProductColor> productColors = orderService.listProductColor();
+        Map<String, ProductColor> priceMap = new HashMap<>();
+        for (ProductColor productColor : productColors) {
+            priceMap.put(productColor.getColorBar(), productColor);
+        }
+        // 读取文件中内容
+        List<SalesOrder> salesOrderList = ExcelUtil.readCell(request.getServletContext().getRealPath(filePath),
+                productName, maps, infos, tel, name,platformOrder, num,remark, priceMap, postType, shopId);
+        logger.info("---------orderEfasts订单个数为:"+salesOrderList.size() + "------------");
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < salesOrderList.size(); i++) {
+            //Efast升级只取交易号 2018-6-8
+            //sb.append(orderEfasts.get(i).getPlatformOrderId().trim() + "@");
+            sb.append(salesOrderList.get(i).getSalesId() + "\r\n");
+        }
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
+        String dateString = formatter.format(new Date());
+        String webPath = request.getSession().getServletContext().getRealPath("/");
+        String path = webPath + "common/file/upload/file/" + dateString + "/";
+        String fileName = "";
+        try {
+            fileName = createFile(path, sb.toString());
+        } catch (Exception e) {
+            logger.info("推送Efast订单,交易号文件生成失败");
+        }
+        if(fileName != null && !"".equals(fileName)){
+            fileName = fileName.substring(fileName.indexOf("common"),fileName.length());
+        }else{
+            fileName = "";
+        }
+
+        logger.info("-------- 推送订单到Efast开始 - Efast个数:"+ salesOrderList.size() +"--------");
+        // 推送
+        try {
+            efastOrderService.sendOrderInfoToEfast(salesOrderList, null);
+        } catch (Exception e) {
+            logger.error("", e);
+        }
+        logger.info("-------- 推送订单到Efast结束 ---------");
+
+        return new ResponseJson(200, "SUCCESS", 200)
+                .addResponseKeyValue("errorPath", request.getContextPath() + filePath)
+                .addResponseKeyValue("order_list", salesOrderList)
+                .addResponseKeyValue("fileName", fileName);
+    }*/
+
+    /**
+     * 根据excel内容推送到百胜
+     *
+     * @param maps
+     * @param name
+     * @param tel
+     * @param infos
+     * @param num
+     * @param filePath
+     * @param postType    快递类型(对应efast)
+     * @param productName
+     * @param shopId      efast店铺id
+     * @param request
+     * @return
+     * @throws Exception
+     */
     @ResponseBody
     @RequestMapping("/toobj_sendefast")
     public ResponseJson toObjSendEfast(@RequestParam("map[]") String[] maps,
@@ -856,11 +996,165 @@ public class AdminOrderController {
         List<EfastOrder> orderEfasts = ExcelUtil.readCell(request.getServletContext().getRealPath(filePath),
                 productName, maps, infos, tel, name,platformOrder, num,remark, priceMap, postType, shopId);
         logger.info("---------orderEfasts订单个数为:"+orderEfasts.size() + "------------");
-        StringBuffer sb = new StringBuffer();
-        for (int i = 0; i < orderEfasts.size(); i++) {
-            sb.append(orderEfasts.get(i).getPlatformOrderId().trim() + "@");
-            sb.append(orderEfasts.get(i).getOrderId() + "\r\n");
+        //Efast升级 2018-6-8
+        boolean bl = false;
+        List<SalesOrder> salesOrderList = null;//new ArrayList<SalesOrder>();
+        List<SalesOrderItem> salesOrderItemList = null;//new ArrayList<SalesOrderItem>();
+        List<ProductColor> listColor = null;
+        SalesOrder salesOrder = null;
+        SalesOrderItem salesOrderItem = null;
+        ProductColor productColor = null;
+        Product product = null;
+        Integer salesAmount = 0;
+        Date date = new Date();
+        StoreInfo storeInfo = storeInfoService.getStoreInfoByEfastId(shopId);
+        Map<String,SalesOrder> mapsalesOrderList = new HashMap<>();
+        int newFaultNum = 0;
+        if(orderEfasts == null || orderEfasts.size() <= 0) {
+            return ResponseJson.SUCCESS;
+        }
+        for (EfastOrder efastOrder: orderEfasts) {
+            String orderId = efastOrder.getPlatformOrderId();
+            salesOrder = mapsalesOrderList.get(orderId);
+            if (salesOrder == null) {
+                // 没有订单
+                salesOrderList = new ArrayList<SalesOrder>();
+                salesOrderItemList = new ArrayList<SalesOrderItem>();
+                salesOrder = new SalesOrder();
+                salesOrderItem = new SalesOrderItem();
+                if (StringUtil.isEmpty(efastOrder.getOrderProductBarCode())) {
+                    break;
+                }
+                productColor = new ProductColor();
+                productColor.setColorBar(efastOrder.getOrderProductBarCode());
+                listColor = productService.listproductAndColor(productColor);
+                if (listColor != null && listColor.size() > 0) {
+                    productColor = listColor.get(0);
+                    product = productService.getProductById(listColor.get(0).getColorId());
+                    //salesOrderItem.setItemOrderId(Integer.parseInt(orderId));
+                    //salesOrderItem.setItemColorBar(orderProductBarCode);
+                    //salesOrderItemList.add(salesOrderItem);
+                    //addOrder
+                    salesOrderItem.setItemColorId(productColor.getColorId());
+                    if (product != null) {
+                        salesOrderItem.setItemProductId(product.getProductId());
+                        salesOrderItem.setItemProductType(product.getProductType());
+                    }
+                    salesOrderItem.setItemNum(efastOrder.getOrderNum());
+                    salesOrderItem.setItemProductName(product.getProductName());
+                    salesOrderItem.setItemProductPic(productColor.getColorPicture());
+                    salesOrderItem.setItemProductColor(productColor.getColorName());
+                    salesOrderItem.setItemColorBar(productColor.getColorBar());
+                    salesOrderItem.setItemProductPrice(productColor.getColorPrice());
+                    salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
+                    salesOrderItem.setItemIsSource(1);
+                }
+                salesOrderItemList.add(salesOrderItem);
+                salesAmount += productColor.getColorDiscount();
+
+                salesOrder.setSalesOpenId("0");
+                salesOrder.setSalesDiscountMoney(salesAmount);
+                salesOrder.setSalesPledgeMoney(salesAmount);
+                salesOrder.setSalesRemainDeposit(salesAmount);
+                salesOrder.setSalesStatus(1);
+                salesOrder.setSalesSendType(2);
+                salesOrder.setSalesSalesTime(date);
+                salesOrder.setSalesAddressInfo(efastOrder.getOrderProvince()+" "+efastOrder.getOrderCity()+" "+efastOrder.getOrderArea()+" "+efastOrder.getOrderAddress());
+                //salesOrder.setSalesAddressInfo(efastOrder.getOrderAddress());
+                salesOrder.setSalesAddressTel(efastOrder.getOrderAddressTel());
+                salesOrder.setSalesAddressName(efastOrder.getOrderAddressName());
+                salesOrder.setSalesAmount(efastOrder.getOrderAmount());
+                salesOrder.setSalesPayMoney(efastOrder.getOrderPayMoney());
+                salesOrder.setSalesPayType(1);
+                salesOrder.setSalesWaitMoney(efastOrder.getOrderAmount() - efastOrder.getOrderPayMoney());
+                //salesOrder.setSalesWaitMoney(money_paid);
+                salesOrder.setSalesShippingFee(0);//??????????
+                salesOrder.setSalesPayTime(date);
+                salesOrder.setSalesLastMoney(efastOrder.getOrderPayMoney());
+                salesOrder.setSalesCreateTime(new Date());
+                salesOrder.setSalesAdminRemark(efastOrder.getOrderBuyerRemark());
+                salesOrder.setSalesUserRemark(efastOrder.getOrderSellerRemark());
+                salesOrder.setSalesStoreId(storeInfo.getStoreId());
+                salesOrder.setSalesCompanyId(storeInfo.getCompanyId());
+                salesOrder.setSalesType(1);
+                //salesOrder.setSalesDealCode(String.valueOf(efastOrder.getOid()));
+                salesOrder.setSalesDealCode(orderId);
+                salesOrder.setSalesOrderStatus(1);
+                salesOrder.setSalesShippingStatus(0);
+                salesOrder.setSalesPayStatus(2);
+                salesOrder.setSalesProcessStatus(0);
+                salesOrder.setSalesIsSend(0);
+                salesOrder.setSalesIsLocked(0);
+                salesOrder.setSalesIsSeparate(0);
+                salesOrder.setSalesIsDownload(1);
+                salesOrder.setSalesPostFirm(postType);
+                salesOrder.setSalesOrderItemList(salesOrderItemList);
+                salesOrderList.add(salesOrder);
+                mapsalesOrderList.put(orderId, salesOrder);
+            } else {
+                //salesOrder.setSalesDealCode(orderId);
+                // 有订单,合并到原有订单的订单项
+                salesOrderItem = new SalesOrderItem();
+                productColor = new ProductColor();
+                productColor.setColorBar(efastOrder.getOrderProductBarCode());
+                listColor = productService.listproductAndColor(productColor);
+                if (listColor != null && listColor.size() > 0) {
+                    productColor = listColor.get(0);
+                    product = productService.getProductById(listColor.get(0).getColorId());
+                    if (product != null) {
+                        salesOrderItem.setItemProductId(product.getProductId());
+                        salesOrderItem.setItemProductType(product.getProductType());
+                    }
+                    salesOrderItem.setItemColorId(productColor.getColorId());
+                    salesOrderItem.setItemNum(efastOrder.getOrderNum());
+                    salesOrderItem.setItemProductName(productColor.getProductName());
+                    salesOrderItem.setItemProductPic(productColor.getColorPicture());
+                    salesOrderItem.setItemProductColor(productColor.getColorName());
+                    salesOrderItem.setItemColorBar(productColor.getColorBar());
+                    salesOrderItem.setItemProductPrice(productColor.getColorPrice());
+                    salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
+                    salesOrderItem.setItemIsSource(1);
+                }
+                salesOrder.getSalesOrderItemList().add(salesOrderItem);
+                //salesOrder.setSalesDealCode(orderId);
+                mapsalesOrderList.put(orderId, salesOrder);
+            }
         }
+        StringBuffer sb = new StringBuffer();
+         for(SalesOrder salesOrders: mapsalesOrderList.values()){
+                //orderService.updateSalesOrderPostType(salesOrders,postType);
+                bl = salesOrderService.addRstOrderAndIteminfo(salesOrders);
+                logger.info("EFAST升级合并订单项调用boolean值+:"+bl);
+               String salesDealCode = salesOrders.getSalesDealCode();
+               if(bl == false){
+                   for(EfastOrder efastOrderStyle:orderEfasts){
+                       if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
+                       efastOrderStyle.setStyleColor("color:red;");
+                   }
+                   newFaultNum ++;
+               }else{
+                   for(EfastOrder efastOrderStyle:orderEfasts){
+                       if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
+                           efastOrderStyle.setStyleColor("color:black;");
+                   }
+                   sb.append(salesOrders.getSalesDealCode()+"\r\n");
+               }
+         }
+        /*if(!bl){
+            return ResponseJson.SUCCESS;
+        }*/
+        //Efast升级 2018-6-8
+        //StringBuffer sb = new StringBuffer();
+        /*if(mapsalesOrderList != null && mapsalesOrderList.size() > 0){
+            *//*for (int i = 0; i < mapsalesOrderList.size(); i++) {
+                //Efast升级只取交易号 2018-6-8
+                //sb.append(orderEfasts.get(i).getPlatformOrderId().trim() + "@");
+                //sb.append(orderEfasts.get(i).getOrderId() + "\r\n");
+            }*//*
+            for(String key: mapsalesOrderList.keySet()){
+                sb.append(key + "\r\n");
+            }
+        }*/
         SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
         String dateString = formatter.format(new Date());
         String webPath = request.getSession().getServletContext().getRealPath("/");
@@ -879,17 +1173,18 @@ public class AdminOrderController {
 
         logger.info("-------- 推送订单到Efast开始 - Efast个数:"+ orderEfasts.size() +"--------");
         // 推送
-        try {
+        /*try {
             efastOrderService.sendOrderInfoToEfast(orderEfasts, null);
         } catch (Exception e) {
             logger.error("", e);
-        }
+        }*/
         logger.info("-------- 推送订单到Efast结束 ---------");
-
         return new ResponseJson(200, "SUCCESS", 200)
                 .addResponseKeyValue("errorPath", request.getContextPath() + filePath)
                 .addResponseKeyValue("order_list", orderEfasts)
-                .addResponseKeyValue("fileName", fileName);
+                .addResponseKeyValue("mapSalesOrderSize",mapsalesOrderList.size())
+                .addResponseKeyValue("fileName", fileName)
+                .addResponseKeyValue("newFaultNum",newFaultNum);
     }
 
     /**

+ 240 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/MallOrderController.java

@@ -0,0 +1,240 @@
+package com.iamberry.rst.controllers.order;
+
+import com.alibaba.fastjson.JSON;
+import com.iamberry.rst.core.cm.FittingsInfo;
+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.Product;
+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.product.ProductService;
+import com.iamberry.rst.utils.AdminUtils;
+import com.iamberry.rst.utils.OrderNoUtil;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Created by Administrator on 2018/5/21.
+ */
+@Controller
+@RequestMapping("/mallorder")
+public class MallOrderController {
+    @Autowired
+    private SalesOrderService salesOrderService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private StoreInfoService storeInfoService;
+
+    @RequestMapping(value = "/order",method = RequestMethod.POST)
+    @ResponseBody
+    public JSONObject addOrder(HttpServletRequest request){
+        String info =  request.getParameter("info");
+        Map<String,Object> map = new HashMap<String,Object>();
+        Map requstMap = (Map) JSON.parse(info);
+        if(requstMap == null || requstMap.size() == 0){
+            map.put("msg","parameter error");
+            map.put("oder_sn",new Date().getTime());
+            return JSONObject.fromObject(map);
+        }
+        String app_act =  request.getParameter("app_act");
+        if(app_act == null || app_act.equals("")){
+            map.put("msg","parameter error");
+            map.put("oder_sn",new Date().getTime());
+            return JSONObject.fromObject(map);
+        }
+        switch (app_act){
+            case "rst.trade.new.add":
+                map = addOrder(requstMap);
+                //新增订单
+                break;
+            case "rst.trade.logistics.get":
+                //拉取物流
+                map = getOrderLogistics(requstMap);
+                break;
+            default:
+                map.put("msg","parameter error");
+                map.put("oder_sn",new Date().getTime());
+                break;
+
+        }
+        return JSONObject.fromObject(map);
+    }
+
+    private Map<String,Object> addOrder(Map<String,Object> requstMap){
+        Map<String,Object> map = new HashMap<String,Object>();
+        SalesOrder salesOrder = new SalesOrder();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-M-dd HH:mm:ss");
+        try {
+            Date add_time = format.parse(requstMap.get("add_time").toString());//添加时间
+            String address = (String)requstMap.get("address");//详细地址
+            String province_name = (String)requstMap.get("province_name");//省
+            String city_name = (String)requstMap.get("city_name");//市
+            String district_name = (String)requstMap.get("district_name");//区
+            String consignee = (String)requstMap.get("consignee");//收货人
+            String email = (String)requstMap.get("email");//email
+            Integer goods_amount = (Integer)requstMap.get("goods_amount");//商品总价
+            Integer goods_count = (Integer)requstMap.get("goods_count");//产品数量
+            String mobile = (String)requstMap.get("mobile");//手机号
+            Integer money_paid = (Integer)requstMap.get("money_paid");//已付款
+            Integer order_amount = (Integer)requstMap.get("order_amount");//应付款,应付款金额要与已付款金额相同
+            String oid = (String)requstMap.get("oid");//交易号或系统订单号
+            String pay_name = (String)requstMap.get("pay_name");//支付方式名称
+            Date pay_time = format.parse(requstMap.get("pay_time").toString());//支付时间
+            String postscript = (String)requstMap.get("postscript");//买家留言
+            String to_buyer = (String)requstMap.get("to_buyer");//商家留言
+            String sd_id = (String)requstMap.get("sd_id");//商店ID(店铺id)
+            Integer shipping_fee = (Integer)requstMap.get("shipping_fee");//邮费
+            String shipping_name = (String)requstMap.get("shipping_name");//快递公司代码
+            String tel = (String)requstMap.get("tel");//收货人电话
+            Integer total_amount = (Integer)requstMap.get("total_amount");//订单总金额
+            String user_name = (String)requstMap.get("user_name");//用户名称
+            String zipcode = (String)requstMap.get("zipcode");//邮编
+            String orders = requstMap.get("orders").toString();//订单项
+
+            //根据efast店铺id查询销售公司id和efastid
+            StoreInfo storeInfo = storeInfoService.getStoreInfoByEfastId(sd_id);
+            List<SalesOrderItem> list = new ArrayList<>();
+            JSONArray jsonArray = JSONArray.fromObject(orders);
+
+            Integer salesAmount = 0;
+            if(jsonArray.size() < 1){
+                map.put("msg","parameter error");
+                map.put("oder_sn",new Date().getTime());
+                return map;
+            }
+             for (int i = 0; i < jsonArray.size(); i++) {
+                 JSONObject orderItem = jsonArray.getJSONObject(i);
+                 String outer_sku = orderItem.get("outer_sku").toString();
+                 ProductColor productColor = new ProductColor();
+                 productColor.setColorBar(outer_sku);
+                 //根据sku查询产品详细信息
+                 List<ProductColor> listColor = productService.listproductAndColor(productColor);
+                 SalesOrderItem salesOrderItem = new SalesOrderItem();
+                 salesOrderItem.setItemNum(Integer.valueOf(orderItem.get("goods_number").toString()));
+                 salesOrderItem.setItemProductName(orderItem.get("goods_name").toString());
+                 if (listColor.size() > 0) {
+                    productColor = listColor.get(0);
+                    Product product = productService.getProductById(listColor.get(0).getColorId());
+                    salesOrderItem.setItemColorId(productColor.getColorId());
+                    salesOrderItem.setItemProductId(product.getProductId());
+                    salesOrderItem.setItemProductType(product.getProductType());
+                    /*salesOrderItem.setItemProductName(product.getProductName());*/
+                    salesOrderItem.setItemProductPic(productColor.getColorPicture());
+                    salesOrderItem.setItemProductColor(productColor.getColorName());
+                    salesOrderItem.setItemColorBar(productColor.getColorBar());
+                    salesOrderItem.setItemProductPrice(productColor.getColorPrice());
+                    salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
+                    salesOrderItem.setItemIsSource(1);
+                    salesAmount += productColor.getColorDiscount();
+                }else{
+                     map.put("msg","not product");
+                     map.put("oder_sn",new Date().getTime());
+                     return map;
+                 }
+                list.add(salesOrderItem);
+            }
+            salesOrder.setSalesOpenId("0");
+            salesOrder.setSalesDiscountMoney(salesAmount);
+            salesOrder.setSalesPledgeMoney(salesAmount);
+            salesOrder.setSalesRemainDeposit(salesAmount);
+            salesOrder.setSalesStatus(1);
+            salesOrder.setSalesSendType(2);
+            salesOrder.setSalesSalesTime(add_time);
+            salesOrder.setSalesAddressInfo(province_name+" "+city_name+" "+district_name+" "+address);
+            salesOrder.setSalesAddressTel(mobile);
+            salesOrder.setSalesAddressName(consignee);
+            salesOrder.setSalesAmount(total_amount);
+            salesOrder.setSalesPayMoney(money_paid);
+            salesOrder.setSalesPayType(1);
+            salesOrder.setSalesWaitMoney(total_amount - money_paid);
+            salesOrder.setSalesShippingFee(shipping_fee);
+            salesOrder.setSalesPayTime(pay_time);
+            salesOrder.setSalesLastMoney(money_paid);
+            salesOrder.setSalesCreateTime(new Date());
+            salesOrder.setSalesAdminRemark(to_buyer);
+            salesOrder.setSalesUserRemark(postscript);
+            salesOrder.setSalesStoreId(storeInfo.getStoreId());
+            salesOrder.setSalesCompanyId(storeInfo.getCompanyId());
+            salesOrder.setSalesType(1);
+            salesOrder.setSalesDealCode(oid);
+            salesOrder.setSalesOrderStatus(1);
+            salesOrder.setSalesShippingStatus(0);
+            salesOrder.setSalesPayStatus(2);
+            salesOrder.setSalesProcessStatus(0);
+            salesOrder.setSalesIsSend(0);
+            salesOrder.setSalesIsLocked(0);
+            salesOrder.setSalesIsSeparate(0);
+            salesOrder.setSalesIsDownload(1);
+            //salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
+            salesOrder.setSalesOrderItemList(list);
+
+        }catch (Exception e){
+            map.put("msg","parameter null");
+            map.put("oder_sn",new Date().getTime());
+            return null;
+        }
+
+        //添加订单数据
+        boolean bl = false;
+        /*try {*/
+            bl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
+        /*}catch (Exception e){
+                map.put("msg","add error");
+            map.put("oder_sn",new Date().getTime());
+            throw new RuntimeException("系统添加订单失败,回滚订单");
+        }*/
+        if (!bl) {
+            map.put("msg","add error");
+            map.put("oder_sn",new Date().getTime());
+        }else{
+            map.put("msg","success");
+            map.put("oder_sn",new Date().getTime());
+        }
+        return map;
+    }
+
+    private Map<String,Object> getOrderLogistics(Map<String,Object> requstMap){
+        Map<String,Object> map = new HashMap<String,Object>();
+        SalesOrder salesOrder = new SalesOrder();
+        try {
+            String orderId = (String)requstMap.get("orderId");//订单号
+            String sd_id = (String)requstMap.get("sd_id");//店铺id
+            StoreInfo storeInfo = storeInfoService.getStoreInfoByEfastId(sd_id);
+            salesOrder.setSalesDealCode(orderId);
+            salesOrder.setSalesCompanyId(storeInfo.getCompanyId());
+            salesOrder = salesOrderService.getSalesOrderByLogistics(salesOrder);
+        }catch (Exception e){
+            map.put("msg","parameter null");
+            map.put("oder_sn",new Date().getTime());
+            return map;
+        }
+        if (salesOrder == null) {
+            map.put("msg","no order");
+            map.put("oder_sn",new Date().getTime());
+        }else{
+            if(salesOrder.getSalesPostFirm() != null && salesOrder.getSalesPostNum() !=null){
+                map.put("msg","success");
+                map.put("oder_sn",new Date().getTime());
+                map.put("salesPostFirm",salesOrder.getSalesPostFirm());//快递公司
+                map.put("salesPostNum",salesOrder.getSalesPostNum());//快递单号
+            }else{
+                map.put("msg","get error");
+                map.put("oder_sn",new Date().getTime());
+            }
+
+        }
+        return map;
+    }
+}

+ 60 - 1
watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java

@@ -568,6 +568,65 @@ public class ExcelUtil {
 
 
     /**
+     * 读取Excel内容(上传excel文档)
+     * 不去除重复
+     *
+     * @param filePath
+     * @return
+     */
+    public static List<String> readCell3(String filePath) throws IOException {
+        // 判断文件是否存在
+        File file = new File(filePath);
+        if (!file.exists()) {
+            return null;
+        }
+        // 获取Workbook
+        InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
+        Workbook wb = null;
+        if (filePath.endsWith("xls")) {
+            wb = new HSSFWorkbook(inputStream);
+        } else {
+            wb = new XSSFWorkbook(inputStream);
+        }
+        inputStream.close();
+
+        // 获取Sheet
+        Sheet sheet = wb.getSheetAt(0);
+        Iterator<Row> rows = sheet.rowIterator();
+
+        // 获取第一行的数据,匹配到表头
+        int cellNum = -1;
+        Row row = rows.next();
+        Iterator<Cell> cells = row.cellIterator();
+        while (cells.hasNext()) {
+            Cell cell = cells.next();
+                cellNum = cell.getColumnIndex();
+                break;
+        }
+        if (cellNum == -1) return null;
+
+        // 读取数据
+        ArrayList<String> arreyMap = new ArrayList<String>();
+        while (rows.hasNext()) {
+            Row temp = rows.next();
+            Cell cell = temp.getCell(cellNum);
+            // 非空的列需要使用
+            if (cell == null) {
+                continue;
+            }
+            String name = getValue(cell);
+            if (name != null && !"".equals(name.trim())) {
+                String cellValue = getValue(cell);
+                arreyMap.add(cellValue);
+            }
+        }
+
+        // Map to List
+        /*Collection<String> valueCollection = map.values();*/
+        return arreyMap;
+    }
+
+    /**
      *获取值
      * @param cell
      * @return
@@ -721,7 +780,7 @@ public class ExcelUtil {
     }
 
     public static void main(String[] args) throws IOException {
-        String[] add = splitAddress("新疆维吾尔自治区乌鲁木齐市沙依巴克镇农大东路311号新疆农业大学外国语学院(830002).");
+        String[] add = splitAddress("北京 西城区   兴盛街2号华荣公寓A401");
         if (add == null) {
             System.out.println("切割失败...");
         }

+ 18 - 1
watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java

@@ -4,6 +4,8 @@ import com.iamberry.rst.core.page.PagedResult;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.lang.reflect.Field;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 public class StitchAttrUtil {
@@ -12,6 +14,12 @@ public class StitchAttrUtil {
      * 组装参数时,会过滤以下参数
      * 推荐使用:addNoPro(),添加过滤
      */
+    public final static String timeDate[] = {
+            "startDate",
+            "endDate"
+    };
+    public static Set<String> timeDateSet = new HashSet<String>(Arrays.asList(timeDate));
+
     public final static String noProperty[] = {
             "serialVersionUID",
             "awaitingSignclosedProductInfoList",
@@ -90,7 +98,16 @@ public class StitchAttrUtil {
             }catch (IllegalAccessException e){
             }
             if (value != null && !propertySet.contains(fieldName)) {
-                sb.append("&"+fieldName+ "=" + value.toString());
+                if(timeDateSet.contains(fieldName)){
+                    //Date currentTime = new Date();
+                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String dateString = formatter.format(value);
+                    //ParsePosition pos = new ParsePosition(8);
+                    //Date currentTime = formatter.parse(dateString, pos);
+                    sb.append("&"+fieldName+ "=" + dateString);
+                }else{
+                    sb.append("&"+fieldName+ "=" + value.toString());
+                }
             }
         }
     }

+ 1 - 1
watero-rst-web/src/main/resources/watero-rst-ioc.xml

@@ -26,7 +26,7 @@
     <aop:aspectj-autoproxy proxy-target-class="true"/>
 
 	<!-- 开启注解启动定时器 -->
-    <!--<task:annotation-driven/>-->
+    <task:annotation-driven/>
 
 	<!-- DataSource -->
 	<import resource="classpath:watero-rst-db.xml"/>

+ 4 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -100,6 +100,10 @@
 		<typeAlias type="com.iamberry.rst.core.customer.DockedContactInfo" alias="DockedContactInfo"/>
 		<typeAlias type="com.iamberry.rst.core.customer.TicketOpeningInfo" alias="TicketOpeningInfo"/>
 		<typeAlias type="com.iamberry.rst.core.customer.LowestPriceInfo" alias="LowestPriceInfo"/>
+		<typeAlias type="com.iamberry.rst.core.cm.CustomerStatisticalInfo" alias="CustomerStatisticalInfo"/>
+		<typeAlias type="com.iamberry.rst.core.tools.LogisticsInfo" alias="LogisticsInfo"/>
+		<typeAlias type="com.iamberry.rst.core.order.DownsingleRuleInfo" alias="DownsingleRuleInfo"/>
+		<typeAlias type="com.iamberry.rst.core.order.DownsingleRuleItemInfo" alias="DownsingleRuleItemInfo"/>
 	</typeAliases>
 	<!-- PageHelper -->
 	<plugins>

+ 118 - 6
watero-rst-web/src/main/webapp/WEB-INF/views/cm/salesOrder/sales_order_list.ftl

@@ -14,7 +14,7 @@
         *{padding: 0;margin: 0;}
         .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
         /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
-        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
         .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
         .table-bg thead th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
@@ -57,15 +57,82 @@
 <div class="page-container">
     <div class="text-c">
         <form action="${path}/admin/salesOrder/list_order_page" method="post">
-            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesOrderId!}" placeholder="百胜订单号" name="salesOrderId" id="salesOrderId">
-            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesAddressName!}" placeholder="收货人姓名" name="salesAddressName" id="salesAddressName">
-            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesAddressTel!}" placeholder="收货人电话" name="salesAddressTel" id="salesAddressTel">
+            <#--Efast add begin-->
+                <#--<select class="my-select" name="customerIsVisit" style="height: 36px;width: 120px;margin: 0px;padding: 12px 10px 6px 15px;margin-bottom: 10px;">
+                    <option value ="">是否需要回访</option>
+                    <option value="">是否回访</option>
+                    <option value ="1" <#if customerInfo.customerIsVisit??><#if customerInfo.customerIsVisit == "1" >selected="selected"</#if></#if>>不需要回访</option>
+                    <option value ="2" <#if customerInfo.customerIsVisit??><#if customerInfo.customerIsVisit == "2" >selected="selected"</#if></#if>>需要回访</option>
+                </select>-->
+                <select class="my-select" name="isHaveImport" id="isHaveImport" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;">
+                    <option value ="">是否已导出过</option>
+                    <#--<option value ="1">是</option>
+                    <option value ="2">否</option>-->
+                    <option value ="2" <#if salesOrder.isHaveImport??><#if salesOrder.isHaveImport == "2" >selected="selected"</#if></#if>>是</option>
+                    <option value ="1" <#if salesOrder.isHaveImport??><#if salesOrder.isHaveImport == "1" >selected="selected"</#if></#if>>否</option>
+                </select>
+                <select class="my-select" name="isDeliverGoods" id="isDeliverGoods" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;">
+                    <option value ="">是否已发货</option>
+                    <#--<option value ="1">是</option>
+                    <option value ="2">否</option>-->
+                    <option value ="1" <#if salesOrder.isDeliverGoods??><#if salesOrder.isDeliverGoods == "1" >selected="selected"</#if></#if>>是</option>
+                    <option value ="0" <#if salesOrder.isDeliverGoods??><#if salesOrder.isDeliverGoods == "0" >selected="selected"</#if></#if>>否</option>
+                </select>
+                <#--<input type="text" class="my-input"  style="width:80px;margin-right: 0px;" value="${salesOrder.storeName!}" placeholder="店铺" name="storeName" id="storeName">-->
+                <select name="salesStoreId" id="salesStoreId" class="select" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;"">
+                <option value="">店铺</option>
+                    <#if listStoreInfo?? &&  (listStoreInfo?size > 0) >
+                        <#list listStoreInfo as info>
+                            <option value="${info.storeId!''}" <#if salesOrder.salesStoreId??><#if salesOrder.salesStoreId == info.storeId >selected="selected"</#if></#if>>${info.storeName!''}</option>
+                        </#list>
+                    </#if>
+                    <#--<option value="4" <#if salesOrder.storeName??><#if salesOrder.storeName == "004" >selected="selected"</#if></#if>>微商/代理商</option>
+                    <option value="11" <#if salesOrder.storeName??><#if salesOrder.storeName == "004001" >selected="selected"</#if></#if>>微信平台商</option>
+                    <option value="13" <#if salesOrder.storeName??><#if salesOrder.storeName == "13" >selected="selected"</#if></#if>>上海零售</option>
+                    <option value="15" <#if salesOrder.storeName??><#if salesOrder.storeName == "15" >selected="selected"</#if></#if>>小小包 </option>
+                    <option value="16" <#if salesOrder.storeName??><#if salesOrder.storeName == "16" >selected="selected"</#if></#if>>伊姐团购</option>
+                    <option value="17" <#if salesOrder.storeName??><#if salesOrder.storeName == "17" >selected="selected"</#if></#if>>物道团购</option>
+                    <option value="18" <#if salesOrder.storeName??><#if salesOrder.storeName == "18" >selected="selected"</#if></#if>>年糕妈妈</option>
+                    <option value="19" <#if salesOrder.storeName??><#if salesOrder.storeName == "19" >selected="selected"</#if></#if>>快抱团</option>
+                    <option value="20" <#if salesOrder.storeName??><#if salesOrder.storeName == "20" >selected="selected"</#if></#if>>北京北斗</option>
+                    <option value="21" <#if salesOrder.storeName??><#if salesOrder.storeName == "21" >selected="selected"</#if></#if>>凯叔</option>
+                    <option value="22" <#if salesOrder.storeName??><#if salesOrder.storeName == "22" >selected="selected"</#if></#if>>上海-崔玉涛育学园</option>
+                    <option value="23" <#if salesOrder.storeName??><#if salesOrder.storeName == "23" >selected="selected"</#if></#if>>简二家</option>
+                    <option value="24" <#if salesOrder.storeName??><#if salesOrder.storeName == "24" >selected="selected"</#if></#if>>科学育儿</option>
+                    <option value="25" <#if salesOrder.storeName??><#if salesOrder.storeName == "25" >selected="selected"</#if></#if>>美康辰</option>
+                    <option value="26" <#if salesOrder.storeName??><#if salesOrder.storeName == "26" >selected="selected"</#if></#if>>北京悦祺</option>
+                    <option value="27" <#if salesOrder.storeName??><#if salesOrder.storeName == "27" >selected="selected"</#if></#if>>上海淘宝</option>
+                    <option value="28" <#if salesOrder.storeName??><#if salesOrder.storeName == "28" >selected="selected"</#if></#if>>蓝极风</option>
+                    <option value="29" <#if salesOrder.storeName??><#if salesOrder.storeName == "29" >selected="selected"</#if></#if>>小莉团购</option>
+                    <option value="30" <#if salesOrder.storeName??><#if salesOrder.storeName == "30" >selected="selected"</#if></#if>>超级妈咪团</option>
+                    <option value="31" <#if salesOrder.storeName??><#if salesOrder.storeName == "31" >selected="selected"</#if></#if>>艾德叔叔</option>
+                    <option value="32" <#if salesOrder.storeName??><#if salesOrder.storeName == "32" >selected="selected"</#if></#if>>钱儿频道</option>
+                    <option value="33" <#if salesOrder.storeName??><#if salesOrder.storeName == "33" >selected="selected"</#if></#if>>尹建莉</option>
+                    <option value="34" <#if salesOrder.storeName??><#if salesOrder.storeName == "34" >selected="selected"</#if></#if>>老虎工作室</option>
+                    <option value="35" <#if salesOrder.storeName??><#if salesOrder.storeName == "35" >selected="selected"</#if></#if>>有赞</option>
+                    <option value="37" <#if salesOrder.storeName??><#if salesOrder.storeName == "37" >selected="selected"</#if></#if>>深圳鑫之鹏</option>
+                    <option value="38" <#if salesOrder.storeName??><#if salesOrder.storeName == "38" >selected="selected"</#if></#if>>东西儿童教育</option>-->
+                </select>
+               <#-- <label class="form-label col-3 col-sm-2" style="width: 110px;margin-left: 10px;"><span class="c-red">*</span>是否已发货:</label>
+                <div class="formControls col-4 col-sm-4"style="padding: 0 0;width: 383px;">
+                <span class="select-box">
+                        <select name="cooperativeState" class="select">
+                            <option value="1">是</option>
+                            <option value="2">否</option>
+                        </select>
+                </span>
+                </div>-->
+            <#--Efast add end-->
+            <input type="text" class="my-input"  style="width:80px;margin-right: 0px;" value="${salesOrder.salesOrderId!}" placeholder="百胜订单号" name="salesOrderId" id="salesOrderId">
+            <input type="text" class="my-input"  style="width:80px;margin-right: 0px;" value="${salesOrder.salesAddressName!}" placeholder="收货人姓名" name="salesAddressName" id="salesAddressName">
+            <input type="text" class="my-input"  style="width:80px;margin-right: 0px;" value="${salesOrder.salesAddressTel!}" placeholder="收货人电话" name="salesAddressTel" id="salesAddressTel">
             <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="startDate" id="startDate" class="input-text" placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.startDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>-
             <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="endDate" id="endDate" class="input-text" placeholder="结束时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.endDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>
             <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
             <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="order_excel"><i class="Hui-iconfont">&#xe644;</i> 导出</button>
             <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="synOrder"><i class="Hui-iconfont">&#xe632;</i> 同步订单</button>
             <button onClick="upFiles();" class="btn radius" style="background: #32a3d8;color: #fff;" type="button"><i class="Hui-iconfont">&#xe632;</i> 上传Excel(仅支持XLS类型)</button>
+            <button onClick="upFiles2();" class="btn radius" style="background: #32a3d8;color: #fff;" type="button"><i class="Hui-iconfont">&#xe632;</i> 上传物流信息(仅支持XLS类型)</button>
             <button onClick="downloadOrder();" class="btn radius" style="background: #32a3d8;color: #fff;" type="button"><i class="Hui-iconfont">&#xe640;</i> 下载订单</button>
 
             </div>
@@ -188,7 +255,7 @@
 <script type="text/plain" id="upload_ue"></script>
 </tfoot>
 <script type="text/javascript">
-    /*判断上传类型 1:上传excel推送订单   2:下载订单 */
+    /*判断上传类型 1:上传excel推送订单   2:下载订单  2:上传efast物流信息excel */
     var editorType;
     var _editor;
     /**
@@ -198,6 +265,10 @@
     function sales_order_detail(orderSaleId) {
         window.location.href= "${path}/admin/salesOrder/select_sales_order?salesId="+orderSaleId;
     }
+    /*$(function () {
+        /!*初始化店铺*!/
+        initEfastStoreName();
+    });*/
     $(function() {
         //重新实例化一个编辑器,防止在上面的editor编辑器中显示上传的图片或者文件
         _editor = UE.getEditor('upload_ue',{
@@ -219,6 +290,30 @@
                 if(editorType == 1){
                     window.location.href=root_path + '/admin/order/upload_excel?file='+arg[0].url;
                     $("#file").attr("value", _editor.options.filePath + arg[0].url);
+                }else if(editorType == 3){
+                    layer.msg('加载中', {icon: 16});
+                    $.ajax({
+                        type: "POST",
+                        data: {
+                            file : arg[0].url
+                        },
+                        url: "${path}/admin/salesOrder/uploadLogisticsExcel",
+                        async: false,
+                        success: function(data){
+                            var index = parent.layer.getFrameIndex(window.name);
+                            parent.layer.close(index);
+                            layer.alert(data, {
+                                        title: "操作",
+                                        btn: ['确定']
+                                    });
+                        },
+                        error: function(XmlHttpRequest, textStatus, errorThrown){
+                            var index = parent.layer.getFrameIndex(window.name);
+                            parent.layer.close(index);
+                            layer.msg("上传失败",{icon: 2,time:3000});
+                        }
+                    });
+                    $("#file").attr("value", _editor.options.filePath + arg[0].url);
                 }else{
                     window.location.href=root_path + '/admin/order/download_excel?file='+arg[0].url;
                 }
@@ -231,6 +326,13 @@
         myFiles.open();
         editorType = 1;
     }
+
+    //弹出文件上传的对话框(上传efast物流信息excel)
+    function upFiles2() {
+        var myFiles = _editor.getDialog("attachment");
+        myFiles.open();
+        editorType = 3;
+    }
     /*  交易号文件上传 */
     function downloadOrder(){
         var myFiles = _editor.getDialog("attachment");
@@ -277,7 +379,7 @@
         });
     }
 
-    /*导出Excel*/
+    /*导出Excel
     $('#order_excel').click(function (e) {
         var salesOrderId = convertUndefinedToEmpty($('#salesOrderId').val());
         var salesAddressName = convertUndefinedToEmpty($('#salesAddressName').val());
@@ -287,6 +389,16 @@
         window.location="${path}/admin/salesOrder/sales_order_excel?salesOrderId="+salesOrderId+
         "&salesAddressName="+salesAddressName+"&salesAddressTel="+salesAddressTel+"&startDate="+
         startDate+"&endDate="+endDate;
+    })*/
+
+    /*导出上传到efast的Excel*/
+    $('#order_excel').click(function (e) {
+       var isHaveImport = $("#isHaveImport").val();
+       var isDeliverGoods = $("#isDeliverGoods").val();
+       var storeName = $("#efastStoreName").val();
+       var startDate = $("#startDate").val();
+       var endDate = $("#endDate").val();
+        window.location="${path}/admin/salesOrder/download_efast_order?isHaveImport="+isHaveImport+"&isDeliverGoods="+isDeliverGoods+"&storeName="+storeName+"&startDate="+startDate+"&endDate="+endDate;
     })
 
 </script>

+ 18 - 35
watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order.ftl

@@ -90,32 +90,11 @@
                 <td>
                     <label>
                         <select name="shop-id" id="shop-id">
-                            <option value="4">微商/代理商</option>
-                            <option value="11">微信平台商</option>
-                            <option value="13">上海零售</option>
-                            <option value="15">小小包 </option>
-                            <option value="16">伊姐团购</option>
-                            <option value="17">物道团购</option>
-                            <option value="18">年糕妈妈</option>
-                            <option value="19">快抱团</option>
-                            <option value="20">北京北斗</option>
-                            <option value="21">凯叔</option>
-                            <option value="22">上海-崔玉涛育学园</option>
-                            <option value="23">简二家</option>
-                            <option value="24">科学育儿</option>
-                            <option value="25">美康辰</option>
-                            <option value="26">北京悦祺</option>
-                            <option value="27">上海淘宝</option>
-                            <option value="28">蓝极风</option>
-                            <option value="29">小莉团购</option>
-                            <option value="30">超级妈咪团</option>
-                            <option value="31">艾德叔叔</option>
-                            <option value="32">钱儿频道</option>
-                            <option value="33">尹建莉</option>
-							<option value="34">老虎工作室</option>
-							<option value="35">有赞</option>
-							<option value="37">深圳鑫之鹏</option>
-							<option value="38">东西儿童教育</option>
+                        <#if listStoreInfo?? &&  (listStoreInfo?size > 0) >
+                            <#list listStoreInfo as info>
+                                <option value="${info.storeEfast!''}" >${info.storeName!''}</option>
+                            </#list>
+                        </#if>
                         </select>
                     </label>
                 </td>
@@ -168,7 +147,7 @@
                             <th width="80">产品名称</th>
                             <th width="30">购买数量</th>
                             <th width="30">备注</th>
-                            <th width="80">推送状态</th>
+                            <#--<th width="80">推送状态</th>-->
                         </tr>
                         </thead>
                         <tbody id="send_tbody">
@@ -205,7 +184,7 @@
     });
 
     /* 获取 */
-    $(function(){
+    /*$(function(){
         $.ajax({
             cache: true,
             type: "POST",
@@ -227,7 +206,7 @@
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         })
-    })
+    })*/
 
 
     // 对话框 - 推送结果
@@ -359,14 +338,18 @@
                 var $body = $("#send_tbody");
                 var list = result.returnMsg.order_list;
                 var faultNum = 0;
+                var newFaultNum = result.returnMsg.newFaultNum;
+                var mapSalesOrderSize = result.returnMsg.mapSalesOrderSize;
                 for (var i = 0; i < list.length; i++) {
                     var order = list[i];
                     // 推送失败 展示 颜色
-                    var style = '';
-                    if (order.returnStatus != 'SUCCESS') {
+                    var style = order.styleColor;
+                    /*if (order.returnStatus != 'SUCCESS') {
                         style = 'color:red;';
                         faultNum ++;
-                    }
+                    }else{
+                        style = 'color:black;';
+                    }*/
                     $body.append('<tr class="text-c">'+
                             '<td style="' + style + '">' + order.orderAddressName + '</td>'+
                             '<td style="' + style + '">' + order.orderAddressTel + '</td>'+
@@ -377,12 +360,12 @@
                             '<td style="' + style + '">' + order.orderProductName + '</td>'+
                             '<td style="' + style + '">' + order.orderNum + '</td>'+
                             '<td style="' + style + '">' + order.orderRemark + '</td>'+
-                            '<td style="' + style + '">' + order.returnMsg + '</td>'+
+                            /*'<td style="' + style + '">' + order.returnMsg + '</td>'+*/
                             '</tr>');
                 }
                 error_path = result.returnMsg.errorPath;
-                $("#order_total").text(list.length);
-                $("#order_fault_num").text(faultNum);
+                $("#order_total").text(mapSalesOrderSize);
+                $("#order_fault_num").text(newFaultNum);
                 modaldemo();
 
                 var fileName = result.returnMsg.fileName;

+ 13 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/order/ProbationShopOrderService.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.face.order;
 
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.order.ProbationCode;
 import com.iamberry.wechat.core.entity.order.ProbationOrderDto;
 import com.iamberry.wechat.core.entity.probation.ProbationAwardRelu;
@@ -92,4 +93,16 @@ public interface ProbationShopOrderService {
 	 * @return
 	 */
 	public Integer selectProbationOrderCountByTel(String probationTel);
+
+	/**
+	 * 查询未拉取的订单
+	 * @return
+	 */
+    public List<Order> selectProbationShopOrderList();
+
+	/**
+	 * 更新拉取成功的订单
+	 * @return
+	 */
+	public void updateProbationShopOrder(Order order);
 }

+ 12 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProbationShopOrderMapper.java

@@ -137,4 +137,16 @@ public interface ProbationShopOrderMapper {
 	 * @return
 	 */
 	public Integer selectPartnerProbationNum(String openId);
+
+	/**
+	 * 查询未拉取的订单
+	 * @return
+	 */
+	public List<Order> selectProbationShopOrderList();
+
+	/**
+	 * 更新拉取成功的订单
+	 * @return
+	 */
+	public void updateProbationShopOrder(Order order);
 }

+ 42 - 12
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/probationShopOrderMapper.xml

@@ -363,20 +363,50 @@
 		AND 
 			o.PROBATION_STATUS in (1,2,3,4,5)
  	</select>
- 	
+
  	<!-- 查询合伙人下线试用订单数量 -->
  	<select id="selectPartnerProbationNum" resultType="Integer" parameterType="String">
- 		SELECT 
-			COUNT(DISTINCT o.PROBATION_ORDERID) 
-		FROM 
-			TB_IAMBERRY_PROBATION_SHOP_ORDER o 
-			LEFT JOIN TB_IAMBERRY_USER_USERINFO u ON o.PROBATION_OPENID = u.USER_OPENID 
-			LEFT JOIN TB_IAMBERRY_PLACE_INFO p ON u.USER_DEALERS = p.PLACE_PIDS 
-			LEFT JOIN TB_IAMBERRY_PLACE_INFO i ON p.PLACE_PID = i.PLACE_ID 
-			LEFT JOIN TB_IAMBERRY_PLACE_INFO pi ON i.PLACE_PID = pi.PLACE_ID 
-		WHERE 
-			pi.PLACE_OPENID = #{openId} 
-		AND 
+ 		SELECT
+			COUNT(DISTINCT o.PROBATION_ORDERID)
+		FROM
+			TB_IAMBERRY_PROBATION_SHOP_ORDER o
+			LEFT JOIN TB_IAMBERRY_USER_USERINFO u ON o.PROBATION_OPENID = u.USER_OPENID
+			LEFT JOIN TB_IAMBERRY_PLACE_INFO p ON u.USER_DEALERS = p.PLACE_PIDS
+			LEFT JOIN TB_IAMBERRY_PLACE_INFO i ON p.PLACE_PID = i.PLACE_ID
+			LEFT JOIN TB_IAMBERRY_PLACE_INFO pi ON i.PLACE_PID = pi.PLACE_ID
+		WHERE
+			pi.PLACE_OPENID = #{openId}
+		AND
 			o.PROBATION_STATUS in (1,2,3,4,5)
  	</select>
+
+	<!-- 查询合伙人下线试用订单数量 -->
+	<!--查询销售产品价格-->
+	<resultMap type="com.iamberry.wechat.core.entity.order.Order" id="selectProbationShopOrderListResult">
+		<result property="salesOrderid" column="sales_orderid" />
+		<result property="salesPostFirm" column="sales_post_firm" />
+		<result property="salesPostNum" column="sales_post_num" />
+	</resultMap>
+	<select id="selectProbationShopOrderList" resultMap="selectProbationShopOrderListResult">
+		SELECT
+			o.sales_orderid,
+			o.sales_post_firm,
+			o.sales_post_num
+		FROM
+			tb_iamberry_shop_sales_order o
+		WHERE
+			o.sales_post_num is null
+		AND
+			o.sales_post_firm is null
+	</select>
+
+	<!-- 更新拉取成功的订单 -->
+	<update id="updateProbationShopOrder" parameterType="com.iamberry.wechat.core.entity.order.Order">
+		update  tb_iamberry_shop_sales_order
+		set
+		sales_post_num= #{salesPostNum},
+		sales_post_firm= #{salesPostFirm}
+		where
+		sales_orderid = #{salesOrderid}
+	</update>
   </mapper>

+ 22 - 20
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java

@@ -147,8 +147,6 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 				}
 	}
 
-
-
 	@Override
 	public boolean addOrderInfoToEfast(MQMessage message) throws Exception {
 		
@@ -161,8 +159,10 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		List<OrderItem> items = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid());
 		
 		// request url
-		String url = NameUtils.getConfig("efast_base_url");
-		
+		//String url = NameUtils.getConfig("efast_base_url");
+		String url = NameUtils.getConfig("rst_base_url");
+		// "http://test.iamberry.com//mallorder/order";
+
 		// set Requeset Data
 		Map<String, String> requestData = new HashMap<String, String>();
 		
@@ -206,11 +206,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		/**
 		 * 系统级参数
 		 */
-		requestData.put("app_nick", NameUtils.getConfig("app_nick"));
+		/*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", message.getServiceOtherMessage()); // "efast.trade.new.add"
+		requestData.put("app_act", message.getServiceOtherMessage());*/ // "efast.trade.new.add"
+		requestData.put("app_act", "rst.trade.new.add");
 		
 		/**
 		 * 订单基本信息
@@ -246,12 +247,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("consignee", order.getSalesAddressName());						// 收货人
 		orderData.put("district_name", addressDesc[2]);									// 区域
 		orderData.put("email", "");														// email
-		orderData.put("goods_amount", (order.getSalesAmount()/100.0));					// 商品总价
+		orderData.put("goods_amount", (order.getSalesAmount()));					// 商品总价
 		orderData.put("goods_count", items.size());										// 产品数量
 		orderData.put("mobile", order.getSalesAddressTel());							// 手机号码
-		orderData.put("money_paid", (money/100.0));										// 已付款
+		orderData.put("money_paid", money);										// 已付款
 		orderData.put("oid", order.getSalesOrderid());									// 订单号
-		orderData.put("order_amount", (money/100.0));									// 应付款,应付款金额要与已付款金额相同
+		orderData.put("order_amount", money);									// 应付款,应付款金额要与已付款金额相同
 		
 		
 		/**
@@ -262,9 +263,9 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 			Map<String, Object> orders1 = new HashMap<String, Object>();
 			orders1.put("goods_name", item.getItemProductName());							// 产品名称
 			orders1.put("goods_number", item.getItemNum());									// 产品数量
-			orders1.put("goods_price", (item.getItemProductPrice()/100.0));					// 产品原价
+			orders1.put("goods_price", (item.getItemProductPrice()));					// 产品原价
 			orders1.put("outer_sku", item.getProduectRemark());								// 产品SKU
-			orders1.put("payment_ft", (item.getItemProductDiscount()/100.0*avgPercentage*item.getItemNum()));				// 产品分摊价
+			orders1.put("payment_ft", (item.getItemProductDiscount()*avgPercentage*item.getItemNum()));				// 产品分摊价
 			maps.add(orders1);
 		}
 		
@@ -276,9 +277,10 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("sd_id", sd_id);													// 对应 efast 店铺 id
 		orderData.put("shipping_fee", 0);												// 快递费
 		orderData.put("shipping_name", "yto");											// 快递公司代码
-		orderData.put("tel", "");											// 我司电话
+		orderData.put("tel", order.getSalesAddressTel());											// 我司电话
 		orderData.put("to_buyer", "");													// 商家备注
-		orderData.put("total_amount", (order.getSalesAmount()/100.0));					// 订单总额
+		//orderData.put("total_amount", (order.getSalesAmount()/100.0));					// 订单总额
+		orderData.put("total_amount", (order.getSalesAmount()));					// 订单总额
 		orderData.put("user_name", order.getSalesOpenid());							// 买家账户   百胜根据user_name来判断是否有重复,传openId是为了防止重复
 		orderData.put("zipcode", order.getSalesAddressPostnum());						// 邮编
 		
@@ -294,7 +296,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		requestData.put("info", orderDataStr);
 		
 		try {
-			String result = HttpClient431Util.doGet(requestData, url);
+			String result = HttpClient431Util.doPost(requestData, url);
 			result = StringEscapeUtils.unescapeJava(result); // unicode 编码
 			logger.info("add-推送订单号为:" + order.getSalesOrderid() + "的订单,百胜返回信息:" + result);
 			// parse JSON String to Object
@@ -308,10 +310,10 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 				}
 			}
 			logger.error(this, "add-推送订单号为:" + order.getSalesOrderid() + "的订单,百胜返回信息:" + result);
-			throw new Exception(respData.getString("msg"));
-		} catch (Exception e) {
-			throw e;
-		}
+		throw new Exception(respData.getString("msg"));
+	} catch (Exception e) {
+		throw e;
+	}
 	}
 	
 	
@@ -477,7 +479,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 							money += order.getSalesAmount() * couponType.getCouponReduce()/100;
 							break;
 						}
-					}
+	}
 				}
 				
 				/**
@@ -654,7 +656,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 			logger.info("get-订单号为:" + message.getServiceToMessage() + "的订单,百胜返回信息:" + resultJson);
 			JSONObject jsonObject=JSONObject.fromObject(resultJson);
 			JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
-			
+
 			String returnOrderStatus=respData.getString("return_order_status");			//退单状态
 			if("1".equals(returnOrderStatus)){//1表示已确认退单
 				Order order = new Order();

+ 16 - 1
watero-wechat-service/src/main/java/com/iamberry/wechat/service/order/ProbationShopOrderServiceImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.order;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.iamberry.wechat.tools.NameUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -132,6 +133,7 @@ public class ProbationShopOrderServiceImpl implements ProbationShopOrderService{
 	@Override
 	public Integer insertSalesOrder(String probationOrderId, Integer userId) {
 		// TODO Auto-generated method stub
+		String sdId = NameUtils.getConfig("sd_id");
 		if (probationOrderId == null || "".equals(probationOrderId)) {
 			return 0;
 		}
@@ -145,7 +147,8 @@ public class ProbationShopOrderServiceImpl implements ProbationShopOrderService{
 		}
 		//将使用订单封装到销售订单中
 		Order order = new Order();
-		order.setSalesOrderid(OrderNOUtil.createOrderCode(userId));
+		//Efast升级新订单生成规则
+		order.setSalesOrderid(OrderNOUtil.createNewOrderCode(userId,sdId));
 		order.setSalesOpenid(probationOrder.getProbationOpenid());
 		order.setSalesPorderid(probationOrder.getProbationOrderid());
 		order.setSalesYetAmount(probationOrder.getProbationYetAmount());
@@ -191,4 +194,16 @@ public class ProbationShopOrderServiceImpl implements ProbationShopOrderService{
 		return probationShopOrderMapper.selectProbationOrderCountByTel(probationTel);
 	}
 
+	/**
+	 * 查询未拉取的订单
+	 * @return
+	 */
+	public List<Order> selectProbationShopOrderList(){
+		return (List<Order>)probationShopOrderMapper.selectProbationShopOrderList();
+	}
+
+	public void updateProbationShopOrder(Order order){
+		probationShopOrderMapper.updateProbationShopOrder(order);
+	}
+
 }

+ 61 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -3,11 +3,19 @@ package com.iamberry.wechat.handles.mq;
 import java.lang.reflect.Method;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.iamberry.wechat.core.entity.order.Order;
+import com.iamberry.wechat.tools.HttpClient431Util;
+import com.iamberry.wechat.tools.NameUtils;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -129,7 +137,59 @@ public class MQTask implements InitializingBean {
 		}
 		logger.info("------------task invoke success-----------");
 	}
-	
+
+	/**
+	 * 根据订单号拉取物流信息
+	 * @throws Exception
+	 */
+	//@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+	@Scheduled(cron = "0 0/2 * * * ?")//每2分钟执行一次
+	//@Scheduled(cron = "*/10 * * * * ?")
+	public void syncLgisticsInfoByOrderId() throws Exception {
+		System.out.println("---------------- 根据订单号拉取物流信息开始 ---------------");
+		logger.info("---------------- 根据订单号拉取物流信息开始 ---------------");
+		lock.lock();
+		List<Order> orderList = null;
+		String url = NameUtils.getConfig("rst_base_url");
+		String sdId = NameUtils.getConfig("sd_id");
+		Map<String, Object> orderData = new HashMap<String, Object>();
+		Map<String, String> requestData = new HashMap<String, String>();
+		com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
+		try {
+			logger.info("---------------- selectProbationShopOrderList begin ---------------");
+			orderList = probationShopOrderService.selectProbationShopOrderList();
+			if(orderList != null && orderList.size() > 0){
+				for (Order order:orderList) {
+					String salesOrderid = order.getSalesOrderid();
+					orderData.put("orderId", salesOrderid);
+					orderData.put("sd_id", sdId);
+					requestData.put("app_act", "rst.trade.logistics.get");
+					String orderDataStr = mapper.writeValueAsString(orderData);
+					requestData.put("info", orderDataStr);
+					String result = HttpClient431Util.doPost(requestData, url);
+					result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+					logger.info("拉取订单号为:" + order.getSalesOrderid() + "的订单,rst返回信息:" + result);
+					System.out.println("拉取订单号为:" + order.getSalesOrderid() + "的订单,rst返回信息:" + result);
+					JSONObject jsonObject = JSONObject.fromObject(result);
+					String msg = jsonObject.getString("msg");
+					logger.info("---------"+msg+"---------");
+					if ("success".equals(msg)) {
+						String salesPostFirm = jsonObject.getString("salesPostFirm");
+						String salesPostNum = jsonObject.getString("salesPostNum");
+						order.setSalesPostFirm(salesPostFirm);
+						order.setSalesPostNum(salesPostNum);
+						probationShopOrderService.updateProbationShopOrder(order);
+					}
+				}
+			}
+		}catch (Exception e){
+			logger.error("拉取订单异常",e.getMessage());
+		}finally {
+			lock.unlock();
+		}
+		logger.info("---------------- 根据订单号拉取物流信息结束 ---------------");
+	}
+
 	/**
 	 * 订阅消息
 	 */

+ 2 - 2
watero-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml

@@ -50,8 +50,8 @@
 	<!-- 加载静态资源 -->
 	<bean id="loadResultInfo" class="com.iamberry.wechat.tools.loadResultUtil" lazy-init="false"></bean>
 	
-	<!-- 开启注解启动定时器
-    <task:annotation-driven/>  -->
+	<!-- 开启注解启动定时器 -->
+    <task:annotation-driven/>
     
     <!-- 将30天后奖励积分的定时任务的xml引入
 	<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>  -->

+ 2 - 0
watero-wechat-web/src/main/resources/platform.properties

@@ -118,6 +118,8 @@ sd_idt=001
 rst_base_url=http://test.iamberry.com/rst/mcahine/getMachineInfo?barCode=
 # efast_base_url
 efast_base_url=http://121.199.165.244/efast_test/efast_api/webservice/web/index.php
+# rst_base_url
+rst_base_url=http://test.iamberry.com/rst/mallorder/order
 # order_field
 order_field=order_sn,deal_code,order_status,shipping_status,pay_status,process_status,is_send,is_locked,is_separate,consignee,address,zipcode,tel,mobile,shipping_name,pay_name,invoice_no,order_amount ,money_paid,user_id ,orders.goods_sn,orders.goods_name,orders.goods_number,orders.goods_price,orders.goods_barcode,orders.payment_ft,pay_time,to_buyer,postscript,order_amount,user_nick,money_paid,shipping_fee
 # binding downlod

+ 15 - 2
wateroPF-wechat-interface/src/main/java/com/iamberry/wechat/face/order/ProbationShopOrderService.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.face.order;
 
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.order.ProbationCode;
 import com.iamberry.wechat.core.entity.order.ProbationOrderDto;
 import com.iamberry.wechat.core.entity.probation.ProbationAwardRelu;
@@ -78,10 +79,11 @@ public interface ProbationShopOrderService {
 	 * @return
 	 */
 	public ProbationOrderDto selectProbationOrderByOrderId(String orderId);
-	
+
 	/**
 	 * 添加销售订单信息
-	 * @param order
+	 * @param probationOrderId
+	 * @param userId
 	 * @return
 	 */
 	public Integer insertSalesOrder(String probationOrderId, Integer userId);
@@ -92,4 +94,15 @@ public interface ProbationShopOrderService {
 	 * @return
 	 */
 	public Integer selectProbationOrderCountByTel(String probationTel);
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+    public List<Order> selectWateroPFOrderList();
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateWateroPFOrder(Order order);
 }

+ 10 - 0
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProbationShopOrderMapper.java

@@ -137,4 +137,14 @@ public interface ProbationShopOrderMapper {
 	 * @return
 	 */
 	public Integer selectPartnerProbationNum(String openId);
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+    public List<Order> selectWateroPFOrderList();
+	/**
+	 * 更新訂單表
+	 */
+	public void updateWateroPFOrder(Order order);
 }

+ 29 - 0
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/probationShopOrderMapper.xml

@@ -379,4 +379,33 @@
 		AND 
 			o.PROBATION_STATUS in (1,2,3,4,5)
  	</select>
+
+	<!--查詢訂單表-->
+	<resultMap type="com.iamberry.wechat.core.entity.order.Order" id="selectProbationShopOrderListResult">
+		<result property="salesOrderid" column="sales_orderid" />
+		<result property="salesPostFirm" column="sales_post_firm" />
+		<result property="salesPostNum" column="sales_post_num" />
+	</resultMap>
+	<select id="selectWateroPFOrderList" resultMap="selectProbationShopOrderListResult">
+		SELECT
+		o.sales_orderid,
+		o.sales_post_firm,
+		o.sales_post_num
+		FROM
+		tb_iamberry_shop_sales_order o
+		WHERE
+		o.sales_post_num is null
+		AND
+		o.sales_post_firm is null
+	</select>
+
+	<!-- 更新拉取成功的订单 -->
+	<update id="updateWateroPFOrder" parameterType="com.iamberry.wechat.core.entity.order.Order">
+		update  tb_iamberry_shop_sales_order
+		set
+		sales_post_num= #{salesPostNum},
+		sales_post_firm= #{salesPostFirm}
+		where
+		sales_orderid = #{salesOrderid}
+	</update>
   </mapper>

+ 6 - 5
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java

@@ -159,8 +159,8 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		ShopSystemRule rule = adminOrderService.getReluByRid(237);
 
 		// request url
-		String url = NameUtils.getConfig("efast_base_url");
-
+		//String url = NameUtils.getConfig("efast_base_url");
+		String url = NameUtils.getConfig("rst_efast_base_url");
 		// set Requeset Data
 		Map<String, String> requestData = new HashMap<String, String>();
 
@@ -204,11 +204,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		/**
 		 * 系统级参数
 		 */
-		requestData.put("app_nick", NameUtils.getConfig("app_nick"));
+		/*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", message.getServiceOtherMessage()); // "efast.trade.new.add"
+		requestData.put("app_act", message.getServiceOtherMessage());*/ // "efast.trade.new.add"
+		requestData.put("app_act", "rst.trade.new.add");
 
 		/**
 		 * 订单基本信息
@@ -312,7 +313,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("sd_id", sd_id);                                                    // 对应 efast 店铺 id
 		orderData.put("shipping_fee", 0);                                                // 快递费
 		orderData.put("shipping_name", "yto");                                            // 快递公司代码
-		orderData.put("tel", "");                                            // 我司电话
+		orderData.put("tel", order.getSalesAddressTel());                                            // 我司电话
 		orderData.put("to_buyer", "");                                                    // 商家备注
 		orderData.put("total_amount", (order.getSalesAmount() / 100.0));                    // 订单总额
 		orderData.put("user_name", order.getSalesOpenid());                            // 买家账户   百胜根据user_name来判断是否有重复,传openId是为了防止重复

+ 14 - 0
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/order/ProbationShopOrderServiceImpl.java

@@ -191,4 +191,18 @@ public class ProbationShopOrderServiceImpl implements ProbationShopOrderService{
 		return probationShopOrderMapper.selectProbationOrderCountByTel(probationTel);
 	}
 
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+	public List<Order> selectWateroPFOrderList(){
+		return probationShopOrderMapper.selectWateroPFOrderList();
+	}
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateWateroPFOrder(Order order){
+		probationShopOrderMapper.updateWateroPFOrder(order);
+	}
 }

+ 56 - 1
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -9,11 +9,15 @@ import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.tools.HttpClient431Util;
 import com.iamberry.wechat.tools.NameUtils;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -137,7 +141,58 @@ public class MQTask implements InitializingBean {
 		}
 		logger.info("------------task invoke success-----------");
 	}
-	
+
+	/**
+	 * 根据订单号拉取物流信息
+	 * @throws Exception
+	 */
+	//@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+	@Scheduled(cron = "0 0/2 * * * ?")//每2分钟执行一次
+	//@Scheduled(cron = "*/10 * * * * ?")
+	public void syncLgisticsInfoByOrderId() throws Exception {
+		logger.info("---------------- 根据订单号拉取物流信息开始 ---------------");
+		lock.lock();
+		List<Order> orderList = null;
+		String url = NameUtils.getConfig("rst_base_url");
+		String sdId = NameUtils.getConfig("sd_id");
+		Map<String, Object> orderData = new HashMap<String, Object>();
+		Map<String, String> requestData = new HashMap<String, String>();
+		com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
+		try {
+			logger.info("---------------- selectProbationShopOrderList begin ---------------");
+			orderList = probationShopOrderService.selectWateroPFOrderList();
+			if(orderList != null && orderList.size() > 0){
+				for (Order order:orderList) {
+					String salesOrderid = order.getSalesOrderid();
+					orderData.put("orderId", salesOrderid);
+					orderData.put("sd_id", sdId);
+					requestData.put("app_act", "rst.trade.logistics.get");
+					String orderDataStr = mapper.writeValueAsString(orderData);
+					requestData.put("info", orderDataStr);
+					String result = HttpClient431Util.doPost(requestData, url);
+					result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+					logger.info("拉取订单号为:" + order.getSalesOrderid() + "的订单,rst返回信息:" + result);
+					JSONObject jsonObject = JSONObject.fromObject(result);
+					String msg = jsonObject.getString("msg");
+					logger.info("---------"+msg+"---------");
+					if ("success".equals(msg)) {
+						String salesPostFirm = jsonObject.getString("salesPostFirm");
+						String salesPostNum = jsonObject.getString("salesPostNum");
+						order.setSalesPostFirm(salesPostFirm);
+						order.setSalesPostNum(salesPostNum);
+						probationShopOrderService.updateWateroPFOrder(order);
+					}
+				}
+			}
+		}catch (Exception e){
+			logger.error("拉取订单异常",e.getMessage());
+		}finally {lock.unlock();
+		}
+
+		logger.info("---------------- 根据订单号拉取物流信息结束 ---------------");
+	}
+
+
 	/**
 	 * 订阅消息
 	 */

Файловите разлики са ограничени, защото са твърде много
+ 3 - 0
wateroPF-wechat-web/src/main/resources/platform.properties