Просмотр исходного кода

订单付款到发货流程功能的调整

hulh 8 лет назад
Родитель
Сommit
e6416d4b65

+ 65 - 0
src/main/java/com/uas/platform/b2c/logistics/constant/LogisticsType.java

@@ -0,0 +1,65 @@
+package com.uas.platform.b2c.logistics.constant;
+
+/**
+ * Created by hulh on 2017/9/20.
+ * 物流方面的状态码
+ */
+public enum LogisticsType {
+	/**
+	 * {@code 1201 适用于普通订单}
+	 */
+	Rule_Order_Normal(1201, "普通订单"),
+	/**
+	 * {@code 1202 适用于预售订单}
+	 */
+	Rule_Order_PreSale(1202, "预售订单"),
+	/**
+	 * {@code 1203 适用于发票}
+	 */
+	Rule_Invoice(1203, "发票"),
+	/**
+	 * {@code 1301 适用于所有用户}
+	 */
+	Rule_User_All(1301, "所有用户");
+
+
+	private LogisticsType(int value, String phrase) {
+		this.value = value;
+		this.phrase = phrase;
+	}
+	private final int value;
+
+	private final String phrase;
+
+	public int getValue() {
+		return this.value;
+	}
+
+	public String getPhrase() {
+		return this.phrase;
+	}
+
+	/**
+	 * @param statusCode 状态的编码
+	 * @return 状态
+	 * @throws IllegalArgumentException
+	 *             如果statusCode不存在的话
+	 */
+	public static LogisticsType valueOf(int statusCode) {
+		for (LogisticsType status : values()) {
+			if (status.value == statusCode) {
+				return status;
+			}
+		}
+		throw new IllegalArgumentException("没有与编号 [" + statusCode + "]匹配的状态");
+	}
+
+	/**
+	 * 返回状态码的编号
+	 * @return
+	 */
+	@Override
+	public String toString() {
+		return Integer.toString(value);
+	}
+}

+ 41 - 0
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrder.java

@@ -99,6 +99,24 @@ public class InvoiceFOrder extends Document implements Serializable {
 	@Column(name = "in_delivery_type")
 	@Column(name = "in_delivery_type")
 	private Integer deliveryType;
 	private Integer deliveryType;
 
 
+	/**
+	 * 适用配送规则
+	 */
+	@Column(name = "in_rule", length = 2000)
+	private String jsonRule;
+
+	/**
+	 * 自提点信息
+	 */
+	@Column(name = "in_take_self", length = 2000)
+	private String jsonTakeSelf;
+
+	/**
+	 * 运费
+	 */
+	@Column(name = "in_fare")
+	private Double fare;
+
 	/**
 	/**
 	 * 订单备注
 	 * 订单备注
 	 */
 	 */
@@ -443,4 +461,27 @@ public class InvoiceFOrder extends Document implements Serializable {
 		this.sendstatus = sendstatus;
 		this.sendstatus = sendstatus;
 	}
 	}
 
 
+	public String getJsonRule() {
+		return jsonRule;
+	}
+
+	public void setJsonRule(String jsonRule) {
+		this.jsonRule = jsonRule;
+	}
+
+	public String getJsonTakeSelf() {
+		return jsonTakeSelf;
+	}
+
+	public void setJsonTakeSelf(String jsonTakeSelf) {
+		this.jsonTakeSelf = jsonTakeSelf;
+	}
+
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
 }
 }

+ 13 - 1
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFOrderServiceImpl.java

@@ -170,7 +170,7 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 			order.setLgtId(inF.getLogistics().getId());
 			order.setLgtId(inF.getLogistics().getId());
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 			order.setDeliverTime(sdf.format(new Date()));
 			order.setDeliverTime(sdf.format(new Date()));
