Jelajahi Sumber

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

liujiankang 5 tahun lalu
induk
melakukan
e4f2365546

+ 83 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -31,6 +31,7 @@ import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
@@ -149,12 +150,78 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transactional
     @Override
     public Integer updateOrderInfo(SalesOrder salesOrder) {
+        int flag = 0;
+        if(salesOrder.getSalesId()==null){
+            throw new RuntimeException("订单ID不存在!");
+        }
+
+        for (SalesOrderItem addItem:salesOrder.getSalesOrderItemList()) {
+            if(addItem.getItemNum() > 0 && addItem.getItemColorId() > 0){
+                ProductColor productColor = productService.getProduceColor(addItem.getItemColorId());
+                if(productColor == null){
+                    throw new RuntimeException("删除订单项失败-查询商品失败");
+                }
+                ////产品id
+                addItem.setItemProductId(productColor.getColorProductId());
+                addItem.setItemColorId(productColor.getColorId());
+                addItem.setItemProductType(productColor.getProductType());
+                addItem.setItemProductName(productColor.getProductName());
+                addItem.setItemProductPic(productColor.getColorPicture());
+                addItem.setItemProductColor(productColor.getColorName());
+                addItem.setItemColorBar(productColor.getColorBar());
+                addItem.setItemCreateTime(new Date());
+                addItem.setItemIsSource(1);
+                addItem.setItemOrderId(salesOrder.getSalesId());
+                //成本价
+                SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(addItem.getItemColorId());
+                if(supplierProduct != null){
+                    addItem.setItemCost(supplierProduct.getSpCost());
+                    addItem.setItemCostTotal(supplierProduct.getSpCost() * addItem.getItemNum());
+                }else{
+                    throw  new RuntimeException("确认订单失败-未查询到该产品("+ addItem.getItemProductName() +"-"+ addItem.getItemProductColor() +")的成本价格");
+                }
+            }else{
+                throw new RuntimeException("添加订单项失败-获取产品失败!");
+            }
+        }
+
+        SalesOrderItem soi = new SalesOrderItem();
+        soi.setItemOrderId(salesOrder.getSalesId());
+        List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(soi);
+//        List<SalesOrderItem> addsaleSOrderItemList = new ArrayList<>();
+        List<SalesOrderItem> updateSalesOrderItemList = new ArrayList<>();
+        List<SalesOrderItem>deleteSalesOrderItemList = new ArrayList<>();
+
+        for (SalesOrderItem oldSoi:salesOrderItemList) {
+            boolean isHave = false;
+            int deleteId = 0;
+            SalesOrderItem updateItem = null;
+            for (int i = 0; i < salesOrder.getSalesOrderItemList().size(); i++) {
+                SalesOrderItem temp = salesOrder.getSalesOrderItemList().get(i);
+                if(Objects.equals(temp.getItemId(), oldSoi.getItemId())){
+                    isHave = true;
+                    deleteId = i;
+                    updateItem = temp;
+                    break;
+                }
+            }
+            if(isHave){
+                updateSalesOrderItemList.add(updateItem);
+                salesOrder.getSalesOrderItemList().remove(deleteId);
+            }else{
+                deleteSalesOrderItemList.add(oldSoi);
+            }
+        }
+
         //删除订单项
-        int flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
-        if (flag <= 0) {
-            throw new RuntimeException("删除订单项失败!");
+        for (SalesOrderItem deleteId:deleteSalesOrderItemList) {
+            flag = salesOrderMapper.delOrderItemByItemId(deleteId.getItemId());
+            if (flag <= 0) {
+                throw new RuntimeException("修改订单失败!");
+            }
         }
 
+        //计算价格
         calculationTotal(salesOrder,salesOrder.getSalesOrderItemList());
 
         //修改订单
@@ -163,11 +230,21 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             throw new RuntimeException("修改订单失败!");
         }
 
+        //批量修改订单
+        if(updateSalesOrderItemList != null && updateSalesOrderItemList.size() > 0) {
+            for (SalesOrderItem salesOrderItem : updateSalesOrderItemList) {
+                flag = salesOrderMapper.updateOrderItemObj(salesOrderItem);
+            }
+        }
+
         //批量添加订单项数据
-        flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
-        if (flag <= 0) {
-            throw new RuntimeException("增加订单项失败!");
+        if(salesOrder.getSalesOrderItemList() != null && salesOrder.getSalesOrderItemList().size() > 0){
+            flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
+            if (flag <= 0) {
+                throw new RuntimeException("增加订单项失败!");
+            }
         }
+
         // 更新Redis缓存
         Map<String,String> map = System.getenv();
         String name = map.get("COMPUTERNAME");

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

@@ -208,6 +208,12 @@ public interface SalesOrderMapper {
      * @return
      */
     Integer delOrderItem(Integer salesId);
+    /**
+     *根据订单项ID删除订单项
+     * @param salesId
+     * @return
+     */
+    Integer delOrderItemByItemId(Integer itemId);
 
     /**
      * 批量确认订单

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

@@ -491,37 +491,20 @@
     <!-- 订单项集合 -->
   <select id="listSalesOrderItem" resultType="SalesOrderItem" parameterType="SalesOrderItem" >
         SELECT
-            item_id,
-            item_order_id,
-            item_product_id,
-            item_num,
-            item_color_id,
-            item_product_type,
-            item_product_name,
-            item_product_pic,
-            item_product_color,
-            item_color_bar,
-            item_product_price,
-            item_product_discount,
-            item_is_source,
-            item_total,
-              item_cost,
-              item_cost_total,
+            soi.*,
             item_create_time,
             pi.product_abbreviation,
             pc.color_abbreviation,
             pc.color_is_weight,
             pc.color_is_machine,
-            item_return_num,
             oi.sales_orderId,
             pt.type_name
         FROM
-            tb_rst_sales_order_item
-
-      LEFT JOIN tb_rst_product_color pc ON tb_rst_sales_order_item.item_color_id = pc.color_id
+            tb_rst_sales_order_item soi
+      LEFT JOIN tb_rst_product_color pc ON soi.item_color_id = pc.color_id
       LEFT JOIN tb_rst_product_info pi ON pc.color_product_id = pi.product_id
-      LEFT JOIN tb_rst_sales_order_info oi ON tb_rst_sales_order_item.item_order_id = oi.sales_id
-      LEFT JOIN tb_rst_product_type pt ON pt.type_id = tb_rst_sales_order_item.item_product_type
+      LEFT JOIN tb_rst_sales_order_info oi ON soi.item_order_id = oi.sales_id
+      LEFT JOIN tb_rst_product_type pt ON pt.type_id = soi.item_product_type
       <where>
           <if test="itemOrderId !=null and itemOrderId !=''">
               AND item_order_id = #{itemOrderId}
@@ -1355,6 +1338,11 @@
     WHERE item_order_id = #{salesId}
   </delete>
 
+    <delete id="delOrderItemByItemId" parameterType="Integer">
+        DELETE FROM tb_rst_sales_order_item
+        WHERE item_id = #{itemId}
+    </delete>
+
     <delete id="delOrderById" parameterType="List" >
         delete FROM
         tb_rst_sales_order_info

+ 7 - 32
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -811,15 +811,19 @@ public class AdminSalesOrderController {
             }
         }
 
-        String dealCode = generateKeyUtil.getSalesOrderKey();   //获取交易号
+        if(salesOrder.getSalesDealCode() != null && !"".equals(salesOrder.getSalesDealCode())){
+            salesOrder.setSalesDealCode(salesOrder.getSalesDealCode().trim());  //交易号
+        }else{
+            String dealCode = generateKeyUtil.getSalesOrderKey();   //获取交易号
+            salesOrder.setSalesDealCode(dealCode);  //交易号
+        }
+        salesOrder.setSalesOrderId(salesOrder.getSalesDealCode());  //订单号
         salesOrder.setSalesOpenId("0"); //身份证号/openid
         salesOrder.setSalesPledgeMoney(0);  ///押金金额
         salesOrder.setSalesRemainDeposit(0);     //待提取金额
         salesOrder.setSalesStatus(0);   //确认状态 未确认
         salesOrder.setSalesSendType(2); //2:物流发货
         salesOrder.setSalesCreateTime(new Date());
-        salesOrder.setSalesOrderId(dealCode);  //订单号
-        salesOrder.setSalesDealCode(dealCode);  //交易号
         salesOrder.setSalesType(1); //订单类型  1:购买2:租赁
         salesOrder.setSalesOrderStatus(1);   //订单状态 订单状态:1:正常 2:换货 3:退货  4:维修  5:补发
         salesOrder.setSalesShippingStatus(0);      //发货状态 0(未发货
@@ -966,35 +970,6 @@ public class AdminSalesOrderController {
 
         JSONArray jsonArray = JSONArray.fromObject(orderItemString);
         List salesOrderItemList = ((List)JSONArray.toCollection(jsonArray, SalesOrderItem.class));
-        for (Object temp:salesOrderItemList) {
-            SalesOrderItem salesOrderItem = (SalesOrderItem) temp;
-            if(salesOrderItem.getItemNum() > 0 && salesOrderItem.getItemColorId() > 0){
-                ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemColorId());
-                if(productColor == null){
-                    return  new ResponseJson(500, "商品不存在", 500);
-                }
-                ////产品id
-                salesOrderItem.setItemProductId(productColor.getColorProductId());
-                salesOrderItem.setItemColorId(productColor.getColorId());
-                salesOrderItem.setItemProductType(productColor.getProductType());
-                salesOrderItem.setItemProductName(productColor.getProductName());
-                salesOrderItem.setItemProductPic(productColor.getColorPicture());
-                salesOrderItem.setItemProductColor(productColor.getColorName());
-                ///产品SKU码(百胜)
-                salesOrderItem.setItemColorBar(productColor.getColorBar());
-//                salesOrderItem.setItemProductPrice(productColor.getColorPrice());
-//                salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
-                salesOrderItem.setItemCreateTime(new Date());
-                salesOrderItem.setItemIsSource(1);
-                //---- updata new add
-                salesOrderItem.setItemOrderId(salesOrder.getSalesId());
-                if(salesOrderItem.getItemCost() != null){
-                    salesOrderItem.setItemCostTotal(salesOrderItem.getItemCost() * salesOrderItem.getItemNum());
-                }
-            }else{
-                return  new ResponseJson(500, "添加商品错误", 500);
-            }
-        }
         salesOrder.setSalesOrderItemList(salesOrderItemList);
 
         if(salesOrder.getSalesBatchId() == null || "1".equals(salesOrder.getSalesBatchId())){

+ 8 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl

@@ -104,9 +104,12 @@
             </div>
 
             <div class="row cl">
-                <label class="form-label col-1 col-sm-1">批次编号:</label>
+                <label class="form-label col-1 col-sm-1">选填:</label>
                 <div class="formControls col-2 col-sm-2" style="">
-                    <input type="text" class="input-text trim_input" value="" placeholder="填写批次编号,新增可不填。" id="salesBatchId" name="salesBatchId">
+                    <input type="text" class="input-text trim_input" value=""  placeholder="填写交易号,可不填" id="salesDealCode" name="salesDealCode">
+                </div>
+                <div class="formControls col-2 col-sm-2" style="">
+                    <input type="text" class="input-text trim_input" value="" placeholder="填写批次编号,可不填" id="salesBatchId" name="salesBatchId">
                 </div>
             </div>
 
@@ -182,6 +185,9 @@
                     <span id="addrssMsg"></span>
                 </div>
                 <input type="hidden" name="salesAddressInfo" id="salesAddressInfo" value="">
+                <div class="formControls col-1 col-sm-1" style="    padding-top: 19px;">
+                    <input type="button" style="color: #32a3d8;border: 1px solid #32a3d8;" class="btn add-order-button" onclick="setaddressNew()" value="解析地址" >
+                </div>
             </div>
 
 

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

@@ -385,12 +385,12 @@
                        }
                    }
                }
-               <#--<#if admin??  >-->
-                  <#--/// var adminDept = ${admin.adminDept!''};-->
-                  <#--// if(adminDept == 1){-->
-                   <#--//    tr.find(".edit_order_target").show();-->
-                   <#--//}-->
-               <#--</#if>-->
+               <#if admin??  >
+                  var adminDept = ${admin.adminDept!''};
+                  if(adminDept == 1){
+                      tr.find(".edit_order_target").show();
+                  }
+               </#if>
            }
        }
     });

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

@@ -239,6 +239,7 @@
                         <tbody id="add_product">
                             <#list order.salesOrderItemList as item>
                                 <tr class="text-c">
+                                    <input type="hidden" class="item_id" id="" value="${item.itemId}">
                                     <input type="hidden" class="color_id" id="" value="${item.itemColorId}">
                                     <td>${item.itemProductName}</td>
                                     <td>${item.itemProductColor}</td>

+ 25 - 15
watero-rst-web/src/main/webapp/common/js/common/UnlimitedLevelContact.js

@@ -8,7 +8,7 @@
     var UnlimitedLevelContact = function(ele,opt) {
         this.$element = ele,
         this.ulcInfo = {
-            urlPrefix : "",
+            urlPrefix : '',
             ulcLevel : [],
             /*配置删除的字符,用于设置name的时候,需要删除某些字符更好确认选项*/
             judgeNameShield : [],
@@ -25,7 +25,7 @@
             var ulc = this;
             this.initUlcLevel();
             if(this.options.ulcLevel.length > 0){
-                this.initUlcHtml(0,"");
+                this.initUlcHtml(0,'');
             }
             return this;
         },
@@ -147,7 +147,6 @@
                     node.isGetNameCorrect = isGetNameCor;  //标记未获取到正确的select选项
 
                 node.ulcId = nodeUlcId;
-                $(node.ulcNode).val(nodeUlcId);
 
                 //标志已经加载
                 node.isLoad = true;
@@ -183,6 +182,12 @@
                         ulc.allBackData();
                     }
                 }
