Browse Source

发货单条码维护显示条码明细

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@1855 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
xiaost 10 years ago
parent
commit
4a15c0ca34

+ 8 - 0
src/main/java/com/uas/platform/b2b/dao/BarSendNotifyDao.java

@@ -1,6 +1,8 @@
 package com.uas.platform.b2b.dao;
 package com.uas.platform.b2b.dao;
 
 
 
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
@@ -9,6 +11,7 @@ import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import com.uas.platform.b2b.model.BarSendNotify;
 import com.uas.platform.b2b.model.BarSendNotify;
+import com.uas.platform.b2b.model.SaleSendItem;
 import com.uas.platform.core.data.repository.GenericRepository;
 import com.uas.platform.core.data.repository.GenericRepository;
 
 
 @Repository
 @Repository
@@ -22,4 +25,9 @@ public  interface BarSendNotifyDao extends JpaSpecificationExecutor<BarSendNotif
 	@Modifying
 	@Modifying
 	@Query("delete from BarSendNotify s where  s.saleSendItem.id = :id")
 	@Query("delete from BarSendNotify s where  s.saleSendItem.id = :id")
 	public void deleteAllBySiid (@Param("id") long id);
 	public void deleteAllBySiid (@Param("id") long id);
+	
+	/**
+	 * 根据发货单明细ID 查询条码
+	 */
+	public List<BarSendNotify> findBySaleSendItem(SaleSendItem sIem);
 }
 }

+ 125 - 7
src/main/webapp/resources/js/index/app.js

@@ -289,8 +289,80 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 				else return cur; 
 				else return cur; 
 			}
 			}
 		};
 		};
+	}).factory('Lodop',function(){
+	  return {
+		  getLodop:function(oOBJECT,oEMBED){	 
+		  	var CreatedOKLodop7766=null;
+			/**************************
+			  本函数根据浏览器类型决定采用哪个页面元素作为Lodop对象:
+			  IE系列、IE内核系列的浏览器采用oOBJECT,
+			  其它浏览器(Firefox系列、Chrome系列、Opera系列、Safari系列等)采用oEMBED,
+			  如果页面没有相关对象元素,则新建一个或使用上次那个,避免重复生成。
+			  64位浏览器指向64位的安装程序install_lodop64.exe。
+			**************************/
+	        var strHtmInstall="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='static/lib/lodopActivex/install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+	        var strHtmUpdate="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='static/lib/lodopActivex/install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+	        var strHtm64_Install="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='static/lib/lodopActivex/install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+	        var strHtm64_Update="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='static/lib/lodopActivex/install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+	        var strHtmFireFox="<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
+	        var strHtmChrome="<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
+	        var LODOP;		
+			try{	
+			     //=====判断浏览器类型:===============
+			     var isIE	 = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+			     var is64IE  = isIE && (navigator.userAgent.indexOf('x64')>=0);
+			     //=====如果页面有Lodop就直接使用,没有则新建:==========
+			     if (oOBJECT!=undefined || oEMBED!=undefined) { 
+		               	 if (isIE) 
+			             LODOP=oOBJECT; 
+			         else 
+			             LODOP=oEMBED;
+			     } else { 
+				 if (CreatedOKLodop7766==null){
+		          	     LODOP=document.createElement("object"); 
+				     LODOP.setAttribute("width",0); 
+		                     LODOP.setAttribute("height",0); 
+				     LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;");  		     
+		                     if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA"); 
+				     else LODOP.setAttribute("type","application/x-print-lodop");
+				     document.documentElement.appendChild(LODOP); 
+			             CreatedOKLodop7766=LODOP;		     
+		 	         } else 
+		                     LODOP=CreatedOKLodop7766;
+			     };
+			     //=====判断Lodop插件是否安装过,没有安装或版本过低就提示下载安装:==========
+			     if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {
+			             if (navigator.userAgent.indexOf('Chrome')>=0)
+			                 document.documentElement.innerHTML=strHtmChrome+document.documentElement.innerHTML;
+			             if (navigator.userAgent.indexOf('Firefox')>=0)
+			                 document.documentElement.innerHTML=strHtmFireFox+document.documentElement.innerHTML;
+			             if (is64IE) document.write(strHtm64_Install); else
+			             if (isIE)   document.write(strHtmInstall);    else
+			                 document.documentElement.innerHTML=strHtmInstall+document.documentElement.innerHTML;
+			             return LODOP;
+			     } else 
+			     if (LODOP.VERSION<"6.1.9.8") {
+			             if (is64IE) document.write(strHtm64_Update); else
+			             if (isIE) document.write(strHtmUpdate); else
+			             document.documentElement.innerHTML=strHtmUpdate+document.documentElement.innerHTML;
+			    	     return LODOP;
+			     };
+			     //=====如下空白位置适合调用统一功能(如注册码、语言选择等):====	     
+		           LODOP.SET_LICENSES("深圳市优软科技有限公司","BBF53BD5AB0D522B3207D05CDE381F65","","");
+		    
+			     //============================================================	     
+			     return LODOP; 
+			} catch(err) {
+			     if (is64IE)	
+		            document.documentElement.innerHTML="Error:"+strHtm64_Install+document.documentElement.innerHTML;else
+		            document.documentElement.innerHTML="Error:"+strHtmInstall+document.documentElement.innerHTML;
+			     return LODOP; 
+			};
+		  }
+	  }
 	});
 	});
 	
 	
