wangxiaoming il y a 5 ans
Parent
commit
cfcd895c1b

+ 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;
+    }
 }

+ 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>
 
 

+ 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();

+ 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) >

+ 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="收件人邮政编码格式不正确!">