费用报销单

master
{jiaxudong3333@163.com} 2024-04-23 00:27:46 +08:00
parent a731961c40
commit 589310505e
8 changed files with 154 additions and 226 deletions

View File

@ -2,10 +2,16 @@ package net.htjs.pt4.zzsxt.controller.xxgl.xmkpgl.fybx;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONArray;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.htjs.pt4.core.BaseController;
import net.htjs.pt4.core.entity.SaveException;
import net.htjs.pt4.zzsxt.service.xxgl.xmkpgl.fybx.IFybxService;
import net.htjs.pt4.zzsxt.service.xxgl.xmkpgl.kpsq.IBoKpsqService;
import net.htjs.pt4.zzsxt.tools.HttpClientUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -27,6 +33,7 @@ import java.util.Map;
public class FybxController extends BaseController {
final IFybxService fybxService;
final IBoKpsqService iBoKpsqService;
@RequestMapping(value = "index", method = RequestMethod.GET)
public String index() {
@ -110,6 +117,87 @@ public class FybxController extends BaseController {
return getResult(mapModel, code, msg, callback);
}
@RequestMapping(value = "fqbx", produces = "application/json;charset=UTF-8")
@ResponseBody
public Object sendJxpz(@RequestParam Map<String, String> params, String callback) throws SaveException {
int code = 1;
String msg = "操作成功!";
Map mapModel = new HashMap();
JSONArray dataList = JSONUtil.parseArray(params.get("param"));
if (dataList == null || dataList.isEmpty()) {
return getResult(mapModel, 1, "报销费用数据为空", callback);
}
Map<String, Object> xtcsMap = new HashMap<>();
xtcsMap.put("CSMC", "FYBX_TS_URL");
Map xycsMap = iBoKpsqService.selectZZSGL_XT_CSSZ(xtcsMap);
String apiUrl = MapUtil.getStr(xycsMap, "CSZ");
for (int i = 0; i < dataList.size(); i++) {
JSONObject data = dataList.getJSONObject(i);
JSONObject reqData = this.packageRequestData(data);
String param = JSONUtil.toJsonStr(reqData);
log.info("请求路径及参数:\n\t{} \n\t{}", apiUrl, param);
String result = HttpClientUtil.postRequest(apiUrl, param, "json", "utf-8", 0, 0);
JSONObject resultJson = JSONUtil.parseObj(result);
log.info("返回结果:{}", JSONUtil.toJsonPrettyStr(resultJson));
}
return getResult(mapModel, code, msg, callback);
}
private JSONObject packageRequestData(JSONObject data) throws SaveException {
JSONObject fydj = new JSONObject();
fydj.put("djbh", data.get("DJBH")); // 单据编号
fydj.put("djrq", data.get("DJRQ")); // 单据日期 格式yyyy-MM-dd
fydj.put("djlx", data.get("DJLX")); // 单据类型
fydj.put("djje", data.get("DJJE")); // 单据金额
fydj.put("djse", data.get("DJSE")); // 单据税额
fydj.put("bxr", data.get("BXR")); // 报销人
fydj.put("bxsj", data.get("BXSJ")); // 报销时间 yyyy-MM-dd HH:mm:ss
fydj.put("bxsy", data.get("BXSY")); // 报销事由
fydj.put("bxzt", data.get("BXZT")); // 报销状态1.未报销 2.报销中 3.已报销
fydj.put("bz", data.get("BZ")); // 备注
fydj.put("qysh", data.get("KHSH")); // 客户税号
fydj.put("qymc", data.get("KHMC")); // 客户名称
fydj.put("zw", data.get("ZW")); // 职位
Map queryFydjmxMap = new HashMap();
queryFydjmxMap.put("FYID", data.get("FYID"));
JSONArray mxList = new JSONArray();
fydj.put("mxList", mxList);
List<Map> mx_list = this.fybxService.selectZZSGL_JX_FYDJMX(queryFydjmxMap);
for (Map mx_map : mx_list) {
JSONObject fydjmx = new JSONObject();
fydjmx.put("xh", mx_map.get("XH"));
fydjmx.put("fpzs", mx_map.get("FPZS"));
fydjmx.put("fylx", mx_map.get("FYLX"));
fydjmx.put("fysy", mx_map.get("FYSY"));
fydjmx.put("hjje", mx_map.get("HJJE"));
fydjmx.put("hjse", mx_map.get("HJSE"));
fydjmx.put("jshj", mx_map.get("JSHJ"));
JSONArray fpList = new JSONArray();
fydjmx.put("fpList", fpList);
List<Map> list = this.fybxService.selectZZSGL_JX_FYDJ_MX_FP(queryFydjmxMap);
for (Map map : list) {
JSONObject fymxfp = new JSONObject();
fymxfp.put("fpdm", map.get("FPDM")); // 发票代码
fymxfp.put("fphm", map.get("FPHM")); // 发票号码
fymxfp.put("jshj", map.get("JSHJ")); // 价税合计
fpList.add(fymxfp);
}
mxList.add(fydjmx);
}
return fydj;
}
/*
DJBH VARCHAR ( 50 ) COMMENT '',
DJRQ DATETIME COMMENT '',

View File

@ -18,4 +18,6 @@ public interface FybxMapper {
Integer insertZZSGL_JX_FYDJ_MX_FP(List<Map> list);
List<Map> selectZZSGL_JX_FYDJMX(Map userMap);
List<Map> selectZZSGL_JX_FYDJ_MX_FP(Map userMap);
}

View File

@ -87,4 +87,9 @@ public class FybxServiceImpl implements IFybxService {
throw new SaveException(e);
}
}
@Override
public List<Map> selectZZSGL_JX_FYDJ_MX_FP(Map userMap) {
return this.fybxMapper.selectZZSGL_JX_FYDJ_MX_FP(userMap);
}
}

View File

@ -13,4 +13,6 @@ public interface IFybxService {
Integer insert(Map userMap);
List<Map> selectZZSGL_JX_FYDJMX(Map userMap) throws SaveException;
List<Map> selectZZSGL_JX_FYDJ_MX_FP(Map userMap);
}

View File

@ -70,4 +70,19 @@
</if>
</where>
</select>
<select id="selectZZSGL_JX_FYDJ_MX_FP" resultType="map" parameterType="map">
select
FPID, FPDM, FPHM, KPRQ, JSHJ
from ZZSGL_JX_FYDJMX mx
inner join ZZSGL_JX_FPXX fp on mx.FPID = fp.FPID
<where>
<if test="FYMXID!=null and FYMXID!=''">
AND mx.FYMXID = #{FYMXID}
</if>
<if test="FYID!=null and FYID!=''">
AND mx.FYID = #{FYID}
</if>
</where>
</select>
</mapper>

View File

@ -88,24 +88,10 @@ var kpsq_list = (function () {
$('#add').click(function () {
curSeg.onAdd();
});
//添加开票申请信息
$('#sta').click(function () {
layui.use('table', function () {
var table = layui.table;
var selectData = table.checkStatus('table_sb').data;
if (selectData.length < 1) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
top.layer.alert("请选择一条开票申请!", {icon: 0, closeBtn: 0});
})
// 发起报销
$("#push").click(function () {
curSeg.onPush();
});
return false;
}
curSeg.onStart(selectData);
})
})
};
var getCols = function () {
var colsObj = [
@ -209,72 +195,6 @@ var kpsq_list = (function () {
$(window).unload(function () {
});
},
onTbkp: function (hcfp, kplx) {
layui.use("table", function () {
var table = layui.table;
var selectData = table.checkStatus('table_sb').data;
if (selectData == null || selectData == '' || selectData == undefined) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
top.layer.alert("请选择一条记录!", {icon: 0, closeBtn: 0});
})
})
return;
} else if (selectData.length >= 2) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
top.layer.alert("同步开票,请选一条数据!", {icon: 0, closeBtn: 0});
})
})
return;
}
if (kpsx == "sybkp") {
if (selectData[0].SQZT != 2) {
parent.layer.msg("此单据未审核", {icon: 6, time: 3000});
return;
}
}
baseTools.xhrAjax({
url: "/web/xxgl/xmkpgl/kpsq/tbkp.do",
params: {"SQID": selectData[0].SQID, kpzt: hcfp, kplx: kplx},
callback: [function (jsonObj, xhrArgs) {
if (jsonObj.code == 0) {
if (kpsx == "qdtbkp") {
var intervalTimes = 0;
var intervalIndex = setInterval(function () {
$.get("/web/xxgl/xmkpgl/kpsq/get.do", {sqid: selectData[0].SQID}, function (res) {
if (res.code == 0) {
if (res.data.fphm) {
clearInterval(intervalIndex)
parent.layer.msg("开票成功", {icon: 6, time: 3000});
sctTools.successMsg(jsonObj.msg);
layui.table.reload("table_sb", {page: {curr: $(".layui-laypage-em").next().html()}});
} else if (res.data.msg) {
clearInterval(intervalIndex)
parent.layer.msg(res.data.msg);
}
}
intervalTimes++;
if (intervalTimes >= 10) {
clearInterval(intervalIndex)
parent.layer.msg("开票失败");
}
})
}, 1000)
} else {
sctTools.successMsg(jsonObj.msg);
layui.table.reload("table_sb", {page: {curr: $(".layui-laypage-em").next().html()}});
}
} else if (jsonObj.code == -1) {
sctTools.errorMsg(jsonObj.msg);
}
}]
});
})
},
reOnLoad: function () {
//执行重载
layui.use('table', function () {
@ -297,13 +217,6 @@ var kpsq_list = (function () {
$("#form_search")[0].reset();
},
//点击左侧导航项目树节点的回调事件
onZzjgZtreeCallBack: function (node) {
selectXmObj = node;
top.window.iframeLayerData = selectXmObj;
curSeg.onQuery();
},
/**
*@Author Blue shaoming
*@Description 查询
@ -391,134 +304,6 @@ var kpsq_list = (function () {
});
},
//生成负数单据
onAddFsdj: function (data) {
$.ajax({
url: "/web/xxgl/xmkpgl/kpsq/addFS_ZZSGL_XX_KPSQ.do",
data: data,
dataType: "json",
success: function (res) {
if (res.code == '1') {
layer.msg("生成负数单据成功", {
icon: 6,
time: 3000
});
layui.table.reload("table_sb", {page: {curr: $(".layui-laypage-em").next().html()}});
} else {
layer.msg(res.msg, {
icon: 2,
time: 3000
});
}
}
})
},
onEwm: function (data) {
top.window.iframeLayerData = data[0];
top.sctTools.openPage({
type: 2,
title: '<b>抬头二维码</b>',
maxmin: false,
shadeClose: false, //点击遮罩关闭层
area: ['500px', '400px'],
content: '/web/xxgl/xmkpgl/kpsq/QRCode_index',
btnAlign: 'c',
yes: function (index, layero) {
parent.layer.close(parent.layer.index);
},
});
},
//添加开票申请页面
onFyjn: function (data) {
top.sctTools.openPage({
type: 2,
id: 'win_kpsq_addfpxx',
title: '<b>费用缴纳</b>',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['80%', '75%'],
content: '/web/xxgl/xmkpgl/kpsq/index_fyjn',
btn: ['确定', '关闭'],
btnAlign: 'c',
success: function (layero, index) {
var $doc = layero.find('iframe').contents();
$doc.find('#SQID').val(data.SQID);
$doc.find('#qymc').val(data.QYMC);
$doc.find('#qysh').val(data.QYSH);
if (data.FPLXDM == "004") {
$doc.find('#fplx').val("专票");
} else if (data.FPLXDM == "007") {
$doc.find('#fplx').val("普票");
} else {
$doc.find('#fplx').val(data.FPLXDM);
}
$doc.find('#htje').val(data.HTJE + "元");
$doc.find('#zfje').val(data.ZFJE + "元");
},
yes: function (index, layero) {
var $doc = layero.find('iframe').contents();
var SQID = $doc.find('#SQID').val();
var JJZHH = $doc.find('#JJZHH').val();
console.log($doc.find('input[name="pay_type"]:checked').val());
if ($doc.find('input[name="pay_type"]:checked').val() == "1") {
top.layui.layer.confirm('请确认已扫码支付', {icon: 3, title: '提示'}, function (index) {
//do something
parent.layer.closeAll();
});
return;
} else {
if (JJZHH == undefined || JJZHH == null || JJZHH == '') {
top.layui.layer.msg("请输入基金账户号", {
icon: 2,
time: 3000
});
return;
}
}
$.ajax({
url: "/web/xxgl/xmkpgl/kpsq/payKpsqAndUpdateStatus.do",
data: {
SQID: SQID,
JJZHH: JJZHH
},
dataType: "json",
success: function (res) {
curSeg.reOnLoad();
if (res.code == '1') {
top.layui.layer.msg("操作成功", {
icon: 6,
time: 3000
}, function () {
parent.layer.closeAll();
});
} else {
layer.msg("操作失败", {
icon: 2,
time: 3000
});
}
}
})
},
btn2: function (index, layero) {
parent.layer.closeAll();
}
});
},
// 添加页面
onAdd: function () {
top.window.iframeLayerData = kpsx;
@ -564,7 +349,8 @@ var kpsq_list = (function () {
});
return false;
} else if (data.length === 1) {
if (data.BXZT === 3) {
var row = data[0];
if (row.BXZT === 3) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
@ -573,7 +359,7 @@ var kpsq_list = (function () {
});
return false;
}
if (data.BXZT === 2) {
if (row.BXZT === 2) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
@ -582,7 +368,8 @@ var kpsq_list = (function () {
});
return false;
}
top.window.iframeLayerData = {FYBX_obj: data[0]};
row.BJRQ = new Date(row.BJRQ);
top.window.iframeLayerData = {FYBX_obj: row};
top.sctTools.openPage({
type: 2,
id: 'win_kpsq_editfpxx',
@ -605,6 +392,37 @@ var kpsq_list = (function () {
}
},
onPush: function (data) {
var checkedList = layui.table.checkStatus('table_sb').data;
if (!checkedList || checkedList.length === 0) {
sctTools.errorMsg('请选择需要推送的数据!');
return false;
}
$.ajax({
url: "/web/xxgl/xmkpgl/fybx/fqbx",
type : "POST",
dataType: "json",
data: {
param: JSON.stringify(checkedList),
},
success: function (res) {
console.log(res);
curSeg.onQuery();
if (res.code == '0') {
layer.msg(res.msg, {
icon: 6,
time: 3000
});
} else {
layer.msg(res.msg, {
icon: 2,
time: 3000
});
}
}
})
},
//查看开票申请信息页面
onOpen: function (data, BZ) {
top.window.iframeLayerData = {FYBX_obj: data};

View File

@ -113,8 +113,6 @@ var kpsq_edit =(function(){
});
},
// 保存数据
onSave : function(field){
var url = "/web/xxgl/xmkpgl/fybx/insert";// 新增费用报销,新增和修改页面保存操作调用的是同一个后台方法
@ -195,8 +193,7 @@ var kpsq_edit =(function(){
baseTools.xhrAjax({
url: url,
params: {
SQID: selectedKpsqObj.SQID,
CFBZ:'new'//查询拆分后的新明细还是之前的原明细记录
FYID: selectedKpsqObj.FYID
},
callback: [function (jsonObj,xhrArgs) {
if(jsonObj.code==0){

View File

@ -29,6 +29,7 @@
<div class="layui-form" lay-filter="searchForm">
<div class="btn_group">
<a href="#" class="layui-btn" id="add">新增</a>
<a href="#" class="layui-btn" id="push">发起报销</a>
</div>
<form class="layui-form" name="form_search" id="form_search" method="get" action="" lay-filter="form_search">
<div class="layui-form select_search top_header">