2020暑假项目-车辆派遣管理系统开发记录#5

内容展示

  • 1、今日完成内容,
    - 公司信息列表完成,及信息更新维护;使用layui的表格编辑功能,可直接在表格中修改信息
    - 派车单生成完成,派车单在初始状态下可以继续修改删除,字段通过选择的相关表会自动填充数据
  • 2、核心源码
    addDispatch.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<jsp:include page="../common/menu.jsp" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>添加派车单</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
	<script src="<%=basePath%>js/tools.js"></script>
</head>
<body class="form-wrap">

	<div class="layui-fluid">
		<div class="layui-card">
			<div class="layui-card-header">添加派车单</div>
			<div class="layui-card-body" style="padding: 15px;">
				<form class="layui-form" action="#"
					name="dispatchInfo" id="dispatchInfo" method="post" lay-filter="component-form-group">
					<div class="layui-form-item">
						<div class="layui-inline">
							<label class="layui-form-label">派车单号</label>
							<div class="layui-input-inline">
								<input type="text" name="dispatchNum" id="dispatchNum" value="${dispatchNum}"
									lay-verify="title" readonly="readonly" class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">登记日期</label>
							<div class="layui-input-inline">
								<input type="text" name="createTime" value="${createTime}" readonly="readonly" lay-verify="required"
									autocomplete="off" class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">业务员</label>
							<div class="layui-input-inline">
								<select name="salesmanId" id="salesmanId" lay-filter="salesman" lay-search>
									<option value="">请选择货业务员</option>
									<c:forEach var="sale" items="${saleList}">
										<option value="${sale.id }" data-salesmanName="${sale.salesmanName }">${sale.salesmanName }</option>
									</c:forEach>
								</select>
								<input type="hidden" name="salesmanName" id="salesmanName" value="">
							</div>
						</div>
					</div>

					<div class="layui-form-item">
						<div class="layui-inline">
							<label class="layui-form-label">用车单位</label>
							<div class="layui-input-inline">
								<select name="companyId" id="companyId" lay-verify="" autocomplete="off" lay-filter="company" lay-search>
            						<option value="">请选用车单位</option>
            						<c:forEach var="company" items="${companyList}">
            							<option value="${company.id }"
												data-companyName="${company.companyName }"
												data-companyContactName="${company.contactName }"
												data-companyContactTel="${company.contactTel }"
										>${company.companyName }(${company.contactName })</option>
            						</c:forEach>
        						</select>
								<input type="hidden" name="companyName" id="companyName" value="">
							<!-- 	<input type="text" name="bdRelatedPartyNo" autocomplete="off"
									class="layui-input"> -->
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">联系人</label>
							<div class="layui-input-inline">
								<input type="text" name="companyContactName" readonly="readonly" id="companyContactName"  autocomplete="off"
									   class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">联系电话</label>
							<div class="layui-input-inline">
								<input type="text" name="companyContactTel" readonly="readonly" id="companyContactTel" autocomplete="off"
									class="layui-input">
							</div>
						</div>
					</div>
					<div class="layui-form-item">
						<div class="layui-inline">
							<label class="layui-form-label">出车时间</label>
							<div class="layui-input-inline">
								<input type="text" name="startTime" id="startTime" class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">支付方式</label>
							<div class="layui-input-inline">
								<select name="payType" id="payType" lay-verify="" autocomplete="off" >
									<option value="现金">现金</option>
									<option value="支付宝">支付宝</option>
									<option value="微信">微信</option>
									<option value="刷卡">刷卡</option>
								</select>
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">所属类别</label>
							<div class="layui-input-inline">
								<select name="carType" id="carType" lay-verify="">
									<option value="包车">包车</option>
									<option value="拼车">拼车</option>
									<option value="租车">租车</option>
								</select>
							</div>
						</div>
					</div>

					<div class="layui-form-item">
						<label class="layui-form-label">起始地点</label>
						<div class="layui-input-block">
							<input type="text" name="startAddress" style=" 88%" autocomplete="off" class="layui-input">
						</div>
					</div>

					<div class="layui-form-item">
						<div class="layui-inline">
							<label class="layui-form-label">车牌号码</label>
							<div class="layui-input-inline">
								<select name="vehicleId" id="vehicleId" lay-verify="" autocomplete="off" lay-filter="vehicle" lay-search>
									<option value="">请选用车辆</option>
									<c:forEach var="vehicle" items="${vehicleList}">
										<option value="${vehicle.id }"
												data-vehicleNum="${vehicle.vehicleNum }"
										>${vehicle.vehicleNum }</option>
									</c:forEach>
								</select>
								<input type="hidden" name="vehicleNum" id="vehicleNum" value="">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">驾驶员</label>
							<div class="layui-input-inline">
								<select name="pilotId" id="pilotId" lay-verify="" autocomplete="off" lay-filter="pilot" lay-search>
									<option value="">请选用驾驶员</option>
									<c:forEach var="pilot" items="${pilotList}">
										<option value="${pilot.id }"
												data-pilotName="${pilot.pilotName }"
										>${pilot.pilotName }</option>
									</c:forEach>
								</select>
								<input type="hidden" name="pilotName" id="pilotName" value="">
							</div>
						</div>

						<div class="layui-inline">
							<label class="layui-form-label">状态</label>
							<div class="layui-input-inline">
								<select name="status" id="status" lay-verify="" autocomplete="off" lay-filter="pilot" lay-search>
									<option value="1">未审核-未收款</option>
								</select>
							</div>
						</div>
					</div>

					<div class="layui-form-item">
						<div class="layui-inline">
							<label class="layui-form-label">租车费</label>
							<div class="layui-input-inline">
								<input type="float" name="totalMoney" id="totalMoney" value="0" class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">折让金额</label>
							<div class="layui-input-inline">
								<input type="float" name="saleMoney" id="saleMoney" value="0" class="layui-input">
							</div>
						</div>
						<div class="layui-inline">
							<label class="layui-form-label">实际金额</label>
							<div class="layui-input-inline">
								<input type="float" name="realMoney" id="realMoney" value="0" readonly="readonly" class="layui-input">
							</div>
						</div>
					</div>

			<div class="layui-form-item layui-form-text">
				<label class="layui-form-label">备注</label>
				<div class="layui-input-block">
					<textarea name=remark placeholder="请输入内容" class="layui-textarea"></textarea>
				</div>
			</div>
			<div class="layui-form-item layui-layout-admin">
				<div class="layui-input-block">
					<div class="layui-footer" style="text-align: center;">
						<button class="layui-btn" id="tj" type="button">立即提交</button>
						<a href="<%=basePath%>dispatch/toDispatchList" class="layui-btn layui-btn-primary">返回列表</a>
					</div>
				</div>
			</div>
			</form>
		</div>
	</div>
	</div>

</body>

</html>

<script>

	$('document').ready(function() {

		$("#totalMoney").change(function () {
			var totalMoney = $("#totalMoney").val();
			var saleMoney = $("#saleMoney").val();
			if(totalMoney!=0 && saleMoney!=0){
				$("#realMoney").val((totalMoney-saleMoney).toFixed(2));
			}
		});

		$("#saleMoney").change(function () {
			var totalMoney = $("#totalMoney").val();
			var saleMoney = $("#saleMoney").val();
			if(totalMoney!=0 && saleMoney!=0){
				$("#realMoney").val((totalMoney-saleMoney).toFixed(2));
			}
		});

		$("#tj").click(function () {
			//var jsonObj = $('#dispatchInfo').serializeJSON();
			var data = JSON.stringify($('#dispatchInfo').serializeJSON());
			// var data ={
			// 	"realMoney":"3.5"
			// };
			//var data2 = JSON.stringify(data);
			console.log(data);
			$.ajax({
				type:'post'
				,url:'<%=basePath%>dispatch/addDispatch'
				,data:data
				,dataType:'json'
				,contentType:'application/json;charset=utf-8'
				,success:function(data) {
					console.log(data)
					if(data.responseHead.code=200){
						window.location.href="<%=basePath%>dispatch/toDispatchList";
					}
				}
			})
		});

		layui.use(['form','laydate'], function() {

			var $ = layui.$,
				laydate = layui.laydate,
				form = layui.form;

			 form.on('select(salesman)',function (data) {
				var name = $(data.elem).find("option:selected").attr("data-salesmanName");
				console.log(name);
				$("#salesmanName").val(name);
			 });
			form.on('select(pilot)',function (data) {
				var name = $(data.elem).find("option:selected").attr("data-pilotName");
				console.log(name);
				$("#pilotName").val(name);
			});
			form.on('select(vehicle)',function (data) {
				var name = $(data.elem).find("option:selected").attr("data-vehicleNum");
				console.log(name);
				$("#vehicleNum").val(name);
			});
			form.on('select(company)',function (data) {
				var companyName = $(data.elem).find("option:selected").attr("data-companyName");
				var companyContactName = $(data.elem).find("option:selected").attr("data-companyContactName");
				var companyContactTel = $(data.elem).find("option:selected").attr("data-companyContactTel");

				$("#companyName").val(companyName);
				$("#companyContactName").val(companyContactName);
				$("#companyContactTel").val(companyContactTel);
			});


			laydate.render({
				elem : '#startTime',
				type : 'datetime',
				trigger : 'click'
			});

			/* 监听提交 */
			// form.on('submit(component-form-demo1)', function(data) {
			// 	var form = document.forms[0];
			// 		form.submit();
			// 	return false;
			// });



		});
	});
