前两天,管技术的大哥给分配了个活,就是写做如下的配送清单的页面和逻辑。乍一看,很简单,做起来其实也简单。就是想的过程有点久而已。
业务逻辑大概是这样子的:要对配送计划中的配送蔬菜呀,水果呀进行分类。这个页面显示的所有数据都要求是活的。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之于代码,就像白米饭加的老干妈,下饭!好的,如有想进一步的了解的,欢迎联系我!