1. 程式人生 > >java 中對於傳入ids進行批量的刪除

java 中對於傳入ids進行批量的刪除

前臺頁面的js 程式碼:

<script type="text/javascript">
function clearAndquery(){
	$("input").val('');
	$("select").val('');
	$("#pagerForm").attr("action","${base}/reconfile/queryByConditions.htm");
	$("#pagerForm").submit();
}

function batchremove(){
	if($("input[name='ids']:checked").length<=0){
		return ;
	}
	var ids="";
	var selectedCount=0;
	$("input[name='ids']:checked").each(function(){
		ids+=$(this).val()+",";
		selectedCount++;
	})
	var idsCount = $("[name='ids']").length;
	
	 $(this).alertmsg('confirm', "確定要刪除該行資訊嗎?", {okCall: function() { 
		 if(selectedCount ==  idsCount){
				doAjaxDelete(ids);
			}else{
				doAjaxDeleteSelected(ids);
			}
	 }})
}

function doAjaxDeleteSelected(ids){
	 $.ajax({
		   type: "POST",
		   url: '${base}/reconfile/batchDeleteSelected.htm',
		   data: {'idList':ids},
		   success: function(msg){
			 $(this).alertmsg("correct", msg);	
		   },
		   error:function(error){
			   $(this).alertmsg("error", '刪除失敗');					  
		   } 
		});
	 $("#pagerForm").submit();
}

function doAjaxDelete(ids){
	 $.ajax({
		   type: "POST",
		   url: '${base}/reconfile/batchDelete.htm',
		   data: {'idList':ids},
		   success: function(data){
			 var msg = JSON.parse(data);
			 if(msg.statusCode == 200){
				 $(this).alertmsg("correct", msg.message);
			 }else{
				 $(this).alertmsg("error", msg.message);
			 }
			 $("#pagerForm").submit();
		   },
		   error:function(error){
			   $(this).alertmsg("error", '刪除失敗');					  
		   } 
		})
}
</script>
<div class="bjui-pageHeader">
    <form id="pagerForm" data-toggle="ajaxsearch" class="pageForm" action="${base}/reconfile/queryByConditions.htm" data-toggle="validate" method="post">
	     <#include "/common/hidden.html" >
		<fieldset>
			<legend>查詢條件</legend>
				<table width="100%">
				<tr>
               		<td width="30%">
                		<table>
	                		<tr>
		                		<td align="right"><label class="control-label x80">對賬日期:</label></td>
								<td align="left">
									<input type="text" name="beginReconDate"  value="${(form.beginReconDate?string('yyyy-MM-dd'))!}" data-toggle="datepicker" size="12">
									-
									<input type="text" name="endReconDate" value="${(form.endReconDate?string('yyyy-MM-dd'))!}" data-toggle="datepicker"  size="12">									
								</td>
	                		</tr>
                		</table>
               		</td>
               		<td width="30%">
                		<table>
	                		<tr>
		                		<td align="right"><label class="control-label x80">回單型別:</label></td>
								<td align="left"><select data-toggle="selectpicker" name="fileType" data-width="200">
								    <option value="">全部</option>
									  <#list reconFileTypeList as rl>
	               		            <option value="${(rl.key)!''}" <#if form.fileType?? && form.fileType==rl.key>selected</#if>>${(rl.value)!''}</option>
	               	                  </#list>  							
								</select>	</td>
	                		</tr>
                		</table>
               		</td>
               		<td width="40%">
               			<table>
	                		<tr>
		                		<td align="right"><label class="control-label x80">銀行渠道:</label></td>
								<td align="left"><#include "/common/cpsBankAndChannel.html"></td>
	                		</tr>
                		</table>
               		</td>
				</tr>
				<tr>
               		<td width="30%">
               			<table>
	                		<tr>
		                		<td align="right"><label class="control-label x80">檔名稱:</label></td>
								<td align="left"><input type="text" name="fileName"  value="${(form.fileName)!''}" size="15"></td>
	                		</tr>
                		</table>
               		</td>
               		<td width="30%"></td>
               		<td width="40%"></td>
				</tr>
			
				<tr height="40">
          			<td width="30%"></td>
          			<td align="left" width="30%">
          			<button type="submit" class="btn-default" data-icon="search">查詢</button> 
			        <button type="button" onclick="clearAndquery()" class="btn-orange" data-icon="undo">清空查詢</button>
			        <button type="button" class="btn-blue" onclick="batchremove()"  
			             data-icon="remove" >刪除選中行</button> 
					</td>
          			<td width="40%"></td>
           		</tr>
            </table>
		</fieldset>
		  </form>
		</div>
