1、今日完成任务:
(1)完成业务管理-单车月结算模块的代码书写及测试工作
2、核心源码:
package com.dw.controller;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dw.entity.Count;
import com.dw.service.CountService;
@Controller
public class CountController {
@Autowired
private CountService cs;
@RequestMapping("/saveCount")
@ResponseBody
public void saveCount(Count count){
try {
cs.save(count);
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("/queryAllCount")
@ResponseBody
public List<Count> queryAllCount(String year,String month){
try {
List<Count> list = cs.queryAll(year,month);
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>单车月结算</title>
<link rel="stylesheet" type="text/css" href="../../js/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="../../js/easyui/themes/icon.css"/>
<link rel="stylesheet" type="text/css" href="../../js/easyui/ext/portal.css"/>
<link rel="stylesheet" type="text/css" href="../../css/default.css"/>
<script src="../../js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
<script src="../../js/easyui/jquery.easyui.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../../js/easyui/ext/jquery.portal.js" type="text/javascript" charset="utf-8"></script>
<script src="../../js/easyui/locale/easyui-lang-zh_CN.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var totalcost = 0;//费用总计
var profit = 0;//毛利润
$(function(){
$('#dg').datagrid({
toolbar: [{
id: 'count',
text:'月结算',
iconCls: 'icon-edit',
handler: function(){
$("#ff").form('reset');
var rows = $('#dg').datagrid('getRows');
var turnover = 0;//总营业额
var totalkilometer = 0;//总公里数
var totalgas = 0;//总油费
var totaltoll = 0;//总过路费
var totalparking = 0;//总停车费
var totalrepair = 0;//总修理费
var totaltire = 0;//总轮胎费
var totalsubsidy = 0;//总车补贴
for (var i = 0; i < rows.length; i++) {
turnover += rows[i].check.checkmoney;
totalkilometer += rows[i].check.kilometer;
totalgas += rows[i].check.gas;
totaltoll += rows[i].check.toll;
totalparking += rows[i].check.parking;
totalrepair += rows[i].check.repair;
totaltire += rows[i].check.tire;
totalsubsidy += rows[i].check.subsidy;
}
totalcost = totalgas+totaltoll+totalparking+totalrepair+totaltire+totalsubsidy;
profit = turnover - totalcost;
$("#carnumber").val($("#carSelect").combobox('getText'));
$("#countyear").val($("#year").combobox('getText'));
$("#countmonth").val($("#month").combobox('getText'));
$("#turnover").val(turnover);
$("#totalkilometer").val(totalkilometer);
$("#totalgas").val(totalgas);
$("#totaltoll").val(totaltoll);
$("#totalparking").val(totalparking);
$("#totalrepair").val(totalrepair);
$("#totaltire").val(totaltire);
$("#totalsubsidy").val(totalsubsidy);
$("#totalcost").val(totalcost);
$("#profit").val(profit);
$("#remark").val('');
$("#win").window('open');
}
},'-',{
text:'车牌号:<input id="carSelect"/>'
},'-',{
text:'结算年份:<input id="year"/>'
},'-',{
text:'结算月份:<input id="month"/>'
},'-',{
text:'查询',
iconCls: 'icon-search',
handler:function(){
var carid = $("#carSelect").combobox('getValue');
var year = $("#year").combobox('getText');
var month = $("#month").combobox('getText');
if(carid==null || carid==''){
$.messager.alert('提示信息','请选择要查询的车牌号!','warning');
}else if(year==null || year==''){
$.messager.alert('提示信息','请选择要查询的结算年份!','warning');
}else if(month==null || month==''){
$.messager.alert('提示信息','请选择要查询的结算月份!','warning');
}else{
$('#dg').datagrid('load',{
carid: carid,
year: year,
month: month,
status:-1,
onLoadSuccess:function(){
$('#count').linkbutton('enable');
}
});
}
}
}]
});
$('#count').linkbutton('disable');
$("#carSelect").combobox({
url:'../../queryAllCar',
valueField:'id',
textField:'carnumber'
});
var years = [{id:new Date().getFullYear()-2},{id:new Date().getFullYear()-1},{id:new Date().getFullYear()}];
$("#year").combobox({
data:years,
valueField:'id',
textField:'id',
onSelect:function(val){
var months = [];
var currMonth = 12;
if(val.id==new Date().getFullYear()){
currMonth = new Date().getMonth()+1;
}
for(var i=0;i<currMonth;i++){
var monthValue = {};
monthValue.id = "0"+(i+1);
months.push(monthValue);
}
$("#month").combobox('loadData',months);
}
});
$("#month").combobox({
valueField:'id',
textField:'id'
});
$("#save").click(function(){
if($("#ff").form('validate')){
$("#ff").form('submit',{
success:function(data){
$("#win").window('close');
$("#dg").datagrid('reload');
}
});
}else{
$.messager.alert('警告','表单中包含非法数据!','warning');
}
});
});
function changeTotal(){
$("#totalcost").val(totalcost);
$("#profit").val(profit);
var total = Number($("#salary").val())+Number($("#gpsmoney").val())+Number($("#premium").val())+Number($("#loan").val())+Number($("#dividend").val())+Number($("#totalcost").val());
$("#totalcost").val(total);
$("#profit").val($("#turnover").val()-total);
}
</script>
</head>
<body>
<table id="dg" class="easyui-datagrid"
data-options="url:'../../queryAllDispatch',fitColumns:true,rownumbers:true,queryParams:{status:'-1'}">
<thead>
<tr>
<th data-options="field:'id',width:70,align:'center'">派车单号</th>
<th data-options="field:'car.carnumber',width:80,align:'center',formatter: function(value,row,index){return row.car.carnumber;}">车牌号码</th>
<th data-options="field:'senddate',width:100,align:'center'">出车日期</th>
<th data-options="field:'start',width:120,align:'center'">起始地点</th>
<th data-options="field:'customer.company',width:100,align:'center',formatter: function(value,row,index){return row.customer.company;}">用车单位</th>
<th data-options="field:'check.checkmoney',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.checkmoney;}">审核金额</th>
<th data-options="field:'check.gas',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.gas;}">油费</th>
<th data-options="field:'check.toll',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.toll;}">过路费</th>
<th data-options="field:'check.parking',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.parking;}">停车费</th>
<th data-options="field:'check.repair',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.repair;}">修理费</th>
<th data-options="field:'check.tire',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.tire;}">轮胎费</th>
<th data-options="field:'check.subsidy',width:70,align:'center',formatter: function(value,row,index){return row.check==null?'':row.check.subsidy;}">车补贴</th>
<th data-options="field:'status',width:90,align:'center',formatter: function(value,row,index){if(row.status==-1){return '未审核未收款';}else if(row.status==0){return '已审核未收款';}else{return '已审核已收款';}}">状态</th>
</tr>
</thead>
</table>
<div id="win" class="easyui-window" title="单车月结算" style="width:1000px;height:450px;"
data-options="modal:true,minimizable:false,maximizable:false,closed:true">
<div class="datagrid-toolbar">
<a id="save" href="#" class="easyui-linkbutton" icon="icon-save">保存</a>
</div>
<form id="ff" method="post" action="../../saveCount">
<table class="table-edit" align="center" width="80%">
<tr class="title">
<td colspan="6">单车月结算</td>
</tr>
<tr>
<td>车牌号码:</td>
<td><input id="carnumber" class="easyui-textbox" type="text" name="carnumber" data-options="required:true" readonly="readonly"/></td>
<td>操作日期:</td>
<td><input class="easyui-datebox" type="text" name="operatedate" data-options="required:true"/></td>
</tr>
<tr>
<td>结算年份:</td>
<td><input id="countyear" class="easyui-textbox" type="text" name="countyear" data-options="required:true" readonly="readonly"/></td>
<td>结算月份:</td>
<td><input id="countmonth" class="easyui-textbox" type="text" name="countmonth" data-options="required:true" readonly="readonly"/> </td>
</tr>
<tr>
<td>总营业额:</td>
<td><input id="turnover" class="easyui-textbox" type="text" name="turnover" data-options="required:true" readonly="readonly" /></td>
<td>总公里数:</td>
<td><input id="totalkilometer" class="easyui-textbox" type="text" name="totalkilometer" data-options="required:true" readonly="readonly"/></td>
</tr>
<tr>
<td>油费:</td>
<td><input id="totalgas" class="easyui-textbox" type="text" name="totalgas" data-options="required:true" readonly="readonly"/></td>
<td>过路费:</td>
<td><input id="totaltoll" class="easyui-textbox" type="text" name="totaltoll" data-options="required:true" readonly="readonly"/></td>
<td>停车费:</td>
<td><input id="totalparking" class="easyui-textbox" type="text" name="totalparking" data-options="required:true" readonly="readonly"/></td>
</tr>
<tr>
<td>修理费:</td>
<td><input id="totalrepair" class="easyui-textbox" type="text" name="totalrepair" data-options="required:true" readonly="readonly"/></td>
<td>轮胎费:</td>
<td><input id="totaltire" class="easyui-textbox" type="text" name="totaltire" data-options="required:true" readonly="readonly"/></td>
<td>车补贴:</td>
<td><input id="totalsubsidy" class="easyui-textbox" type="text" name="totalsubsidy" data-options="required:true" readonly="readonly"/></td>
</tr>
<tr>
<td>工资:</td>
<td><input id="salary" class="easyui-numberbox" type="text" name="salary" data-options="required:true" onchange="changeTotal()"/></td>
<td>GPS费用:</td>
<td><input id="gpsmoney" class="easyui-numberbox" type="text" name="gpsmoney" data-options="required:true" onchange="changeTotal()"/></td>
<td>保险费:</td>
<td><input id="premium" class="easyui-numberbox" type="text" name="premium" data-options="required:true" onchange="changeTotal()"/></td>
</tr>
<tr>
<td>还贷:</td>
<td><input id="loan" class="easyui-numberbox" type="text" name="loan" data-options="required:true" onchange="changeTotal()"/></td>
<td>分红:</td>
<td><input id="dividend" class="easyui-numberbox" type="text" name="dividend" data-options="required:true" onchange="changeTotal()"/></td>
</tr>
<tr>
<td>费用总计:</td>
<td><input id="totalcost" class="easyui-textbox" type="text" name="totalcost" data-options="required:true" readonly="readonly"/></td>
<td>毛利润:</td>
<td><input id="profit" class="easyui-textbox" type="text" name="profit" data-options="required:true" readonly="readonly"/></td>
</tr>
<tr>
<td>备注:</td>
<td><input id="remark" class="easyui-textbox" type="text" name="remark" data-options="required:true"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
3、遇到的问题:
(1)动态显示结算年份和结算月份
4、解决的方法:
(1)自制一个动态显示结算年份和结算月份的插件
var years = [{id:new Date().getFullYear()-2},{id:new Date().getFullYear()-1},{id:new Date().getFullYear()}];
$("#year").combobox({
data:years,
valueField:'id',
textField:'id',
onSelect:function(val){
var months = [];
var currMonth = 12;
if(val.id==new Date().getFullYear()){
currMonth = new Date().getMonth()+1;
}
for(var i=0;i<currMonth;i++){
var monthValue = {};
monthValue.id = "0"+(i+1);
months.push(monthValue);
}
$("#month").combobox('loadData',months);
}
});
$("#month").combobox({
valueField:'id',
textField:'id'
});
5、项目燃尽图更新: