三层循环List和Map强强组合--【ssnc】

  前两天,管技术的大哥给分配了个活,就是写做如下的配送清单的页面和逻辑。乍一看,很简单,做起来其实也简单。就是想的过程有点久而已。

  业务逻辑大概是这样子的:要对配送计划中的配送蔬菜呀,水果呀进行分类。这个页面显示的所有数据都要求是活的。oh ma ma mi ya ,重点是三层循环,list map的搅和的我脑袋跟水泥似的,硬邦邦的不动了。还好我生命力顽强,终于在大哥的帮助下,完成了这个代码。

         咳咳,跑题了,回来啊。业务是这样的:配送清单要显示n个配送计划,1配送计划对应n个产品类别(就是图中的蔬菜类,瓜果类),1个产品类别对应n个产品(蔬菜类对应黄瓜,芹菜等等),总体就是一个查询套查询再套查询。

 

后台代码如下:

AppDeliverListAction

 

package com.snsoft.ssnc.app.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.snsoft.ssnc.app.service.AppDeliverListService;
import com.snsoft.ssnc.ncgl.entity.SnDeliveryPlan;
import com.snsoft.ssnc.ncgl.entity.SnDeliveryView;
import com.snsoft.ssnc.ncgl.service.DeliveryService;
import com.snsoft.framework.action.BaseAction;

@Controller
@RequestMapping("/app")
public class AppDeliverListAction extends BaseAction {

	@Autowired
	private AppDeliverListService deliverListService;
	@Autowired
	private DeliveryService deliveryService;
		
	//查询配送清单html页面
	@RequestMapping(value="/deliverlist.do", method=RequestMethod.GET)
	public String add( ModelMap modelMap,HttpServletRequest request ){	
		
		//1.获取登录的用户姓名
	//	String realname = getLoginUsernam+e(request);
		String realname="李四";
		String userid = getLoginUserId(request);
		userid = "40288c4e51e743a80151e74738090004";
		//1.完成状态:0配送中、1已完成
		Integer planstate=0;
		//查询 所有计划的id
		List<String> planuuids = deliverListService.queryDeliverPlanuuidByUserId(userid);
		//如果计划id为空或者为0
		if(planuuids==null || planuuids.size()==0){
			modelMap.put("planList", new ArrayList<Object>());
			return "app/deliverList/deliverList";
		}
		//List里面存放map
		List<Map<String, Object>> planList = new ArrayList<Map<String,Object>>();
		//遍历计划id的list集合
		for(String planuuid : planuuids){
			SnDeliveryPlan plan = deliveryService.get(planuuid);
			Map<String, Object> map1 = new HashMap<String, Object>();
			map1.put("plan", plan);
			//根据计划id查询所有采摘记录信息
			List<SnDeliveryView>  list = deliverListService.queryDeliverView(planuuid);
			
			Map<String, List<Map<String, Object>>> catemap = new HashMap<String, List<Map<String,Object>>>();
			for(SnDeliveryView view : list){
				String catename = view.getCatename();
				if(catemap.get(catename) == null){
					List<Map<String, Object>> list2 = new ArrayList<Map<String,Object>>();
					catemap.put(catename, list2);
				}
                                //存入产品map信息
                                Map<String, Object> pdtmap = new HashMap<String, Object>();
				pdtmap.put("dcuuid", view.getDcuuid());
				pdtmap.put("pdtname", view.getPdtname());
				pdtmap.put("nums", view.getNums());
				pdtmap.put("pdtunits", view.getPdtunits());
				catemap.get(catename).add(pdtmap);
				
			}
			map1.put("catemap", catemap);
			planList.add(map1);
		}
		modelMap.put("planList", planList);
		


		return "app/deliverList/deliverList";
	}
	

}


AppDeliverListService

 

 

 

 

package com.snsoft.ssnc.app.service;

import java.util.List;
import org.springframework.stereotype.Service;
import com.snsoft.framework.service.BaseService;
import com.snsoft.ssnc.ncgl.entity.SnDeliveryView;

@Service
public class AppDeliverListService  extends BaseService<SnDeliveryView, String>{

	//查询所有的计划id
	public List<String> queryDeliverPlanuuidByUserId(String custuuid){
		String hql="select distinct(planuuid) from  SnDeliveryView  where custuuid=? and planstate=0";
		List<String> listDelivery=(List<String>)this.listByHql(hql,custuuid);
		return listDelivery;
	}
	//根据计划id查询它所有的配送计划信息
	public List<SnDeliveryView> queryDeliverView(String planuuid){
		String hql="from SnDeliveryView where planuuid=?";
		List<SnDeliveryView> listDelivery=(List<SnDeliveryView>)this.listByHql(hql,planuuid);
		return listDelivery;
	}
	
	

}

 

 

 

 

 

 

后台对应的代码结构图:

 

前台jsp代码如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/framework/include/taglib.jsp"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>  
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>

<body class="fxbg">
	
	<div class="head"><span class="headback"><a href="faxian.html">A</a></span><p>配送清单</p></div>
	<c:forEach items="${planList}" var="v1">
		<div class="pctime"><img src="images/pctime.png">预计配送时间:${v1.plan.sendtime}<span>配送人:${v1.plan.sender}</span></div>
		<div class="pctime"><img src="images/pctime.png">装箱时间:${v1.plan.packtime}<span>装箱人:${v1.plan.packing}</span></div>
		<c:forEach items="${v1.catemap}" var="m1">
			<div class="pscptit" >${m1.key }</div>
			<c:forEach items="${m1.value}" var="mv1">
				<div class="cptab">
					<table class="tab" border="1">
						<tr>
							<td>${mv1.pdtname}</td>
							<td width="60">${mv1.nums}${mv1.pdtunits}</td>
							<td width="60" class="dianc">
							<span>配送</span></td>
						</tr>		
					</table>	
				</div>
			</c:forEach>
		</c:forEach>
	</c:forEach>
	
	<div class="pscptit">建议说明:</div>
	<div class="cptab">
	<textarea class="textps"></textarea>
	</div>
	
	<div class="bc"><button>保存</button></div>


</body>
</html>

 

 

 

  最后页面是出来了,因为手头上面没有二期的jsp页面,所以只能自己手写一个啦!页面效果从小龙女被整成了小笼包,也是~~~。可见css之于代码,就像白米饭加的老干妈,下饭!好的,如有想进一步的了解的,欢迎联系我!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值