网站常用的蓝色/百度指数分析平台
装箱管理模块
1. 什么是装箱?
装箱就是计划将货物装到集装箱中进行运输。
根据多个出口报运单制定装箱单,填写发票号、发票时间,以及客人等相关信息。
2. 装箱的表结构

2.1 跳转装箱管理页面
修改cargo/left.jsp
<shiro:hasPermission name="装箱管理"><li><a href="${ctx}/packingList/list" onclick="linkHighlighted(this)" target="main" id="aa_5">装箱管理</a>
</li></shiro:hasPermission>
3. 查询
3.1 pojo
逆向工程
3.2 mapper
参考逆向工程
3.3 service
package com.sxt.service;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.sxt.mapper.PackingListCMapper;import com.sxt.pojo.PackingListC;import com.sxt.pojo.PageBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Service("packingListServiceImpl")public class PackingListServiceImpl implements PackingListService{@Autowiredprivate PackingListCMapper packingListCMapper;@Overridepublic PageBean listPackingListOfPage(PageBean pageBean) throws Exception {//设置查询条件Integer start = (pb.getCurPage()-1)*pb.getPageSize();PageHelper.offsetPage(start, pb.getPageSize());List<PackingListC> packingListCList = packingListCMapper.selectByExample(null);//获取分页信息PageInfo<PackingListC> pageInfo = new PageInfo<PackingListC>(packingListCList);pageBean.setTotalPages(pageInfo.getPages());pageBean.setDatas(pageInfo.getList());pageBean.setTotalRows(pageInfo.getTotal());return pageBean;}}
3.4 controller
package com.sxt.controller;import com.sxt.pojo.PageBean;import com.sxt.service.PackingListService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;@Controller
@RequestMapping("/packingList")public class PackingListController {@Autowiredprivate PackingListService packingListService;@RequestMapping("list")public String listPackingListOfPage(PageBean pageBean, Model model, HttpServletRequest request) throws Exception {PageBean pb = packingListService.listPackingListOfPage(pageBean);model.addAttribute("pb",pb);return "cargo/packinglist/jPackingListListPage";}
}
4. 跳转到新增页面
注意:装箱单是由多个报运单组成,所以跳转到新增页面时要分页查询报运单的信息
4.1 mapper
修改ExportCMapper.xml
<select id="listExportOfPage" parameterType="Integer" resultMap="listExportOfPageResultMap">SELECTec.*,(select count(1) from export_product_c epc where epc.EXPORT_ID=ec.EXPORT_ID) exportProductNum,(select count(1) from ext_eproduct_c eec where eec.EXPORT_PRODUCT_ID in(select EXPORT_PRODUCT_ID from export_product_c where EXPORT_ID=ec.EXPORT_ID))extEproductNumFROMexport_c ec<where><if test="_parameter!=null">ec.state = #{state}</if></where></select>
修改ExportCMapper
List<ExportCVo> listExportOfPage(Integer state);
4.2 service
修改ExportServiceImpl
@Overridepublic PageBean listExportOfPage(PageBean pageBean, Integer state){//设置查询条件PageHelper.startPage(pageBean.getCurPage(),pageBean.getPageSize());List<ExportCVo> exportCVoList = exportCMapper.listExportOfPage(state);//获取分页信息PageInfo<ExportCVo> pageInfo = new PageInfo<ExportCVo>(exportCVoList);pageBean.setTotalPages(pageInfo.getPages());pageBean.setDatas(pageInfo.getList());pageBean.setTotalRows(pageInfo.getTotal());return pageBean;
}
4.3 controller
修改ExportController
@RequestMapping("list")public String listDeptAndParentOfPage(PageBean pageBean, Model model, HttpServletRequest request) throws Exception {PageBean pb = exportService.listExportOfPage(pageBean, null);model.addAttribute("pb",pb);return "cargo/export/jExportList";
}
修改PackingListController
//跳转装箱管理的新增页面@RequestMapping("tocreate")public String tocreate(PageBean pageBean,Model model) throws Exception {//分页查询报运单列表PageBean pb = exportService.listExportOfPage(pageBean,1);model.addAttribute("pb",pb);return "cargo/packinglist/jPackingListCreate";
}
4.4 jsp
修改jPackingListListPage.jsp
<li id="new"><a href="#"onclick="formSubmit('${ctx}/packingList/tocreate','_self');this.blur();">新增</a></li>
修改jPackingListCreate.jsp
<%@ page language="java" pageEncoding="UTF-8"%><%@ include file="../../baselist.jsp" %><html xmlns="http://www.w3.org/1999/xhtml">
5. 新增
5.1 service
@Overridepublic void createPackingList(String[] exportId, PackingListC packingListC) throws Exception {//1、获取当前登录用户的信息Subject subject = SecurityUtils.getSubject();CurrentUser currentUser = (CurrentUser) subject.getPrincipal();UserP user = currentUser.getUserP();DeptP deptP = currentUser.getDeptP();//2、处理EXPORT_IDS和EXPORT_NOSStringBuffer exportIds = new StringBuffer(); StringBuffer exportNos = new StringBuffer();for (int i = 0; i < exportId.length; i++) {String str = exportId[i];String[] exportId_exportNo = str.split("#");if(StringUtils.isNotBlank(exportIds)){exportIds.append(",");}if(StringUtils.isNotBlank(exportNos)){exportNos.append(",");}exportIds.append(exportId_exportNo[0]);exportNos.append(exportId_exportNo[1]);}//3、补全装箱单信息packingListC.setExportIds(exportIds.toString());packingListC.setExportNos(exportNos.toString());packingListC.setPackingListId(UUID.randomUUID().toString());packingListC.setCreateBy(user.getUserId());packingListC.setCreateDept(deptP.getDeptId());packingListC.setCreateTime(new Date());packingListC.setState(0);packingListCMapper.insertSelective(packingListC);//4、修改报运单的状态String[] exportId_arr = exportIds.toString().split(",");for (int i = 0; i < exportId_arr.length; i++) {String exportId1 = exportId_arr[i];ExportC exportC = new ExportC();exportC.setExportId(exportId1);exportC.setState(2);exportCMapper.updateByPrimaryKeySelective(exportC);}
}
5.2 controller
@RequestMapping("/create")public String createPackingList(String[] exportId, PackingListC packingListC) throws Exception {packingListService.createPackingList(exportId,packingListC);return "redirect:/packingList/list";
}
5.3 jsp
<script type="text/javascript">function isOnlyChecked() {if($("input[name='exportId']:checked").length>0){return true;}return false;}function toSubmit() {if (isOnlyChecked()) {formSubmit('${ctx}/packingList/create','_self');} else {alert("请先选择一条记录,再进行操作!");}}</script>... ...<c:forEach items="${pb.datas}" var="o" varStatus="status"><tr class="odd" onmouseover="this.className='highlight'" onmouseout="this.className='odd'"><td><input type="checkbox" name="exportId" value="${o.exportId}#${o.customerContract}"/></td><td>${o.exportId}</td>
... ...
6. 提交
6.1 service
@Overridepublic void submitPackingList(String packingListId) throws Exception {PackingListC packingListC = new PackingListC();packingListC.setPackingListId(packingListId);packingListC.setState(1);packingListCMapper.updateByPrimaryKeySelective(packingListC);
}
6.2 controller
@RequestMapping("/submit")public String submitPackingList(String packingListId) throws Exception {packingListService.submitPackingList(packingListId);return "redirect:/packingList/list";
}
1. 什么是委托?
Ø 要将货物送到客户指定的地方,可能直接送到港口,可能送到客户的门店。因为贸易公司很小,几十号人,不可能有自己的车队,即使有车队,也基本上不会有船、飞机,通常都是委托其他运输公司来运输。这就是委托。
Ø 根据装箱单来制定委托书。一个装箱单对一个委托书。
2. 装箱的表结构

委托新增保存时,其id就保存关联的装箱id
这样两个ID相等,意味着通过ID值,既可以去查找委托信息,也可以查找装箱信息
3. 委托管理菜单授权
3.1 jsp
修改cargo/left.jsp
<shiro:hasPermission name="委托管理"><li><a href="${ctx}/shippingOrder/list" onclick="linkHighlighted(this)" target="main" id="aa_6">委托管理</a></li></shiro:hasPermission>
4. 查询
注意:
委托查询的是已经上报的装箱信息
因为要查询委托状态(表联查),所以要再添加新的委托查询方法
4.1 pojo
4.2 mapper
修改PackingListMapper.xml
<!--分页查询状态是1:已上报 的装箱单信息--><resultMap id="listPackingListOfPageByStateResultMap" type="com.sxt.pojo.PackingListCVo"><id column="PACKING_LIST_ID" property="packingListId" jdbcType="VARCHAR" /><result column="SELLER" property="seller" jdbcType="VARCHAR" /><result column="BUYER" property="buyer" jdbcType="VARCHAR" /><result column="INVOICE_NO" property="invoiceNo" jdbcType="VARCHAR" /><result column="INVOICE_DATE" property="invoiceDate" jdbcType="TIMESTAMP" /><result column="MARKS" property="marks" jdbcType="VARCHAR" /><result column="DESCRIPTIONS" property="descriptions" jdbcType="VARCHAR" /><result column="EXPORT_IDS" property="exportIds" jdbcType="VARCHAR" /><result column="EXPORT_NOS" property="exportNos" jdbcType="VARCHAR" /><result column="STATE" property="state" jdbcType="INTEGER" /><result column="CREATE_BY" property="createBy" jdbcType="VARCHAR" /><result column="CREATE_DEPT" property="createDept" jdbcType="VARCHAR" /><result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /><result column="SHIPPING_ORDER_STATE" property="shippingOrderState" jdbcType="INTEGER" /></resultMap><select id="listPackingListOfPageByState" resultMap="listPackingListOfPageByStateResultMap">SELECTplc.*, soc.STATE SHIPPING_ORDER_STATEFROMpacking_list_c plcLEFT JOIN shipping_order_c soc ON plc.PACKING_LIST_ID = soc.SHIPPING_ORDER_IDwhere plc.STATE=1</select>
修改PackingListMapper
List<PackingListCVo> listPackingListOfPageByState();
4.3 service
修改PackingListServiceImpl
@Overridepublic PageBean listPackingListOfPageByState(PageBean pageBean) throws Exception {//设置查询条件PageHelper.startPage(pageBean.getCurPage(),pageBean.getPageSize());List<PackingListCVo> packingListCVoList = packingListCMapper.listPackingListOfPageByState();//获取分页信息PageInfo<PackingListCVo> pageInfo = new PageInfo<PackingListCVo>(packingListCVoList);pageBean.setTotalPages(pageInfo.getPages());pageBean.setDatas(pageInfo.getList());pageBean.setTotalRows(pageInfo.getTotal());return pageBean;
}
4.4 controller
创建ShippingOrderController
@Controller
@RequestMapping("/shippingOrder")public class ShippingOrderController {@Autowiredprivate PackingListService packingListService;//分页查询状态是1:已上报 的装箱单信息@RequestMapping("/list")public String listPackingListOfPageByState(PageBean pageBean, Model model, HttpServletRequest request) throws Exception {PageBean pb = packingListService.listPackingListOfPageByState(pageBean);model.addAttribute("pb",pb);return "cargo/packinglist/jShippingList";}
}
4.5 jsp
修改
<td><c:if test="${o.state==0}">草稿</c:if><c:if test="${o.state==1}"><b><font color="green">已上报</font></b></c:if></td><td><c:if test="${o.shippingOrderState==0}">草稿</c:if><c:if test="${o.shippingOrderState==1}"><b><font color="green">已上报</font></b></c:if></td>
5. 委托
5.1 service
@Service("shippingOrderServiceImpl")public class ShippingOrderServiceImpl implements ShippingOrderService {@Autowiredprivate ShippingOrderCMapper shippingOrderCMapper;@Overridepublic ShippingOrderC getShippingOrderCBypackingListId(String packingListId) throws Exception {return shippingOrderCMapper.selectByPrimaryKey(packingListId);}@Overridepublic void addOrUpdateShippingOrderC(String packingListId, ShippingOrderC shippingOrderC) throws Exception {//获取当前登录用户的信息Subject subject = SecurityUtils.getSubject();CurrentUser currentUser = (CurrentUser) subject.getPrincipal();UserP user = currentUser.getUserP();DeptP deptP = currentUser.getDeptP();//shippingOrderC 有主键:修改 没有主键:新增if(StringUtils.isNotBlank(shippingOrderC.getShippingOrderId())){shippingOrderCMapper.updateByPrimaryKeySelective(shippingOrderC);}else{shippingOrderC.setShippingOrderId(packingListId);//补全委托单信息shippingOrderC.setState(0);shippingOrderC.setCreateBy(user.getUserId());shippingOrderC.setCreateDept(deptP.getDeptId());shippingOrderC.setCreateTime(new Date());shippingOrderCMapper.insertSelective(shippingOrderC);}}}
5.2 controller
修改ShippingOrderController
/*** 委托跳转* @param packingListId
* @param model
* @return
* @throws Exception*/@RequestMapping("/entrust")public String entrust(String packingListId,Model model)throws Exception{model.addAttribute("packingListId",packingListId);//通过packingListId查询委托信息,查询到:update 未查找:insertShippingOrderC shippingOrderC = shippingOrderService.getShippingOrderCBypackingListId(packingListId);model.addAttribute("shippingOrderC",shippingOrderC);return "/cargo/packinglist/jShippingOrder";
}/*** 新增或修改委托单* @param packingListId
* @param shippingOrderC
* @return
* @throws Exception*/@RequestMapping("/update")public String update(String packingListId, ShippingOrderC shippingOrderC)throws Exception{shippingOrderService.addOrUpdateShippingOrderC(packingListId,shippingOrderC);return "redirect:/packingList/list";
}
6. 提交
6.1 service
@Overridepublic void updateShippingOrder(String packingListId) throws Exception {ShippingOrderC shippingOrderC = new ShippingOrderC();shippingOrderC.setShippingOrderId(packingListId);shippingOrderC.setState(1);shippingOrderCMapper.updateByPrimaryKeySelective(shippingOrderC);
}
6.2 controller
@RequestMapping("/submit")public String submitShippingOrder(String packingListId) throws Exception {shippingOrderService.updateShippingOrder(packingListId);return "redirect:/shippingOrder/list";
}