</script>

<jsp:include page="../common/js.jsp" />

DispatchController.java

package com.vdm.action;

import com.vdm.model.*;
import com.vdm.service.*;
import com.vdm.util.Constants;
import com.vdm.util.ErrorConstants;
import com.vdm.util.GenerationNum;
import com.vdm.util.ReturnMapUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping(value = "/dispatch")
public class DispatchController {

    @Autowired
    DispatchService dispatchService;

    @Autowired
    SalesmanService salesmanService;

    @Autowired
    CompanyService companyService;

    @Autowired
    VehicleService vehicleService;

    @Autowired
    PilotService pilotService;

    @RequestMapping(value = "/toDispatchList")
    public String toDispatchList(){
        return "dispatch/dispatchList";
    }

    @RequestMapping(value = "/delDispatch")
    public String delDispatch(int id){

        dispatchService.deleteByPrimaryKey(id);

        return "dispatch/dispatchList";
    }


    @ResponseBody
    @RequestMapping(value = "/dispatchList",method = RequestMethod.GET)
    public Map<String,Object> dispatchList(){
        List<DispatchInfo> userList = dispatchService.dispatchInfoList();
        int count = dispatchService.getDispatchInfoCount();
        Map<String,Object> retMap = new HashMap();
        retMap.put("code",0);
        retMap.put("msg","");
        retMap.put("count",count);
        retMap.put("data",userList);
        return retMap;
    }

    @RequestMapping(value = "/toEditDispatch")
    public String toEditDispatch(int id,HttpServletRequest request){
        DispatchInfo dispatchInfo = dispatchService.selectByPrimaryKey(id);

        request.setAttribute("dispatch",dispatchInfo);
        setInfo(request);

        return "dispatch/editDispatch";
    }

    @ResponseBody
    @RequestMapping(value = "/editDispatch" , method = RequestMethod.POST)
    public Map<String,Object> editDispatch(@RequestBody(required = true) DispatchInfo dispatchInfo, HttpSession session){
        dispatchInfo.setStatus((short) 1);
        if(dispatchService.updateByPrimaryKeySelective(dispatchInfo)>0) {
            return ReturnMapUtil.getOKResult();
        }else{
            return ReturnMapUtil.getErrorResult(ErrorConstants.PARAMETER_ERROR);
        }
    }



    private void setInfo(HttpServletRequest request){
        //业务员
        List<SalesmanInfo> saleList = salesmanService.getAllSalesmanInfo();
        request.setAttribute("saleList",saleList);

        //公司信息
        List<CompanyInfo> companyList = companyService.getAllCompanyInfo();
        request.setAttribute("companyList",companyList);

        //车辆信息
        List<VehicleInfo> vehicleList = vehicleService.getAllVehicleInfo();
        request.setAttribute("vehicleList",vehicleList);

        //驾驶员信息
        List<PilotInfo> pilotList = pilotService.getAllPilotInfo();
        request.setAttribute("pilotList",pilotList);
    }


    @RequestMapping(value = "/toAddDispatch")
    public String toAddDispatch(HttpServletRequest request){
        //生成派车单号
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        request.setAttribute("dispatchNum", GenerationNum.getSerialNum("VDM",3));
        request.setAttribute("createTime",sdf.format(new Date()));

        setInfo(request);

        return "dispatch/addDispatch";
    }

    @ResponseBody
    @RequestMapping(value = "/addDispatch" , method = RequestMethod.POST)
    public Map<String,Object> addCompany(@RequestBody(required = true) DispatchInfo dispatchInfo, HttpSession session){
        UserInfo user = (UserInfo) session.getAttribute(Constants.CURRENT_USER);
        dispatchInfo.setCreateBy(user.getLoginName());
        dispatchInfo.setCreateTime(new Date());
        dispatchInfo.setStatus((short) 1);
        System.out.println(dispatchInfo);
        if(dispatchService.insertSelective(dispatchInfo)>0) {
            return ReturnMapUtil.getOKResult();
        }else{
            return ReturnMapUtil.getErrorResult(ErrorConstants.PARAMETER_ERROR);
        }
    }

}
  • 3、遇到的问题

    • 3.1 form表单提交数据时,出现400错误,字段多时自动装载bean会出现问题(此问题反复测试,出现在时间为年月日时分秒的格式中出现错误)
  • 4、解决问题`

    • 4.1 把提交的form数据转化未json格式继续提交,接收与返回方法改为json格式,并在bean中加入json时间转化@JSONFormate(pattern="yyyy-MM-dd HH:mm:ss")
  • 5、燃尽图

原文地址:https://www.cnblogs.com/mhwl-wll/p/13372080.html