<div class="bjui-pageContent">
    <table class="table table-bordered table-hover table-striped table-top" data-selected-multi="true">
        <thead>
            <tr>
                <th width="26"  align="center"><input type="checkbox" class="checkboxCtrl" data-group="ids" data-toggle="icheck"></th>
	            <th  align="center">渠道</th>
			    <th width="100"  align="center">回單型別</th>
			    <th align="center">檔名稱</th>
			    <th align="center">記錄數</th>
			    <th align="center">狀態</th>
			    <th align="center">失敗原因</th>
			    <th data-order-field="RECON_DATE"  align="center">對賬日期</th>
			    <th align="center">上傳型別</th>
			    <th data-order-field="CRT_TIME"  align="center">上傳日期</th>
				<th width="120"  align="center">操作</th>
            </tr>
        </thead>
        <tbody>
       
        <#if form??&&form.dtoList??>
			<#list form.dtoList as item>
			 <tr data-id="">
			      <td  align="center"><input type="checkbox" name="ids" data-toggle="icheck" value="${item.uploadId}"></td>
				  <td  align="center">${item.channelName!''}</td>
				  <td  align="center">${form.fileTypeEnum[item.fileType+'']!''}</td>
				  <td  align="center">${item.fileName!''}</td>
				  <td  align="center">${item.totalNum!''}</td>
				  <td  align="center">${form.uploadStatusEnum[item.status+'']!''}</td>
				  <td  align="center">${item.failReason!''}</td>
				  <td  align="center">${item.reconDate?string("yyyy-MM-dd")!''}</td>
				  <#if item.uploadType??&&item.uploadType == 0>		
				  <td  width="100" align="center">手工上傳</td>
				  <#elseif item.uploadType??&&item.uploadType == 1>
				  <td  width="100" align="center">自動上傳</td>
				  <#else>
				  <td width="100"  align="center"</td>
				  </#if>
				  <td  align="center">${item.crtTime?string("yyyy-MM-dd HH:mm:ss")!''}</td>
				  <td  align="center">
				  <a href="${base}/reconfile/downLoad.htm?uploadId=${item.uploadId}" class="btn btn-green" >下載</a>
				  <a href="${base}/reconfile/delete.htm?uploadId=${item.uploadId}" class="btn btn-red" data-toggle="doajax" data-confirm-msg="確定要刪除該行資訊嗎?">刪除</a>
				  </td>
            </tr>			
           </#list>       	
			</#if>
			
        </tbody>
    </table>
</div>

<#include "/common/page.html" >


 

後臺處理批量的程式碼: 當然加了點別的程式碼

//批量

@RequestMapping("/batchDelete")
	@ResponseBody
	public ModelAndView batchDelete(HttpServletRequest request) {
		String ids = request.getParameter("idList");
		String[] idArray = ids.split(",");

		String userCode = SSOUtil.getSSOInfo(request).getUserCode();
		try {
			UserDto userDto = userService.queryUserInfoByCode(userCode);
			if (userDto == null || userDto.getUserType() == null) {
				logger.error("刪除失敗,使用者登入失效");
				return ajaxDeleteERROR("刪除失敗,使用者登入失效");
			}
			if (idArray != null && idArray.length > 0) {
				List<Long> uploadIds = new LinkedList<Long>();
				for (String id : idArray) {
					uploadIds.add(Long.valueOf(id));
				}
				Iterator<Long> iterator = uploadIds.iterator();
				while (iterator.hasNext()) {
					Long upload = (Long) iterator.next();
					List<Long> uploadIdList = new LinkedList<Long>();
					uploadIdList.add(upload);
					ReconFileUploadForQuery query = new ReconFileUploadForQuery();
					query.setUploadId(upload);
					List<ReconFileUploadDto> uploadObjs = reconFileUploadService.query(query);
					if (CollectionUtils.isNotEmpty(uploadObjs)) {
						ReconFileUploadDto reconFileUploadDto = uploadObjs.get(0);
						// 品牌服務費
						if (reconFileUploadDto.getFileType().intValue() == ReconFileTypeEnum.BRAND_FEE.getCode()) {
							// 刪除list中的品牌服務檔案uploadId
							iterator.remove();

							if (!checkReconStatusByChannel(reconFileUploadDto.getChannelNo())) {
								logger.error("刪除失敗,有對賬正在進行中...");
								return ajaxDeleteERROR("刪除失敗,有對賬正在進行中");
							}
							if (!checkBrandFeeReconStatus(upload)) {
								logger.error("刪除失敗,檔案已認領...");
								return ajaxDeleteERROR("刪除失敗,檔案已認領");
							}
							ReconFileUploadForQuery reconFileUploadForQuery = new ReconFileUploadForQuery();
							reconFileUploadForQuery.setUploadIds(uploadIdList);
							reconFileUploadForQuery.setStatus(FileUploadStatusEnum.DOING_DELETE.getCode());
							reconFileUploadService.updateStatus(reconFileUploadForQuery); // 更新回單物件狀態為刪除中

							reconFundsBrandFeeService.deleteUploadId(upload);// 刪除品牌服務費明細
							reconFileUploadService.deleteById(upload);// 刪除檔案記錄
						}
					}
				}
				// 如果list為空值, 則都是品牌服務檔案。 不用進行下一步操作。
				if (uploadIds.size() == 0) {
					return ajaxDeleteSuccess("檔案開始刪除並重置對賬結果,請稍後查詢刪除結果");
				}

				// 刪除之前對檔案的資金對賬進行判斷
				if (!checkFundsReconStatus(uploadIds)) {
					logger.error("刪除失敗,檔案已認領...");
					return ajaxDeleteERROR("刪除失敗,檔案已認領");
				}
				if (!checkReconStatus(uploadIds)) {
					logger.error("刪除失敗,有對賬正在進行中...");
					return ajaxDeleteERROR("刪除失敗,有對賬正在進行中");
				}

				ReconFileUploadForQuery reconFileUploadForQuery = new ReconFileUploadForQuery();
				reconFileUploadForQuery.setUploadIds(uploadIds);
				reconFileUploadForQuery.setStatus(FileUploadStatusEnum.DOING_DELETE.getCode());
				reconFileUploadService.updateStatus(reconFileUploadForQuery); // 更新回單物件狀態為刪除中

				reconfileRemoveService.deleteReconFile(userDto.getUserType(), uploadIds);
				return ajaxDeleteSuccess("檔案開始刪除並重置對賬結果,請稍後查詢刪除結果");
			}
		} catch (Exception e) {
			logger.error("批量刪除失敗", e);
			return ajaxDeleteERROR("批量刪除失敗");
		}
		return ajaxDeleteSuccess("批量刪除成功");
	}

