Commit c342fcdb authored by 徐州's avatar 徐州

新增需求

parent c108a122
......@@ -247,8 +247,10 @@
<tr>
<td colspan="4" align="center" style="position: relative;top: 20px;">
<a href="###" class="btn_01" onclick="tijiao()" >提交<b></b></a>&nbsp;
<c:if test="${'edit' == flag}">
<a href="###" class="btn_01" onclick="shanchu()" >删除<b></b></a>&nbsp;
</c:if>
<a href="###" class="btn_01" onclick="parent.close_win('win_fstzs');" >关闭<b></b></a>&nbsp;
</td>
</tr>
</table>
......@@ -463,6 +465,11 @@
}
function shanchu() {
document.myform1.action = "shanchu.action";
document.myform1.submit();
}
</script>
</body>
</html>
......@@ -21,7 +21,7 @@
var queryParams = {
"fstzsXm.slbh": $("#slbh").val(),
"fstzsXm.jsdwmc": $("#dwmc").val(),
"fstzsXm.gcxmmc": $("#xmmc").val(),
"fstzsXm.gcxmmc": $("#gcxmmc").val(),
"fstzsXm.yjje": $("#yjje").val()
};
$('#pagination').datagrid('options').queryParams = queryParams;
......@@ -36,7 +36,7 @@
queryParams:{
"fstzsXm.slbh": $("#slbh").val(),
"fstzsXm.dwmc": $("#dwmc").val(),
"fstzsXm.xmmc": $("#xmmc").val(),
"fstzsXm.gcxmmc": $("#gcxmmc").val(),
"fstzsXm.yjje": $("#yjje").val(),
},
......
<%@page language="java" pageEncoding="UTF-8" isELIgnored="false"%>
<%@include file="/common/header.jsp"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>打印非税通知书</title>
<%@include file="/common/jsLib.jsp"%>
<style>
.table-line-td>td{
width: 240%;
display: inline-block;
border-top: none;
border-bottom: none;
border-right: none;
}
.add-table {
width: 90% !important;
float: right;
}
.add-table,
.add-table td {
border: 1px solid #d9d9d9;
border-collapse: collapse;
text-align: center;
}
.add-table td {
width: 15%;
}
.add-table th {
text-align: center;
padding: 0;
}
.db-input {
display: none;
width: 80%;
}
.db-num {
width: 100%;
height: 20px;
display: inline-block;
}
.add-title{
display: inline-block;
text-align: right;
width: 69px;
color: #000;
font-size: 12px;
font-weight: bold;
}
.fu-advice{
position: relative;
top: 20px;
}
.fu-advice,.fu-advice td{
border: none !important;
}
.ta-tb tbody{
display: inherit;
width: 100%;
}
</style>
</head>
<body validform="true">
<div class="page_dialog">
<div class="inner6px">
<form name="myform1" method="post" enctype="multipart/form-data">
<s:token />
<input class="hid" type="hidden" name="fstzsXm.id" value="${fstzsXm.id}">
<div class="cell" style="width: 100%">
<table width="100%" border="0" class="ta-tb">
<tr class="table-line-td">
<th width="15%">建设单位</th>
<td width="35%">
<input id="jsdw" name="fstzsXm.jsdwmc" style="width:96%;margin-top: 6px;" value="${fstzsXm.jsdwmc}" disabled/>
</td>
</tr>
<tr>
<th width="15">工程项目名称</th>
<td width="35%">
<input id="gcxmmc" name="fstzsXm.gcxmmc" style="width:90%" value="${fstzsXm.gcxmmc}" disabled/>
</td>
<th width="15">缴款人手机号</th>
<td width="35%">
<input id="mobile" name="fstzsXm.mobile" style="width:90%" value="${fstzsXm.mobile}" disabled/>
</td>
</tr>
<tr>
<th width="15">缴款人账号</th>
<td width="35%">
<input id="zhanghao" name="fstzsXm.zhanghao" style="width:90%" value="${fstzsXm.zhanghao}" disabled/>
</td>
<th width="15">缴款人开户银行</th>
<td width="35%">
<input id="khh" name="fstzsXm.khh" style="width:90%" value="${fstzsXm.khh}" disabled/>
</td>
</tr>
<tr>
<th width="15">缴款方式</th>
<td width="35%">
<input style="width:90%" value="直接解缴" disabled/>
</td>
<th width="15">缴款人类型</th>
<td width="35%">
<input style="width:90%" value="单位" disabled/>
</td>
</tr>
<tr>
<th width="15">应缴总面积(平方米)</th>
<td width="35%">
<input id="csmj" name="fstzsXm.paymentItemPending.csmj" style="width:90%" value="${fstzsXm.paymentItemPending.csmj}" disabled/>
</td>
<th width="15">收费标准(元)</th>
<td width="35%">
<input style="width:90%" value="150" disabled/>
</td>
</tr>
<tr>
<th width="15">征收单位名称</th>
<td width="35%">
<input id="zsdw" name="fstzsXm.kpsjgl.zsdw" style="width:90%" value="${fstzsXm.kpsjgl.zsdw}" disabled/>
</td>
<th width="15">征收单位编码</th>
<td width="35%">
<input id="zsdwbm" name="fstzsXm.kpsjgl.zsdwbm" style="width:90%" value="${fstzsXm.kpsjgl.zsdwbm}" disabled/>
</td>
</tr>
<tr>
<th width="15">区划码</th>
<td width="35%">
<input id="qhm" name="fstzsXm.kpsjgl.qhm" style="width:90%" value="${fstzsXm.kpsjgl.qhm}" disabled/>
</td>
<th width="15">收款人全称</th>
<td width="35%">
<input id="krqc" name="fstzsXm.kpsjgl.krqc" style="width:90%" value="${fstzsXm.kpsjgl.krqc}" disabled/>
</td>
</tr>
<tr>
<th width="15">收款人账号</th>
<td width="35%">
<input id="skrzh" name="fstzsXm.kpsjgl.skrzh" style="width:90%" value="${fstzsXm.kpsjgl.skrzh}" disabled/>
</td>
<th width="15">收款人开户行</th>
<td width="35%">
<input id="skrkhh" name="fstzsXm.kpsjgl.skrkhh" style="width:90%" value="${fstzsXm.kpsjgl.skrkhh}" disabled/>
</td>
</tr>
<tr>
<th width="15">项目编码</th>
<td width="35%">
<input id="xmbm" name="fstzsXm.kpsjgl.xmbm" style="width:90%" value="${fstzsXm.kpsjgl.xmbm}" disabled/>
</td>
<th width="15">收入项目名称</th>
<td width="35%">
<input id="srxmmc" name="fstzsXm.kpsjgl.srxmmc" style="width:90%" value="${fstzsXm.kpsjgl.srxmmc}" disabled/>
</td>
</tr>
<tr>
<th width="15">配套费应缴金额(元)</th>
<td width="35%">
<input id="yjje" name="fstzsXm.yjje" style="width:90%" value="${fstzsXm.yjje}" disabled/>
</td>
<th width="15">配套费应缴金额大写</th>
<td width="35%">
<input id="yjjedx" name="fstzsXm.yjjedx" style="width:90%" value="${fstzsXm.yjjedx}" disabled/>
</td>
</tr>
<tr class="table-line-td">
<th width="15">备注(限25字以内)</th>
<td width="35%">
<input id="beizhu" name="fstzsXm.beizhu" style="width:96%;margin-top: 6px;" value="${fstzsXm.beizhu}" disabled/>
</td>
</tr>
</table>
<div style="margin-top: 20px;">
<div class="add-title">配套费</div>
<table class="add-table">
<thead>
<tr>
<th>序号</th>
<th>缴款人</th>
<th>计量单位</th>
<th>收费标准</th>
<th>应缴面积</th>
<th>应缴金额</th>
</tr>
</thead>
<tbody class="add-tr">
<c:forEach items="${fstzsList}" var="result" varStatus="userStatus">
<tr class="">
<td class="line-one line-xh">${userStatus.count}</td>
<td class=" line-input"><span class="db-num db-num-text">${result.jkr}</span></td>
<td class="line-one"></td>
<td class="line-one">150</td>
<td class="line-one line-yjmj">${result.yjmj}</td>
<td class="line-input"><span class="db-num db-nums">${result.yjje}</span></td>
</tr>
</c:forEach>
</tbody>
<tr>
<td class="line-one">合计</td>
<td class="line-input"></td>
<td class="line-one"></td>
<td class="line-one"></td>
<td class="line-one yjmj-hj"></td>
<td class="line-one yjje-hj"></td>
</tr>
</table>
</div>
<table width="100%" border="0" class="fu-advice">
<tr >
<td width="0%" style="width: 0%"><div class="add-title">复核意见</div></td>
<td width="100%">
<textarea id="fhyj" name="fstzsXm.fhyj" style="width:96%;margin-top: 6px;" value="${fstzsXm.fhyj}"></textarea>
</td>
</tr>
<tr>
<td colspan="4" align="center" style="position: relative;top: 20px;">
<a href="###" class="btn_01" onclick="review(0);" >通过<b></b></a>&nbsp;
<a href="###" class="btn_01" onclick="review(1);" >退回<b></b></a>&nbsp;
</td>
</tr>
</table>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$(function () {
//应缴金额
var nums = document.getElementsByClassName('db-nums')
var money = 0
for (var i = 0; i < nums.length; i++) {
money += Number($(nums[i]).text())
}
$('.yjje-hj').append(money)
//应缴面积
var numsje = document.getElementsByClassName('line-yjmj')
var mj = 0
for (var i = 0; i < numsje.length; i++) {
mj += Number($(numsje[i]).text())
}
$('.yjmj-hj').append(mj)
})
function review(flag) {
var id = $("input[name='fstzsXm.id']").val();
$.ajax({
async: false,
url: "${ctx}/jsp/fstzs/checkReviewFstzs.action?flag=" + flag,
type: 'post',
dataType: 'json',
async: false,
data: {
'fstzsXm.id':id,
flag:flag
},
error: function (data) {
$.messager.alert('错误', data.message);
},
success: function (data) {
if (data.result) {
document.myform1.action = "reviewFstzs.action?flag=" + flag;
document.myform1.submit();
} else {
$.messager.alert('错误', '验证失败,'+data.message);
return;
}
}
});
}
</script>
</body>
</html>
......@@ -267,9 +267,32 @@
}
$('.yjmj-hj').append(mj)
})
function review(flag) {
var id = $("input[name='fstzsXm.id']").val();
$.ajax({
async: false,
url: "${ctx}/jsp/fstzs/checkReviewFstzs.action?flag=" + flag,
type: 'post',
dataType: 'json',
async: false,
data: {
'fstzsXm.id':id,
flag:flag
},
error: function (data) {
$.messager.alert('错误', data.message);
},
success: function (data) {
if (data.result) {
document.myform1.action = "reviewFstzs.action?flag=" + flag;
document.myform1.submit();
} else {
$.messager.alert('错误', '验证失败,'+data.message);
return;
}
}
});
}
</script>
......
......@@ -23,10 +23,21 @@
data:{
'fstzs.slbh' : slbh
},
async : false
});
async : false,
error: function (data) {
$.messager.alert('错误', data.message);
},
success: function (data) {
if (data.result) {
$.messager.alert("提示","操作成功")
reloadDate()
} else {
$.messager.alert('错误', '验证失败,'+data.message);
return;
}
}
});
}
});
......@@ -40,11 +51,13 @@
function search_fstzs(){
var queryParams = {
"fstzs.slbh": $("#slbh").val(),
"fstzs.dwmc": $("#dwmc").val(),
"fstzs.xmmc": $("#xmmc").val(),
"fstzs.jsdwmc": $("#jsdwmc").val(),
"fstzs.gcxmmc": $("#gcxmmc").val(),
"fstzs.yjje": $("#yjje").val(),
"fstzs.jkm": $("#jkm").val(),
"fstzs.status": $("#status").val(),
"kssj":$("#kssj").val(),
"jssj":$("#jssj").val()
};
$('#pagination').datagrid('options').queryParams = queryParams;
$('#pagination').datagrid('clearSelections');
......@@ -57,15 +70,14 @@
url:'${ctx}/jsp/fstzs/fstzsList.action',
queryParams:{
"fstzs.slbh": $("#slbh").val(),
"fstzs.dwmc": $("#dwmc").val(),
"fstzs.xmmc": $("#xmmc").val(),
"fstzs.jsdwmc": $("#jsdwmc").val(),
"fstzs.gcxmmc": $("#gcxmmc").val(),
"fstzs.yjje": $("#yjje").val(),
"fstzs.jkm": $("#jkm").val(),
"fstzs.status": $("#status").val(),
"kssj":$("#kssj").val(),
"jssj":$("#jssj").val()
},
frozenColumns:[[
{field:'id',checkbox:true}
]],
columns:[[
{field:'op',title:'操作',width:80,align:'center',formatter:function(value,rec){
var result = "";
......@@ -112,38 +124,38 @@
<table width="100%">
<tr>
<th width="15%">受理编号</th>
<td width="12%"><input name="fstzsXm.slbh" id="slbh" value="" type="text"></td>
<td width="12%"><input name="fstzs.slbh" id="slbh" value="" type="text"></td>
<th width="15%">缴款码</th>
<td width="12%"><input name="fstzsXm.yjje" id="yjje" value="" type="text"></td>
<td width="12%"><input name="fstzs.jkm" id="jkm" value="" type="text"></td>
<th width="15%">应缴金额</th>
<td width="12%"><input name="fstzsXm.slbh" id="slbh" value="" type="text"></td>
<td width="12%"><input name="fstzs.yjje" id="yjje" value="" type="text"></td>
</tr>
<tr>
<th width="15%">工程项目名称</th>
<td width="12%"><input name="fstzs.gcxmmc" id="gcxmmc" value="" type="text"></td>
<th width="12%">建设单位名称</th>
<td width="12%"><input name="fstzs.jsdwmc" id="jsdwmc" value="" type="text"></td>
<th width="15%">非税通知书状态</th>
<td width="12%"><select name="rfxm.accountStatus" id="accountStatus" >
<td width="12%"><select name="rfxm.status" id="status" >
<option value="">请选择</option>
<option value="1">正常</option>
<option value="2">已缴款</option>
<option value="3">已作废</option>
<option value="3">已缴款</option>
<option value="2">已作废</option>
</select></td>
</tr>
<tr>
<th width="15%">工程项目名称</th>
<td width="12%"><input name="fstzsXm.gcxmmc" id="gcxmmc" value="" type="text"></td>
<th width="12%">建设单位名称</th>
<td width="12%"><input name="fstzsXm.jsdwmc" id="jsdwmc" value="" type="text"></td>
<th width="15%">通知书开具时间</th>
<td width="12%" style="border-right: none;position: relative"> <input name="rfxmsfxx.fkTime" id="kprq" style="width: 90%"
type="text" class="Wdate" value="${item1.kprq}"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30" errormsg='此项为必填'>
<td width="12%" style="border-right: none;position: relative"> <input name="kssj" id="kssj" style="width: 90%" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30">
<span style="position: absolute;right: -8px">-</span>
</td>
<td width="12%" style="border-left: none">
<input name="rfxmsfxx.fkTime" id="kprq1" style="width:90%"
type="text" class="Wdate" value="${item1.kprq}"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30" errormsg='此项为必填'>
<input name="jssj" id="jssj" style="width:90%" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30">
</td>
</tr>
<tr >
<td colspan="8" align="center">
<a href="###" class="btn_01" onclick="search_fstzs()" >查询<b></b></a>&nbsp;
......
......@@ -10,11 +10,14 @@
function search_fstzs(){
var queryParams = {
"fstzs.slbh": $("#slbh").val(),
"fstzs.dwmc": $("#dwmc").val(),
"fstzs.xmmc": $("#xmmc").val(),
"fstzs.jsdwmc": $("#jsdwmc").val(),
"fstzs.gcxmmc": $("#gcxmmc").val(),
"fstzs.yjje": $("#yjje").val(),
"fstzs.jkm": $("#jkm").val(),
"fstzs.status": $("#status").val(),
"fstzs.isKp": $("#isKp").val(),
"kssj":$("#kssj").val(),
"jssj":$("#jssj").val()
};
$('#pagination').datagrid('options').queryParams = queryParams;
$('#pagination').datagrid('clearSelections');
......@@ -27,11 +30,13 @@
url:'${ctx}/jsp/fstzs/fstzsList.action?status=3',
queryParams:{
"fstzs.slbh": $("#slbh").val(),
"fstzs.dwmc": $("#dwmc").val(),
"fstzs.xmmc": $("#xmmc").val(),
"fstzs.jsdwmc": $("#jsdwmc").val(),
"fstzs.gcxmmc": $("#gcxmmc").val(),
"fstzs.yjje": $("#yjje").val(),
"fstzs.jkm": $("#jkm").val(),
"fstzs.status": $("#status").val(),
"kssj":$("#kssj").val(),
"jssj":$("#jssj").val()
},
frozenColumns:[[
{field:'id',checkbox:true}
......@@ -77,6 +82,24 @@
}));
});
function kaipiao(id){
$.messager.confirm("提示", "确认开票?", function(result) {
if(result) {
$.ajax({
url : "${ctx}/jsp/fstzs/kaipiao.action",
type: 'post',
dataType: 'json',
data:{
id : id
},
async : false
});
$.messager.alert("提示","操作成功")
reloadDate()
}
});
}
</script>
</head>
......@@ -89,47 +112,45 @@
<table width="100%">
<tr>
<th width="15%">受理编号</th>
<td width="12%"><input name="fstzsXm.slbh" id="slbh" value="" type="text"></td>
<td width="12%"><input name="fstzs.slbh" id="slbh" value="" type="text"></td>
<th width="15%">缴款码</th>
<td width="12%"><input name="fstzsXm.yjje" id="yjje" value="" type="text"></td>
<td width="12%"><input name="fstzs.jkm" id="jkm" value="" type="text"></td>
<th width="15%">应缴金额</th>
<td width="12%"><input name="fstzsXm.slbh" id="slbh" value="" type="text"></td>
<th width="15%">非税通知书状态</th>
<td width="12%"><select name="rfxm.accountStatus" id="accountStatus" >
<option value="">请选择</option>
<option value="1">正常</option>
<option value="2">已缴款</option>
<option value="3">已作废</option>
<td width="12%"><input name="fstzs.yjje" id="yjje" value="" type="text"></td>
</select></td>
</tr>
<tr>
<th width="15%">工程项目名称</th>
<td width="12%"><input name="fstzsXm.gcxmmc" id="gcxmmc" value="" type="text"></td>
<td width="12%"><input name="fstzs.gcxmmc" id="gcxmmc" value="" type="text"></td>
<th width="12%">建设单位名称</th>
<td width="12%"><input name="fstzsXm.jsdwmc" id="jsdwmc" value="" type="text"></td>
<th width="12%">开票状态</th>
<td width="12%"><input name="fstzs.jsdwmc" id="jsdwmc" value="" type="text"></td>
<td width="12%">
<select name="rfxm.accountStatus" id="accountStatus" >
<th width="15%">非税通知书状态</th>
<td width="12%"><select name="rfxm.status" id="status" >
<option value="">请选择</option>
<option value="0">未开票</option>
<option value="1">已开票</option>
</select>
</td>
<option value="1">正常</option>
<option value="3">已缴款</option>
<option value="2">已作废</option>
</select></td>
</tr>
<tr>
<th width="15%">通知书开具时间</th>
<td width="12%" style="border-right: none;position: relative"> <input name="rfxmsfxx.fkTime" id="kprq" style="width: 90%"
type="text" class="Wdate" value="${item1.kprq}"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30" errormsg='此项为必填'>
<td width="12%" style="border-right: none;position: relative"> <input name="kssj" id="kssj" style="width: 90%" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30">
<span style="position: absolute;right: -8px">-</span>
</td>
<td width="12%" style="border-left: none">
<input name="rfxmsfxx.fkTime" id="kprq1" style="width:90%"
type="text" class="Wdate" value="${item1.kprq}"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30" errormsg='此项为必填'>
<input name="jssj" id="jssj" style="width:90%" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" datatype="*1-30">
</td>
<td></td>
<th width="12%">开票状态</th>
<td width="12%">
<select name="rfxm.isKp" id="isKp" >
<option value="">请选择</option>
<option value="0">未开票</option>
<option value="1">已开票</option>
</select>
</td>
</tr>
......
......@@ -18,6 +18,12 @@
}
function dayin(id){
var dt=new Date();
createSimpleWindow("win_fstzs","打印非税通知书","${ctx}/jsp/fstzs/winPrintFstzs.action?id=" + id,900,700);
}
function jihuo(id){
$.messager.confirm("提示", "确认要激活该项目?", function(result) {
if(result) {
......@@ -28,10 +34,20 @@
data:{
id : id
},
async : false
});
$.messager.alert("提示","操作成功")
async : false,
error: function (data) {
$.messager.alert('错误', data.message);
},
success: function (data) {
if (data.result) {
$.messager.alert("提示",data.message)
reloadDate()
} else {
$.messager.alert('错误', '验证失败,'+data.message);
return;
}
}
});
}
});
}
......@@ -62,8 +78,8 @@
function search_fstzsXm(){
var queryParams = {
"fstzsXm.slbh": $("#slbh").val(),
"fstzsXm.jsdwmc": $("#dwmc").val(),
"fstzsXm.gcxmmc": $("#xmmc").val(),
"fstzsXm.jsdwmc": $("#jsdwmc").val(),
"fstzsXm.gcxmmc": $("#gcxmmc").val(),
"fstzsXm.yjje": $("#yjje").val()
};
$('#pagination').datagrid('options').queryParams = queryParams;
......@@ -77,13 +93,13 @@
url:'${ctx}/jsp/fstzs/fstzsXmList.action',
queryParams:{
"fstzsXm.slbh": $("#slbh").val(),
"fstzsXm.dwmc": $("#dwmc").val(),
"fstzsXm.xmmc": $("#xmmc").val(),
"fstzsXm.dwmc": $("#jsdwmc").val(),
"fstzsXm.gcxmmc": $("#gcxmmc").val(),
"fstzsXm.yjje": $("#yjje").val(),
},
columns:[[
{field:'op',title:'操作',width:120,align:'center',formatter:function(value,rec){
{field:'op',title:'操作',width:170,align:'center',formatter:function(value,rec){
var result = "";
if(rec.status == 3 || rec.status == 4) {//复核不通过、退回时
result += "<a class='btn_01_mini' onclick=edit('"+rec.id+"') >修改<b></b></a>";
......@@ -92,11 +108,14 @@
}
if(rec.status == 2) {//复核通过
result += "<a class='btn_01_mini' onclick=jihuo('"+rec.id+"') >激活<b></b></a>";
} else if(rec.status == 4) {//退回时
result += "<a class='btn_01_mini' onclick=shanchu('"+rec.id+"') >删除<b></b></a>";
result += "<a class='btn_01_mini' onclick=dayin('"+rec.id+"') >打印<b></b></a>";
} else if(rec.status == 6) {
result += "<a class='btn_01_mini' onclick=jihuo('"+rec.id+"') >重新激活<b></b></a>";
result += "<a class='btn_01_mini' onclick=dayin('"+rec.id+"') >打印<b></b></a>";
} else {
result += "<a class='btn_01_mini' style='opacity: 0.5' >激活<b></b></a>";
}
return result;
}},
{field:'slbh',title:'受理编号',width:150},
......@@ -115,11 +134,17 @@
}},
{field:'status',title:'是否复核',width:80,formatter: function (value, row, index){
if (value == 1) return "待复核";
if (value == 2) return "复核通过";
if (value == 2 || value == 6) return "复核通过";
if (value == 3) return "待复不通过";
if (value == 4) return "作废退回";
return "待生成";
}},
{field: 'jhjd',title: '激活进度',width: 80,formatter:function (value,row,index) {
if(row.status == 6) {
return row.jhjd
}
return '';
}}
]]
}));
......
......@@ -137,3 +137,17 @@ maxReSendTimes=720
CAPath=D:/CA/JWSFC.pfx
publicKey=30819F300D06092A864886F70D010101050003818D0030818902818100C3CF2F786A2D19146F4B1CBAA812271254994AEA5AA1D707B6FBA5C284C6679D6BE432E861478EE933A17C957574EC07574FC33DE245685C15A0EF706FB68D628CD0F7DE99C602A02ED3B477440BA89D039005CDCA7BB8D3F93209CACA680DF1D485C983E6F5B30D713AF131D37502497DE1DEFE533E1D93D880D716DE89D9F90203010001
privateKey=30820275020100300D06092A864886F70D01010105000482025F3082025B02010002818100C3CF2F786A2D19146F4B1CBAA812271254994AEA5AA1D707B6FBA5C284C6679D6BE432E861478EE933A17C957574EC07574FC33DE245685C15A0EF706FB68D628CD0F7DE99C602A02ED3B477440BA89D039005CDCA7BB8D3F93209CACA680DF1D485C983E6F5B30D713AF131D37502497DE1DEFE533E1D93D880D716DE89D9F902030100010281800E42B79D5876425E57A0ABCDF851A220D6A2776F4BFC7F71A364FE74854101E8D823BD85691852132FDC71FB5C9B90591485CD9D632E54E467FAD99561BD74DC78DE13E86A9017E89CAD1758DD44AE596B0C59E01B68AB187EF2CF8C88C21224DE563475277AD9FB4816B6DD8B9FAD54C4A045F1FFC9090F00EB5D0E4EAADF81024100F0062C05CAA10926CBC31633A87364AFC77239921700D377CFF004D7E36E52699332E562C81DBD1491CD9241A7C7AF0F00BD8F03E4FE16AC2A1E4696ACF3C5C9024100D0D7A089752BD0834730CC490BA9A9E1AE95FF7BD555F7CD38B0366F7ADE548E65BCF049073E6EC048B6880FF32FFB82E5FF016368AB92D63285A4A1AD424AB102404FE72E168B7B0A69E0E143EDD480FD9ECABD8ACEC85B9D0A40ADBD5F05363FB727AA84D45A9C13CADA32DE227F312964CC314E7FD46685B3B09DBD9001697189024068F3A3FAD046879021ABB54E142D5C714D129684FDEE290D1A2AFC0044280D284E9A87CABB7835A22E2884F2370D6B011A626FA92C85E4D1FE2BC95372C5B8D1024059F575C1DC549538A1E9FB853C53074E05CBE6A220409056D2815B594DD76D139A0A95A5AEE539CB11532A6254315E123C0B97BDE35E2DD2D4D40B0E46391463
#非税系统
fs-url:http://172.16.250.6:18001/agency-web/agency3/rest.do
fs-appid:NJSCSJSFYZSFWZX3908073
fs-appkey:f756761c49d19870cb444582312d
fs-kpdbm:001
fs-dwbm:708002
fs-qhbm:320100
fs-pjdm:32010122
fs-version:1.0.1
#非税开票
InvoicingPartySignature:MIIE3gYKKoEcz1UGAQQCAqCCBM4wggTKAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIIDnzCCA5swggNAoAMCAQICCAMzARAAIHFnMAwGCCqBHM9VAYN1BQAwgY0xCzAJBgNVBAYTAkNOMQ8wDQYDVQQIDAbmsZ/oi48xDzANBgNVBAcMBuWNl+S6rDEqMCgGA1UECgwh5rGf6IuP55yB55S15a2Q5pS/5Yqh5pWw5a2X6K+B5LmmMTAwLgYDVQQDDCfmsZ/oi4/nnIHnlLXlrZDmlL/liqHor4HkuaborqTor4HkuK3lv4MwHhcNMjEwNDA3MDIwNTUyWhcNMjQwNDA3MDIwNTUyWjCB3zELMAkGA1UEBhMCQ04xEzARBgNVBAcMCk5KUkEtMTNMUkExGzAZBgNVBAoMEuWNl+S6rOW4gui0ouaUv+WxgDEgMB4GCSqGSIb3DQEJARYRMTIyNjg3NDcwNEBxcS5jb20xKzApBgNVBCkMIk5KMTMyMDIxMDQwNzExMDc0OTAxYWEwMzNlNTEwMDI5NzExFzAVBgNVBAwMDjMyMDEwMDcwODAwMjAxMTYwNAYDVQQDDC3ljZfkuqzluILln47luILlu7rorr7otLnnlKjlvoHmlLbmnI3liqHkuK3lv4MwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAASfwXxttKn5HFG0EgMo0NL0NwnE4cHagal/8c+9pTce0Vvp1ulLRFBDDvU496QpMnQR3QTFe12Ssg0tCl/1L26co4IBMjCCAS4wHAYDVR0RBBUwE4ERMTIyNjg3NDcwNEBxcS5jb20wMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovLzE3Mi4xNjguMy4zL0pTWldDQVNNMi5jcmwwHwYDVR0jBBgwFoAUKgST2kzDi0ImBVVubsQgxVn3YP0wHQYDVR0OBBYEFPlThU8YR1MQfKAj8AcsgF/tp7UNMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMEBTADAQEAMCIGCCqBHNAUBAEBBBagFBMSMTIzMjAxMDA0MjU4MDM4MDJRMDwGCCsGAQUFBwEBBDAwLjAsBggrBgEFBQcwAoYgaHR0cDovLzE3Mi4xNjguMy4zL0pTWldDQVNNMi5jZXIwGwYJKwYBBAGCNxQCBA4MDOWNleS9jeivgeS5pjAMBggqgRzPVQGDdQUAA0cAMEQCIMtfLq+L+qJjJAN9vI+ArRKB/yq2/MhwiZ1euwdnNSurAiC6ne34R+r2TwHIYfcTZeG7nMvxMogHClt76WghaAyAvjGCAQIwgf8CAQEwgZowgY0xCzAJBgNVBAYTAkNOMQ8wDQYDVQQIDAbmsZ/oi48xDzANBgNVBAcMBuWNl+S6rDEqMCgGA1UECgwh5rGf6IuP55yB55S15a2Q5pS/5Yqh5pWw5a2X6K+B5LmmMTAwLgYDVQQDDCfmsZ/oi4/nnIHnlLXlrZDmlL/liqHor4HkuaborqTor4HkuK3lv4MCCAMzARAAIHFnMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAEQAI3KV2nBo2ZYtcSGFNbDGN7SqSGzlgTuxyWyvAadiLphalq/OzTtriggza2waDIbNqGi3MOxQcr+PbB8zWZl9Q=
EInvoiceContent:<Header><EInvoiceTag>CZ-EI-32</EInvoiceTag><EInvoiceID>0986189200-02101023</EInvoiceID><Version>1.1.0</Version></Header><EInvoiceData><Main><EInvoiceName>江苏省非税收入统一票据(电子)</EInvoiceName><EInvoiceCode>32010120</EInvoiceCode><EInvoiceNumber>{{pjdm}}</EInvoiceNumber><RandomNumber>{{random}}</RandomNumber><EInvoiceSpecimenCode>3201012010</EInvoiceSpecimenCode><SupervisorAreaCode>320100</SupervisorAreaCode><TotalAmount>{{yjje}}</TotalAmount><IssueDate>{{kprq}}</IssueDate><IssueTime>{{kpsj}}</IssueTime><InvoicingParty><InvoicingPartyCode>708002</InvoicingPartyCode><InvoicingPartyName>南京市城市建设费用征收服务中心</InvoicingPartyName><RecName>南京市城市建设费用征收服务中心</RecName><RecAcct>10105901040000062</RecAcct><RecOpBk>南京农行鼓楼支行</RecOpBk></InvoicingParty><PayerParty><PayerPartyType>2</PayerPartyType><PayerPartyCode/><PayerPartyName>{{jkr}}</PayerPartyName><PayerAcct/><PayerOpBk/></PayerParty><PayMode/><BizCode>{{lsh}}</BizCode><CurrencyType/><ExchangeRate/><Remark>{{beizhu}}</Remark><HandlingPerson>南京市城市建设费用征收服务中心</HandlingPerson><Checker/><SupervisorRemark/><InvoicingPartySeal><SealId>f2ae8a477d7247148adf2e5cd48630e6</SealId><SealName/><SealHash/></InvoicingPartySeal><SupervisorPartySeal><SealId>f2ae8a477d7247148adf2e5cd48630e6</SealId><SealName/><SealHash/></SupervisorPartySeal><MainExt><RelatedInvoiceCode/><RelatedInvoiceNumber/><PayCode>{{jkm}}</PayCode><BusinessNumber/><BusinessDate/><Gender/><Age/><Address/><School/><Faculty/><Major/><Classes/><StudentID/><MedicalType/><MedicalDate/><CaseNumber/><PatientNumber/><HospitalizationNumber/><DepartmentName/><InHospitalDate/><OutHospitalDate/><PrepayAmount/><RechargeAmount/><RefundAmount/><OrgType/><MedicalInsuranceType/><MedicalInsuranceID/><FundPayAmount/><OtherPayAmount/><AccountPayAmount/><OwnPayAmount/><SelfpaymentAmount/><SelfpaymentCost/><Custom1/><Custom2/><Custom3/><Custom4/><Custom5/><Custom6/><Custom7/><Custom8/><Custom9/><Custom10/><Custom11/><Custom12/></MainExt></Main><Details><Item><ItemCode>103015601</ItemCode><ItemName>城市基础设施配套费-城区</ItemName><ItemQuantity>{{yjmj}}</ItemQuantity><ItemUnit>元</ItemUnit><ItemStd>150.00</ItemStd><ItemAmount>{{yjje}}</ItemAmount><ItemRemark/><ItemExt><ItemDetailName/></ItemExt></Item></Details></EInvoiceData>
\ No newline at end of file
......@@ -21,7 +21,23 @@
<![CDATA[and t.gcxmmc like :gcxmmc]]>
</isNotEmpty>
<isNotEmpty property="yjje">
<![CDATA[and t.yjje = :yjje]]>
<![CDATA[and t.yjje like :yjje]]>
</isNotEmpty>
<isNotEmpty property="jkm">
<![CDATA[and t.jkm like :jkm]]>
</isNotEmpty>
<isNotEmpty property="isKp">
<![CDATA[and t.isKp = :isKp]]>
</isNotEmpty>
<isNotEmpty property="kssj">
<![CDATA[and t.jhTime > :kssj]]>
</isNotEmpty>
<isNotEmpty property="jssj">
<![CDATA[and t.jhTime < :jssj]]>
</isNotEmpty>
order by t.createTime desc
......
......@@ -32,6 +32,11 @@
<result name="view">/WEB-INF/pages/fstzs/Fstzs_View.jsp</result>
</action>
<!--打印非税通知书窗口-->
<action name="winPrintFstzs" class="com.jshx.fstzs.web.FstzsAction" method="winAddFstzs">
<result name="view">/WEB-INF/pages/fstzs/Fstzs_Print.jsp</result>
</action>
<!--生成非税通知书操作-->
<action name="addFstzs" class="com.jshx.fstzs.web.FstzsAction" method="addFstzs">
<interceptor-ref name="tokenInterceptor" />
......@@ -41,7 +46,7 @@
</action>
<!--生成非税通知书操作-->
<!--复核-->
<action name="reviewFstzs" class="com.jshx.fstzs.web.FstzsAction" method="reviewFstzs">
<interceptor-ref name="tokenInterceptor" />
<interceptor-ref name="coreStack" />
......@@ -49,6 +54,10 @@
<result name="invalid.token">/invalid.jsp</result>
</action>
<action name="checkReviewFstzs" class="com.jshx.fstzs.web.FstzsAction" method="checkReviewFstzs">
</action>
<!-- 列表查询,返回Json数据 -->
<action name="fstzsList" class="com.jshx.fstzs.web.FstzsAction" method="list">
......@@ -71,6 +80,14 @@
<!--删除-->
<action name="shanchu" class="com.jshx.fstzs.web.FstzsAction" method="shanchu">
<interceptor-ref name="tokenInterceptor" />
<interceptor-ref name="coreStack" />
<result name="reload" type="redirect">/common/successToSelf.jsp?windowId=win_fstzs</result>
<result name="invalid.token">/invalid.jsp</result>
</action>
<!--激活项目,参数传到财政系统-->
<action name="kaipiao" class="com.jshx.fstzs.web.FstzsAction" method="kaipiao">
</action>
</package>
......
......@@ -20,15 +20,22 @@ public class Fstzs extends BaseModel {
private FstzsXm fstzsXm;
/**
* 非税系统流水号
*/
private String lsh;
/**
* 非税通知书状态
* 0:默认,不显示在列表
* 1:已激活,正常
* 2:已作废
* 3:已缴费:从财政同步状态
* 4:激活没成功,生成电子缴费码失败
*/
private Integer status;
/**
* 编制日期
*/
......@@ -40,7 +47,7 @@ public class Fstzs extends BaseModel {
private String jkm;
/**
* 缴款人
* 缴款缴款
*/
private String jkr;
......@@ -114,12 +121,32 @@ public class Fstzs extends BaseModel {
*/
private String jkqd;
/**
* 操作激活的时间
*/
private String jhTime;
/**
* 一个项目可以对应对个缴款人
* 这个是总缴款人数量
*/
private Integer length;
/**
* 是否审批通过
*/
private Integer isSptg;
/**
* 生成缴款书的经办人
*/
private String jksJbr;
/**
* 开票的经办人
*/
private String kpJbr;
/**
* 对应项目信息
......@@ -285,4 +312,45 @@ public class Fstzs extends BaseModel {
public void setLength(Integer length) {
this.length = length;
}
public Integer getIsSptg() {
return isSptg;
}
public void setIsSptg(Integer isSptg) {
this.isSptg = isSptg;
}
public String getJhTime() {
return jhTime;
}
public void setJhTime(String jhTime) {
this.jhTime = jhTime;
}
public String getLsh() {
return lsh;
}
public void setLsh(String lsh) {
this.lsh = lsh;
}
public String getJksJbr() {
return jksJbr;
}
public void setJksJbr(String jksJbr) {
this.jksJbr = jksJbr;
}
public String getKpJbr() {
return kpJbr;
}
public void setKpJbr(String kpJbr) {
this.kpJbr = kpJbr;
}
}
......@@ -30,7 +30,8 @@ public class FstzsXm extends BaseModel
* 2:复核通过
* 3:复核不通过
* 4:作废退回
* 5:已激活,不再显示在已生成列表
* 5:已激活,全部成功,不再显示在已生成列表
* 6:已激活,但部分成功
*/
private Integer status;
......@@ -104,6 +105,14 @@ public class FstzsXm extends BaseModel
*/
private Kpsjgl kpsjgl;
/**
* 激活进度
* 成功数/总数
* 1/3 = 成功1个,总共3个
*/
private String jhjd;
public Integer getStatus() {
return status;
}
......@@ -227,4 +236,12 @@ public class FstzsXm extends BaseModel
public void setFhyj(String fhyj) {
this.fhyj = fhyj;
}
public String getJhjd() {
return jhjd;
}
public void setJhjd(String jhjd) {
this.jhjd = jhjd;
}
}
package com.jshx.fstzs.fsutil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jshx.core.utils.CodeUtil;
import com.jshx.core.utils.SysPropertiesUtil;
import com.jshx.fstzs.entity.Fstzs;
import com.jshx.fstzs.entity.FstzsXm;
import com.jshx.fstzs.fsutil.bean.*;
import com.jshx.fstzs.service.FstzsService;
import com.jshx.http.HttpclientUtil;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 非税系统请求
*/
public class FsRequest {
private static String getProp(String key) {
return SysPropertiesUtil.getProperty(key);
}
private static String request(String method,Map<String, Object> data) {
Map<String, String> params = ParamsUtil.getParams(method, data);
try {
String post = HttpclientUtil.post(getProp("fs-url"), params);
if(post != null) {
return new String(CodeUtil.base64Decode(post));
}
return post;
} catch (Exception e) {
e.printStackTrace();
}
return "失败";
}
private static String test() {
Map<String, Object> params = new HashMap<>();
params.put("place_code","001");
return request("basic.bills.get",params);
}
/**
*
* @param fstzs 非税缴费对象
*/
public static KjjksResp jihuo(Fstzs fstzs) {
Map<String,Object> map = new HashMap<>();
map.put("serial_number", fstzs.getLsh());//流水号
map.put("place_code",getProp("fs-kpdbm"));//开票点编码
map.put("bill_code","00010302");//票据种类编码
map.put("date",new SimpleDateFormat("yyyy-MM-dd").format(new Date()));//日期: YYYY-MM-DD
map.put("payer_name",fstzs.getJkr());//缴款人
map.put("payer_tel",fstzs.getFstzsXm().getMobile());//缴款人手机号
// map.put("payer_acc_name","???");//付款人户名
map.put("payer_no",fstzs.getFstzsXm().getZhanghao());//付款人账号(划缴时,必填)
map.put("payer_bank",fstzs.getFstzsXm().getKhh());//付款人开户银行(划缴时,必填)
/**
* 账户给定方式:
* 1财政设置
* 2单位指定
* 3子账号(不支持单位独立部署)
*/
map.put("acc_assign_type","1");
map.put("total_amt",fstzs.getYjje());//合计金额
map.put("author",fstzs.getJksJbr());//开票人
map.put("memo",fstzs.getFstzsXm().getBeizhu());//备注
Map<String,String> mapDatail = new HashMap<>();
mapDatail.put("item_code","10304240101");//项目编号
mapDatail.put("std",fstzs.getYjje());//收费标准
mapDatail.put("number","1");//数量
mapDatail.put("amt",fstzs.getYjje());//金额
List<Map<String,String>> list = new ArrayList<>();
list.add(mapDatail);
map.put("item_details",list);
try {
String request = request("paybook.e.issue.do", map);
FsResp<KjjksResp> resp = new Gson().fromJson(request, new TypeToken<FsResp<KjjksResp>>() {
}.getType());
return resp.message;
} catch (Exception e) {
return null;
}
}
/**
* 作废电子缴款书
* @param fstzs
*/
public static boolean zuofei(Fstzs fstzs) {
Map<String,Object> map = new HashMap<>();
map.put("pay_code",fstzs.getJkm());
String request = request("paybook.e.invalidate.do", map);
FsResp<CaozuoResp> resp = new Gson().fromJson(request, new TypeToken<FsResp<CaozuoResp>>() {
}.getType());
return resp.message != null && "0000".equals(resp.message.succCode);
}
/**
* 查询缴款书状态,是否已缴款
* @param fstzs
* @param service
*/
public static void jiaokuanzt(Fstzs fstzs,FstzsService service) {
Map<String,Object> map = new HashMap<>();
map.put("pay_code",fstzs.getJkm());
String request = request("paybook.confirm.get", map);
FsResp<JkztResp> resp = new Gson().fromJson(request, new TypeToken<FsResp<JkztResp>>() {
}.getType());
if(resp.message != null) {
fstzs.setStatus(3);//已缴款
fstzs.setIsJk(1);
fstzs.setJkTime(resp.message.confirmDate);
fstzs.setJkqd(resp.message.paymentChannel);
service.update(fstzs);
}
}
public static boolean kaipiao(Fstzs fstzs,String jbr) {
//1,stock.billno.get 获取电子票号
Map<String,Object> mapPh = new HashMap<>();
mapPh.put("place_code",getProp("fs-kpdbm"));//开票点编码
mapPh.put("bill_batch_code",getProp("fs-pjdm"));// 票据代码
String requestPh = request("stock.billno.get", mapPh);
FsResp<KaipiaoResp> respPh = new Gson().fromJson(requestPh, new TypeToken<FsResp<KaipiaoResp>>() {
}.getType());
//2,通过电子票号 开票
Map<String,Object> map = new HashMap<>();
map.put("serial_number",System.currentTimeMillis() + "");//业务流水号,不能重复
map.put("place_code",getProp("fs-kpdbm"));//开票点编码
map.put("bill_batch_code",getProp("fs-pjdm"));//电子票据代码
map.put("bill_no",respPh.message.billNo);//电子票据代码
List<Map<String,String>> payCodeInfo = new ArrayList<>();
Map<String,String> payCodeInfoMap = new HashMap<>();
payCodeInfoMap.put("pay_code",fstzs.getJkm());
payCodeInfoMap.put("pay_code",fstzs.getYjje());
payCodeInfo.add(payCodeInfoMap);
map.put("pay_code_info",payCodeInfo);// 多张缴款书缴款完成后,开具电子票据需要传1张对应的缴款码
String xml = getProp("EInvoiceContent");
xml = xml.replaceAll("\\{\\{pjdm}}",getProp("fs-pjdm"));
xml = xml.replaceAll("\\{\\{random}}",new Random().nextInt(100000) + "");
xml = xml.replaceAll("\\{\\{yjje}}",fstzs.getYjje());
xml = xml.replaceAll("\\{\\{kprq}}",new SimpleDateFormat("yyyyMMdd").format(new Date()));
xml = xml.replaceAll("\\{\\{kprqsj}}",new SimpleDateFormat("HH:mm:ss").format(new Date()));
xml = xml.replaceAll("\\{\\{jkr}}",jbr);
xml = xml.replaceAll("\\{\\{lsh}}",fstzs.getLsh());
xml = xml.replaceAll("\\{\\{beizhu}}",fstzs.getFstzsXm().getBeizhu());
xml = xml.replaceAll("\\{\\{jkm}}",fstzs.getJkm());
xml = xml.replaceAll("\\{\\{yjmj}}",fstzs.getYjmj());
xml = xml.replaceAll("\\{\\{yjmj}}",fstzs.getYjmj());
map.put("invoice_data",xml);// 电子票据头部、票面信息进行base64编码后内容。
Map<String,String> signInfo = new HashMap<>();
signInfo.put("value",getProp("InvoicingPartySignature"));//对电子票据头部、票面信息的签名值(签名原文为电子票据数据 Header和EInvoiceData内容),base64格式。
signInfo.put("format","DETACH");//签名格式类型,目前固定 DETACH
signInfo.put("algorithm","SM2");//摘要算法,默认SM2
signInfo.put("time","???");//签名时间
map.put("sign_info",signInfo);// 签名信息节点A-3
String request = request("invoice.e.issue.withsign.do", map);
FsResp<CaozuoResp> resp = new Gson().fromJson(request, new TypeToken<FsResp<CaozuoResp>>() {
}.getType());
return resp.message != null && "0000".equals(resp.message.succCode);
}
public static void main(String[] args) {
String xml = "niasd{{pjdm}}12131";
xml = xml.replaceAll("\\{\\{pjdm}}","AAAAAA");
System.out.println(xml);
}
}
package com.jshx.fstzs.fsutil;
import com.google.gson.Gson;
import com.jshx.core.utils.CodeUtil;
import com.jshx.core.utils.SysPropertiesUtil;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 构建请求参数
*/
public class ParamsUtil {
/**
* 这里构建统一参数
* @param method
* @param data 接口所需参数
* @return
*/
public static Map<String,String> getParams(String method,Map<String,Object> data) {
Map<String,String> params = new HashMap<>();
params.put("method",method);
params.put("app_id", SysPropertiesUtil.getProperty("fs-appid"));
params.put("format","json");
params.put("datetime",new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
params.put("version",SysPropertiesUtil.getProperty("fs-version"));
params.put("region_code",SysPropertiesUtil.getProperty("fs-qhbm"));//区划?外部传?
params.put("agency_code",SysPropertiesUtil.getProperty("fs-dwbm"));//单位
params.put("encryption","0");//不加密
params.put("message_id",System.currentTimeMillis() + "");//每次请求生成一个唯一请求编号
if(data != null && data.size() > 0) {
//第一步,message外面套一层
Map<String,Object> message = new HashMap<>();
message.put("message",data);
//第二步,message进行base64加密
byte[] msgEn = CodeUtil.base64Encode(new Gson().toJson(message).getBytes(StandardCharsets.UTF_8));
//第三步,放回接口参数内
params.put("message",new String(msgEn));//接口需要的参数
}
SecurityUtils.security(params);
return params;
}
public static void main(String[] args) {
HashMap<String, Object> map = new HashMap<>();
map.put("key","value");
Map<String, String> hello = getParams("hello", map);
System.out.println(new Gson().toJson(hello));
}
}
package com.jshx.fstzs.fsutil;
import com.jshx.core.utils.CodeUtil;
import java.util.Map;
import java.util.TreeMap;
/**
* 财政局
*/
public class SecurityUtils {
public static final String APPKEY = "f756761c49d19870cb444582312d";
public static final String KEY = "security";
/**
* 第一步,将请求参数按照名称字母顺序排序,把所有参数值串在一起。
* (security除外)
* 请求参数:
* method,format,app_id,datetime,version,
* encryption,message_id,message,region_code,agency_code
* 参数按ASCII顺序排序为: agency_code, app_id,
* datetime,encryption,format,message, message_id, method,region_code,version
* 例如参数值:agency_code=1,app_id=2,datetime=3,encryption=4,format=5
* , message=6, message_id=7 ,method=8 ,region_code=9, version=10
* 得到拼接串:12345678910
*
* 第二步,使用md5算法进行加密。
* 将appKey 拼接到参数字符串头、尾进行md5加密后,再转化成大写。
* 格式是:byte2hex(MD5(appKey12345678910appKey))
* Java防伪方法见附录2
* 注:byte2hex为自定义方法,JAVA中MD5是对字节数组加密,加密结果是16字节,
* 我们需要的是32位的大写字符串。
* @param param
* @return
*/
public static void security(Map<String,String> param) {
if(param == null || param.size() == 0) return;
//1,使用treemap自动进行ASCII顺序排序
TreeMap<String,String> treeMap = new TreeMap<>(param);
StringBuffer values = new StringBuffer(APPKEY);
treeMap.keySet().stream().map(i-> treeMap.get(i)).forEach(v-> values.append(v));
values.append(APPKEY);
//MD5加密
String target = CodeUtil.encode(values.toString(), CodeUtil.MD5).toUpperCase();
//放回原参数
param.put(KEY,target);
}
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
/**
* 操作的返回
*/
public class CaozuoResp {
/**
* 成功的返回代码:0000
*/
@SerializedName("succ_code")
public String succCode;
@SerializedName("succ_msg")
public String succMsg;
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
public class FsError {
/**
* 错误返回:
* {"error_message":{"error_code":"0003","error_msg":"未找到对应的票据批次,票据种类:00010302票据批次:32010122"}}
*/
@SerializedName("error_code")
public String errorCode;
@SerializedName("error_msg")
public String errorMsg;
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
public class FsResp<T> {
/**
* 错误返回:
* {"error_message":{"error_code":"0003","error_msg":"未找到对应的票据批次,票据种类:00010302票据批次:32010122"}}
*
* 成功返回:
* {"message":{"pay_code":"32010022090000118237","serial_number":"1669705873720","create_time":"20221129151116215"}}
*/
@SerializedName("error_message")
public FsError errorMessage;
public T message;
public String getErrorMsg() {
if(errorMessage != null) {
return errorMessage.errorCode + ":" + errorMessage.errorMsg;
}
return "未知错误";
}
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
/**
* 缴款状态查询
*/
public class JkztResp {
/**
* 缴款日期:YYYY-MM-DD
*/
@SerializedName("confirm_date")
public String confirmDate;
/**
* 缴款渠道(代码)
*/
@SerializedName("payment_channel")
public String paymentChannel;
/**
* 缴款银行
*/
@SerializedName("pay_proxy_bank")
public String payProxyBank;
/**
* 缴款金额
*/
@SerializedName("total_amt")
public String totalAmt;
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
public class KaipiaoResp {
/**
* 票据代码
*/
@SerializedName("bill_batch_code")
public String billBatchCode;
/**
* 票号
*/
@SerializedName("bill_no")
public String billNo;
}
package com.jshx.fstzs.fsutil.bean;
import com.google.gson.annotations.SerializedName;
/**
* 开具电子缴款书
* {"message":{"pay_code":"32010022090000118237","serial_number":"1669705873720","create_time":"20221129151116215"}}
*/
public class KjjksResp {
/**
* 缴款码
*/
@SerializedName("pay_code")
public String payCode;
/**
* 流水号
*/
@SerializedName("serial_number")
public String serialNumber;
/**
* 时间
* yyyyMMddHHmmssSSSSS
*/
@SerializedName("create_time")
public String createTime;
}
package com.jshx.fstzs.fsutil.bean.dianzipiao;
import javax.xml.bind.annotation.XmlRootElement;
/**
* 电子票据-根节点
*/
@XmlRootElement(name = "EInvoice")
public class EInvoice {
public Header Header;
public EInvoiceData EInvoiceData;
public EInvoiceSignature EInvoiceSignature;
}
package com.jshx.fstzs.fsutil.bean.dianzipiao;
import javax.xml.bind.annotation.XmlRootElement;
/**
* 电子票据票面信息
*/
@XmlRootElement(name = "EInvoiceData")
public class EInvoiceData {
}
package com.jshx.fstzs.fsutil.bean.dianzipiao;
import javax.xml.bind.annotation.XmlRootElement;
/**
* 电子票据数字签名
*/
@XmlRootElement(name = "EInvoiceSignature")
public class EInvoiceSignature {
public Signature Signature;
@XmlRootElement(name = "Signature")
public static class Signature{
public String Reference;//签名原文引用
public String SignatureAlgorithm;//签名算法
public String SignatureFormat;//签名格式类型
public String SignatureTime;//签名时间
public String SignatureValue;//签名值
public KeyInfo KeyInfo;//证书信息
}
/**
* 证书信息
*/
@XmlRootElement(name = "KeyInfo")
public static class KeyInfo{
public String SerialNumber;//证书编号
public String X509IssuerName;//X.509证书颁发者名称
}
}
package com.jshx.fstzs.fsutil.bean.dianzipiao;
import javax.xml.bind.annotation.XmlRootElement;
/**
* 电子票据头部
*/
@XmlRootElement(name = "Header")
public class Header {
/**
* 格式为“财政电子票据标识–监管机构行政区划代码”。其中,财政电子票据标识为“CZ-EI”;区划代码为2位数字
*/
public String EInvoiceTag;
public String EInvoiceID;
public String Version;
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment