Selaa lähdekoodia

询价时增加收货地址,更新询价详情插入一条记录的方法

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@8149 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 9 vuotta sitten
vanhempi
commit
259b6f6701

+ 30 - 0
src/main/java/com/uas/platform/b2b/model/PurcInquiry.java

@@ -145,6 +145,20 @@ public class PurcInquiry implements Serializable {
 	@Column(name = "in_isopen")
 	private Short isOpen;
 
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "in_ship")
+	private String ship;
+
+	/**
+	 * 是否开票<br>
+	 * 1. 是<br>
+	 * 0. 否
+	 */
+	@Column(name = "in_invoice")
+	private Short invoice;
+
 	public Long getId() {
 		return id;
 	}
@@ -289,4 +303,20 @@ public class PurcInquiry implements Serializable {
 		this.isOpen = isOpen;
 	}
 
+	public String getShip() {
+		return ship;
+	}
+
+	public void setShip(String ship) {
+		this.ship = ship;
+	}
+
+	public Short getInvoice() {
+		return invoice;
+	}
+
+	public void setInvoice(Short invoice) {
+		this.invoice = invoice;
+	}
+
 }

+ 30 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiry.java

@@ -163,6 +163,20 @@ public class PurchaseInquiry implements Serializable {
 	@Column(name = "in_sourceapp")
 	private String sourceApp;
 
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "in_ship")
+	private String ship;
+
+	/**
+	 * 是否开票<br>
+	 * 1. 是<br>
+	 * 0. 否
+	 */
+	@Column(name = "in_invoice")
+	private Short invoice;
+
 	public Long getId() {
 		return id;
 	}
@@ -317,4 +331,20 @@ public class PurchaseInquiry implements Serializable {
 		this.sourceApp = sourceApp;
 	}
 
+	public String getShip() {
+		return ship;
+	}
+
+	public void setShip(String ship) {
+		this.ship = ship;
+	}
+
+	public Short getInvoice() {
+		return invoice;
+	}
+
+	public void setInvoice(Short invoice) {
+		this.invoice = invoice;
+	}
+
 }

+ 30 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryInfo.java

@@ -159,6 +159,20 @@ public class PurchaseInquiryInfo implements Serializable {
 	@Column(name = "in_sourceapp")
 	private String sourceApp;
 
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "in_ship")
+	private String ship;
+
+	/**
+	 * 是否开票<br>
+	 * 1. 是<br>
+	 * 0. 否
+	 */
+	@Column(name = "in_invoice")
+	private Short invoice;
+
 	public Long getId() {
 		return id;
 	}
@@ -311,4 +325,20 @@ public class PurchaseInquiryInfo implements Serializable {
 		this.sourceApp = sourceApp;
 	}
 
+	public String getShip() {
+		return ship;
+	}
+
+	public void setShip(String ship) {
+		this.ship = ship;
+	}
+
+	public Short getInvoice() {
+		return invoice;
+	}
+
+	public void setInvoice(Short invoice) {
+		this.invoice = invoice;
+	}
+
 }

+ 1 - 12
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java

@@ -61,12 +61,9 @@ public class PurchaseInquiryItem {
 	 * 询价单
 	 */
 	@ManyToOne(cascade = CascadeType.ALL, optional = true)
-	@JoinColumn(name = "id_inid", nullable = false, insertable = false, updatable = false)
+	@JoinColumn(name = "id_inid", nullable = false)
 	private PurchaseInquiry inquiry;
 
-	@Column(name = "id_inid")
-	private Long inid;
-
 	/**
 	 * 买家采购员UU
 	 */
@@ -505,14 +502,6 @@ public class PurchaseInquiryItem {
 		this.enterprise = enterprise;
 	}
 
-	public Long getInid() {
-		return inid;
-	}
-
-	public void setInid(Long inid) {
-		this.inid = inid;
-	}
-
 	/**
 	 * 回复记录的描述
 	 * 

+ 38 - 4
src/main/java/com/uas/platform/b2b/service/impl/PurcInquiryServiceImpl.java

@@ -13,12 +13,15 @@ import javax.persistence.criteria.Root;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.ProductDao;
 import com.uas.platform.b2b.dao.PurcInquiryDao;
@@ -82,6 +85,12 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 	@Autowired
 	private PurchaseInquiryInfoDao purchaseInquiryInfoDao;
 
+	@Autowired
+	private CommonDao commonDao;
+
+	@Autowired
+	private JdbcTemplate jdbcTemplate;
+
 	@Override
 	public ModelMap save(PurcInquiryInfo inquiryInfo, List<VendorAndContact> contacts) {
 		ModelMap map = new ModelMap();
@@ -104,6 +113,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 				inquiry.setEnteryStatus(Status.UNAPPLY.value());
 				inquiry.setPriceType(inquiryInfo.getPriceType());
 				inquiry.setIsOpen((short) inquiryInfo.getIsOpen());
+				inquiry.setInvoice(inquiryInfo.getInvoice());
+				inquiry.setShip(inquiryInfo.getShip());
 				Set<PurcInquiryItem> items = new HashSet<PurcInquiryItem>();
 				Short i = 0;
 				for (VendorAndContact contact : contacts) {
@@ -188,6 +199,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 				saleInquiry.setIsOpen((short) inquiryInfo.getIsOpen());
 				saleInquiry.setSourceId(Long.valueOf(inquiryId.toString()));
 				saleInquiry.setSourceApp(SOURCERAPP);
+				saleInquiry.setInvoice(inquiryInfo.getInvoice());
+				saleInquiry.setShip(inquiryInfo.getShip());
 				Set<PurchaseInquiryItem> items = new HashSet<PurchaseInquiryItem>();
 				Short i = 0;
 				for (VendorAndContact contact : contacts) {
@@ -252,6 +265,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 		saleInquiry.setAuditor(SystemSession.getUser().getUserName());
 		saleInquiry.setSourceApp(SOURCERAPP);
 		saleInquiry.setSourceId(id);
+		saleInquiry.setInvoice(inquiry.getInvoice());
+		saleInquiry.setShip(inquiry.getShip());
 		Set<PurchaseInquiryItem> items = new HashSet<PurchaseInquiryItem>();
 		if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
 			for (PurcInquiryItem item : inquiry.getInquiryItems()) {
@@ -385,6 +400,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 			inquiry.setEnteryStatus(Status.UNAPPLY.value());
 			inquiry.setPriceType(inquiryInfo.getPriceType());
 			inquiry.setIsOpen((short) inquiryInfo.getIsOpen());
+			inquiry.setInvoice(inquiryInfo.getInvoice());
+			inquiry.setShip(inquiryInfo.getShip());
 			Set<PurcInquiryItem> items = new HashSet<PurcInquiryItem>();
 			Short i = 0;
 			if (!CollectionUtils.isEmpty(inquiryInfo.getInquiryItems())) {
@@ -485,13 +502,15 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 			saleInquiry.setSourceApp(SOURCERAPP);
 			saleInquiry.setSourceId(purcInquiry.getId());
 			saleInquiry.setPriceType(purcInquiry.getPriceType());
+			saleInquiry.setInvoice(purcInquiry.getInvoice());
+			saleInquiry.setShip(purcInquiry.getShip());
 			Set<PurchaseInquiryItem> items = new HashSet<PurchaseInquiryItem>();
 			Short i = 0;
 			if (null != purcInquiryItem) {
 				PurchaseInquiryItem item = new PurchaseInquiryItem();
 				Product product = productDao.findOne(purcInquiryItem.getProductId());
-				item.setInquiry(saleInquiry);
 				item.setProduct(product);
+				item.setInquiry(saleInquiry);
 				item.setNumber(i);
 				item.setCurrency(purcInquiryItem.getCurrency());
 				item.setFromDate(new Date());
@@ -524,9 +543,9 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 			} else {
 				if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
 					if (null != purcInquiryItem) {
+						// 涉及到级联存储及ERP转入单据的操作,用主表id存储存在问题,这里先用sql语句直接插入
 						PurchaseInquiryItem item = new PurchaseInquiryItem();
 						Product product = productDao.findOne(purcInquiryItem.getProductId());
-						item.setInid(inquiry.getId());
 						item.setProduct(product);
 						item.setNumber((short) (inquiry.getInquiryItems().size() + 1));
 						item.setCurrency(purcInquiryItem.getCurrency());
@@ -542,8 +561,21 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 						item.setCustLap(Constant.NO);
 						item.setSendStatus((short) Status.DOWNLOADED.value());
 						item.setSourceId(id);
-						item = purchaseInquiryItemDao.save(item);
-						if (item.getId() != null) {
+						Long idid = commonDao.queryForObject("select purc$inquiryitems_seq.nextval from dual", Long.class);
+						try {
+							jdbcTemplate.update(
+									"insert into purc$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
+											+ "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
+									idid, item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
+									item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
+									item.getSourceApp(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
+									item.getSourceId(), inquiry.getId());
+						} catch (DataAccessException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+						item = purchaseInquiryItemDao.findOne(idid);
+						if (item != null) {
 							map.put("success", "转客户询价单成功");
 							map.put("id", item.getInquiry().getId());
 						} else {
@@ -585,6 +617,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 			inquiryInfo.setRemark(inquiry.getRemark());
 			inquiryInfo.setSourceApp(inquiry.getSourceApp());
 			inquiryInfo.setSourceId(inquiry.getSourceId());
+			inquiryInfo.setShip(inquiry.getShip());
+			inquiryInfo.setInvoice(inquiry.getInvoice());
 			Set<Long> ids = new HashSet<Long>();
 			List<Long> idStrings = new ArrayList<>();
 			Set<InquiryProductInfo> products = new HashSet<InquiryProductInfo>();

+ 36 - 2
src/main/webapp/resources/js/index/app.js

@@ -2772,7 +2772,7 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 	}]);
 	
 	// 平台新增的询价单
-	app.controller('PurcInquiryCtrl', ['$scope', 'PurchaseInquiry', 'toaster', 'BaseService', '$upload', '$filter', '$modal', '$rootScope', 'ngTableParams', 'GetProductInfo', '$timeout', function($scope, PurchaseInquiry, toaster, BaseService, $upload, $filter, $modal, $rootScope, ngTableParams, GetProductInfo, $timeout) {
+	app.controller('PurcInquiryCtrl', ['$scope', 'PurchaseInquiry', 'toaster', 'BaseService', '$upload', '$filter', '$modal', '$rootScope', 'ngTableParams', 'GetProductInfo', '$timeout', '$http', 'ShipAddress', function($scope, PurchaseInquiry, toaster, BaseService, $upload, $filter, $modal, $rootScope, ngTableParams, GetProductInfo, $timeout, $http, ShipAddress) {
 		BaseService.scrollBackToTop();
 		$scope.status = 'InquiryNew';
 		$scope.active = 'all';
@@ -2784,9 +2784,40 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 				code: 'XJ' + $filter('date')(new Date(), 'yyMMddsss'),
 				showdate: $filter('date')(new Date, 'yyyy-MM-dd'),
 				priceType: '采购',
-				isOpen: 1
+				isOpen: 1,
+				invoice: 0
 		};
 		
+		  // 获取收货地址列表
+        var loadShipAddress = function() {
+            ShipAddress.shipAddList({}, function(data) {
+                $scope.ships = data;
+                $scope.inquiry.ship = $scope.ships[0];
+            });
+        };
+        loadShipAddress();
+
+        // 获取地址信息
+        $http.get('resources/citydata/city.json',  {"Accept": "application/json;charset=utf-8", "Accept-Charset":"charset=utf-8"
+        }).then(function(response) {
+            $scope.provinces = response.data;
+        });
+
+        // 新增收货地址保存
+        $scope.saveShipAddress = function(ship) {
+            ship.address = ship.province + ship.city + ship.district;
+            ShipAddress.saveAddress( {}, ship, function(data) {
+                if(data.success) {
+                    // 获取收货地址列表
+                    loadShipAddress();
+                    toaster.pop('success', '提示', data.success);
+                }
+                if(data.error) {
+                    toaster.pop('error', '提示', data.error);
+                }
+            });
+        };
+        
 	    $scope.currentDay = function() {
             return $filter('date')(new Date(), 'yyyy-MM-dd');
         };
@@ -8783,9 +8814,11 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 		};
 		loadData();
 
+		$scope.isShow = true;
 		// 更新
 		$scope.update = function() {
 			$scope.prodInfo.$editing = true;
+			$scope.isShow = true;
 		};
 		
 		// 取消
@@ -8793,6 +8826,7 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 			GetProductInfo.getOne({id: $stateParams.id}, function(data) {
 				$scope.prodInfo = data;
 				$scope.prodInfo.$editing = false;
+				$scope.isShow = false;
 				$scope.loading = false;
 			});
 		};

+ 1 - 1
src/main/webapp/resources/tpl/index/baseInfo/productDetail.html

@@ -144,7 +144,7 @@
                         <i>提示:图片尺寸在750*750像素以上,图片请避免全文字</i>
                     </div>
                 </dd>
-                 <dd ng-show="previewShow">
+                 <dd ng-show="previewShow && isShow">
                 	<div class="fl">&nbsp;</div>
                     <div class="fr">
                     <div class="well margin-b-0" >

+ 126 - 1
src/main/webapp/resources/tpl/index/purc/inquiry_new.html

@@ -906,6 +906,35 @@ input[type="radio"], input[type="checkbox"] {
                             <input class="tender-input01" type="text" name="user" ng-model="inquiry.remark" style="width: 738px"/>
                         </div>
                     </div>
+                    <div class="row">
+                    	 <div class="col-xs-12">
+	                        <div class="tender-desc">收货地址:</div>
+	                        <span required="required">
+	                             <select class="select fl" style="width: 70%; height: 34px; line-height: 34px; font-size: 14px;" ng-model="inquiry.ship" required="required" ng-options="(ship.address + ship.addressdet + ship.receiver + ship.usertel) as (ship.address + ship.addressdet + ' ' + ship.receiver + ' ' + ship.usertel) for ship in ships">
+									<option value="">请选择收货地址</option>
+								 </select>
+	                            <a href="javascript:void(0);" class="add-address">+新增收货信息</a>
+	                        </span>
+	                   		</span>
+	                    </div>
+                    </div>
+                    <div class="row">
+                    	<div class="col-xs-12">
+	                        <div class="tender-desc">发票要求:</div>
+	                        <div class="input-select col-xs-3">
+	                            <input class="tender-input" type="radio" value="2" ng-model="inquiry.invoice"/>
+	                            <span>增值税专用发票</span>
+	                        </div>
+	                        <div class="input-select col-xs-3">
+	                            <input class="tender-input" type="radio" value="1" ng-model="inquiry.invoice" />
+	                            <span>增值税普通发票</span>
+	                        </div>
+	                        <div class="input-select col-xs-3">
+	                            <input class="tender-input" type="radio" value="0" ng-model="inquiry.invoice" />
+	                            <span>不需要发票</span>
+	                        </div>
+	                    </div>
+                    </div>
                    <!--  <div class="col-xs-12">
                         <div class="tender-desc">上传附件:</div>
                         <div class="fileInputContainer">
@@ -1081,4 +1110,100 @@ input[type="radio"], input[type="checkbox"] {
 			</tbody>
 		</table>
 	</div>
-</div>
+</div>
+<!--设置-企业设置-收货地址编辑-->
+<div class="bomb-box" style="display: none">
+    <form class="box04 box" name="shipAddress" id="shipAddress">
+        <i class="off"><img src="resources/img/purc/close.png" alt="" /></i>
+        <p>收货人资料</p>
+        <ul>
+            <li class="line01">
+                <div class="fl">
+                    <span class="fl">收货人<em>*</em>:</span>
+                    <span class="fr"><input type="text" placeholder="填写收货人" ng-model="ship.receiver" required="true" ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/"/></span>
+                </div>
+                <div class="fr">
+                    <span class="fl">手机<em>*</em>:</span>
+                    <span class="fr"><input type="text" ng-model="ship.usertel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"/></span>
+                </div>
+            </li>
+            <li class="line01">
+                <div class="fl">
+                    <span class="fl">固定电话<em></em>:</span>
+                    <span class="fr"><input type="text" ng-model="ship.phone"  ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"/></span>
+                </div>
+                <div class="fr">
+                    <span class="fl">邮箱:</span>
+                    <span class="fr emaill"><input type="text" ng-model="ship.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
+                </div>
+            </li>
+            <li class="line02 margin-top40">
+                <div class="fl">所在地址<em>*</em>:</div>
+                <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
+                <div class="select fr">
+                    <select required="" class="area-select" ng-model="ship.province" ng-options="key as key for (key,value) in provinces"
+                            ng-change="ship.city='';ship.district='';" required="true">
+                        <option value="">省</option>
+                    </select>
+                    <select class="area-select" ng-model="ship.city" ng-options="key as key for (key,value) in provinces[ship.province]"
+                            ng-change="ship.district='';" required="true">
+                        <option value="">市</option>
+                    </select>
+                    <select class="area-select" ng-model="ship.district" ng-options="value as value for value in provinces[ship.province][ship.city]" required="true">
+                        <option value="">区</option>
+                    </select>
+                </div>
+            </li>
+            <li class="line02">
+                <div class="fl">详细地址<em>*</em>:</div>
+                <div class="fr"><input type="text" ng-model="ship.addressdet" required="true"/></div>
+            </li>
+            <li class="line02">
+                <div class="fl">地址别名:</div>
+                <div class="fr address"><input type="text" ng-model="ship.addalias"/><i>建议填写常用名称:家里/父母家/公司</i></div>
+            </li>
+        </ul>
+        <div class="many-file-btn">
+            <button class="btn01" ng-click="saveShipAddress(ship);" ng-disabled="shipAddress.$invalid">保存</button><a href="#" class="btn02">取消</a>
+        </div>
+    </form>
+</div>
+<script src="static/lib/jquery/jquery.min.js"></script>
+<script>
+    $(function(){
+        var size10= $(".tender-list02 dl dd").size();
+        if(size10 > 10){
+            $(".scroll-y").addClass("active");
+        }else{
+            $(".scroll-y").removeClass("active");
+        }
+
+        /*下拉效果*/
+        $('.select p').click(function(e){
+            $('.select').toggleClass('open');
+            e.stopPropagation();
+        });
+        $('.select ul li').click(function(e){
+            var title=$(this).html();
+            $('.select p').html(title);
+            $(this).addClass('selected').siblings().removeClass('selected');
+            $('.select').removeClass('open');
+            e.stopPropagation();
+        });
+        $(document).click(function(){
+            $('.select').removeClass('open');
+        })
+
+        //新增收货地址
+        $(".tender-content .base-info .add-address").click(function(){
+            document.getElementById('shipAddress').reset();
+            $(".bomb-box").show();
+        });
+        $(".bomb-box .box04 .off,.box04 .many-file-btn .btn02").click(function(){
+            $(".bomb-box").hide();
+        });
+        $(".bomb-box .box04 .off,.box04 .many-file-btn .btn01").click(function(){
+            $(".bomb-box").hide();
+        })
+    })
+</script>