Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

xian 5 lat temu
rodzic
commit
5cda6833ac
19 zmienionych plików z 578 dodań i 123 usunięć
  1. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  2. 14 6
      watero-rst-core/src/main/java/com.iamberry.rst.core/dm/DmDealer.java
  3. 68 15
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  4. 14 11
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/postOrderNumMapper.xml
  5. 65 62
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  6. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/dmDealerMapper.xml
  7. 29 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java
  8. 18 3
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/dm/DmDealerController.java
  9. 3 3
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java
  10. 6 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  11. 19 3
      watero-rst-web/src/main/webapp/WEB-INF/views/address/address_list.ftl
  12. 83 0
      watero-rst-web/src/main/webapp/WEB-INF/views/address/update_city.ftl
  13. 98 0
      watero-rst-web/src/main/webapp/WEB-INF/views/address/update_district.ftl
  14. 9 0
      watero-rst-web/src/main/webapp/WEB-INF/views/dm/dealer/dm_order_statistics.ftl
  15. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/dm/financialReceipt/fr_statistics.ftl
  16. 7 3
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  17. 130 11
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_split.ftl
  18. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl
  19. 1 1
      watero-rst-web/src/main/webapp/common/js/customer/customer.js

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

@@ -155,6 +155,7 @@ public class SalesOrder implements Serializable {
     private String salesPostFirmName;//快递公司名称
 
     private Integer dealerId;//客户id
+    private Integer dealerAdminId;//客户业务员
     //客户名称
     private String dealerName;
     //渠道名称
@@ -981,4 +982,12 @@ public class SalesOrder implements Serializable {
     public void setSalesPostageCost(Integer salesPostageCost) {
         this.salesPostageCost = salesPostageCost;
     }
+
+    public Integer getDealerAdminId() {
+        return dealerAdminId;
+    }
+
+    public void setDealerAdminId(Integer dealerAdminId) {
+        this.dealerAdminId = dealerAdminId;
+    }
 }

+ 14 - 6
watero-rst-core/src/main/java/com.iamberry.rst.core/dm/DmDealer.java

@@ -55,9 +55,9 @@ public class DmDealer  implements  Serializable{
     //渠道名称
     private String dealChannelName;
     //订单总额
-    private Integer itemTotal;
+    private String itemTotal;
     //已认领金额
-    private Integer claimOrderTotal;
+    private String claimOrderTotal;
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date startDate;                 //开始时间
@@ -250,19 +250,19 @@ public class DmDealer  implements  Serializable{
         this.dealChannelName = dealChannelName;
     }
 
-    public Integer getItemTotal() {
+    public String getItemTotal() {
         return itemTotal;
     }
 
-    public void setItemTotal(Integer itemTotal) {
+    public void setItemTotal(String itemTotal) {
         this.itemTotal = itemTotal;
     }
 
-    public Integer getClaimOrderTotal() {
+    public String getClaimOrderTotal() {
         return claimOrderTotal;
     }
 
-    public void setClaimOrderTotal(Integer claimOrderTotal) {
+    public void setClaimOrderTotal(String claimOrderTotal) {
         this.claimOrderTotal = claimOrderTotal;
     }
 
@@ -281,4 +281,12 @@ public class DmDealer  implements  Serializable{
     public void setEndDate(Date endDate) {
         this.endDate = endDate;
     }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
 }

+ 68 - 15
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -402,6 +402,23 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Override
     @Transactional
     public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
+        //总支付金额
+        Integer salesPayMoney = 0;
+        for (SalesOrderItem soi : salesOrder.getSalesOrderItemList()) {
+            if(soi.getItemProductDiscount() != null){
+                Integer differenceNumber = soi.getItemNum()*soi.getItemProductDiscount() - soi.getItemTotal();
+                differenceNumber = Math.abs(differenceNumber);  //绝对值
+                if(soi.getItemProductDiscount() == 0 || soi.getItemProductDiscount() == 1 || differenceNumber > 1){
+                    Double dis = Double.valueOf(soi.getItemTotal())/soi.getItemNum();
+                    soi.setItemProductDiscount(dis.intValue());
+                }
+            }else{
+                Double dis = Double.valueOf(soi.getItemTotal())/soi.getItemNum();
+                soi.setItemProductDiscount(dis.intValue());
+            }
+            salesPayMoney += soi.getItemTotal();
+        }
+
         //合并订单项-------------statr
         List<SalesOrderItem> listItem = salesOrder.getSalesOrderItemList();
         salesOrder.setSalesOrderItemList(null);
@@ -437,6 +454,40 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         /*根据省份来分配物流公司*/
         salesOrderService.setProvincesLogistics(listSalesOrder);
 
+        /*查询成本*/
+        for (SalesOrder so:listSalesOrder) {
+            for (SalesOrderItem soi:so.getSalesOrderItemList()) {
+                SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
+                if(supplierProduct != null){
+                    soi.setItemCost(supplierProduct.getSpCost());
+                    soi.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
+                }else{
+                    throw  new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
+                }
+            }
+        }
+
+        for (int i = 0; i < listSalesOrder.size() ; i++) {
+            boolean isLastItem = false;
+            if((i+1) >= listSalesOrder.size()){
+                isLastItem = true;
+            }
+            SalesOrder so = listSalesOrder.get(i);
+            for (int j = 0; j < so.getSalesOrderItemList().size(); j++) {
+                SalesOrderItem soi = so.getSalesOrderItemList().get(j);
+                if((j+1) >= so.getSalesOrderItemList().size() && isLastItem){
+                    soi.setItemTotal(salesPayMoney);
+                    if(salesPayMoney > 0){
+                        soi.setItemProductDiscount(salesPayMoney/soi.getItemNum());
+                    }
+                }else{
+                    Integer total = soi.getItemNum()*soi.getItemProductDiscount();
+                    soi.setItemTotal(total);
+                    salesPayMoney -= total;
+                }
+            }
+        }
+
         //判断主从订单--------------------state
         if (listSalesOrder.size() > 0){
             SalesOrder mainOrder = null;
@@ -1118,16 +1169,6 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             throw  new RuntimeException("确认订单失败-删除订单项失败!");
         }
 
-        for (SalesOrderItem soi:salesOrder.getSalesOrderItemList()) {
-            SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
-            if(supplierProduct != null){
-                soi.setItemCost(supplierProduct.getSpCost());
-                soi.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
-            }else{
-                throw  new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
-            }
-        }
-
         //1:确认 状态
         salesOrder.setSalesStatus(1);
         boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
@@ -1468,6 +1509,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transactional
     @Override
     public Integer splitOrder(String mainOrderId, List<SalesOrder> salesOrderList) {
+        /**
+         * 1.查询以前的所有订单
+         * 2.通过比对,余下删除的订单集合orderList
+         * 3.给订单项赋值,并且删除该订单的订单项,新增订单项
+         * 4.删除orderList
+         */
+
         Integer flag = 0;
 
         SalesOrder mainOrder = new SalesOrder();
@@ -1480,17 +1528,17 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         orderList.addAll(sonSalesOrderList);
 
         for (SalesOrder salesOrder:salesOrderList) {
-
+            //orderList还有的订单,最后做删除
             for (int j=0;j<orderList.size();j++){
                 if(salesOrder.getSalesDealCode().equals(orderList.get(j).getSalesDealCode())){
                     orderList.remove(j);
                 }
             }
-
+            //以前的订单并且已发货之后无法做任何操作
             if(salesOrder.getSalesId() != null && salesOrder.getSalesShippingStatus() > 0){
                 continue;
             }
-            //create order item
+            //订单项赋值
             for (SalesOrderItem itemSaleItem:salesOrder.getSalesOrderItemList()) {
                 ProductColor productColor = productMapper.getProductBySku(itemSaleItem.getItemColorBar());
                 itemSaleItem.setItemProductId(productColor.getColorProductId());
@@ -1498,8 +1546,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 itemSaleItem.setColorAbbreviation(productColor.getColorAbbreviation());
                 itemSaleItem.setProductAbbreviation(productColor.getColorAbbreviation());
                 itemSaleItem.setItemIsSource(1);
-                itemSaleItem.setItemProductDiscount(productColor.getColorDiscount());
-                itemSaleItem.setItemProductPrice(productColor.getColorPrice());
+                //itemSaleItem.setItemProductDiscount(productColor.getColorDiscount());
+                itemSaleItem.setItemProductPrice(itemSaleItem.getItemProductDiscount());
                 itemSaleItem.setItemProductPic(productColor.getColorPicture());
                 itemSaleItem.setItemProductName(productColor.getProductName());
                 itemSaleItem.setItemProductType(productColor.getProductType());
@@ -1578,6 +1626,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrderMapper.updateSalesOrderBySalesPostNum(salesOrder);
     }
 
+    /***
+     * 计算金额
+     * @param salesOrder
+     * @param salesOrderItemList
+     */
     public void calculationTotal(SalesOrder salesOrder,List<SalesOrderItem> salesOrderItemList){
         Integer salesAmount=0,salesPayMoney=0;
 

+ 14 - 11
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/postOrderNumMapper.xml

@@ -370,17 +370,6 @@
                     AND sales_deliver_time <![CDATA[<=]]> #{endDate}
                 </if>
             </if>
-            <if test="dealerId != null">
-                AND  sales_store_id IN (
-                select
-                distinct xx.store_id
-                from
-                tb_rst_store_info xx
-                LEFT JOIN tb_rst_dm_dealer_channel_store dcs ON xx.store_id = dcs.store_id
-                LEFT JOIN tb_rst_dm_dealer_channel dc ON dcs.deal_channel_id = dc.deal_channel_id
-                WHERE dc.dealer_id = #{dealerId}
-                )
-            </if>
             <if test="orderIscostTotal != null and orderIscostTotal == 1">
                 AND dco.item_id is not null
             </if>
@@ -393,6 +382,20 @@
             <if test="isSelectCustomer == 2">
                 AND sales_customer_id is null
             </if>
+            <if test="dealerAdminId != null">
+                AND dd.create_id = #{dealerAdminId}
+            </if>
+            <if test="dealerId != null">
+                AND  sales_store_id IN (
+                select
+                distinct xx.store_id
+                from
+                tb_rst_store_info xx
+                LEFT JOIN tb_rst_dm_dealer_channel_store dcs ON xx.store_id = dcs.store_id
+                LEFT JOIN tb_rst_dm_dealer_channel dc ON dcs.deal_channel_id = dc.deal_channel_id
+                WHERE dc.dealer_id = #{dealerId}
+                )
+            </if>
         </where>
         ORDER BY t.sales_id DESC
     </select>

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

@@ -1461,27 +1461,27 @@
     <!-- 订单集合 -->
     <select id="salesOrderListAndItem" resultMap="SalesOrderAndItemMap" parameterType="SalesOrder" >
         select
-          tb_rst_sales_order_info.*,
-          si.store_name,
-          sc.company_name,
-          sa.admin_name AS  salesAdminName,
-          pt.proc_type_name procTypeName,
-          pt.proc_type_id procTypeId,
-          ddc.deal_channel_name AS dealChannelName,
-          dd.dealer_name AS dealerName,
-          xxnewsoi.cost_total AS cost_total,
-          ifnull(dco.claim_order_id,0) AS orderIscostTotal
-        from tb_rst_sales_order_info
-        LEFT JOIN tb_rst_store_info si ON  tb_rst_sales_order_info.sales_store_id = si.store_id
+            tt.*,
+            si.store_name,
+            sc.company_name,
+            sa.admin_name AS  salesAdminName,
+            pt.proc_type_name procTypeName,
+            pt.proc_type_id procTypeId,
+            ddc.deal_channel_name AS dealChannelName,
+            dd.dealer_name AS dealerName,
+            xxnewsoi.cost_total AS cost_total,
+            ifnull(dco.claim_order_id,0) AS orderIscostTotal
+        from tb_rst_sales_order_info tt
+        LEFT JOIN tb_rst_store_info si ON  tt.sales_store_id = si.store_id
         LEFT JOIN tb_rst_dm_dealer_channel_store dcs ON si.store_id = dcs.store_id
         LEFT JOIN tb_rst_dm_dealer_channel ddc ON dcs.deal_channel_id = ddc.deal_channel_id
         LEFT JOIN tb_rst_dm_dealer dd ON ddc.dealer_id = dd.dealer_id
-        LEFT JOIN  tb_rst_sales_company sc ON  tb_rst_sales_order_info.sales_company_id = sc.company_id
-        LEFT JOIN tb_rst_sales_order_item oi ON tb_rst_sales_order_info.sales_id = oi.item_order_id
-        LEFT JOIN tb_rst_cm_relation cr ON tb_rst_sales_order_info.sales_customer_id = cr.customer_id
+        LEFT JOIN  tb_rst_sales_company sc ON  tt.sales_company_id = sc.company_id
+        LEFT JOIN tb_rst_sales_order_item oi ON tt.sales_id = oi.item_order_id
+        LEFT JOIN tb_rst_cm_relation cr ON tt.sales_customer_id = cr.customer_id
         LEFT JOIN tb_rst_cm_proc_method pm ON pm.proc_method_id = cr.proc_method_id
         LEFT JOIN tb_rst_cm_proc_type pt ON pt.proc_type_id = pm.proc_type_id
-        LEFT JOIN tb_rst_sys_admin sa ON tb_rst_sales_order_info.sales_admin_id = sa.admin_id
+        LEFT JOIN tb_rst_sys_admin sa ON tt.sales_admin_id = sa.admin_id
         LEFT JOIN tb_rst_dm_claim_order dco on oi.item_id=dco.item_id
         LEFT JOIN (
             SELECT
@@ -1490,64 +1490,64 @@
             FROM tb_rst_sales_order_info xxsoi
             LEFT JOIN tb_rst_sales_order_item xxoi ON xxsoi.sales_id = xxoi.item_order_id
             GROUP BY xxsoi.sales_id
-        )xxnewsoi ON tb_rst_sales_order_info.sales_id = xxnewsoi.sales_id
+        )xxnewsoi ON tt.sales_id = xxnewsoi.sales_id
         <where>
             <if test="salesShippingStatus !=null">
-                AND sales_shipping_status = #{salesShippingStatus}
+                AND tt.sales_shipping_status = #{salesShippingStatus}
             </if>
             <if test="salesStatus !=null">
-                AND sales_status = #{salesStatus}
+                AND tt.sales_status = #{salesStatus}
             </if>
             <if test="salesBatchId !=null and salesBatchId !=''">
-                AND sales_batch_id = #{salesBatchId}
+                AND tt.sales_batch_id = #{salesBatchId}
             </if>
             <if test="isCustmerAddOrder !=null and isCustmerAddOrder == 2">
-                AND sales_batch_id != 'KS00000000000001'
+                AND tt.sales_batch_id != 'KS00000000000001'
             </if>
             <if test="salesIsDownload !=null and salesIsDownload !=''">
-                AND sales_is_download = #{salesIsDownload}
+                AND tt.sales_is_download = #{salesIsDownload}
             </if>
             <if test="salesOrderStatus !=null">
-                AND sales_order_status = #{salesOrderStatus}
+                AND tt.sales_order_status = #{salesOrderStatus}
             </if>
             <if test="salesDeliver !=null">
-                AND sales_deliver = #{salesDeliver}
+                AND tt.sales_deliver = #{salesDeliver}
             </if>
             <if test="salesCompanyId !=null and salesCompanyId !=''">
-                AND sales_company_id = #{salesCompanyId}
+                AND tt.sales_company_id = #{salesCompanyId}
             </if>
             <if test="salesStoreId !=null and salesStoreId !=''">
-                AND sales_store_id = #{salesStoreId}
+                AND tt.sales_store_id = #{salesStoreId}
             </if>
             <if test="salesPostFirm !=null and salesPostFirm !=''">
-                AND sales_post_firm = #{salesPostFirm}
+                AND tt.sales_post_firm = #{salesPostFirm}
             </if>
             <if test="salesId !=null">
-                AND sales_id = #{salesId}
+                AND tt.sales_id = #{salesId}
             </if>
             <if test="salesCustomerId !=null">
-                AND sales_customer_id = #{salesCustomerId}
+                AND tt.sales_customer_id = #{salesCustomerId}
             </if>
             <if test="salesOrderId !=null and salesOrderId !=''">
-                AND sales_orderId = #{salesOrderId}
+                AND tt.sales_orderId = #{salesOrderId}
             </if>
             <if test="salesDealCode !=null and salesDealCode !=''">
-                AND sales_deal_code = #{salesDealCode}
+                AND tt.sales_deal_code = #{salesDealCode}
             </if>
             <if test="salesAddressTel !=null and salesAddressTel !=''">
-                AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
+                AND tt.sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
             </if>
             <if test="salesAddressName !=null and salesAddressName !=''">
-                AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
+                AND tt.sales_address_name like CONCAT('%',#{salesAddressName},'%')
             </if>
             <if test="salesAddressInfo !=null and salesAddressInfo !=''">
-                AND sales_address_info like CONCAT('%',#{salesAddressInfo},'%')
+                AND tt.sales_address_info like CONCAT('%',#{salesAddressInfo},'%')
             </if>
             <if test="salesAdminId != null ">
-                AND sales_admin_id = #{salesAdminId}
+                AND tt.sales_admin_id = #{salesAdminId}
             </if>
             <if test="salesAddType != null ">
-                AND sales_add_type = #{salesAddType}
+                AND tt.sales_add_type = #{salesAddType}
             </if>
             <if test="itemProductName !=null and itemProductName !=''">
                 AND (oi.item_product_color like CONCAT('%',#{itemProductName},'%') OR oi.item_product_name LIKE CONCAT('%',#{itemProductName},'%'))
@@ -1556,60 +1556,49 @@
                 AND oi.item_color_id = #{colorId}
             </if>
             <if test="salesWarehouseId !=null and salesWarehouseId !=''">
-                AND sales_warehouse_id = #{salesWarehouseId}
+                AND tt.sales_warehouse_id = #{salesWarehouseId}
             </if>
             <if test="salesMainOrderId !=null">
-                AND sales_main_order_id = #{salesMainOrderId}
+                AND tt.sales_main_order_id = #{salesMainOrderId}
             </if>
             <if test="salesIds != null and salesIds != ''">
-                AND sales_id IN
+                AND tt.sales_id IN
                 <foreach collection="salesIds" item="node" index="index" separator="," open="(" close=")">
                     #{node}
                 </foreach >
             </if>
             <if test="orderDateType == null or orderDateType == 1">
                 <if test="startDate != null and startDate != ''">
-                    AND sales_create_time <![CDATA[>=]]> #{startDate}
+                    AND tt.sales_create_time <![CDATA[>=]]> #{startDate}
                 </if>
                 <if test="endDate != null and endDate != ''">
-                    AND sales_create_time <![CDATA[<=]]> #{endDate}
+                    AND tt.sales_create_time <![CDATA[<=]]> #{endDate}
                 </if>
             </if>
             <if test="orderDateType != null and orderDateType == 2">
                 <if test="startDate != null and startDate != ''">
-                    AND sales_send_time <![CDATA[>=]]> #{startDate}
+                    AND tt.sales_send_time <![CDATA[>=]]> #{startDate}
                 </if>
                 <if test="endDate != null and endDate != ''">
-                    AND sales_send_time <![CDATA[<=]]> #{endDate}
+                    AND tt.sales_send_time <![CDATA[<=]]> #{endDate}
                 </if>
             </if>
             <if test="orderDateType != null and orderDateType == 3">
                 <if test="startDate != null and startDate != ''">
-                    AND sales_deliver_time <![CDATA[>=]]> #{startDate}
+                    AND tt.sales_deliver_time <![CDATA[>=]]> #{startDate}
                 </if>
                 <if test="endDate != null and endDate != ''">
-                    AND sales_deliver_time <![CDATA[<=]]> #{endDate}
+                    AND tt.sales_deliver_time <![CDATA[<=]]> #{endDate}
                 </if>
             </if>
             <if test="orderDateType != null and orderDateType == 4">
                 <if test="startDate != null and startDate != ''">
-                    AND sales_distribution_time <![CDATA[>=]]> #{startDate}
+                    AND tt.sales_distribution_time <![CDATA[>=]]> #{startDate}
                 </if>
                 <if test="endDate != null and endDate != ''">
-                    AND sales_distribution_time <![CDATA[<=]]> #{endDate}
+                    AND tt.sales_distribution_time <![CDATA[<=]]> #{endDate}
                 </if>
             </if>
-            <if test="dealerId != null">
-                AND  sales_store_id IN (
-                    select
-                    distinct t.store_id
-                    from
-                    tb_rst_store_info t
-                    LEFT JOIN tb_rst_dm_dealer_channel_store dcs ON t.store_id = dcs.store_id
-                    LEFT JOIN tb_rst_dm_dealer_channel dc ON dcs.deal_channel_id = dc.deal_channel_id
-                    WHERE dc.dealer_id = #{dealerId}
-                )
-            </if>
             <if test="orderIscostTotal != null and orderIscostTotal == 1">
                 AND dco.item_id is not null
             </if>
@@ -1617,14 +1606,28 @@
                 AND dco.item_id is null
             </if>
             <if test="isSelectCustomer == 1">
-                AND sales_customer_id is NOT null
+                AND tt.sales_customer_id is NOT null
             </if>
             <if test="isSelectCustomer == 2">
-                AND sales_customer_id is null
+                AND tt.sales_customer_id is null
+            </if>
+            <if test="dealerAdminId != null">
+                AND dd.create_id = #{dealerAdminId}
+            </if>
+            <if test="dealerId != null">
+                AND  tt.sales_store_id IN (
+                    select
+                    distinct t.store_id
+                    from
+                    tb_rst_store_info t
+                    LEFT JOIN tb_rst_dm_dealer_channel_store dcs ON t.store_id = dcs.store_id
+                    LEFT JOIN tb_rst_dm_dealer_channel dc ON dcs.deal_channel_id = dc.deal_channel_id
+                    WHERE dc.dealer_id = #{dealerId}
+                )
             </if>
         </where>
-        GROUP BY tb_rst_sales_order_info.sales_id
-        ORDER BY tb_rst_sales_order_info.sales_id DESC
+        GROUP BY tt.sales_id
+        ORDER BY tt.sales_id DESC
     </select>
 
 

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/dmDealerMapper.xml

@@ -231,8 +231,8 @@
             t.dealer_name,
             ddc.deal_channel_name,
             dcs.store_id,
-            SUM(soix.item_total) as itemTotal,
-            xx.claim_order_total as claimOrderTotal
+            cast(round(SUM(soix.item_total)/100,2)   as   decimal(11,2))  as itemTotal,
+            cast(round(xx.claim_order_total/100,2)   as   decimal(11,2)) as claimOrderTotal
         FROM tb_rst_dm_dealer t
         LEFT JOIN tb_rst_sys_admin sa ON sa.admin_id = t.create_id
         LEFT JOIN tb_rst_dm_dealer_channel ddc ON ddc.dealer_id = t.dealer_id

+ 29 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java

@@ -229,6 +229,35 @@ public class AddressController {
         return rj;
     }
 
+
+    /**
+     * 进入修改区页面
+     * @param districtId
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/to_update_district")
+    public ModelAndView to_update_district(@RequestParam("districtId") Integer districtId) {
+        District district = new District();
+        district.setDistrictId(districtId);
+        List<District> districts = addressService.listDistrict(district);
+        return new ModelAndView("address/update_district").addObject("district", districts.get(0));
+    }
+
+    /**
+     * 进入修改市页面
+     * @param cityId
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/to_update_city")
+    public ModelAndView to_update_city(@RequestParam("cityId") Integer cityId) {
+        City city = new City();
+        city.setCityId(cityId);
+        List<City> citys = addressService.listCity(city);
+        return new ModelAndView("address/update_city").addObject("city", citys.get(0));
+    }
+
     /**
      *  修改区
      * @param district

+ 18 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/dm/DmDealerController.java

@@ -17,7 +17,6 @@ import com.iamberry.rst.faces.dm.*;
 import com.iamberry.rst.faces.order.LogisticsInfoService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sys.SysService;
-import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
 import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.rst.utils.UploadFileUtils;
@@ -78,8 +77,6 @@ public class DmDealerController {
     @Autowired
     private SupplierProductService supplierProductService;
     @Autowired
-    private SalesOrderMapper salesOrderMapper;
-    @Autowired
     private PostOrderNumService postOrderNumService;
 
     private static List<LogisticsInfo> LOGISTICSINFO_LIST;
@@ -574,6 +571,12 @@ public class DmDealerController {
         List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
         List<OrderWarehouse> listOrderWarehouse = salesOrderService.listOrderWarehouse();
         List<DmDealer> dmDealerList = dmDealerService.getDmDealerList(new DmDealer());
+
+        Admin admin = new Admin();
+        admin.setAdminDept(2);
+        admin.setAdminStatus(1);
+        List<Admin> adminList = sysService.listSelectAdmin(admin);
+
         StitchAttrUtil.getSa()
                 .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
                 .addNoPro("salesOrderItemList","complaintDetectInfoList")
@@ -584,6 +587,7 @@ public class DmDealerController {
         mv.addObject("logisticsInfoList",logisticsInfoList);
         mv.addObject("productColorList",productColorList);
         mv.addObject("dmDealerList",dmDealerList);
+        mv.addObject("adminList",adminList);
         return mv;
     }
 
@@ -781,6 +785,8 @@ public class DmDealerController {
 
         titles.add("打单状态");
         titles.add("打单日期");
+
+        titles.add("备注");
         model.put("titles", titles);
         PtsBatch ptsBatch = new PtsBatch();
         List<List<Object>> countexts = new ArrayList<List<Object>>();
@@ -841,6 +847,15 @@ public class DmDealerController {
                 }
                 row.add(salesShoppingStatus);
                 row.add(salesOrder.getSalesSendTime() == null ? "未发货":formatter.format(salesOrder.getSalesSendTime()));
+
+                StringBuffer sbf = new StringBuffer();
+                if(salesOrder.getSalesAdminRemark() != null && !"".equals(salesOrder.getSalesAdminRemark())){
+                    sbf.append(salesOrder.getSalesAdminRemark()+"/");
+                }
+                if(salesOrder.getSalesUserRemark() != null){
+                    sbf.append(salesOrder.getSalesUserRemark());
+                }
+                row.add(sbf);
                 countexts.add(row);
             }
         }

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

@@ -1094,9 +1094,9 @@ public class AdminOrderController {
                                      }else{
                                          // 2:部分店铺
                                          //for (DealerProductStore dps:dp.getDealerProductStoreList()) {
-                                             //if(salesOrders.getSalesStoreId().equals(dps.getStoreId())){
-                                              //   newPrice = dp.getDealProdPrice();
-                                             //}
+                                         //if(salesOrders.getSalesStoreId().equals(dps.getStoreId())){
+                                         //   newPrice = dp.getDealProdPrice();
+                                         //}
                                          //}
                                          newPrice = dp.getDealProdPrice();
                                      }

+ 6 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -131,6 +131,7 @@ public class AdminSalesOrderController {
         mv.addObject("logisticsInfoList",logisticsInfoList);
         mv.addObject("identity",identity);
         mv.addObject("productColorList",productColorList);
+        mv.addObject("admin",admin);
         return mv;
     }
 
@@ -1509,15 +1510,18 @@ public class AdminSalesOrderController {
         List<SalesOrder> viceOrList = salesOrderService.salesOrderListAndItem(viceOr);
         Collections.reverse(viceOrList);
 
+        Integer total = 0;
         //合并产品项-- 所有产品项
         List<SalesOrderItem> salesOrderItemList = new ArrayList<>();
         for (SalesOrderItem so:order.getSalesOrderItemList()) {
             SalesOrderItem itemSo = new SalesOrderItem();
+            total += so.getItemTotal();
             BeanUtils.copyProperties(so,itemSo);
             salesOrderItemList.add(itemSo);
         }
         for(SalesOrder sor : viceOrList){
             for (SalesOrderItem soim:sor.getSalesOrderItemList()) {
+                total += soim.getItemTotal();
                 SalesOrderItem itemSi2One = new SalesOrderItem();
                 BeanUtils.copyProperties(soim,itemSi2One);
                 boolean flag = false;
@@ -1548,6 +1552,7 @@ public class AdminSalesOrderController {
         mv.addObject("codeName",codeName);
         mv.addObject("viceOrList",viceOrList);
         mv.addObject("salesOrderItemList",salesOrderItemList);
+        mv.addObject("total",total);
         return mv;
     }
 
@@ -1587,6 +1592,7 @@ public class AdminSalesOrderController {
         List<SalesOrder> orderList = salesOrderService.salesOrderListAndItem(mainOrder);
         SalesOrder or = orderList.get(0);
 
+        //对订单内容进行赋值
         List<SalesOrder> salesOrderList = new ArrayList<>();
         for (SalesOrderItem salesOrderItem:salesOrderItemList) {
             SalesOrder salesOrder = new SalesOrder();

+ 19 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/address/address_list.ftl

@@ -75,6 +75,10 @@
                             </select>
                                 </td>
                                 <td>
+                                    <a style="text-decoration:none" href="javascript:;" title="添加区"
+                                       onclick="add('添加区','${path}/address/to_add_district?cityId=${city.cityId!''}','570','450');">
+                                        <i class="Hui-iconfont">添加区</i>
+                                    </a>
                                     <a style="text-decoration:none" href="javascript:;" title="删除市"
                                        onclick="detectCity('${city.cityId!''}','${city.city!''}');">
                                         <i class="Hui-iconfont">删除市</i>
@@ -83,9 +87,13 @@
                                        onclick="detectDistrict('${city.cityId!''}');">
                                         <i class="Hui-iconfont">删除区</i>
                                     </a>
-                                    <a style="text-decoration:none" href="javascript:;" title="添加区"
-                                       onclick="add('添加区','${path}/address/to_add_district?cityId=${city.cityId!''}','570','450');">
-                                        <i class="Hui-iconfont">添加区</i>
+                                    <a style="text-decoration:none" href="javascript:;" title="修改市"
+                                       onclick="add('修改市','${path}/address/to_update_city?cityId=${city.cityId!''}','570','450');">
+                                        <i class="Hui-iconfont">修改市</i>
+                                    </a>
+                                    <a style="text-decoration:none" href="javascript:;" title="修改区"
+                                       onclick="to_updateCity(${city.cityId!''});">
+                                        <i class="Hui-iconfont">修改区</i>
                                     </a>
                                 </td>
                             </tr>
@@ -119,7 +127,15 @@
         window.location.href= "${path}/admin/product/to_update_product?productId="+productId;
     }
 
+    /**
+     *修改区
+     * @param employee
+     */
+    function to_updateCity(cityId) {
+        var districtId = $("#district"+cityId).val();
+        add('修改区','${path}/address/to_update_district?districtId='+districtId,'570','450')
 
+    }
 
     /*分配快递方式*/
     function add(title,url,w,h){

+ 83 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/address/update_city.ftl

@@ -0,0 +1,83 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+<#include "/base/add_base.ftl">
+    <title>修改备注</title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 10px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-11.png) right center no-repeat;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <meta name="keywords" content="${path}">
+    <meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
+</head>
+<body>
+<article class="page-container">
+    <form class="form form-horizontal" id="form-admin-add">
+        <div class="input-box"   style="text-align:center;">
+            <span class="spanhidth" style="margin-right: 10px;"><span class="c-red">*</span>名称:</span>
+            <input type="text" class="my-input trim_input"  style="width:200px;margin-right: 0px; margin-bottom: 8px;" value="${city.city!''}" placeholder="请输入名称" id="city" name="city">
+        </div>
+        <div style="text-align:center;">
+            <input type="hidden" value="${city.cityId!''}" id="cityId" name="cityId">
+            <button type="button" class="my-btn-submit" onclick="update();">确认提交</button>
+        </div>
+    </form>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+
+
+    function  update() {
+        var city = $("#city").val();
+        if(city == null || city === ""){
+            layer.msg('名称不能为空',{icon: 5,time:1000});
+            return;
+        }
+        if( city != null){
+            if( city.length > 20 ){
+                layer.msg('名称长度不得大于20个字符',{icon: 5,time:1000});
+                return;
+            }
+        }
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/address/update_city",
+            data:$('#form-admin-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg('修改成功',{icon: 1,time:1000},function () {
+                        window.parent.location.reload();
+                        var index = parent.layer.getFrameIndex(window.name);
+                        parent.layer.close(index)
+                    });
+                } else {
+                    layer.msg('添加失败',{icon: 5,time:1000});
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('修改错误',{icon: 5,time:1000});
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 98 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/address/update_district.ftl

@@ -0,0 +1,98 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+<#include "/base/add_base.ftl">
+    <title>修改备注</title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 10px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-11.png) right center no-repeat;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <meta name="keywords" content="${path}">
+    <meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
+</head>
+<body>
+<article class="page-container">
+    <form class="form form-horizontal" id="form-admin-add">
+        <div class="input-box"   style="text-align:center;">
+            <span class="spanhidth" style="margin-right: 10px;"><span class="c-red">*</span>名称:</span>
+            <input type="text" class="my-input trim_input"  style="width:200px;margin-right: 0px; margin-bottom: 8px;" value="${district.district!''}" placeholder="请输入名称" id="district" name="district">
+        </div>
+        <div class="input-box"   style="text-align:center;">
+            <span class="spanhidth" style="margin-right: 10px;"><span class="c-red">*</span>邮编:</span>
+            <input type="text" class="my-input trim_input"  style="width:200px;margin-right: 0px; margin-bottom: 8px;" value="${district.postcode!''}" placeholder="请输入邮编" id="postcode" name="postcode">
+        </div>
+        <div style="text-align:center;">
+            <input type="hidden" value="${district.districtId!''}" id="districtId" name="districtId">
+            <button type="button" class="my-btn-submit" onclick="update();">确认提交</button>
+        </div>
+    </form>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+
+
+    function  update() {
+        var district = $("#district").val();
+        if(district == null || district === ""){
+            layer.msg('名称不能为空',{icon: 5,time:1000});
+            return;
+        }
+        if( district != null){
+            if( district.length > 20 ){
+                layer.msg('名称长度不得大于20个字符',{icon: 5,time:1000});
+                return;
+            }
+        }
+        var postcode = $("#postcode").val();
+        if(postcode == null || postcode === ""){
+            layer.msg('邮编不能为空',{icon: 5,time:1000});
+            return;
+        }
+        if( postcode != null){
+            if( postcode.length > 6 ){
+                layer.msg('邮编长度不得大于6个字符',{icon: 5,time:1000});
+                return;
+            }
+        }
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/address/updateDistrict",
+            data:$('#form-admin-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg('修改成功',{icon: 1,time:1000},function () {
+                        window.parent.location.reload();
+                        var index = parent.layer.getFrameIndex(window.name);
+                        parent.layer.close(index)
+                    });
+                } else {
+                    layer.msg('添加失败',{icon: 5,time:1000});
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('修改错误',{icon: 5,time:1000});
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 9 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/dm/dealer/dm_order_statistics.ftl

@@ -59,6 +59,15 @@
                     <option value ="3" <#if salesOrder.salesStatus??><#if salesOrder.salesStatus == 3 >selected="selected"</#if></#if>>作废</option>
                 </select>
 
+                <select class="select" name="dealerAdminId" id="dealerAdminId" style="height: 30px;width: 120px;margin: 0px;margin-bottom: 10px;">
+                    <option value="">业务员</option>
+                    <#if adminList?? &&  (adminList?size > 0) >
+                        <#list adminList as admin>
+                            <option value="${admin.adminId!''}" <#if salesOrder.dealerAdminId??><#if salesOrder.dealerAdminId == admin.adminId >selected="selected"</#if></#if>>${admin.adminName!''}</option>
+                        </#list>
+                    </#if>
+                </select>
+
                 <select class="select" name="dealerId" id="dealerId" style="height: 30px;width: 120px;margin: 0px;margin-bottom: 10px;">
                     <option value="">客户信息</option>
                     <#if dmDealerList?? &&  (dmDealerList?size > 0) >

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/dm/financialReceipt/fr_statistics.ftl

@@ -59,8 +59,8 @@
                     <td>
                          ${dmDealer.dealChannelName!''}
                     </td>
-                    <td>${((dmDealer.itemTotal/100)?string("0.##"))!'0'}</td>
-                    <td>${((dmDealer.claimOrderTotal/100)?string("0.##"))!'0'}</td>
+                    <td>${(dmDealer.itemTotal)!'0'}</td>
+                    <td>${(dmDealer.claimOrderTotal)!'0'}</td>
 <#--
                     <td>
                         <a style="text-decoration:none" href="javascript:void(0);" title="订单详情" alt="订单详情" onclick="sales_order_detail(${order.salesId!''})">

+ 7 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl

@@ -389,6 +389,12 @@
                        }
                    }
                }
+               <#if admin??  >
+                   var adminDept = ${admin.adminDept!''};
+                   if(adminDept == 1){
+                       tr.find(".edit_order_target").show();
+                   }
+               </#if>
            }
        }
     });
@@ -640,10 +646,8 @@ function isConfirm(salesOrderIds,isSplit) {
             if(res.resultCode == 200 && res.returnCode == 200){
                 location.reload();
             }else{
-                layer.alert("确认订单异常!", function(index){
-                    layer.close(index);
+                layer.alert("确认订单异常  {  "+res.returnMsg.errorId+"  }", function(index){
                 });
-                layer.close(index);
             }
             return false;
         }

+ 130 - 11
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_split.ftl

@@ -66,6 +66,7 @@
 <article class="cl pd-20">
     <form action="" method="post" class="form form-horizontal" id="form-article-add">
         <input type="hidden" name="salesId" value="${order.salesId!''}" >
+        <input type="hidden" name="salesStoreId" id="salesStoreId" value="${order.salesStoreId!''}" >
 
         <#--<div class="row cl">
             <label class="form-label col-3">
@@ -119,6 +120,12 @@
                 <th width="20">手机号码:</th>
                 <td width="70" style="font-weight: normal;"><span>${order.salesAddressTel!''}</span></td>
             </tr>
+            <tr>
+                <th width="20">销售公司:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.companyName!''}</span></td>
+                <th width="20">销售渠道:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.storeName!''}</span></td>
+            </tr>
            <#-- <tr>
 
                 <th width="20">下单日期:</th>
@@ -264,6 +271,21 @@
                     </tbody>
                 </table>
 
+        <table class="table table-border table-bg table-bordered" style="margin-top: 10px;">
+            <thead>
+            <tr class="text-c">
+                <th>原订单总金额</th>
+                <th>现订单总金额</th>
+            </tr>
+            </thead>
+            <tbody id="productStatistics">
+                <tr class="text-c">
+                    <td id="originalOrderTotal">${((total/100)?string("0.##"))!''}</td>
+                    <td id="nowOrderTotal"></td>
+                </tr>
+            </tbody>
+        </table>
+
             <div class="row cl">
                 <label class="form-label col-3">
                     <div class="tit-2">
@@ -280,7 +302,9 @@
                     <th width="50">产品名称</th>
                     <th width="20">颜色</th>
                     <th width="100">产品编号</th>
+                    <th width="10">售价</th>
                     <th width="10">产品数量</th>
+                    <th width="10">总价</th>
                     <th width="50">修改/删除</th>
                     <th width="50">添加</th>
                 </tr>
@@ -305,11 +329,25 @@
                         <td class="itemColorBar">${orderItem.itemColorBar}</td>
                         <td>
                             <#if order.salesShippingStatus == 0>
+                                <input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemProductDiscount" value="${((orderItem.itemProductDiscount/100)?string("0.##"))!''}"  placeholder="产品售价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999">
+                            <#else>
+                                <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number decimal_input input-itemProductDiscount" value="${((orderItem.itemProductDiscount/100)?string("0.##"))!''}"  placeholder="产品售价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999" disabled="disabled">
+                            </#if>
+                        </td>
+                        <td>
+                            <#if order.salesShippingStatus == 0>
                                 <input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()">
                             <#else>
                                 <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()" disabled="disabled">
                             </#if>
                         </td>
+                        <td>
+                            <#if order.salesShippingStatus == 0>
+                                <input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemTotal" value="${((orderItem.itemTotal/100)?string("0.##"))!''}"  placeholder="总价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999">
+                            <#else>
+                                <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number decimal_input input-itemTotal" value="${((orderItem.itemTotal/100)?string("0.##"))!''}"  placeholder="总价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999" disabled="disabled">
+                            </#if>
+                        </td>
                         <td msg="${order.salesDealCode!''}">
                             <#if order.salesShippingStatus == 0>
                                 <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;
@@ -348,11 +386,25 @@
                                 <td class="itemColorBar">${orderItem.itemColorBar}</td>
                                 <td>
                                     <#if viceOr.salesShippingStatus == 0>
+                                        <input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemProductDiscount" value="${((orderItem.itemProductDiscount/100)?string("0.##"))!''}"  placeholder="产品售价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999">
+                                    <#else>
+                                        <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number decimal_input input-itemProductDiscount" value="${((orderItem.itemProductDiscount/100)?string("0.##"))!''}"  placeholder="产品售价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999" disabled="disabled">
+                                    </#if>
+                                </td>
+                                <td>
+                                    <#if viceOr.salesShippingStatus == 0>
                                         <input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()">
                                     <#else>
                                         <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()" disabled="disabled">
                                     </#if>
                                 </td>
+                                <td>
+                                    <#if viceOr.salesShippingStatus == 0>
+                                        <input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemTotal" value="${((orderItem.itemTotal/100)?string("0.##"))!''}"  placeholder="总价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999">
+                                    <#else>
+                                        <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number decimal_input input-itemTotal" value="${((orderItem.itemTotal/100)?string("0.##"))!''}"  placeholder="总价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999" disabled="disabled">
+                                    </#if>
+                                </td>
                                 <td msg="${viceOr.salesDealCode!''}">
                                     <#if viceOr.salesShippingStatus == 0>
                                         <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;
@@ -375,6 +427,7 @@
             </tbody>
             <div style="color: #c00;" >*已通知配货/已发货的订单不能进行更改</div>
         </table>
+        <div style="color: #c00;" id="errorMsg"></div>
         <button type="button" style=" margin-top: 10px; float: right;" class="btn btn-primary" onclick="addOrder()" >添加拆单</button>
 
         <div class="row cl" style="margin-top: 50px;margin-bottom: 20px">
@@ -402,9 +455,11 @@
     var $updateNode; //修改的tr元素
 
     $(function(){
+        syncTotal(1);
+
         //合并单元格
         tableMana(0);
-        tableMana(6);
+        tableMana(8);
 
         $("#allDay").find("tr").each(function () {
             var tdShow = $(this).find("td").eq(0).is(":visible");
@@ -449,6 +504,8 @@
             shade: [0.5,'#fff'] //0.1透明度的白色背景
         });
 
+        $("#errorMsg").html("");
+
         var colorIdArray = colorIds.split("_");
         for(var i=0;i<colorIdArray.length;i++){
             var colorId = colorIdArray[i];
@@ -463,34 +520,47 @@
                     flag  = false;
                 }
             });
+
             if(!flag){
                 continue;
             }
+            var storeId = $("#salesStoreId").val();
+
             $.ajax({
                 type: "POST",
-                data: { colorId : colorId},
-                url: url_path +"/admin/product/get_product",
+                data: {
+                    colorId : colorId,
+                    storeId : storeId,
+                    salesOrderStatus : 1
+                },
+                url: url_path +"/admin/salesOrder/get_product",
                 success: function(data){
 
                     if (data.returnCode == 200 && data.returnMsg.productColorList.length > 0 ) {
                         if(isAddOrUpdate == "update"){
                             //修改
                             var productColor = data.returnMsg.productColorList[0];
+                            var colorDiscount = accDiv(productColor.colorDiscount,100);
                             $updateNode.find("td").eq(1).html(cufte(productColor.productName));
                             $updateNode.find("td").eq(2).html(cufte(productColor.colorName));
                             $updateNode.find("td").eq(3).html(cufte(productColor.colorBar));
-                            $updateNode.find("td").eq(4).find(".input-itemNum").val(1);
+                            $updateNode.find("td").eq(4).find(".input-itemProductDiscount").val(colorDiscount);
+                            $updateNode.find("td").eq(5).find(".input-itemNum").val(1);
+                            $updateNode.find("td").eq(6).find(".input-itemTotal").val(colorDiscount);
                         }else{
                             //添加
                             for(var i=0;i<data.returnMsg.productColorList.length;i++){
                                 var productColor = data.returnMsg.productColorList[i];
+                                var colorDiscount = accDiv(productColor.colorDiscount,100);
                                 var html = "";
                                 html +=  '<tr class="text-c '+ tr_node_msg +'">'
                                         +   '<td msg="'+ tr_node_msg +'">'+ tr_node_msg +'</td>'
                                         +   '<td>'+ cufte(productColor.productName) +'</td>'
                                         +   '<td>'+ cufte(productColor.colorName) +'</td>'
                                         +   '<td class="itemColorBar">'+ cufte(productColor.colorBar) +'</td>'
+                                        +   '<td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemProductDiscount" value="'+ colorDiscount +'"  placeholder="产品售价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999"></td>'
                                         +   '<td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="1"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()"></td>'
+                                        +   '<td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number decimal_input input-itemTotal" value="'+ colorDiscount +'"  placeholder="总价" onkeyup="keyFunDecimal($(this),9999999,0),syncProductNumber()" myMinVal="0" myMaxVal="9999999"></td>'
                                         +   '<td msg="'+ tr_node_msg +'">'
                                         +   '<a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;&nbsp;'
                                         +   '<a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>'
@@ -523,13 +593,15 @@
                                 }
                             }
                         }
+
+                        syncProductNumber();
                     }else{
-                        layer.msg("查询商品失败", {icon: 5, time: 3000});
+                        $("#errorMsg").append(data.resultMsg);
+//                        layer.msg("查询产品出错 { "+data.resultMsg+" } ", {icon: 5, time: 3000});
                     }
                     //合并单元格
                     tableMana(0);
-                    tableMana(6);
-                    syncProductNumber();
+                    tableMana(8);
                     layer.close(index);
                 },
                 error:function (XMLHttpRequest, textStatus, errorThrown){
@@ -566,6 +638,8 @@
                     +   '<td>-</td>'
                     +   '<td>-</td>'
                     +   '<td>-</td>'
+                    +   '<td>-</td>'
+                    +   '<td>-</td>'
                     +   '<td msg="'+ newCode +'">'
                     +   '<a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>'
                     +   '</td>'
@@ -597,7 +671,7 @@
         
         //合并单元格
         tableMana(0);
-        tableMana(6);
+        tableMana(8);
         syncProductNumber();
     }
 
@@ -613,9 +687,15 @@
                 flag = false;
             }
         });
+        var originalOrderTotal = Number($("#originalOrderTotal").html());
+        var nowOrderTotal = Number($("#nowOrderTotal").html());
+        if(originalOrderTotal != nowOrderTotal){
+            flag = false;
+        }
+
         var msg = "确定拆单?";
         if(!flag){
-            msg = '产品数量出现变动,是否继续拆单?';
+            msg = '产品数量和金额出现变动,是否继续拆单?';
         }
         layer.confirm(msg,function(index){
             toSubmitSplitOrder();
@@ -630,7 +710,16 @@
             var salesOrderItem = new Object();
             salesOrderItem.salesDealCode = $(this).find("td").eq(0).attr("msg");
             salesOrderItem.itemColorBar = bar;
-            salesOrderItem.itemNum = $(this).find("td").eq(4).find("input").val();
+            salesOrderItem.itemNum = $(this).find(".input-itemNum").val();
+
+            var itemProductDiscount = $(this).find(".input-itemProductDiscount").val();
+            itemProductDiscount = accMul(itemProductDiscount,100);
+            salesOrderItem.itemProductDiscount = itemProductDiscount;
+
+            var itemTotal = $(this).find(".input-itemTotal").val();
+            itemTotal = accMul(itemTotal,100);
+            salesOrderItem.itemTotal = itemTotal;
+
             orderItemArray.push(salesOrderItem);
         });
         var orderItemJson = JSON.stringify(orderItemArray);
@@ -704,7 +793,7 @@
             var code  = $(this).find("td").eq(3).html();
             var name  = $(this).find("td").eq(1).html();
             var colorName  = $(this).find("td").eq(2).html();
-            var number = $(this).find("td").eq(4).find("input").val();
+            var number = $(this).find("td").eq(5).find("input").val();
 
             var flag = false;
             for(var i=0;i<productArray.length;i++){
@@ -749,6 +838,36 @@
             }
         }
 
+        syncTotal();
+    }
+
+    /**
+     *同步金额
+     * type:  1.计算原价格   2.计算当前订单价格
+     */
+    function syncTotal(type) {
+        var totalAll = 0;
+        $("#allDay").find("tr").each(function() {
+            var discount = $(this).find(".input-itemProductDiscount").val();
+            var itemNum = $(this).find(".input-itemNum").val();
+            var total = accMul(discount,itemNum);
+
+           $(this).find(".input-itemTotal").val(total);
+            totalAll = accAdd(totalAll,total);
+        });
+        if(type == 1){
+            $("#nowOrderTotal").html(totalAll);
+        }
+        $("#nowOrderTotal").html(totalAll);
+
+        var originalOrderTotal =  $("#originalOrderTotal").html();
+        if(Number(originalOrderTotal) != totalAll){
+            $("#nowOrderTotal").css("color","#c00");
+            $("#nowOrderTotal").css("font-weight","bold");
+        }else{
+            $("#nowOrderTotal").css("color","#000");
+            $("#nowOrderTotal").css("font-weight","normal");
+        }
     }
 </script>
 </body>

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl

@@ -151,7 +151,7 @@
                     <input type="text" class="input-text" value="${order.salesAddressName!""}" placeholder="填写收件人姓名" id="salesAddressName" name="salesAddressName" datatype="*1-16" errormsg="联系人格式不正确!" >
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="${order.salesAddressTel!""}" placeholder="填写收件人手机号" id="salesAddressTel" name="salesAddressTel" datatype="*1-11" errormsg="联系人电话格式不正确!">
+                    <input type="text" class="input-text" value="${order.salesAddressTel!""}" placeholder="填写收件人手机号" id="salesAddressTel" name="salesAddressTel" datatype="*1-15" errormsg="联系人电话格式不正确!">
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <input type="text" class="input-text" value="${order.salesAddressPostcode!""}" placeholder="收件人邮政编码" id="salesAddressPostcode" name="salesAddressPostcode" datatype="*1-6" errormsg="收件人邮政编码格式不正确!">

+ 1 - 1
watero-rst-web/src/main/webapp/common/js/customer/customer.js

@@ -344,7 +344,7 @@ function initProduceType(){
                 var check = "checked";
                 for(var i=0;i<data.returnMsg.productTypeList.length;i++){
                     var produce = data.returnMsg.productTypeList[i];
-                    html += ' <div class="radio-box"  style="width: 180px;">' +
+                    html += ' <div class="radio-box"  style="width: 190px;">' +
                         '<input type="radio" class="single_loading"  id="produce-type-'+ i +'" name="typeId" typeCompany="'+ produce.typeCompany +'" complaintType="'+ produce.complaintType +'"  datatype="*" value="'+ produce.typeId +'"  '+ check +' nullmsg="请选择产品类型!" >' +
                         ' <label for="produce-type-'+ i +'">'+ produce.typeName +'</label>' +
                         ' </div>';