//刪除選中:
@RequestMapping(value = "/batchDeleteSelected", produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String batchDeleteSelected(HttpServletRequest request) {
		String ids = request.getParameter("idList");
		String[] idArray = ids.split(",");

		String userCode = SSOUtil.getSSOInfo(request).getUserCode();
		try {
			UserDto userDto = userService.queryUserInfoByCode(userCode);
			if (userDto == null || userDto.getUserType() == null) {
				logger.error("刪除失敗,使用者登入失效");
				return "刪除失敗,使用者登入失效";
			}
			if (idArray != null && idArray.length > 0) {
				List<Long> uploadIds = new LinkedList<Long>();
				for (String id : idArray) {
					uploadIds.add(Long.valueOf(id));
				}

				Iterator<Long> iterator = uploadIds.iterator();
				while (iterator.hasNext()) {
					Long upload = (Long) iterator.next();
					List<Long> uploadIdList = new LinkedList<Long>();
					uploadIdList.add(upload);
					ReconFileUploadForQuery query = new ReconFileUploadForQuery();
					query.setUploadId(upload);
					List<ReconFileUploadDto> uploadObjs = reconFileUploadService.query(query);
					if (CollectionUtils.isNotEmpty(uploadObjs)) {
						ReconFileUploadDto reconFileUploadDto = uploadObjs.get(0);
						// 品牌服務費
						if (reconFileUploadDto.getFileType().intValue() == ReconFileTypeEnum.BRAND_FEE.getCode()) {
							// 刪除list中的品牌服務檔案uploadId
							iterator.remove();

							if (!checkReconStatusByChannel(reconFileUploadDto.getChannelNo())) {
								logger.error("刪除失敗,有對賬正在進行中...");
								return "刪除失敗,有對賬正在進行中";
							}
							if (!checkBrandFeeReconStatus(upload)) {
								logger.error("刪除失敗,檔案已認領...");
								return "刪除失敗,檔案已認領";
							}
							ReconFileUploadForQuery reconFileUploadForQuery = new ReconFileUploadForQuery();
							reconFileUploadForQuery.setUploadIds(uploadIdList);
							reconFileUploadForQuery.setStatus(FileUploadStatusEnum.DOING_DELETE.getCode());
							reconFileUploadService.updateStatus(reconFileUploadForQuery); // 更新回單物件狀態為刪除中

							reconFundsBrandFeeService.deleteUploadId(upload);// 刪除品牌服務費明細
							reconFileUploadService.deleteById(upload);// 刪除檔案記錄
						}
					}
				}
				// 如果list為空值, 則都是品牌服務檔案。 不用進行下一步操作。
				if (uploadIds.size() == 0) {
					return "檔案開始刪除並重置對賬結果,請稍後查詢刪除結果";
				}

				// 刪除之前對檔案的資金對賬進行判斷
				if (!checkFundsReconStatus(uploadIds)) {
					logger.error("刪除失敗,檔案已認領...");
					return "刪除失敗,檔案已認領";
				}

				if (!checkReconStatus(uploadIds)) {
					logger.error("刪除失敗,有對賬正在進行中...");
					return "刪除失敗,有對賬正在進行中";
				}
				ReconFileUploadForQuery reconFileUploadForQuery = new ReconFileUploadForQuery();
				reconFileUploadForQuery.setUploadIds(uploadIds);
				reconFileUploadForQuery.setStatus(FileUploadStatusEnum.DOING_DELETE.getCode());
				reconFileUploadService.updateStatus(reconFileUploadForQuery); // 更新回單物件狀態為刪除中

				reconfileRemoveService.deleteReconFile(userDto.getUserType(), uploadIds);
				return "檔案開始刪除並重置對賬結果,請稍後查詢刪除結果";
			}
		} catch (Exception e) {
			logger.error("批量刪除失敗", e);
			return "批量刪除失敗";
		}
		return "批量刪除成功";
	}




相關推薦

java 對於傳入ids進行批量刪除

前臺頁面的js 程式碼: <script type="text/javascript"> function clearAndquery(){ $("input").val(''); $("select").val(''); $("#pagerForm"

java對於大量資料採用批量處理來提高效率

  設計的話, 是在dao層寫批量新增的方法,以及實現類dao的實現類, 在service呼叫這個dao就可以了!   不過最終走的還是單個只不過是集合的遍歷, 所以不用再mapper.xml裡面配置方法。 IReconBankOrderCpsBatchDao裡面的方法:

jsp對資料進行批量刪除操作

批量刪除的SQL:delete from user where uid in(主鍵列表);  UserBiz:  //批量刪除  public boolean batchDelete(String[] uids);  UserBizImpl: public

java對數據庫進行增刪改查(轉)

ima ive upd line 增加 key get cat imp 1.java連接MySql數據庫 代碼區域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

JAVA通過Hibernate-Validation進行參數驗證

tst map art 合法性 iter AI 字符 nta ali 在開發JAVA服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而hibernate-validator提供了一些常用的參數校驗註解,我們可以拿來使用。1.maven中引入hibernate-

java對於redis的簡單操作

java info img png .com 圖片 jar包 9.png com 添加redis的jar包 java中對於redis的簡單操作

java對於多態的理解

運行 之間 () sta java eof 唱歌 bsp 如果 面向對象: 類:具體的對象抽象而來,可以抽象的表示一類具有相同特征和行為的對象 對象:是由類的實例化而來,對象是類的一個實例 java中關於多態的理解 打個比方 父親person有行為這

linux 用find 和 rm進行批量刪除

find ./ -name _NA | xargs rm -rf 用 find 檢索出相應檔案(包括當下資料夾下面的檔案也能一併檢索出來), 然後將檢索結果通過管道命令導向到引數 xargs 然後用rm命令進行刪除, -rf為刪除命令rm的引數, r表示遞迴刪除,f表示不需要確認 也可以

關於java需要對路徑進行分割操作時出現的異常

在工作中操作分割路徑時出現的問題 示例:String path = "C:\\Users\\Administrator.SC-201606041031\\Desktop\\test.txt"; 需要對該path進行分割操作則需要 String[] matchPaths = path.split

JAVA對於需要頻繁new的物件的一個優化的方法

在實際開發中,某些情況下,我們可能需要頻繁去建立一些物件(new),下面介紹一種,我從書上看到的,可以提高效率的方法。 首先,對於將會頻繁建立的物件,我們要讓這個類實現Cloneable介面,因為這個優化的核心,就是利用clone。 clone的最大特點就是,不會去呼叫任何構造方法,所以,在

js 通過全選操作來進行批量刪除批量修改

效果圖 1.先說js進行全選:  //展示這麼多,其實只需要看標紅部分就行 <form name="action" class="form-horizontal" role="form" method="post" enctype="multipart

Java如何使用Json進行格式轉換常用方法

首先要在pom.xml檔案加入以下一依賴,這是阿里巴巴的開源格式轉換技術 <dependency>     <groupId>com.alibaba</groupId>     

基於本地redis、protostuff序列化對於資料層的優化及java對於泛型的使用

此次對於redis、protostuff的應用是在一個高併發的秒殺系統中實現的。 在高併發的秒殺系統的優化中主要有以下幾個方面: 1.對於獲取秒殺地址的介面的優化 每次獲取秒殺介面我們都要訪問資料庫,在高併發的系統中我們可以使用redis快取進行優化,不需要每次都訪問資料庫,從

Java對於httpClient的非同步請求處理

注意:使用這個前提要匯入相對應的jar包,這裡使用的是Apache的httpComponents; 直接在pom.xml檔案里加入: <dependency> <groupId>org.apache.httpcomponents</groupId>

java對於Date時間的各種用法和方法總結

在java中經常會用到和時間日期有關的各種操作,今天就對於Date的幾中常用的用法做一個總結: -Date類 : 1.表示日期的類 2.提供了很多的操作日期的方法,但是很多方法被java標記為過時 public class TestDateAPIClass { @Test

java對於字串 XX.toString和String.valueOf()以及強制型別轉換的區別

今天在寫程式碼的時候遇到很多需要型別轉換的東西 ,特別是需要轉換到String型別。好幾次都報錯了,特此記錄一下這三者之間的區別 toString方法 先看一下API對toString方法的描述 返回該物件的字串表示。通常,toString 方法會返回一個“以文

Maven小坑:IDEA開發工具對於maven專案進行mvn install報錯的解決辦法之一(前提不是程式碼錯誤)

今天公司前輩給了我一個專案,要我熟悉熟悉,以後會在這裡面進行開發;在我使用Iidea自帶的控制檯進行mvn install命令的時候,發先mvn install失敗(這裡的報錯可能會有多種,就是因為在install的時候沒有找到資源,不一一舉例了); 經過一番程式碼以及包的檢查,發現沒有錯誤

MyBatie使用List資料型別進行批量刪除

進行一項批量刪除的功能,使用MyBatis進行,資料型別為List,下面上程式碼: <!-- public int deleteList(List<Integer> addedIds); --> <delete id="deleteList

oracle通過load data 將資料匯入表通過儲存過程進行批量處理

說明:雖然沒圖,但文字表述很清楚,自己做過的專案留著備用(這只是初版,比較繁瑣,但很明確) 準備工作做完之後,後期可直接使用。如後期excel資料有變更,只需改動對應的部分即可,不涉及改動的可直接使用。 實際操作步驟 依照excel資料模版格式準備好建表語句,將中間過渡

Java對於模態框的使用以及在多執行緒的應用

模態框可以通過繼承JDialog並且設定構造引數boolean modal = true即可。 但是 當此模態框setVisible(true)時候,會導致當前執行緒阻塞。 那麼問題來了:現有一需求是點選登陸按鈕,則會向伺服器傳送登陸請求以及獲取資料的請求,待伺服器成功返回響應即可登陸主介面