Browse Source

修改客诉bug

wangxiaoming 7 years ago
parent
commit
32e84498b9

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

@@ -95,6 +95,8 @@ public class SalesOrder implements Serializable {
     private String isDeliverGoods;//是否已发货
     private String styleColor;//上传订单结果颜色
 
+    private String salesBatchId;    //批次编号
+
     public String getStyleColor() {
         return styleColor;
     }
@@ -535,4 +537,12 @@ public class SalesOrder implements Serializable {
     public void setSalesMainOrderId(Integer salesMainOrderId) {
         this.salesMainOrderId = salesMainOrderId;
     }
+
+    public String getSalesBatchId() {
+        return salesBatchId;
+    }
+
+    public void setSalesBatchId(String salesBatchId) {
+        this.salesBatchId = salesBatchId;
+    }
 }

+ 11 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java

@@ -40,7 +40,9 @@ public class EfastOrder implements Serializable{
     private String orderBuyerRemark;             //订单买家备注
     private String orderSellerRemark;             //订单商家备注
     private String orderPostType;                //送货方式
-    private String orderStoreId;                 //仓库id
+    private String orderStoreId;                 //仓库id   Efast
+
+    private Integer storeId;                 //店铺id
 
     private String orderPostNum;                //快递单号
     private String orderPostFirm;               //快递公司
@@ -301,4 +303,12 @@ public class EfastOrder implements Serializable{
     public void setOrderBuyerRemark(String orderBuyerRemark) {
         this.orderBuyerRemark = orderBuyerRemark;
     }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
 }

+ 72 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/OrderBatch.java

@@ -0,0 +1,72 @@
+package com.iamberry.rst.core.order;
+
+import  java.util.Date;
+import  java.io.Serializable;
+/**
+ *  订单批次类
+ * @author w
+ * @Date 2018-06-26
+ */
+public class OrderBatch  implements  Serializable{
+    private static final long serialVersionUID = -1291764462749247393L;
+    //批次id
+    private String batchId;
+    //上传文件的路径
+    private String batchExcelPath;
+    //交易号文件路径
+    private String batchTxtPath;
+    //状态:1:正常 2:取消
+    private Integer batchStatus;
+    //销售渠道
+    private String batchChannel;
+    //创建时间'
+    private Date batchCreateTime;
+
+    public String getBatchId(){
+        return batchId;
+    }
+
+    public void setBatchId(String  batchId){
+        this.batchId=batchId;
+    }
+
+    public String getBatchExcelPath(){
+        return batchExcelPath;
+    }
+
+    public void setBatchExcelPath(String  batchExcelPath){
+        this.batchExcelPath=batchExcelPath;
+    }
+
+    public String getBatchTxtPath(){
+        return batchTxtPath;
+    }
+
+    public void setBatchTxtPath(String  batchTxtPath){
+        this.batchTxtPath=batchTxtPath;
+    }
+
+    public Integer getBatchStatus(){
+        return batchStatus;
+    }
+
+    public void setBatchStatus(Integer  batchStatus){
+        this.batchStatus=batchStatus;
+    }
+
+    public String getBatchChannel(){
+        return batchChannel;
+    }
+
+    public void setBatchChannel(String  batchChannel){
+        this.batchChannel=batchChannel;
+    }
+
+    public Date getBatchCreateTime(){
+        return batchCreateTime;
+    }
+
+    public void setBatchCreateTime(Date  batchCreateTime){
+        this.batchCreateTime=batchCreateTime;
+    }
+}

+ 51 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderBatchService.java

@@ -0,0 +1,51 @@
+package com.iamberry.rst.faces.order;
+
+import com.iamberry.rst.core.order.OrderBatch;
+
+import java.util.List;
+
+/**
+ *  订单批次接口
+ * @author w
+ * @Date 2018-06-26
+ */
+public interface OrderBatchService {
+    /**
+     * 获取集合
+     * @param  orderBatch
+     * @return List
+     */
+    List<OrderBatch> getOrderBatchList(OrderBatch  orderBatch);
+
+    /**
+     * 获取数量
+     * @param  orderBatch
+     * @return List
+     */
+    Integer getOrderBatchNum(OrderBatch  orderBatch);
+
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderBatch
+     */
+    OrderBatch  getOrderBatchById(String  id);
+    /**
+     * 增加数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    Integer  save(OrderBatch  orderBatch);
+    /**
+     * 修改数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    Integer  update(OrderBatch  orderBatch);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(String  id);
+}

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

@@ -245,7 +245,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_is_download,sales_main_order_id)
+      sales_pay_status,sales_process_status,sales_is_send,sales_is_locked,sales_is_separate,sales_is_download,sales_main_order_id,sales_batch_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}, 
@@ -257,7 +257,7 @@
       #{salesUserRemark,jdbcType=VARCHAR}, #{salesPayNumber,jdbcType=VARCHAR}, #{salesStoreId,jdbcType=INTEGER}, 
       #{salesCompanyId,jdbcType=INTEGER}, #{salesType,jdbcType=INTEGER},#{salesDealCode},#{salesOrderStatus},
       #{salesShippingStatus},#{salesPayStatus},#{salesProcessStatus},#{salesIsSend},#{salesIsLocked},
-      #{salesIsSeparate},#{salesIsDownload},#{salesMainOrderId})
+      #{salesIsSeparate},#{salesIsDownload},#{salesMainOrderId},#{salesBatchId})
   </insert>
 
   <!-- 批量添加订单项数据 -->

+ 76 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderBatchServiceImpl.java

@@ -0,0 +1,76 @@
+package com.iamberry.rst.service.order;
+
+import com.iamberry.rst.core.order.OrderBatch;
+import com.iamberry.rst.faces.order.OrderBatchService;
+import com.iamberry.rst.service.order.mapper.OrderBatchMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  订单批次接口
+ * @author w
+ * @Date 2018-06-26
+ */
+@Service
+public class OrderBatchServiceImpl  implements OrderBatchService {
+    @Autowired
+    private OrderBatchMapper orderBatchMapper;
+    /**
+     * 获取集合
+     * @param  orderBatch
+     * @return List
+     */
+    @Override
+    public List<OrderBatch> getOrderBatchList(OrderBatch  orderBatch){
+        return  orderBatchMapper.getOrderBatchList(orderBatch);
+    }
+
+    /**
+     * 获取数量
+     * @param  orderBatch
+     * @return List
+     */
+    @Override
+    public Integer getOrderBatchNum(OrderBatch  orderBatch){
+        return  orderBatchMapper.getOrderBatchNum(orderBatch);
+    }
+
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderBatch
+     */
+    @Override
+    public  OrderBatch  getOrderBatchById(String  id){
+        return  orderBatchMapper.getOrderBatchById(id);
+    }
+    /**
+     * 增加数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(OrderBatch  orderBatch){
+        return  orderBatchMapper.save(orderBatch);
+    }
+    /**
+     * 修改数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(OrderBatch  orderBatch){
+        return  orderBatchMapper.update(orderBatch);
+    }
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    @Override
+    public  Integer  delete(String  id){
+        return  orderBatchMapper.delete(id);
+    }
+}

+ 51 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/OrderBatchMapper.java

@@ -0,0 +1,51 @@
+package com.iamberry.rst.service.order.mapper;
+
+import com.iamberry.rst.core.order.OrderBatch;
+
+import java.util.List;
+
+/**
+ *  订单批次接口
+ * @author w
+ * @Date 2018-06-26
+ */
+public interface OrderBatchMapper {
+    /**
+     * 获取集合
+     * @param  orderBatch
+     * @return List
+     */
+    List<OrderBatch> getOrderBatchList(OrderBatch  orderBatch);
+
+    /**
+     * 获取数量
+     * @param  orderBatch
+     * @return List
+     */
+    Integer getOrderBatchNum(OrderBatch  orderBatch);
+
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderBatch
+     */
+    OrderBatch  getOrderBatchById(String  id);
+    /**
+     * 增加数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    Integer  save(OrderBatch  orderBatch);
+    /**
+     * 修改数据
+     * @param  orderBatch
+     * @return Integer
+     */
+    Integer  update(OrderBatch  orderBatch);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(String  id);
+}

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

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.rst.service.order.mapper.OrderBatchMapper">
+    <resultMap  id="BaseResultMap" type="OrderBatch" >
+        <result    column="batch_id"    property="batchId" />
+        <result    column="batch_excel_path"    property="batchExcelPath" />
+        <result    column="batch_txt_path"    property="batchTxtPath" />
+        <result    column="batch_status"    property="batchStatus" />
+        <result    column="batch_channel"    property="batchChannel" />
+        <result    column="batch_create_time"    property="batchCreateTime" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.batch_id,
+        t.batch_excel_path,
+        t.batch_txt_path,
+        t.batch_status,
+        t.batch_channel,
+        t.batch_create_time
+    </sql>
+    <select id="getOrderBatchList" resultMap="BaseResultMap" parameterType="OrderBatch" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_order_batch t
+        <where>
+            <if test="batchId != null and batchId != ''">
+                AND t.batch_id  like  CONCAT ('%',#{batchId},'%')
+            </if >
+            <if test="batchStatus != null ">
+                AND t.batch_status = #{batchStatus}
+            </if >
+        </where>
+    </select>
+    <select id="getOrderBatchById" resultMap="BaseResultMap" parameterType="String" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_order_batch t
+        where t.batch_id= #{batchId}
+    </select>
+
+    <select id="getOrderBatchNum" resultType="Integer" parameterType="OrderBatch" >
+        select
+          COUNT(t.batch_id)
+        from tb_rst_order_batch t
+    </select>
+
+    <insert id="save" parameterType="OrderBatch" >
+        insert into
+        tb_rst_order_batch
+        (
+        batch_id,
+        batch_excel_path,
+        batch_txt_path,
+        batch_status,
+        batch_channel
+        )
+        values
+        (
+        #{batchId},
+        #{batchExcelPath},
+        #{batchTxtPath},
+        #{batchStatus},
+        #{batchChannel}
+        )
+    </insert>
+    <update id="update" parameterType="OrderBatch" >
+        update
+        tb_rst_order_batch
+        <set >
+            <if test="batchId != null and batchId != ''">
+                batch_id = #{batchId},
+            </if >
+            <if test="batchExcelPath != null and batchExcelPath != ''">
+                batch_excel_path = #{batchExcelPath},
+            </if >
+            <if test="batchTxtPath != null and batchTxtPath != ''">
+                batch_txt_path = #{batchTxtPath},
+            </if >
+            <if test="batchStatus != null ">
+                batch_status = #{batchStatus},
+            </if >
+            <if test="batchChannel != null and batchChannel != ''">
+                batch_channel = #{batchChannel},
+            </if >
+        </set >
+        where batch_id= #{batchId}
+    </update>
+    <delete id="delete" parameterType="String" >
+        delete FROM
+        tb_rst_order_batch
+        where batch_id=#{batchId}
+    </delete>
+</mapper>

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

@@ -392,7 +392,12 @@
 
     <!--查询所有颜色信息 -->
     <select id="listProductColor" resultType="ProductColor">
-        SELECT <include refid="productColor"/> from tb_rst_product_color where color_status = 1
+        SELECT
+            <include refid="productColor"/>,
+        pi.product_name AS productName
+        from tb_rst_product_color
+        LEFT JOIN tb_rst_product_info pi ON  tb_rst_product_color.color_product_id = pi.product_id
+        where color_status = 1
     </select>
 
     <!--根据产品id查询产品类型 -->

+ 125 - 96
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java

@@ -16,6 +16,7 @@ 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.OrderBatchService;
 import com.iamberry.rst.faces.order.OrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.MessageService;
@@ -61,6 +62,9 @@ import java.util.*;
 @Controller
 @RequestMapping("/admin/order")
 public class AdminOrderController {
+
+    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+
     private static int PAY_FIRST_MONEY = 0;
     private static Logger logger = LoggerFactory.getLogger(SysController.class);
 
@@ -81,6 +85,11 @@ public class AdminOrderController {
     private SalesOrderService salesOrderService;
     @Autowired
     private StoreInfoService storeInfoService;
+    @Autowired
+    private OrderBatchService orderBatchService;
+
+    @Autowired
+    private ExcelUtil excelUtil;
 
     /**
      * 进入更换滤芯页面
@@ -593,12 +602,13 @@ public class AdminOrderController {
 
     @RequestMapping("/upload_excel")
     public ModelAndView uploadExcel(@RequestParam("file") String file, HttpServletRequest request) throws IOException {
-        ModelAndView mv = new ModelAndView("order/excel_to_order");
+        ModelAndView mv = new ModelAndView("order/excel_to_order_new");
         // 到设置页面
         List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
         mv.addObject("listStoreInfo",listStoreInfo);
         mv.addObject("heads", ExcelUtil.readExcelHead(request.getServletContext().getRealPath(file)));
         mv.addObject("productUrl", file);
+        mv.addObject("orderBatchs", orderBatchService.getOrderBatchList(new OrderBatch()));
         return mv;
     }
 
@@ -865,6 +875,17 @@ public class AdminOrderController {
     }
 
     @ResponseBody
+    @RequestMapping("/get_producttype_store")
+    public ResponseJson getProducttypeStore(@RequestParam("orderStoreInfo") String orderStoreInfo,
+                                        @RequestParam("productUrl") String filePath,
+                                        HttpServletRequest request) throws IOException {
+        ResponseJson json = new ResponseJson(200, "SUCCESS", 200);
+        json.addResponseKeyValue("values", ExcelUtil.readCell(request.getServletContext().getRealPath(filePath), orderStoreInfo));
+        json.addResponseKeyValue("stores", storeInfoService.listStore(new StoreInfo()));
+        return json;
+    }
+
+    @ResponseBody
     @RequestMapping("/get_excel_rows")
     public ResponseJson getExcelRSows( @RequestParam("productUrl") String filePath,
                                         HttpServletRequest request) throws IOException {
@@ -982,10 +1003,18 @@ public class AdminOrderController {
                                        @RequestParam("remark[]") String remark,
                                        @RequestParam("filePath") String filePath,
                                        @RequestParam("postType") String postType,
+                                       @RequestParam("orderStoreInfoSt") String orderStoreInfoSt,
                                        @RequestParam("productName") String productName,
-                                       @RequestParam("shopId") String shopId,
+                                       @RequestParam("isOtherStore") Integer isOtherStore,
+                                       @RequestParam("storeArray[]") String[] storeArray,
+                                       @RequestParam("orderBatch") String orderBatch,
                                        HttpServletRequest request) throws Exception {
         logger.info("-----------根据excel内容推送到百胜开始,Excel路径:"+ filePath +"-----------");
+
+        /*保存的交易号txt文件*/
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
+        String dateString = "common/file/upload/file/" + formatter.format(new Date()) + "/" + sdf.format(new Date()) + ".txt";
+
         // 获取产品颜色的映射
         List<ProductColor> productColors = orderService.listProductColor();
         Map<String, ProductColor> priceMap = new HashMap<>();
@@ -993,13 +1022,92 @@ public class AdminOrderController {
             priceMap.put(productColor.getColorBar(), productColor);
         }
         // 读取文件中内容
-        List<EfastOrder> orderEfasts = ExcelUtil.readCell(request.getServletContext().getRealPath(filePath),
-                productName, maps, infos, tel, name,platformOrder, num,remark, priceMap, postType, shopId);
+        List<EfastOrder> orderEfasts = excelUtil.readCell(request.getServletContext().getRealPath(filePath),
+                productName, maps, infos, tel, name,platformOrder, num,remark, priceMap, postType,orderStoreInfoSt,isOtherStore, storeArray);
         logger.info("---------orderEfasts订单个数为:"+orderEfasts.size() + "------------");
+
         //Efast升级 2018-6-8
         boolean bl = false;
-        List<SalesOrder> salesOrderList = null;//new ArrayList<SalesOrder>();
-        List<SalesOrderItem> salesOrderItemList = null;//new ArrayList<SalesOrderItem>();
+        int newFaultNum = 0;
+        Map<String,SalesOrder> mapsalesOrderList = new HashMap<>();
+        try{
+           mapsalesOrderList = mergeOrder(orderEfasts,postType);
+        }catch (Exception e){
+            return ResponseJson.FAILURE;
+        }
+
+        Integer orderBatchNum = orderBatchService.getOrderBatchNum(new OrderBatch());
+
+        String batchId = "";
+        if(orderBatch == null || "1".equals(orderBatch)){
+            batchId = "SC" + sdf.format(new Date()) + String.format("%04d", orderBatchNum);
+            OrderBatch ob = new OrderBatch();
+            ob.setBatchId(batchId);
+            ob.setBatchStatus(1);
+            ob.setBatchExcelPath(filePath.substring(1,filePath.length()-1));
+            ob.setBatchTxtPath(dateString);
+            Integer flag = orderBatchService.save(ob);
+            if(flag < 1){
+                return ResponseJson.FAILURE;
+            }
+        }else{
+            batchId = orderBatch;
+        }
+        StringBuffer sb = new StringBuffer();
+         for(SalesOrder salesOrders: mapsalesOrderList.values()){
+             String salesDealCode = salesOrders.getSalesDealCode();
+             salesOrders.setSalesBatchId(batchId);
+                try{
+                    bl = salesOrderService.addRstOrderAndIteminfo(salesOrders);
+                    if(bl == false){
+                        logger.info("合并订单出错+:"+bl + "错误交易号为:"+salesDealCode);
+                        for(EfastOrder efastOrderStyle:orderEfasts){
+                            if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
+                                efastOrderStyle.setStyleColor("color:red;");
+                        }
+                    }else{
+                        for(EfastOrder efastOrderStyle:orderEfasts){
+                            if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
+                                efastOrderStyle.setStyleColor("color:black;");
+                        }
+                        sb.append(salesDealCode+"\r\n");
+                    }
+                }catch (RuntimeException e){
+                    logger.info("插入订单失败;错误信息" + e.getMessage());
+                    for(EfastOrder efastOrderStyle:orderEfasts){
+                        if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
+                            efastOrderStyle.setStyleColor("color:red;");
+                    }
+                    newFaultNum ++;
+                }
+         }
+
+        String webPath = request.getSession().getServletContext().getRealPath("/");
+        String path = webPath + 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个数:"+ orderEfasts.size() +"--------");
+        logger.info("-------- 推送订单到Efast结束 ---------");
+        return new ResponseJson(200, "SUCCESS", 200)
+                .addResponseKeyValue("errorPath", request.getContextPath() + filePath)
+                .addResponseKeyValue("order_list", orderEfasts)
+                .addResponseKeyValue("mapSalesOrderSize",mapsalesOrderList.size())
+                .addResponseKeyValue("fileName", fileName)
+                .addResponseKeyValue("newFaultNum",newFaultNum);
+    }
+
+    private Map<String,SalesOrder> mergeOrder(List<EfastOrder>  orderEfasts,String postType) throws Exception{
+        List<SalesOrder> salesOrderList = new ArrayList<SalesOrder>();
+        List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
         List<ProductColor> listColor = null;
         SalesOrder salesOrder = null;
         SalesOrderItem salesOrderItem = null;
@@ -1007,13 +1115,15 @@ public class AdminOrderController {
         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;
+           throw new Exception();
         }
+
         for (EfastOrder efastOrder: orderEfasts) {
+
             String orderRemark = efastOrder.getOrderRemark();
             if(StringUtil.isEmpty(orderRemark)){
                 efastOrder.setOrderRemark("");
@@ -1035,10 +1145,6 @@ public class AdminOrderController {
                 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());
@@ -1078,8 +1184,11 @@ public class AdminOrderController {
                 salesOrder.setSalesCreateTime(new Date());
                 salesOrder.setSalesAdminRemark(efastOrder.getOrderBuyerRemark());
                 salesOrder.setSalesUserRemark(efastOrder.getOrderSellerRemark());
+
+                StoreInfo storeInfo = storeInfoService.getStoreInfoById(efastOrder.getStoreId());
                 salesOrder.setSalesStoreId(storeInfo.getStoreId());
                 salesOrder.setSalesCompanyId(storeInfo.getCompanyId());
+
                 salesOrder.setSalesType(1);
                 //salesOrder.setSalesDealCode(String.valueOf(efastOrder.getOid()));
                 salesOrder.setSalesDealCode(orderId);
@@ -1124,78 +1233,10 @@ public class AdminOrderController {
                 mapsalesOrderList.put(orderId, salesOrder);
             }
         }
-        StringBuffer sb = new StringBuffer();
-         for(SalesOrder salesOrders: mapsalesOrderList.values()){
-                //orderService.updateSalesOrderPostType(salesOrders,postType);
-                String salesDealCode = salesOrders.getSalesDealCode();
-
-                try{
-                    bl = salesOrderService.addRstOrderAndIteminfo(salesOrders);
-                    if(bl == false){
-                        logger.info("合并订单出错+:"+bl + "错误交易号为:"+salesDealCode);
-                        for(EfastOrder efastOrderStyle:orderEfasts){
-                            if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
-                                efastOrderStyle.setStyleColor("color:red;");
-                        }
-                        newFaultNum ++;
-                        break;
-                    }else{
-                        for(EfastOrder efastOrderStyle:orderEfasts){
-                            if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
-                                efastOrderStyle.setStyleColor("color:black;");
-                        }
-                        sb.append(salesDealCode+"\r\n");
-                    }
-                }catch (RuntimeException e){
-                    logger.info("插入订单失败;错误信息" + e.getMessage());
-                    for(EfastOrder efastOrderStyle:orderEfasts){
-                        if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId()))
-                            efastOrderStyle.setStyleColor("color:red;");
-                    }
-                    newFaultNum ++;
-                    break;
-                }
-         }
-        /*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("/");
-        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个数:"+ orderEfasts.size() +"--------");
-        logger.info("-------- 推送订单到Efast结束 ---------");
-        return new ResponseJson(200, "SUCCESS", 200)
-                .addResponseKeyValue("errorPath", request.getContextPath() + filePath)
-                .addResponseKeyValue("order_list", orderEfasts)
-                .addResponseKeyValue("mapSalesOrderSize",mapsalesOrderList.size())
-                .addResponseKeyValue("fileName", fileName)
-                .addResponseKeyValue("newFaultNum",newFaultNum);
+        return mapsalesOrderList;
     }
 
+
     /**
      * 创建文件
      *
@@ -1203,19 +1244,7 @@ public class AdminOrderController {
      * @return 是否创建成功,成功则返回true
      */
     public String createFile(String path, String filecontent) {
-        Calendar cal = Calendar.getInstance();
-        int day = cal.get(Calendar.DATE);
-        int month = cal.get(Calendar.MONTH) + 1;
-        int year = cal.get(Calendar.YEAR);
-        //当前时:HOUR_OF_DAY-24小时制;HOUR-12小时制
-        int hour = cal.get(Calendar.HOUR_OF_DAY);
-        //当前分
-        int minute = cal.get(Calendar.MINUTE);
-        //当前秒
-        int second = cal.get(Calendar.SECOND);
-        String fileName = year + "-" + month + "-" + day + " " + hour + "-" + minute + "-" +second;
-
-        String filenameTemp = path + fileName + ".txt";//文件路径+名称+文件类型
+        String filenameTemp = path + ".txt";//文件路径+名称+文件类型
         File file = new File(filenameTemp);
         try {
             if (!file.exists()) {

+ 41 - 9
watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java

@@ -3,11 +3,16 @@ package com.iamberry.rst.utils;
 import com.iamberry.rst.core.order.EfastOrder;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.pts.PtsBomComponents;
+import com.iamberry.rst.faces.cm.SalesOrderService;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import java.io.*;
 import java.text.DecimalFormat;
@@ -23,10 +28,14 @@ import java.util.*;
  * @tel 18271840547
  * @date 2017/5/25
  */
+@Component
 public class ExcelUtil {
 
     private static final org.slf4j.Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
 
+    @Autowired
+    private SalesOrderService salesOrderService;
+
     /**
      * 读取Excel文件头
      *
@@ -362,9 +371,9 @@ public class ExcelUtil {
     }
 
 
-    public static List<EfastOrder> readCell(String filePath, String productName, String[] maps,
+    public List<EfastOrder> readCell(String filePath, String productName, String[] maps,
                                             String[] infos, String tel, String name,String platformOrder, String num,String remark,
-                                            Map<String, ProductColor> price, String postType, String shopId)
+                                            Map<String, ProductColor> price, String postType, String orderStoreInfoSt, Integer isOtherStore,String[] storeArray)
             throws IOException {
         Map<String, String> map = new HashMap<>();
         for (String t : maps) {
@@ -398,6 +407,7 @@ public class ExcelUtil {
         int productColumnIndex = -1;
         int numColumnIndex = -1;
         int remarkColumnIndex = -1;
+        int orderStoreInfoStColumnIndex = -1;
         int[] infoColumnIndex = new int[infos.length];
         int infoCount = 0;
 
@@ -406,24 +416,27 @@ public class ExcelUtil {
         Iterator<Cell> cells = row.cellIterator();
         while (cells.hasNext()) {
             Cell cell = cells.next();
-            if (name.equals(cell.getStringCellValue().trim())) {
+            if (name.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配姓名列
                 nameColumnIndex = cell.getColumnIndex();
-            } else if (platformOrder.equals(cell.getStringCellValue().trim())) {
+            } else if (platformOrder.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配订单编号
                 platformOrderColumnIndex = cell.getColumnIndex();
-            } else if (tel.equals(cell.getStringCellValue().trim())) {
+            } else if (tel.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配电话
                 telColumnIndex = cell.getColumnIndex();
             } else if (productName.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配产品列
                 productColumnIndex = cell.getColumnIndex();
-            } else if (num.equals(cell.getStringCellValue().trim())) {
+            } else if (num.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配购买数量
                 numColumnIndex = cell.getColumnIndex();
-            }  else if (remark.equals(cell.getStringCellValue().trim())) {
+            }  else if (remark.trim().equals(cell.getStringCellValue().trim())) {
                 // 匹配备注
                 remarkColumnIndex = cell.getColumnIndex();
+            }  else if (orderStoreInfoSt.trim().equals(cell.getStringCellValue().trim())) {
+                // 匹配店铺名称
+                orderStoreInfoStColumnIndex = cell.getColumnIndex();
             } else {
                 // 匹配地址(可能是多个,需要组合连接)
                 for (int i = 0; i < infos.length; i++) {
@@ -467,7 +480,15 @@ public class ExcelUtil {
                 order.setOrderAddressName(nameValue);
                 if(!StringUtils.isEmpty(platformOrderIdValue)){
                     order.setPlatformOrderId(platformOrderIdValue.trim());
+                    Integer flag = salesOrderService.getOrderBySalesDealCodeNum(platformOrderIdValue.trim());
+                    if(flag > 0){
+                        order.setReturnStatus("error");
+                        order.setReturnMsg("交易号重复");
+                    }
+                    order.setPlatformOrderId(platformOrderIdValue.trim());
                 }else{
+                    order.setReturnStatus("error");
+                    order.setReturnMsg("订单交易号不正确");
                     order.setPlatformOrderId("1");
                 }
 
@@ -536,7 +557,18 @@ public class ExcelUtil {
                 order.setOrderOpenId(order.getOrderAddressTel());
                 order.setOrderProductName(price.get(order.getOrderProductBarCode()).getColorName());
                 order.setOrderId(OrderNoUtil.createOrderCode(Math.abs(new Random().nextInt(1000))));
-                order.setOrderStoreId(shopId);           // 微商/代理商仓库
+
+                if(isOtherStore == 2){
+                    String storeValue = getValue(temp.getCell(orderStoreInfoStColumnIndex)).trim();  // 读取店铺
+                    for (int k=0;k<storeArray.length;k++){
+                       String[] stores = storeArray[k].split("_");
+                       if(stores[0].trim().equals(storeValue.trim())){
+                           order.setStoreId(Integer.valueOf(stores[1]));           //店铺
+                       }
+                    }
+                }else{
+                    order.setStoreId(Integer.valueOf(storeArray[0]));           //店铺
+                }
                 order.setOid(oid);                       // oid
                 if (postType.equals("ems")) {
                     if (order.getOrderProvince().contains("广东")) {

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

@@ -31,6 +31,8 @@
 		<typeAlias type="com.iamberry.rst.core.order.ProductType" alias="ProductType"/>
 		<typeAlias type="com.iamberry.rst.core.order.OrderSource" alias="OrderSource"/>
 		<typeAlias type="com.iamberry.rst.core.order.OrderCheckLog" alias="OrderCheckLog"/>
+		<typeAlias type="com.iamberry.rst.core.order.OrderBatch" alias="OrderBatch"/>
+
 		<typeAlias type="com.iamberry.rst.core.sms.SmsMessage" alias="SmsMessage"/>
 		<typeAlias type="com.iamberry.rst.core.sms.OrderMessage" alias="OrderMessage"/>
 		<typeAlias type="com.iamberry.rst.core.product.OrderGift" alias="OrderGift"/>
@@ -115,7 +117,7 @@
 	<!-- mapper 映射文件 -->
 	<mappers>
 		<mapper resource="com/iamberry/rst/service/sys/mapper/sysMapper.xml"/>
-		<mapper resource="com/iamberry/rst/service/order/mapper/orderMapper.xml"/>
+
 		<mapper resource="com/iamberry/rst/service/sms/mapper/messageMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/product/mapper/productMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/faq/mapper/faqMapper.xml"/>
@@ -167,5 +169,8 @@
 		<mapper resource="com/iamberry/rst/service/sys/mapper/sysConfigMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/customer/mapper/CustomerBasicMapper.xml"/>
 
+		<mapper resource="com/iamberry/rst/service/order/mapper/orderMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/order/mapper/orderBatchMapper.xml"/>
+
 	</mappers>
 </configuration>

+ 259 - 56
watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order_new.ftl

@@ -14,6 +14,19 @@
 <nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 订单管理 <span class="c-gray en">&gt;</span> 文件内容转换 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
 <div class="page-container">
     <input type="hidden" id="productUrl" value="${productUrl}">
+
+    <div style="color: #e00;">注意:请上传待发货的订单信息,系统只处理待发货的订单信息。</div>
+
+    <div style="margin-top: 10px;margin-bottom: 10px;">
+        批次编号:
+        <select class="my-select" name="order_batch" id="order_batch" matchSelect="订单编号|订单号|交易号|序号" style="height: 30px;width: 180px;margin: 0px;">
+            <option value="1" >新增批次</option>
+            <#list orderBatchs as orderBatch>
+                <option value="${orderBatch.batchId}" >${orderBatch.batchId}</option>
+            </#list>
+        </select>
+    </div>
+
     <table class="table table-border table-bordered table-bg">
         <thead>
         <tr class="text-c">
@@ -25,7 +38,7 @@
             <tr class="text-c">
                 <td width="55">平台订单编号</td>
                 <td style="text-align: left;">
-                    <select class="my-select" name="addr-platformOrders" id="addr-platformOrders" style="height: 30px;width: 180px;margin: 0px;">
+                    <select class="my-select" name="addr-platformOrders" id="addr-platformOrders" matchSelect="订单编号|订单号|交易号|序号" style="height: 30px;width: 180px;margin: 0px;">
                         <#list heads as head>
                             <option value="${head}" >${head}</option>
                         </#list>
@@ -35,7 +48,7 @@
             <tr class="text-c">
                 <td width="55">收货人姓名</td>
                 <td style="text-align: left;">
-                    <select class="my-select" name="addr-name" id="addr-name" style="height: 30px;width: 180px;margin: 0px;">
+                    <select class="my-select" name="addr-name" id="addr-name" matchSelect="收件人|收货人|客户姓名" style="height: 30px;width: 180px;margin: 0px;">
                         <#list heads as head>
                             <option value="${head}" >${head}</option>
                         </#list>
@@ -45,7 +58,7 @@
             <tr class="text-c">
                 <td width="55">收货人电话</td>
                 <td style="text-align: left;">
-                <select class="my-select" name="addr-tel" id="addr-tel" style="height: 30px;width: 180px;margin: 0px;">
+                <select class="my-select" name="addr-tel" id="addr-tel" matchSelect="收件人手机|收件人电话|收货人手机|收货人电话|手机|电话|联系方式|联系电话" style="height: 30px;width: 180px;margin: 0px;">
                     <#list heads as head>
                         <option value="${head}" >${head}</option>
                     </#list>
@@ -72,7 +85,7 @@
                     <div>
                         <div class="addr-pcd" style="float: left;">
                             省:
-                            <select class="my-select " name="addr-info" id="addr-province" style="height: 30px;width: 180px;margin: 0px;">
+                            <select class="my-select " name="addr-info" id="addr-province" matchSelect="省" style="height: 30px;width: 180px;margin: 0px;">
                             <#list heads as head>
                                 <option value="${head}" >${head}</option>
                             </#list>
@@ -81,7 +94,7 @@
 
                         <div class="addr-pcd" style="float: left;">
                             市:
-                            <select class="my-select " name="addr-info" id="addr-city" style="height: 30px;width: 180px;margin: 0px;">
+                            <select class="my-select " name="addr-info" id="addr-city" matchSelect="市" style="height: 30px;width: 180px;margin: 0px;">
                             <#list heads as head>
                                 <option value="${head}" >${head}</option>
                             </#list>
@@ -90,7 +103,7 @@
 
                         <div class="addr-pcd" style="float: left;">
                             区:
-                            <select class="my-select " name="addr-info" id="addr-district" style="height: 30px;width: 180px;margin: 0px;">
+                            <select class="my-select " name="addr-info" id="addr-district" matchSelect="区|县" style="height: 30px;width: 180px;margin: 0px;">
                             <#list heads as head>
                                 <option value="${head}" >${head}</option>
                             </#list>
@@ -99,7 +112,7 @@
 
                         <div style="float: left;">
                             地址详情:
-                            <select class="my-select" name="addr-info" id="addr-addressInfo" style="height: 30px;width: 180px;margin: 0px;">
+                            <select class="my-select" name="addr-info" id="addr-addressInfo" matchSelect="收货人地址|收件人地址|详细地址|收货地址|收件地址|客户地址" style="height: 30px;width: 180px;margin: 0px;">
                             <#list heads as head>
                                 <option value="${head}" >${head}</option>
                             </#list>
@@ -112,7 +125,7 @@
             <tr class="text-c">
                 <td width="55">产品名称</td>
                 <td style="text-align: left;">
-                    <select class="my-select" name="product-name" id="product-name" style="height: 30px;width: 180px;margin: 0px;">
+                    <select class="my-select" name="product-name" id="product-name" matchSelect="网店品名|商品名称|产品名称|货品名称|商品信息|商品选项" style="height: 30px;width: 180px;margin: 0px;">
                         <#list heads as head>
                             <option value="${head}" >${head}</option>
                         </#list>
@@ -122,7 +135,7 @@
             <tr class="text-c">
                 <td width="55">购买产品数量</td>
                 <td style="text-align: left;">
-                    <select class="my-select"  name="product-shop-num" id="product-shop-num" style="height: 30px;width: 180px;margin: 0px;">
+                    <select class="my-select"  name="product-shop-num" id="product-shop-num" matchSelect="下单数量|订货数量|数量" style="height: 30px;width: 180px;margin: 0px;">
                         <#list heads as head>
                             <option value="${head}" >${head}</option>
                         </#list>
@@ -132,7 +145,7 @@
             <tr class="text-c">
                 <td width="55">备注</td>
                 <td style="text-align: left;">
-                    <select class="my-select" name="product-remark" id="product-remark" style="height: 30px;width: 180px;margin: 0px;">
+                    <select class="my-select" name="product-remark" id="product-remark" matchSelect="备注|店铺|订单来源" style="height: 30px;width: 180px;margin: 0px;">
                         <#list heads as head>
                             <option value="${head}" >${head}</option>
                         </#list>
@@ -142,22 +155,59 @@
             <tr class="text-c">
                 <td width="55">物流方式</td>
                 <td style="text-align: left;">
-                    <label><input type="radio" value="ems" checked="checked" class="product-post-type" name="product-post-type"/>EMS</label>
-                    <label><input type="radio" value="sto" class="product-post-type" name="product-post-type"/>申通</label>
+                    <div class="formControls col-10 col-sm-10 skin-minimal customerSourceType_text_all"  style="width: 100%;">
+                        <div class="radio-box">
+                            <input type="radio" id="post-type-1" name="product-post-type" value="ems" checked >
+                            <label for="post-type-1" style="height: 30px; line-height: 30px;">EMS</label>
+                        </div>
+                        <div class="radio-box">
+                            <input type="radio" id="post-type-2" name="product-post-type" value="sto" >
+                            <label for="post-type-2" style="height: 30px; line-height: 30px;">申通</label>
+                        </div>
+                    </div>
                 </td>
             </tr>
             <tr class="text-c">
                 <td width="55">选择仓库</td>
                 <td  style="text-align: left;">
-                    <label>
-                        <select class="my-select" name="shop-id" id="shop-id" style="height: 30px;width: 180px;margin: 0px;">
-                        <#if listStoreInfo?? &&  (listStoreInfo?size > 0) >
-                            <#list listStoreInfo as info>
-                                <option value="${info.storeEfast!''}" >${info.storeName!''}</option>
-                            </#list>
-                        </#if>
-                        </select>
-                    </label>
+                    <div style="width: 290px;">
+                        <div class="formControls col-10 col-sm-10 skin-minimal customerSourceType_text_all"  style="width: 100%;">
+                            <div class="radio-box">
+                                <input type="radio" id="store-1" name="store" value="1" checked>
+                                <label for="store-1" style="height: 30px; line-height: 30px;">无店铺信息</label>
+                            </div>
+                            <div class="radio-box">
+                                <input type="radio" id="store-2" name="store" value="2"  >
+                                <label for="store-2" style="height: 30px; line-height: 30px;">有店铺信息</label>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div id="store-select-1"  style="width: 100%;float: left;">
+                        <label>
+                            <select class="my-select" name="shop-id" id="shop-id" style="height: 30px;width: 180px;margin: 0px;">
+                            <#if listStoreInfo?? &&  (listStoreInfo?size > 0) >
+                                <#list listStoreInfo as info>
+                                    <option value="${info.storeId!''}" >${info.storeName!''}</option>
+                                </#list>
+                            </#if>
+                            </select>
+                        </label>
+                    </div>
+
+                    <div id="store-select-2" style="display: none">
+                        <div>
+                            <select class="my-select" name="order_store_info" id="order_store_info" matchSelect="店铺|订单来源" style="height: 30px;width: 180px;margin: 0px;">
+                                <#list heads as head>
+                                    <option value="${head}" >${head}</option>
+                                </#list>
+                            </select>
+                        </div>
+
+                        <table style="border: 1px solid #ccc;margin-top: 20px;" id="selectStore">
+                        </table>
+                    </div>
+
                 </td>
             </tr>
             <tr class="text-c">
@@ -208,7 +258,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">
@@ -254,6 +304,29 @@
             }
         });
 
+        /*监听仓库信息*/
+        $("[name='store']").on('ifChecked', function(event){
+            if($(this).val() == 1){ //无店铺信息
+                $("#store-select-1").show();
+                $("#store-select-2").hide();
+            }else{
+                $("#store-select-1").hide();
+                $("#store-select-2").show();
+
+                var orderStoreInfo = $("#order_store_info").val();
+                getStore(orderStoreInfo);
+            }
+        });
+
+        /*监听选择店铺*/
+        $("#order_store_info").change(function (){
+            var orderStoreInfo = $("#order_store_info").val();
+            getStore(orderStoreInfo);
+        })
+
+        /*初始化选中选项*/
+        initSelect();
+
         /*初始化单选框样式*/
         $('.skin-minimal input').iCheck({
             checkboxClass: 'icheckbox-blue',
@@ -261,15 +334,61 @@
             increaseArea: '20%'
         });
     })
+    
+    /**
+     * 初始化选中选项
+     * */
+    function initSelect() {
+        $("select").each(function(){
+            var currentSelect = $(this);
+            var matchSelect = $(this).attr("matchSelect");
+            var wFlag = 0, wValue=null; wNode=null;
+            if(matchSelect != null && matchSelect != null && typeof(matchSelect) != 'undefined'){
+                var matchs = matchSelect.split("|");
+                $(this).find("option").each(function(){
+                    var temValue = null;
+                    var temFlag = 0;
+                    var currentOption = $(this);
+                    for(var i=0;i<matchs.length; i++){
+                        var flag = 0, cuValue = null;
+                        var ma =  matchs[i];
+                        if(currentOption.text().indexOf(ma) > -1){
+                            flag++;
+                            cuValue = $(this).val();
+                            if(currentOption.text().trim.length == ma.trim.length){
+                                flag++;
+                                if(currentOption.text().trim == ma.trim){
+                                    flag++;
+                                }
+                            }
+                        }
+                        if(flag > temFlag){
+                            temFlag = flag;
+                            temValue = cuValue;
+                        }
+                    }
+                    if(temFlag > 0 && temFlag > wFlag){
+                        wValue = temValue;
+                        wFlag = temFlag
+                    }
+                })
+                currentSelect.val(wValue);
+            }
+        })
+    }
 
 
     // 对话框 - 推送结果
     function modaldemo(){
-        $("#modal-demo").modal("show")
+        $("#modal-demo").modal("show");
     }
 
     // 获取对应Excel中对应的 我们系统的69码
     function subToExcel() {
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
         var productName = $("#product-name").val();
         $.post(root_path + "/admin/order/get_producttype_colors",{"productName":productName, "productUrl":$("#productUrl").val()},function(result){
             if (result.returnCode != 200) {
@@ -277,21 +396,87 @@
             } else {
                 $("#tbody").html("");
                 for (var i = 0; i < result.returnMsg.values.length; i++) {
-                    var temp = '<tr class="text-c"><td>' + result.returnMsg.values[i] + '</td><td>';
-                    for (var j = 0; j < result.returnMsg.colors.length; j++) {
-                        temp = temp + '<label><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j].colorBar + '_' + result.returnMsg.values[i] + '"/>'
-                                + result.returnMsg.colors[j].colorName + '(' + result.returnMsg.colors[j].colorBar + ')</label>';
+                    var temp = '<tr class="text-c" ><td style="width: 50px;">' + result.returnMsg.values[i] + '</td><td>';
+                    temp += '<table class="table table-border table-bordered table-bg">';
+
+                    for (var j = 0; j < result.returnMsg.colors.length; j=j+6) {
+                        temp += '<tr >';
+                        temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j].productName + '-' + result.returnMsg.colors[j].colorName + '(' + result.returnMsg.colors[j].colorBar + ')</label></td>';
+                        if( typeof (result.returnMsg.colors[j+1]) != 'undefined'){
+                            temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j+1].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j+1].productName + '-' + result.returnMsg.colors[j+1].colorName + '(' + result.returnMsg.colors[j+1].colorBar + ')</label></td>';
+                        }else{
+                            temp = temp + '<td style="text-align: left;padding: 3px;"></td>';
+                        }
+                        if( typeof (result.returnMsg.colors[j+2]) != 'undefined') {
+                            temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j+2].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j+2].productName + '-' + result.returnMsg.colors[j+2].colorName + '(' + result.returnMsg.colors[j+2].colorBar + ')</label></td>';
+                        }else{
+                            temp = temp + '<td style="text-align: left;padding: 3px;"></td>';
+                        }
+                        if( typeof (result.returnMsg.colors[j+3]) != 'undefined') {
+                            temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j+3].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j+3].productName + '-' + result.returnMsg.colors[j+3].colorName + '(' + result.returnMsg.colors[j+3].colorBar + ')</label></td>';
+                        }else{
+                            temp = temp + '<td style="text-align: left;padding: 3px;"></td>';
+                        }
+                        if( typeof (result.returnMsg.colors[j+4]) != 'undefined') {
+                            temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j+4].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j+4].productName + '-' + result.returnMsg.colors[j+4].colorName + '(' + result.returnMsg.colors[j+4].colorBar + ')</label></td>';
+                        }else{
+                            temp = temp + '<td style="text-align: left;padding: 3px;"></td>';
+                        }
+
+                        if( typeof (result.returnMsg.colors[j+5]) != 'undefined') {
+                            temp = temp + '<td style="text-align: left;padding: 3px;"><label style="font-size: 12px;"><input checked class="productmap" type="radio" name="color_'+ i + '" value="' + result.returnMsg.colors[j+5].colorBar + '_' + result.returnMsg.values[i] + '"/>' + result.returnMsg.colors[j+5].productName + '-' + result.returnMsg.colors[j+5].colorName + '(' + result.returnMsg.colors[j+5].colorBar + ')</label></td>';
+                        }else{
+                            temp = temp + '<td style="text-align: left;padding: 3px;"></td>';
+                        }
+                        temp += '</tr>';
                     }
+                    temp += '</table>';
                     temp = temp + '</td></tr>';
                     $("#tbody").append(temp);
                 }
             }
+            layer.close(index);
         });
         $("#showProduct").show();
     }
 
+
+    function getStore(orderStoreInfo) {
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+        $.post(root_path + "/admin/order/get_producttype_store",{"orderStoreInfo":orderStoreInfo, "productUrl":$("#productUrl").val()},function(result){
+            if (result.returnCode != 200) {
+                layer.msg('加载失败,请重试!',{icon: 5,time:3000});
+            } else {
+                    $("#selectStore").html("");
+                    var temp;
+                    for (var i = 0; i < result.returnMsg.values.length; i++) {
+                        temp += '<tr class="text-c">'
+                             + '<td style=" width: 265px;">' + result.returnMsg.values[i] + '</td>'
+                             + '<td style="text-align: left;">'
+                             + '<label>'
+                             + '<select class="my-select order_store_select" name="" id="" style="height: 30px;width: 180px;margin: 0px;">';
+                        for (var j = 0; j < result.returnMsg.stores.length; j++) {
+                            temp += '<option value="' + result.returnMsg.values[i] + '_' + result.returnMsg.stores[j].storeId + '" >' + result.returnMsg.stores[j].storeName + '</option>'
+                        }
+                        temp += '</select></label>'
+                             + '</td>'
+                             + '</tr>';
+                    }
+                    $("#selectStore").html(temp);
+            }
+            layer.close(index);
+        });
+    }
+
     // 提交
     function sub() {
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
+        var orderBatch = $("#order_batch").val();
 
         var map = $(".productmap:checked");                 // 第三方平台的产品信息和Efast的产品信息管理数据 id-name
         var mapArray = new Array();
@@ -299,44 +484,40 @@
             mapArray[i] = map[i].value;
         }
 
-        var platformOrders = $(".addr-platformOrders:checked");                 // 订单编号
+        var platformOrders = $("#addr-platformOrders").val();                 // 订单编号
         var platformOrdersArray = new Array();
-        for (var i = 0; i < platformOrders.length; i++) {
-            platformOrdersArray[i] = platformOrders[i].value;
-        }
+        platformOrdersArray[0] = platformOrders;
         var platformOrdersName = platformOrdersArray[0];
 
-        var name = $(".addr-name:checked");                 // 用户名称列
+        var name = $("#addr-name").val();                 // 用户名称列
         var nameArray = new Array();
-        for (var i = 0; i < name.length; i++) {
-            nameArray[i] = name[i].value;
-        }
+        nameArray[0] = name;
 
-        var tel = $(".addr-tel:checked");                   // 用户电话列
+        var tel = $("#addr-tel").val();                   // 用户电话列
         var telArray = new Array();
-        for (var i = 0; i < tel.length; i++) {
-            telArray[i] = tel[i].value;
-        }
+        telArray[0] = tel;
 
-        var info = $(".addr-info:checked");                 // 用户收货地址列(可能多个组合)
+        /*获取地区信息*/
+        var cityInfo = $("[name='cityInfo']:checked").val();
         var infoArray = new Array();
-        for (var i = 0; i < info.length; i++) {
-            infoArray[i] = info[i].value;
+        if(cityInfo == 1){      //有省市区信息
+            infoArray[0] = $("#addr-province").val();
+            infoArray[1] = $("#addr-city").val();
+            infoArray[2] = $("#addr-district").val();
+            infoArray[3] = $("#addr-addressInfo").val();
+        }else{
+            infoArray[0] = $("#addr-addressInfo").val();
         }
 
-        var productShopNum = $(".product-shop-num:checked");// 销售数量
+        var productShopNum = $("#product-shop-num").val();  // 销售数量
         var numArray = new Array();
-        for (var i = 0; i < productShopNum.length; i++) {
-            numArray[i] = productShopNum[i].value;
-        }
+        numArray[0] = productShopNum;
 
-        var orderRemark = $(".product-remark:checked");// 备注
+        var orderRemark = $("#product-remark").val();   // 备注
         var remarkArray = new Array();
-        for (var i = 0; i < orderRemark.length; i++) {
-            remarkArray[i] = orderRemark[i].value;
-        }
+        remarkArray[0] = orderRemark;
 
-        var productName = $(".product-name:checked");
+        var productName = $("#product-name").val();
 
         if(platformOrdersName == nameArray[0] ){
             layer.msg('订单编号不能与收货人姓名列重复!',{icon: 5,time:3000});
@@ -357,19 +538,40 @@
             }
         }
 
+        /*是否有多个店铺*/
+        var isOtherStore =  $("[name='store']:checked").val();
+        var shopId = $("#shop-id").val()
+        var storeArray = new Array();
+        if(isOtherStore == 2){
+            $(".order_store_select").each(function(){
+                storeArray.push($(this).val());
+            })
+        }else{
+            storeArray.push(shopId);
+        }
+
+        /*Excel中的店铺名称*/
+        var orderStoreInfoSt = $("#order_store_info").val();
+
+        /*快递公司*/
+        var postType = $("[name='product-post-type']:checked").val();
+
         // 对应好Excel和系统需要的数据以后,准备推送Efast
         $.post(root_path + "/admin/order/toobj_sendefast",{
                 "filePath":$("#productUrl").val(),
                 "map":mapArray,
                 "platformOrder" : platformOrdersArray,
                 "name":nameArray,
-                "productName":productName.val(),
+                "productName":productName,
                 "tel":telArray,
                 "info":infoArray,
-                "postType":$(".product-post-type").val(),
-                "shopId":$("#shop-id").val(),
+                "postType":postType,
+                "isOtherStore":isOtherStore,
+                "orderStoreInfoSt":orderStoreInfoSt,
+                "storeArray":storeArray,
                 "num":numArray,
-                "remark":remarkArray
+                "remark":remarkArray,
+                "orderBatch":orderBatch
         },function(result){
             if (result.returnCode != 200) {
                 layer.msg('加载失败,请重试,请确认选择内容对应无误!',{icon: 5,time:3000});
@@ -399,7 +601,7 @@
                             '<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 + '">' + convertUndefinedToEmpty(order.returnMsg) + '</td>'+
                             '</tr>');
                 }
                 error_path = result.returnMsg.errorPath;
@@ -410,6 +612,7 @@
                 var fileName = result.returnMsg.fileName;
                 download_order_id_path = fileName;
             }
+            layer.close(index);
         });
     }