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

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

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

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

三层循环List和Map强强组合--【ssnc】_第1张图片

 

后台代码如下:

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 planuuids = deliverListService.queryDeliverPlanuuidByUserId(userid);
		//如果计划id为空或者为0
		if(planuuids==null || planuuids.size()==0){
			modelMap.put("planList", new ArrayList());
			return "app/deliverList/deliverList";
		}
		//List里面存放map
		List> planList = new ArrayList>();
		//遍历计划id的list集合
		for(String planuuid : planuuids){
			SnDeliveryPlan plan = deliveryService.get(planuuid);
			Map map1 = new HashMap();
			map1.put("plan", plan);
			//根据计划id查询所有采摘记录信息
			List  list = deliverListService.queryDeliverView(planuuid);
			
			Map>> catemap = new HashMap>>();
			for(SnDeliveryView view : list){
				String catename = view.getCatename();
				if(catemap.get(catename) == null){
					List> list2 = new ArrayList>();
					catemap.put(catename, list2);
				}
                                //存入产品map信息
                                Map pdtmap = new HashMap();
				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{

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

}

 

 

 

 

 

 

后台对应的代码结构图:

三层循环List和Map强强组合--【ssnc】_第2张图片

 

前台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" %>  




Insert title here



	
	
A

配送清单

预计配送时间:${v1.plan.sendtime}配送人:${v1.plan.sender}
装箱时间:${v1.plan.packtime}装箱人:${v1.plan.packing}
${m1.key }
${mv1.pdtname} ${mv1.nums}${mv1.pdtunits} 配送
建议说明:

 

 

 

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

三层循环List和Map强强组合--【ssnc】_第3张图片

你可能感兴趣的:(项目总结,map,List,Java容器)