+	
 	app.controller('MyCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
 	app.controller('MyCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
 		$rootScope.$on('$locationChangeSuccess', function(evt, newUrl) {
 		$rootScope.$on('$locationChangeSuccess', function(evt, newUrl) {
 			var routeState = newUrl.substr(newUrl.indexOf('#/') + 2);
 			var routeState = newUrl.substr(newUrl.indexOf('#/') + 2);
@@ -2052,7 +2124,7 @@ app.controller('SaleSendCtrl', ['$scope', '$filter', 'SaleSend', 'ngTableParams'
 	/**
 	/**
 	 * 发货单(包括发货条码维护)
 	 * 发货单(包括发货条码维护)
 	 */
 	 */
-	app.controller('SaleSendDetailCtrl', ['$scope', '$stateParams', 'SaleSend', 'toaster', 'ReportService', function($scope, $stateParams, SaleSend, toaster, ReportService){
+	app.controller('SaleSendDetailCtrl', ['$scope', '$stateParams', 'SaleSend', 'toaster', 'ReportService','Lodop', function($scope, $stateParams, SaleSend, toaster, ReportService,Lodop){
 		var loading = true;
 		var loading = true;
 		$scope.checkBarCode = [];
 		$scope.checkBarCode = [];
 		$scope.checkBoxCode = [];
 		$scope.checkBoxCode = [];
@@ -2108,22 +2180,32 @@ app.controller('SaleSendCtrl', ['$scope', '$filter', 'SaleSend', 'ngTableParams'
 		 */
 		 */
 		$scope.generateBarCode = function(item) {			
 		$scope.generateBarCode = function(item) {			
 			//获取勾选了生成条码的明细行,只勾选生成箱号的明细行不会生成条码和箱号
 			//获取勾选了生成条码的明细行,只勾选生成箱号的明细行不会生成条码和箱号
-			$scope.getCheckedItems = [];					
+			$scope.getCheckedItems = [];
+			var warningdata = ''
 			angular.forEach($scope.checkBarCode, function(item,key) {
 			angular.forEach($scope.checkBarCode, function(item,key) {
-				$scope.getCheckedItem = {};
-				console.log($scope.order);
+				$scope.getCheckedItem = {};				
 				if(item == true ){
 				if(item == true ){
 					$scope.getCheckedItem.id = $scope.order.sendItems[key].id;
 					$scope.getCheckedItem.id = $scope.order.sendItems[key].id;
 					$scope.getCheckedItem.isOutboxChecked = $scope.order.sendItems[key].isOutboxChecked;
 					$scope.getCheckedItem.isOutboxChecked = $scope.order.sendItems[key].isOutboxChecked;
 					$scope.getCheckedItems.push($scope.getCheckedItem);
 					$scope.getCheckedItems.push($scope.getCheckedItem);
+					//判断是否生成过条码
+					if($scope.order.sendItems[key].barSendNotify.length > 0){
+						warningdata += $scope.order.sendItems[key].number+","
+					}
 				}
 				}
 			});
 			});
 			if($scope.getCheckedItems.length == 0){
 			if($scope.getCheckedItems.length == 0){
 				toaster.pop('warning', '提示','请勾选需要生成条码的明细行!');
 				toaster.pop('warning', '提示','请勾选需要生成条码的明细行!');
 				return;
 				return;
 			}	
 			}	
+			if(warningdata != ''){
+				if(!confirm('明细行序号:'+warningdata+"已经生成了条码,继续生成将清空原有条码?")){
+				   return ;
+				}
+			}
 			SaleSend.generateBarcodes({id:$scope.order.id}, angular.fromJson($scope.getCheckedItems),function(data){
 			SaleSend.generateBarcodes({id:$scope.order.id}, angular.fromJson($scope.getCheckedItems),function(data){
 				toaster.pop('success', '提示','生成条码成功!');
 				toaster.pop('success', '提示','生成条码成功!');
+				loadData();
 			 },function(response){
 			 },function(response){
 			 	$scope.loading = false;
 			 	$scope.loading = false;
 	  			toaster.pop('error', '生成失败', response.data);
 	  			toaster.pop('error', '生成失败', response.data);
@@ -2133,16 +2215,52 @@ app.controller('SaleSendCtrl', ['$scope', '$filter', 'SaleSend', 'ngTableParams'
 		 * 打印条码
 		 * 打印条码
 		 */
 		 */
 		$scope.printBarCode = function() {
 		$scope.printBarCode = function() {
-			
+			//勾选需要打印的行
+			$scope.getCheckedItems = [];
+			var warningdata = ''
+			angular.forEach($scope.checkBarCode, function(item,key) {
+			   if(item == true ){
+					$scope.getCheckedItem.id = $scope.order.sendItems[key].id;
+					$scope.getCheckedItems.push($scope.getCheckedItem);
+					//判断是否生成过条码
+					if($scope.order.sendItems[key].barSendNotify.length > 0){
+						warningdata += $scope.order.sendItems[key].number+","
+					}
+				}
+			});
+			if($scope.getCheckedItems.length == 0){
+				toaster.pop('warning', '提示','请勾选需要生成条码的明细行!');
+				return;
+			}
+			if(warningdata != ''){
+				toaster.pop('warning', '提示','明细行序号:'+warningdata+'未生成条码无法打印');
+				return;
+			}
+			SaleSend.printBarcodes({}, angular.fromJson($scope.getCheckedItems),function(data){
+				
+			 },function(response){
+			 	$scope.loading = false;
+	  			toaster.pop('error', '获取打印数据失败', response.data);
+			});
+			var LODOP = Lodop.getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));			
+			LODOP.ADD_PRINT_TEXT(20,180,100,25,'郭德强');
+			LODOP.NewPage();
+			LODOP.SET_PREVIEW_WINDOW(0,0,0,0,0,"");
+		    LODOP.SET_SHOW_MODE("HIDE_SBUTTIN_PREVIEW",1);
+		    LODOP.PREVIEW();
 		}
 		}
 		/**
 		/**
 		 *打印箱号
 		 *打印箱号
 		 */
 		 */
 		$scope.printOutBoxCode = function() {
 		$scope.printOutBoxCode = function() {
-			
+			var LODOP = Lodop.getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
 		}
 		}
-		$scope.showBarCode = function() {
+		$scope.showBarCode = function(number) {
 			vm.showBarCode = !vm.showBarCode;
 			vm.showBarCode = !vm.showBarCode;
+			$scope.barcodes = [];
+			$scope.barcodes = $scope.order.sendItems[number].barSendNotify;
+			console.log($scope.barcodes);
+			console.log(number);
 		}
 		}
 		/**
 		/**
 		 * 更新外箱号
 		 * 更新外箱号

+ 4 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -181,6 +181,10 @@ define([ 'ngResource'], function() {
 			generateBarcodes :{
 			generateBarcodes :{
 				url: 'sale/notice/generateBarcodes',
 				url: 'sale/notice/generateBarcodes',
 				method: 'POST'
 				method: 'POST'
+			},
+			printBarcodes :{
+				url: 'sale/notice/printBarcodes',
+				method: 'POST'
 			}
 			}
 		});
 		});
 	}]).factory('PurcForecast', ['$resource', function($resource) {
 	}]).factory('PurcForecast', ['$resource', function($resource) {

+ 85 - 0
src/main/webapp/resources/lib/lodopActivex/LodopsFuncs.js

@@ -0,0 +1,85 @@
+var CreatedOKLodop7766=null;
+ function getLodop(oOBJECT,oEMBED){
+        var win = null;
+        var showMessage ='';
+		/**************************
+		  本函数根据浏览器类型决定采用哪个页面元素作为Lodop对象:
+		  IE系列、IE内核系列的浏览器采用oOBJECT,
+		  其它浏览器(Firefox系列、Chrome系列、Opera系列、Safari系列等)采用oEMBED,
+		  如果页面没有相关对象元素,则新建一个或使用上次那个,避免重复生成。
+		  64位浏览器指向64位的安装程序install_lodop64.exe。
+		**************************/
+        var strHtmInstall="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='"+basePath+"resource/lodopActivex/install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+        var strHtmUpdate="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='"+basePath+"resource/lodopActivex/install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+        var strHtm64_Install="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='"+basePath+"resource/lodopActivex/install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+        var strHtm64_Update="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='"+basePath+"resource/lodopActivex/install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+        var strHtmFireFox="<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
+        var strHtmChrome="<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
+        var LODOP;	
+	try{	
+	     //=====判断浏览器类型:===============
+	     var isIE	 = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+	     var is64IE  = isIE && (navigator.userAgent.indexOf('x64')>=0);
+	     //=====如果页面有Lodop就直接使用,没有则新建:==========
+	     if (oOBJECT!=undefined || oEMBED!=undefined) { 			    
+               	 if (isIE) 
+	             LODOP=oOBJECT; 
+	         else 
+	             LODOP=oEMBED;
+	     } else { 
+		 if (CreatedOKLodop7766==null){
+          	 LODOP=document.createElement("object"); 
+		     LODOP.setAttribute("width",0); 
+             LODOP.setAttribute("height",0); 
+		     LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;");  		     
+             if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA"); 
+		     else LODOP.setAttribute("type","application/x-print-lodop");
+		     document.documentElement.appendChild(LODOP); 
+	             CreatedOKLodop7766=LODOP;		     
+ 	         } else 
+                 LODOP=CreatedOKLodop7766;
+	     };
+	     //=====判断Lodop插件是否安装过,没有安装或版本过低就提示下载安装:==========
+	     if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {
+	             if (navigator.userAgent.indexOf('Chrome')>=0)	                 
+	                 showMessage = strHtmChrome + showMessage;
+	             if (navigator.userAgent.indexOf('Firefox')>=0)
+	                 showMessage = strHtmFireFox + showMessage;
+	             if (is64IE) showMessage = strHtm64_Install; else
+	             if (isIE)  showMessage = strHtmInstall;    else
+	                 showMessage = strHtmInstall + showMessage;	             
+	     } else if (LODOP.VERSION<"6.1.9.8") {
+	             if (is64IE) showMessage = strHtm64_Update + showMessage; else
+	             if (isIE) showMessage = strHtmUpdate  + showMessage; else
+	              showMessage = strHtmUpdate + showMessage;
+	     };
+	     //=====如下空白位置适合调用统一功能(如注册码、语言选择等):====	     
+         LODOP.SET_LICENSES("深圳市优软科技有限公司","BBF53BD5AB0D522B3207D05CDE381F65","","");
+	     //============================================================	  
+	     if(showMessage){
+	     	if(!win){
+				win = new Ext.window.Window({		  
+			    			id: 'win-loadActiveX',
+			    			modal: true,
+			    			layout: 'anchor',
+			    			html:showMessage,
+			    			buttonAlign: 'center',
+			    			buttons: [{
+								text: $I18N.common.button.erpCloseButton,
+								cls: 'x-btn-blue',
+								handler: function(btn) {
+									btn.ownerCt.ownerCt.hide();
+								}
+							}]   						
+					});
+			   } 
+			   win.show();
+	        }	     
+	     return LODOP; 
+	} catch(err) {
+	     if (is64IE)			 
+            showMessage="Error:"+strHtm64_Install+showMessage;else
+            showMessage="Error:"+strHtmInstall+showMessage;
+	     return LODOP; 
+	};		
+   }

BIN
src/main/webapp/resources/lib/lodopActivex/install_lodop32.exe


BIN
src/main/webapp/resources/lib/lodopActivex/install_lodop64.exe


+ 22 - 6
src/main/webapp/resources/tpl/index/sale/send_detail.html

@@ -232,7 +232,7 @@
 									<input type="text" class="form-control input-xs" ng-model="item.outBoxQty" style="background-color: #ECDADA;cursor: not-allowed;" disabled/>
 									<input type="text" class="form-control input-xs" ng-model="item.outBoxQty" style="background-color: #ECDADA;cursor: not-allowed;" disabled/>
 								</div>	
 								</div>	
 							</td>
 							</td>
-							<td><button type="button" class="btn btn-sm"  ng-click="showBarCode()">查看条码</button></td>
+							<td><button type="button" class="btn btn-sm"  ng-click="showBarCode(item.number-1)">查看条码</button></td>
 						</tr>
 						</tr>
 					</tbody>
 					</tbody>
 				</table>
 				</table>
@@ -241,19 +241,35 @@
 			  	<table class="block table table-default table-striped table-hover" style="width:700px;margin:0 auto">
 			  	<table class="block table table-default table-striped table-hover" style="width:700px;margin:0 auto">
 					<thead>
 					<thead>
 						<tr class="header">
 						<tr class="header">
-							<th width="40" class="br-r">
-							<input type="checkBox" />&nbsp;全选</th>
+							<th width="40" class="br-r">序号</th>
 							<th width="50" class="br-r">条码号</th>
 							<th width="50" class="br-r">条码号</th>
 							<th width="90">数量</th>
 							<th width="90">数量</th>
-							<th width="75"外箱号</th>
+							<th width="75">外箱号</th>
 							<th width="70">操作</th>
 							<th width="70">操作</th>
 						</tr>
 						</tr>
 					</thead>
 					</thead>
 					<tbody>
 					<tbody>
-						<tr><td>1</td><td>2</td><td>3</td><td>4</td><td><input type="btn btn-info" value="显示"/></td></tr>
+						<tr ng-repeat="item in barcodes track by item.id">
+							<td>			
+							   <div class="text-num text-bold" ng-bind="::item.sinumber"></div>
+							</td>
+							<td>
+							   <div class="text-num text-bold" ng-bind="::item.barcode"></div>
+							</td>
+							<td>
+							   <div class="text-num text-bold" ng-bind="::item.qty"></div>
+							</td>
+							<td>
+							   <div class="text-num text-bold" ng-bind="::item.outboxcode"></div>
+							</td>
+							<td><input type="btn btn-info" value="显示"/></td>
+						</tr>
 					</tbody>
 					</tbody>
 				</table>
 				</table>
 			</div>
 			</div>
 		</div>
 		</div>
 	</div>
 	</div>
-</div>
+</div>
+<object  id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> 
+       <embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed>
+</object>