+
+                //设置值
+                $(node.ulcNode).val(nodeUlcId);
+                //点击事件-触发回调函数
+                ulc.backData(level);
+
                 // 递归查询下一级
                 if(ulc.options.ulcLevel.length-1 > level ){
                     ulc.initUlcHtml(level+1,node.ulcId);
@@ -295,22 +300,22 @@
                 name = node.ulcName;
             }
             if(!this.ulcIsEmpty(name)){
-                return "";
+                return '';
             }
             var ulc = this,oldNameList = new Array();
             //将name去除judgeNameShield的字符后变成一个集合
             for (var i=0;i<ulc.options.judgeNameShield.length;i++){
-                var oldName = name.replace(ulc.options.judgeNameShield[i],"");
+                var oldName = name.replace(ulc.options.judgeNameShield[i],'');
                 oldNameList.push(oldName);
             }
             $.unique(oldNameList.sort());   //排序,去重
-            var max = 0,maxValue="";
+            var max = 0,maxValue='';
             $node.find("option").each(function(){
                 var number=0,thisNameList=new Array();
                 var thisName = $(this).text();
                 //将thisNewName去除judgeNameShield的字符后变成一个集合
                 for (var i=0;i<ulc.options.judgeNameShield.length;i++){
-                    var thisNewName = thisName.replace(ulc.options.judgeNameShield[i],"");
+                    var thisNewName = thisName.replace(ulc.options.judgeNameShield[i],'');
                     thisNameList.push(thisNewName);
                 }
                 $.unique(thisNameList.sort());   //排序,去重
@@ -355,10 +360,16 @@
         },
         backData:function (level) {
             //绑定过单个select的回调函数,该select的option值选中,会被调用,并返回填充该select值的集合
+            this.arrangeData();
             this.options.ulcLevel[level].callback(this.options.data[level]);
         },
         allBackData:function () {
             //绑定全局select的回调函数,只要有select的option值被选中,就会被调用,并返回所有填充该select值的集合,并且一直被存储
+            this.arrangeData();
+            this.options.allCallback(this.options.data);
+        },
+        arrangeData:function () {
+            //绑定全局select的回调函数,只要有select的option值被选中,就会被调用,并返回所有填充该select值的集合,并且一直被存储
             var ulc = this;
             for (var i=0;i<ulc.options.ulcLevel.length;i++){
                 var node = ulc.options.ulcLevel[i];
@@ -371,7 +382,6 @@
                     }
                 });
             }