-			order.setDeliverytype(Type.Delivery_ByUU_Code.value());
+//			order.setDeliverytype(Type.Delivery_ByUU_Code.value());
 			order.setJsonSdAddress(addr);
 			order.setJsonSdAddress(addr);
 			Set<OrderDetail> orderDetails = order.getOrderDetails();
 			Set<OrderDetail> orderDetails = order.getOrderDetails();
 			for (OrderDetail orderDetail : orderDetails) {
 			for (OrderDetail orderDetail : orderDetails) {
@@ -351,9 +351,21 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 		if(detno == 1) {
 		if(detno == 1) {
 			throw new IllegalOperatorException("当前订单的明细状态没有已出货的状态,不能转出货单");
 			throw new IllegalOperatorException("当前订单的明细状态没有已出货的状态,不能转出货单");
 		}
 		}
+		invoice.setFare(order.getFare());
+		//设置配送规则和自提点信息
+		if (order.getJsonRule() != null){
+			invoice.setJsonRule(order.getJsonRule());
+		}
+		if (order.getJsonTakeSelf() != null){
+			invoice.setJsonTakeSelf(order.getJsonTakeSelf());
+		}
 		invoice.setTaxes(taxes);
 		invoice.setTaxes(taxes);
 		invoice.setPrice(prices);
 		invoice.setPrice(prices);
 		invoice.setNumber(number);
 		invoice.setNumber(number);
+		/**
+		 * 加入运费
+		 */
+		ensurePrice = DoubleArith.add(ensurePrice, invoice.getFare());
 		invoice.setEnsurePrice(ensurePrice);
 		invoice.setEnsurePrice(ensurePrice);
 		invoice.setTobeshipped(userUU);
 		invoice.setTobeshipped(userUU);
 		invoice.setInvoiceFOrderDetails(iDetails);
 		invoice.setInvoiceFOrderDetails(iDetails);

+ 7 - 6
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java

@@ -10,6 +10,7 @@ import com.uas.platform.b2c.common.account.model.TradeLog;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.constant.Type;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.TradeBufferedLogger;
 import com.uas.platform.b2c.core.support.log.TradeBufferedLogger;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
@@ -55,7 +56,6 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.EncodingRulesConstant;
 import com.uas.platform.core.model.EncodingRulesConstant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.model.Status;
-import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
@@ -388,10 +388,6 @@ public class PurchaseServiceImpl implements PurchaseService {
 		purchase.setCurrency(crName);
 		purchase.setCurrency(crName);
 		JSONObject object = FastjsonUtils.fromJson(orderFromCust.getOrderRemark(), JSONObject.class);
 		JSONObject object = FastjsonUtils.fromJson(orderFromCust.getOrderRemark(), JSONObject.class);
 		purchase.setPurchaseRemark(object.getString(orderFromCust.getStoreid()));//绑定评论
 		purchase.setPurchaseRemark(object.getString(orderFromCust.getStoreid()));//绑定评论
-		purchase.setSendType(orderFromCust.getDeliverytype());
-		if (orderFromCust.getJsonTakeSelf() != null){
-			purchase.setJsonTakeSelf(orderFromCust.getJsonTakeSelf());
-		}
 		purchase.setSellerenuu(enuu);
 		purchase.setSellerenuu(enuu);
 		purchase.setStoreid(orderFromCust.getStoreid());
 		purchase.setStoreid(orderFromCust.getStoreid());
 		//如果是优软代售的。
 		//如果是优软代售的。
@@ -416,6 +412,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 			purchase.setInvoiceAddress(FastjsonUtils.toJson(billOne.get(0)));
 			purchase.setInvoiceAddress(FastjsonUtils.toJson(billOne.get(0)));
 			purchase.setInvoicetitle(billOne.get(0).getHead());
 			purchase.setInvoicetitle(billOne.get(0).getHead());
 			purchase.setFare(0d);//默认为0
 			purchase.setFare(0d);//默认为0
+			purchase.setSendType(Type.Delivery_ByUU_Code.value());//寄售类型统一为第三方配送
 		}else {
 		}else {
 			if(orderFromCust.getBuyerentername() == null) {
 			if(orderFromCust.getBuyerentername() == null) {
 				Enterprise enterprise = enterpriseDao.findByUu(orderFromCust.getBuyerenuu());
 				Enterprise enterprise = enterpriseDao.findByUu(orderFromCust.getBuyerenuu());
@@ -433,9 +430,13 @@ public class PurchaseServiceImpl implements PurchaseService {
 			purchase.setInvoicetype(orderFromCust.getInvoicetype());
 			purchase.setInvoicetype(orderFromCust.getInvoicetype());
 			purchase.setInvoiceAddress(orderFromCust.getInvoiceAddress());
 			purchase.setInvoiceAddress(orderFromCust.getInvoiceAddress());
 			purchase.setInvoicetitle(orderFromCust.getInvoicetitle());
 			purchase.setInvoicetitle(orderFromCust.getInvoicetitle());
-			//如果是自营的,则保存配送规则和运费信息
+			//如果是自营的,则保存配送规则和运费信息,自提点信息和配送方式
 			purchase.setFare(orderFromCust.getFare());
 			purchase.setFare(orderFromCust.getFare());
 			purchase.setJsonRule(orderFromCust.getJsonRule());
 			purchase.setJsonRule(orderFromCust.getJsonRule());
+			purchase.setSendType(orderFromCust.getDeliverytype());
+			if (orderFromCust.getJsonTakeSelf() != null){
+				purchase.setJsonTakeSelf(orderFromCust.getJsonTakeSelf());
+			}
 		}
 		}
 		List<User> users = userDao.findUserByUserUU(purchase.getBuyeruu());
 		List<User> users = userDao.findUserByUserUU(purchase.getBuyeruu());
 		User user = null;
 		User user = null;

+ 2 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js

@@ -587,7 +587,7 @@ define([ 'app/app' ], function(app) {
                                 items: null,
                                 items: null,
                                 selectedNum : 0,
                                 selectedNum : 0,
                                 folded: true
                                 folded: true
-                            }
+                            };
                             $scope.hmtChild.items = convert(v, $scope.hmtChild);
                             $scope.hmtChild.items = convert(v, $scope.hmtChild);
                             var hmtArr = [];
                             var hmtArr = [];
                             hmtArr.push($scope.hmtChild);
                             hmtArr.push($scope.hmtChild);
@@ -603,6 +603,7 @@ define([ 'app/app' ], function(app) {
         $scope.chooseAddress = function () {
         $scope.chooseAddress = function () {
             $scope.chooseBox = true;
             $scope.chooseBox = true;
             $scope.tree = $scope.tree ? $scope.tree : new TreeData($scope.cityData);
             $scope.tree = $scope.tree ? $scope.tree : new TreeData($scope.cityData);
+            console.log($scope.tree.$data);
             $scope.tree.newInitData($scope.mapArray);
             $scope.tree.newInitData($scope.mapArray);
         }
         }
 
 

+ 17 - 9
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_delivery_ctrl.js

@@ -57,6 +57,12 @@ define(['app/app'], function(app) {
             $scope.showCompanyName = false;
             $scope.showCompanyName = false;
         };
         };
 
 
+        //显示默认的选项
+        $scope.showDefaultText = function () {
+            $scope.logistics.companyName = '请选择物流公司';
+            $scope.companyObject = {};
+        };
+
         // $scope.showCompanyName = false;
         // $scope.showCompanyName = false;
 
 
         $scope.changeShowLogistics = function () {
         $scope.changeShowLogistics = function () {
@@ -393,8 +399,8 @@ define(['app/app'], function(app) {
             // }
             // }
             var sendInfo = {};
             var sendInfo = {};
             sendInfo.sendType = $scope.checkinvoice.sendType;
             sendInfo.sendType = $scope.checkinvoice.sendType;
-            sendInfo.logisticsInfo = {};
             if ($scope.logistics.companyName && $scope.logistics.number){
             if ($scope.logistics.companyName && $scope.logistics.number){
+                sendInfo.logisticsInfo = {};
                 sendInfo.logisticsInfo.companyName = $scope.logistics.companyName;
                 sendInfo.logisticsInfo.companyName = $scope.logistics.companyName;
                 sendInfo.logisticsInfo.number = $scope.logistics.number;
                 sendInfo.logisticsInfo.number = $scope.logistics.number;
             }
             }
@@ -412,7 +418,7 @@ define(['app/app'], function(app) {
             // }
             // }
             sendInfo.jsonSdAddress = angular.toJson($scope.jsonSdAddress);
             sendInfo.jsonSdAddress = angular.toJson($scope.jsonSdAddress);
             InvoiceFPurchase.saveInvoiceFPurchase({id : $scope.checkinvoice.id}, sendInfo, function(data) {
             InvoiceFPurchase.saveInvoiceFPurchase({id : $scope.checkinvoice.id}, sendInfo, function(data) {
-                toaster.pop("success", "信息", "保存成功,返回出订单管理界面");
+                toaster.pop("success", "信息", "发货成功");
                 // TODO 这边要停5秒钟之后,在跳转到出货单管理界面
                 // TODO 这边要停5秒钟之后,在跳转到出货单管理界面
                 /*var fromPage = window.sessionStorage.getItem("orderAdmin");
                 /*var fromPage = window.sessionStorage.getItem("orderAdmin");
                  if(fromPage == "invoiceProofing") {
                  if(fromPage == "invoiceProofing") {
@@ -491,13 +497,11 @@ define(['app/app'], function(app) {
                     return false;
                     return false;
                 }
                 }
             }else {
             }else {
-                if ($scope.logistics.companyName && !$scope.logistics.number){
-                    toaster.pop("error", "注意", '请完善快递信息');
-                    return false;
-                }
-                if (!$scope.logistics.companyName && $scope.logistics.number){
-                    toaster.pop("error", "注意", '请完善快递信息');
-                    return false;
+                if ($scope.logistics.companyName && $scope.logistics.companyName != '请选择物流公司'){
+                    if (!$scope.logistics.number){
+                        toaster.pop("error", "注意", '请完善快递信息');
+                        return false;
+                    }
                 }
                 }
                 if ($scope.logistics.number){
                 if ($scope.logistics.number){
                     var patt = new RegExp("^[A-Za-z0-9]+$");
                     var patt = new RegExp("^[A-Za-z0-9]+$");
@@ -505,6 +509,10 @@ define(['app/app'], function(app) {
                         toaster.pop("error", "注意", '请输入正确的物流单号');
                         toaster.pop("error", "注意", '请输入正确的物流单号');
                         return false;
                         return false;
                     }
                     }
+                    if (!$scope.logistics.companyName || $scope.logistics.companyName == '请选择物流公司'){
+                        toaster.pop("error", "注意", '请完善快递信息');
+                        return false;
+                    }
                 }
                 }
             }
             }
             return true;
             return true;

+ 7 - 7
src/main/webapp/resources/view/vendor/forstore/vendor_delivery.html

@@ -633,7 +633,7 @@
                     <dd class="oder-remark" ng-class="{'length3': checkinvoice.invoiceFPurchaseDetails.length > 3}">
                     <dd class="oder-remark" ng-class="{'length3': checkinvoice.invoiceFPurchaseDetails.length > 3}">
 						<span style="width: 100%; padding-left: 20px;">
 						<span style="width: 100%; padding-left: 20px;">
 							<em>订单备注:</em>
 							<em>订单备注:</em>
-							<i class="fl" ng-bind="checkinvoice.purchaseRemark || '无'">用便宜的物流最好!</i>
+							<i class="fl" ng-bind="checkinvoice.infpuRemark || '无'">用便宜的物流最好!</i>
                             <!--<input type="text"  class="form-control" placeholder="请填写订单备注" ng-model="order.orderRemark"/>-->
                             <!--<input type="text"  class="form-control" placeholder="请填写订单备注" ng-model="order.orderRemark"/>-->
 						</span>
 						</span>
                     </dd>
                     </dd>
@@ -663,13 +663,17 @@
                         <!--<span><em ng-bind="freight | number : 2 | currencySysmbol : purchase.currency">¥20.00</em></span>-->
                         <!--<span><em ng-bind="freight | number : 2 | currencySysmbol : purchase.currency">¥20.00</em></span>-->
                     </dd>
                     </dd>
                     <dd class="line60 logistic-input" ng-class="{'h125': checkinvoice.sendType==1303}">
                     <dd class="line60 logistic-input" ng-class="{'h125': checkinvoice.sendType==1303}">
+                        <div  class="logistic-input-01" ng-if="checkinvoice.sendType==1303">
+                            <i ng-bind="takeSelf.takename"></i> &nbsp;&nbsp;营业时间:<em ng-bind="takeSelf.businesstime">周一至周五 8:30-18:00</em><br/>
+                            地址:<em ng-bind="takeSelf.area">广东省  深圳市  南山区</em>&nbsp;&nbsp;<em ng-bind="takeSelf.detailAddress">科技园英唐大厦6楼 优软商城科技园英唐大厦6楼 优软商城</em>
+                        </div>
                         <div style="width: 100%;margin: 0 auto;height: 45px;">
                         <div style="width: 100%;margin: 0 auto;height: 45px;">
                             <span style="width: 10%; margin-left: 22px;">物流公司 :&nbsp;</span>
                             <span style="width: 10%; margin-left: 22px;">物流公司 :&nbsp;</span>
                             <span class="input-ul">
                             <span class="input-ul">
                                 <input id="addr" style="border: #5078cb 1px solid;" type="text" class="form-control select-adder" ng-focus="getItemFocus()" ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off" maxlength="15" readonly="readonly" >
                                 <input id="addr" style="border: #5078cb 1px solid;" type="text" class="form-control select-adder" ng-focus="getItemFocus()" ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off" maxlength="15" readonly="readonly" >
                                 <!--<em name="companyName" ng-click="changeShowLogistics()" class="btn-position"><i class="fa fa-caret-down" aria-hidden="true"></i></em>-->
                                 <!--<em name="companyName" ng-click="changeShowLogistics()" class="btn-position"><i class="fa fa-caret-down" aria-hidden="true"></i></em>-->
                                 <ul id="ulContent" ng-if="showCompanyName" class="dropdown-menu">
                                 <ul id="ulContent" ng-if="showCompanyName" class="dropdown-menu">
-                                    <li ng-click="logistics.companyName = '请选择物流公司'">请选择物流公司</li>
+                                    <li ng-click="showDefaultText()">请选择物流公司</li>
                                     <li ng-click="showText(data)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
                                     <li ng-click="showText(data)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
                                 </ul>
                                 </ul>
                             </span>
                             </span>
@@ -680,15 +684,11 @@
                             <input name="number" type="text" class="form-control" style="height: 32px" ng-model="logistics.number" placeholder="请输入物流单号" maxlength="20" autocomplete="off"/>
                             <input name="number" type="text" class="form-control" style="height: 32px" ng-model="logistics.number" placeholder="请输入物流单号" maxlength="20" autocomplete="off"/>
                             </form>
                             </form>
                         </span>
                         </span>
-                            <em ng-if="companyObject.isKdn==0" style="color: #b0b0b0;
+                            <em ng-if="companyObject && companyObject.isKdn==0" style="color: #b0b0b0;
                             font-size: 12px;
                             font-size: 12px;
                             float: left;
                             float: left;
                             line-height: 33px;"><i class="fa fa-info-circle"></i>系统无法提供此物流信息,请根据物流单号到相应的官网查询。</em>
                             line-height: 33px;"><i class="fa fa-info-circle"></i>系统无法提供此物流信息,请根据物流单号到相应的官网查询。</em>
                         </div>
                         </div>
-                        <div  class="logistic-input-01" ng-if="checkinvoice.sendType==1303">
-                            <i ng-bind="takeSelf.takename"></i> &nbsp;&nbsp;营业时间:<em ng-bind="takeSelf.businesstime">周一至周五 8:30-18:00</em><br/>
-                            地址:<em ng-bind="takeSelf.area">广东省  深圳市  南山区</em>&nbsp;&nbsp;<em ng-bind="takeSelf.detailAddress">科技园英唐大厦6楼 优软商城科技园英唐大厦6楼 优软商城</em>
-                        </div>
                     </dd>
                     </dd>
                     <dd class="pay_price">
                     <dd class="pay_price">
                         <div ng-if="checkinvoice.status==406">
                         <div ng-if="checkinvoice.status==406">

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_order.html

@@ -952,7 +952,7 @@
 										<div class="row">物流单号: <em>
 										<div class="row">物流单号: <em>
 											<input type="text" class="form-control" ng-model="logistics.number" maxlength="20" autocomplete="off"/>
 											<input type="text" class="form-control" ng-model="logistics.number" maxlength="20" autocomplete="off"/>
 										</em></div>
 										</em></div>
-										<div class="edit-deal">
+										<div class="edit-deal" style="margin-left: -18px;">
 											<a ng-click="cancelModify(purchase)" class="off">取消</a>
 											<a ng-click="cancelModify(purchase)" class="off">取消</a>
 											<a ng-click="ensureModifyLogistics(purchase)" class="ok">确认</a>
 											<a ng-click="ensureModifyLogistics(purchase)" class="ok">确认</a>
 										</div>
 										</div>