-            this.options.allCallback(ulc.options.data);
         },
         setUlcCallback:function (fun,level) {
             //设置单个回调函数
@@ -407,12 +417,12 @@
         },
         ulcCufte:function(val) {
             if (undefined == val || null == val||typeof val == undefined || typeof val == 'undefined'|| 'undefined' == val)
-                val = "";
+                val = '';
             return val;
         },
         /*空值返回false*/
         ulcIsEmpty:function (val) {
-            if(this.ulcCufte(val) == "")
+            if(this.ulcCufte(val) == '')
                 return false;
             return true;
         }
@@ -505,7 +515,7 @@ function init_ulc(node){
  var $ulc1 = $(".init_ulc").find(".ulc_level_1");
  var $ulc2 = $(".init_ulc").find(".ulc_level_2");
  var ulc = $(".init_ulc").initUlc({
-            urlPrefix: "",          // 根路径
+            urlPrefix: '',          // 根路径
             judgeNameShield : ["x1","x2"],      //在比对option的text的值时,需要去掉某些值,才能展示出包含的参数,如"省","市","县","乡","镇","市","自治区" -- 可选
             allCallback: function xx(data){}        //回调函数名称,可选 -- 所有的select点击,都会触发此函数,回调的值为所有的selece选中的data数据 -- 可选
             ulcLevel :  [           //select的集合
@@ -543,12 +553,12 @@ function init_ulc(node){
  * b:使用html的属性来携带参数,直接初始化
  *   html :
  <div class="init_ulc" code="xxxcode" msg="xxxMsg" data="xxxList">
- <select  class="select ulc_select" ulcId=""  ulcName=""
- ulcURL="/getselect1" ulcList="data1List" ulcValName="xxxName" ulcValId="xxxId"   ulcMsg=""
+ <select  class="select ulc_select" ulcId=''  ulcName=''
+ ulcURL="/getselect1" ulcList="data1List" ulcValName="xxxName" ulcValId="xxxId"   ulcMsg=''
  ulcIsFristSelect="1" ulcFristSelectMsg="请选择XXX">
  </select>
- <select  class="select ulc_select" ulcId=""  ulcName=""
- ulcURL="/getselect2" ulcList="data2List" ulcValName="xxxName" ulcValId="xxxId"  ulcMsg=""
+ <select  class="select ulc_select" ulcId=''  ulcName=''
+ ulcURL="/getselect2" ulcList="data2List" ulcValName="xxxName" ulcValId="xxxId"  ulcMsg=''
  ulcIsFristSelect="1" ulcFristSelectMsg="请选择XXX">
  </select>
  </div>

+ 46 - 2
watero-rst-web/src/main/webapp/common/js/salesOrder/salesOrder.js

@@ -65,6 +65,20 @@ $(function(){
             var flag = false;
         },
         beforeSubmit: function (curform) {  //验证通过之后执行的函数
+
+            var regx = /^\w{6,32}$/
+            var salesDealCode = $("#salesDealCode").val();
+            var salesBatchId = $("#salesBatchId").val();
+            if(isEmpty(salesDealCode) && !regx.test(salesDealCode)){
+                vailErrorMsg_5($("#salesDealCode"),"交易号输入错误,只支持6-32位英文字母或数字!");
+                return false;
+            }
+            var regxBatch = /^\w{16,20}$/
+            if(isEmpty(salesBatchId) && !regxBatch.test(salesBatchId)){
+                vailErrorMsg_5($("#salesBatchId"),"批次输入错误,只支持16-20位英文字母或数字!");
+                return false;
+            }
+
             if(!isNameCorrect){
                 var falg = ulc.getIsNameCorrect();
                 if(!falg){
@@ -75,8 +89,6 @@ $(function(){
                 }
             }
 
-
-
             //检测颜色与店铺之间关系
             if(!storeProductColor()){
                 vailErrorMsg_3($("#product_color"),"店铺与商品信息不匹配!");
@@ -100,6 +112,7 @@ $(function(){
             var orderItemArray = new Array();
             $("#add_product").find("tr").each(function(){
                 var orderItem = new Object();
+                orderItem.itemId = cufte($(this).find(".item_id").val());
                 orderItem.itemColorId = $(this).find(".color_id").val();
                 orderItem.itemNum = $(this).find(".item-num").val();
                 orderItem.itemProductPrice = accMul($(this).find(".color_price").val(),100);
@@ -506,4 +519,35 @@ function sharePrice(){
  */
 function setPostcode(data) {
     $("#salesAddressPostcode").val(data[2].postcode);
+}
+
+/**
+ * 解析地址
+ */
+var ADDRESSDESCTEXT = '';
+function setaddressNew() {
+    var addressDesc = $("#addressDesc").val();
+    ADDRESSDESCTEXT = addressDesc;
+    $("#addrssMsg").css("color","#000");
+    $("#addrssMsg").html('原地址:'+ addressDesc);
+    ulc.setUlcCallback(showAddres,2);
+    ulc.setUlcByName(0,addressDesc,addressDesc,addressDesc);
+}
+
+/**
+ * 解析地址-回调方法
+ */
+function showAddres(data) {
+    var  district = data.district;
+    if(isEmpty(ADDRESSDESCTEXT)){
+        var reg =  /(1[\d]{10})/g;
+        var num = ADDRESSDESCTEXT.match(reg)
+        if(isEmpty(num) && num.length>0){
+            $("#salesAddressTel").val(num[0]);
+        }
+        if(ADDRESSDESCTEXT.indexOf(district) > -1){
+            var text =   ADDRESSDESCTEXT.substring(ADDRESSDESCTEXT.indexOf(district)+district.length,ADDRESSDESCTEXT.length);
+            $("#addressDesc").val(text.trim());
+        }
+    }
 }