冲正模块(业务未实现)
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/TransDtlSearchBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/TransDtlSearchBean.java
index 54ea4c9..bd772c8 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/TransDtlSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/TransDtlSearchBean.java
@@ -11,8 +11,15 @@
private Integer termid;
private Integer status;
private Integer shopid;
+ private String accdate;
+ public String getAccdate() {
+ return accdate;
+ }
+ public void setAccdate(String accdate) {
+ this.accdate = accdate;
+ }
public String getRefno() {
return refno;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
new file mode 100644
index 0000000..7e3590b
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
@@ -0,0 +1,101 @@
+package com.supwisdom.dlpay.restaurant.controller;
+
+
+import com.google.gson.Gson;
+import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.framework.domain.TShopSettlement;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.framework.util.WebConstant;
+import com.supwisdom.dlpay.restaurant.bean.TransDtlSearchBean;
+import com.supwisdom.dlpay.restaurant.domain.TTransDtl;
+import com.supwisdom.dlpay.restaurant.service.ShopSettlementService;
+import com.supwisdom.dlpay.restaurant.service.TransDtlService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Controller
+@RequestMapping("/transdtlrev")
+public class TransDtlRevertController {
+ @Autowired
+ private TransDtlService transDtlService;
+
+ @Autowired
+ private ShopSettlementService shopSettlementService;
+
+ @RequestMapping("/index")
+ public String indexView(ModelMap model) {
+ List<TShopSettlement> lst = shopSettlementService.getAllShopSettlement();
+ Map<Integer, String> map = new HashMap<>();
+ for (TShopSettlement shop : lst) {
+ map.put(shop.getShopid(), shop.getShopname());
+ }
+ String accdate = DateUtil.getNow("yyyy-MM-dd");
+
+ Gson gson = new Gson();
+ String gsonString = gson.toJson(map);
+ model.addAttribute("shopList", gsonString);
+ model.addAttribute("accdate", accdate);
+ return "restaurant/transdtlrev/index";
+ }
+
+ @RequestMapping("/list")
+ @PreAuthorize("hasPermission('/transdtlrev/index','')")
+ @ResponseBody
+ public PageResult<TTransDtl> getDataList(@RequestParam("page") Integer pageNo,
+ @RequestParam("limit") Integer pageSize,
+ @RequestParam(value = "custname", required = false) String custname,
+ @RequestParam(value = "accdate", required = false) String accdate,
+ @RequestParam(value = "refno", required = false) String refno) {
+ try {
+ if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
+ if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
+ TransDtlSearchBean bean = new TransDtlSearchBean();
+ if (StringUtil.isEmpty(accdate) || StringUtil.isEmpty(accdate)) {
+ bean.setAccdate(DateUtil.getNow("yyyyMMdd"));
+ } else {
+ bean.setAccdate(DateUtil.unParseToDateFormat(accdate));
+
+ }
+ bean.setCustname(custname);
+ bean.setRefno(refno);
+ bean.setPageNo(pageNo);
+ bean.setPageSize(pageSize);
+
+ return transDtlService.getTransDtlByParam(bean);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new PageResult<>(99, "系统查询错误");
+ }
+ }
+
+ @GetMapping("/loadrevert")
+ @PreAuthorize("hasPermission('/transdtlrev/loadrevert','')")
+ public String loadadd(Model model) {
+ return "restaurant/transdtlrev/form";
+ }
+
+
+ @PostMapping("/revert")
+ @PreAuthorize("hasPermission('/transdtlrev/revert','')")
+ @ResponseBody
+ public JsonResult add(@RequestBody TTransDtl dtl) {
+ if (dtl != null) {
+ return transDtlService.revertTransdtl(dtl);
+ } else {
+ return JsonResult.error("添加失败");
+ }
+ }
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
index ae3df29..98a35c4 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
@@ -19,6 +19,8 @@
private Integer revflag;
private String transtype;
private Integer shopid;
+ private String attr1;
+ private String attr2;
@@ -140,4 +142,23 @@
public void setShopid(Integer shopid) {
this.shopid = shopid;
}
+
+
+ @Column(name = "attr1", length = 200)
+ public String getAttr1() {
+ return attr1;
+ }
+
+ public void setAttr1(String attr1) {
+ this.attr1 = attr1;
+ }
+
+ @Column(name = "attr2", length = 200)
+ public String getAttr2() {
+ return attr2;
+ }
+
+ public void setAttr2(String attr2) {
+ this.attr2 = attr2;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
index e2159ae..cf32aea 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
@@ -19,4 +19,8 @@
JsonResult export(TransDtlSearchBean bean, HttpServletRequest request, HttpServletResponse response);
String getRefno();
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ JsonResult revertTransdtl(TTransDtl dtl);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
index 05c7598..0dedad9 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
@@ -12,6 +12,7 @@
import com.supwisdom.dlpay.restaurant.domain.TTransDtl;
import com.supwisdom.dlpay.restaurant.service.TransDtlService;
import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -66,11 +67,14 @@
if (!StringUtil.isEmpty(param.getEnddate())) {
list.add(cb.lessThanOrEqualTo(root.get("accdate").as(String.class), param.getEnddate()));
}
+ if (!StringUtil.isEmpty(param.getAccdate())) {
+ list.add(cb.equal(root.get("accdate").as(String.class), param.getAccdate()));
+ }
if (null!=param.getShopid()) {
- list.add(cb.like(root.get("shopid").as(String.class), param.getShopid().toString()));
+ list.add(cb.equal(root.get("shopid").as(String.class), param.getShopid().toString()));
}
if (null!=param.getStatus()) {
- list.add(cb.like(root.get("status").as(String.class), param.getStatus().toString()));
+ list.add(cb.equal(root.get("status").as(String.class), param.getStatus().toString()));
}
if (null!=param.getTermid()) {
list.add(cb.like(root.get("termid").as(String.class), param.getTermid().toString()));
@@ -132,4 +136,23 @@
public String getRefno() {
return DateUtil.getNow("yyyyMMddHHmmssSSS");
}
+
+ @Override
+ public JsonResult revertTransdtl(TTransDtl dtl) {
+ TTransDtl targetDtl=transDtlDao.findById(dtl.getRefno()).get();
+ if(null==targetDtl){
+ return JsonResult.error("未查询到目标流水");
+ }
+ TTransDtl revDtl=new TTransDtl();
+ BeanUtils.copyProperties(targetDtl,revDtl);
+ revDtl.setRefno(getRefno());
+ revDtl.setStatus(0);
+ revDtl.setAccdate(DateUtil.getNow("yyyyMMdd"));
+ revDtl.setAcctime(DateUtil.getNow("HHmmss"));
+ revDtl.setAttr2(dtl.getAttr2());
+ revDtl.setTranstype("cz");
+ revDtl.setAmount(targetDtl.getAmount()*-1.00);
+ transDtlDao.save(revDtl);
+ return JsonResult.ok("操作成功");
+ }
}
diff --git a/src/main/resources/static/libs/custom.js b/src/main/resources/static/libs/custom.js
index fd82856..208bf94 100644
--- a/src/main/resources/static/libs/custom.js
+++ b/src/main/resources/static/libs/custom.js
@@ -15,7 +15,7 @@
pool: {},
addNewDict: function (dictType) {
var that = this;
- console.log("正在加载<"+dictType+">");
+ console.log("正在加载<" + dictType + ">");
$.ajax(that.url, {
method: "GET",
data: "dicttype=" + dictType,
@@ -25,11 +25,11 @@
that.storage.removeItem(dictType);
} else {
that.storage.setItem(dictType, JSON.stringify(data));
- console.log("<"+dictType+">加载成功!");
+ console.log("<" + dictType + ">加载成功!");
}
},
- error: function(e){
- console.log("<"+dictType+">加载失败!");
+ error: function (e) {
+ console.log("<" + dictType + ">加载失败!");
}
}
);
@@ -48,7 +48,7 @@
that.storage.removeItem(dictType);
} else {
that.storage.setItem(dictType, JSON.stringify(data));
- console.log("<"+dictType+">加载成功!");
+ console.log("<" + dictType + ">加载成功!");
}
},
error: function (e) {
diff --git a/src/main/resources/static/libs/numberFormat.js b/src/main/resources/static/libs/numberFormat.js
new file mode 100644
index 0000000..c170863
--- /dev/null
+++ b/src/main/resources/static/libs/numberFormat.js
@@ -0,0 +1,25 @@
+function numberFormat(number, decimals, dec_point, thousands_sep) {
+
+ number = (number + '').replace(/[^0-9+-Ee.]/g, '');
+ var n = !isFinite(+number) ? 0 : +number,
+ prec = !isFinite(+decimals) ? 2 : Math.abs(decimals),
+ sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
+ dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
+ s = '',
+ toFixedFix = function (n, prec) {
+ var k = Math.pow(10, prec);
+ return '' + Math.ceil(n * k) / k;
+ };
+
+ s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
+ var re = /(-?\d+)(\d{3})/;
+ while (re.test(s[0])) {
+ s[0] = s[0].replace(re, "$1" + sep + "$2");
+ }
+
+ if ((s[1] || '').length < prec) {
+ s[1] = s[1] || '';
+ s[1] += new Array(prec - s[1].length + 1).join('0');
+ }
+ return s.join(dec);
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 9122669..09762d8 100755
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -135,7 +135,7 @@
<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>
<script type="text/javascript" th:src="@{/static/libs/zTree/js/jquery.ztree.all-3.5.min.js}"></script>
<script type="text/javascript" th:src="@{/static/libs/custom.js}"></script>
-
+<script type="text/javascript" th:src="@{/static/libs/numberFormat.js}"></script>
<script>
layui.config({
base: 'static/custom/module/'
diff --git a/src/main/resources/templates/restaurant/transdtl/index.html b/src/main/resources/templates/restaurant/transdtl/index.html
index b3ca601..6c720d1 100644
--- a/src/main/resources/templates/restaurant/transdtl/index.html
+++ b/src/main/resources/templates/restaurant/transdtl/index.html
@@ -90,7 +90,8 @@
let table = layui.table;
let admin = layui.admin;
- var max = $("#enddate").val();
+ var enddate = $("#enddate").val();
+ var startdate=$("#startdate").val();
form.render('select');
var laydate = layui.laydate;
@@ -98,19 +99,23 @@
elem: '#startdate',
btns: ['now', 'confirm'],
trigger: 'click',
- max: max
+ max: enddate
});
laydate.render({
elem: '#enddate',
btns: ['now', 'confirm'],
trigger: 'click',
- max: max
+ max: enddate
});
// 渲染表格
table.render({
elem: '#table',
url: '[[@{/transdtl/list}]]',
+ where:{
+ startdate:startdate,
+ enddate:enddate
+ },
toolbar: true,
minWidth: 80,
defaultToolbar: ['filter', 'print'],
@@ -119,7 +124,10 @@
[
{field: 'custname', title: '姓名', fixed: 'left'},
{field: 'refno', title: '交易号', fixed: 'left', sort: true},
- {field: 'amount', title: '交易金额', sort: true},
+ {field: 'amount', title: '交易金额', sort: true,
+ templet: function (item) {
+ return numberFormat(item.amount,2);
+ }},
{
field: 'accdate',
title: '交易时间',
@@ -180,6 +188,8 @@
return '联机';
} else if (item.transtype == 'tj') {
return '脱机';
+ } else if (item.transtype == 'cz') {
+ return '冲正';
} else {
return '未知';
}
@@ -194,7 +204,6 @@
$("#form").submit();*/
var param = $("#form").serialize();
- console.log(param);
$("#btn-export").attr("href", url + "?" + param);
$("#btn-export")[0].click();
@@ -228,6 +237,8 @@
$('#btn-reset').click(function () {
$(".layui-input").val("");
$("select").val("");
+ $("#startdate").val(startdate);
+ $("#enddate").val(enddate);
return false;
});
diff --git a/src/main/resources/templates/restaurant/transdtlrev/form.html b/src/main/resources/templates/restaurant/transdtlrev/form.html
new file mode 100644
index 0000000..96fbc4e
--- /dev/null
+++ b/src/main/resources/templates/restaurant/transdtlrev/form.html
@@ -0,0 +1,85 @@
+
+<form id="form" lay-filter="form" class="layui-form model-form">
+ <input name="refno" id="refno" type="hidden"/>
+ <div class="layui-form-item">
+ <label class="layui-form-label">冲正对象</label>
+ <div class="layui-input-block">
+ <input type="text" name="custname" disabled
+ class="layui-input">
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">冲正金额</label>
+ <div class="layui-input-block">
+ <input type="text" name="amount" disabled
+ class="layui-input">
+ </div>
+ </div>
+
+ <div class="layui-form-item layui-form-text">
+ <label class="layui-form-label">冲正理由</label>
+ <div class="layui-input-block">
+ <textarea name="attr2" placeholder="请输入内容" class="layui-textarea" lay-verify="required"></textarea>
+ </div>
+ </div>
+
+ <div class="layui-form-item model-form-footer">
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+ <button class="layui-btn" lay-filter="form-submit" lay-submit id="submitbtn">冲正</button>
+ </div>
+</form>
+
+<script>
+ layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+ var layer = layui.layer;
+ var admin = layui.admin;
+ var form = layui.form;
+
+
+ var url = '[[@{/transdtlrev/revert}]]';
+ // 回显user数据
+ var dtl = admin.getTempData('t_dtl');
+ console.log(dtl)
+ if (dtl) {
+ $('input[name="refno"]').attr('readonly', 'readonly');
+ form.val('form', dtl);
+ }
+ // 表单提交事件
+ form.on('submit(form-submit)', function (data) {
+ console.log(data);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: url,
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN': token,
+ },
+ data: JSON.stringify(data.field),
+ success: function (result) {
+ layer.closeAll('loading');
+ if (result.code == 200) {
+ layer.msg(result.msg, {icon: 1});
+ admin.finishPopupCenter();
+ } else if (result.code == 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ console.log('err:' + result.code);
+ layer.msg(result.msg, {icon: 2});
+ }
+ },
+ error: function () {
+ layer.closeAll('loading');
+ layer.msg("请求服务器失败!", {icon: 2});
+ }
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/transdtlrev/index.html b/src/main/resources/templates/restaurant/transdtlrev/index.html
new file mode 100644
index 0000000..8193a4a
--- /dev/null
+++ b/src/main/resources/templates/restaurant/transdtlrev/index.html
@@ -0,0 +1,201 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">交易冲正</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#">交易冲正</a>
+ <a><cite>交易冲正</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"> 姓名:</label>
+ <div class="layui-input-inline">
+ <input id="custname" name="custname" class="layui-input" type="text"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"> 交易号:</label>
+ <div class="layui-input-inline">
+ <input id="refno" name="refno" class="layui-input " type="text"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">交易日期:</label>
+ <div class="layui-input-inline">
+ <input type="text" name="accdate" class="layui-input" th:value="${accdate}"
+ id="accdate" placeholder="yyyy-MM-dd">
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline" style="margin-left:5%">
+ <button id="btn-search" class="layui-btn icon-btn" data-type="search">
+ <i class="layui-icon"></i>搜索
+ </button>
+ <button id="btn-reset" class="layui-btn layui-btn-primary">重置
+ </button>
+ </div>
+ </div>
+
+ </div>
+ <table class="layui-table" id="table" lay-filter="table"></table>
+ </div>
+</div>
+<input hidden th:value="${shopList}" id="shoplist">
+<script>
+
+ var rawlist = $("#shoplist").val();
+ var shoplist = JSON.parse(rawlist);
+
+ layui.use(['form', 'table', 'layer', 'admin', 'element', 'laydate'], function () {
+ let form = layui.form;
+ let table = layui.table;
+ let admin = layui.admin;
+
+ var accdate = $("#accdate").val();
+
+ form.render('select');
+ var laydate = layui.laydate;
+ laydate.render({
+ elem: '#accdate',
+ btns: ['now', 'confirm'],
+ trigger: 'click',
+ max: accdate
+ });
+
+
+ // 渲染表格
+ table.render({
+ elem: '#table',
+ url: '[[@{/transdtlrev/list}]]',
+ where:{
+ accdate:accdate
+ },
+ minWidth: 80,
+ page: true,
+ cols: [
+ [
+ {field: 'custname', title: '姓名', fixed: 'left'},
+ {field: 'refno', title: '交易号', fixed: 'left', sort: true},
+ {field: 'amount', title: '交易金额', sort: true,
+ templet: function (item) {
+ return numberFormat(item.amount,2);
+ }},
+ {
+ field: 'accdate',
+ title: '交易时间',
+ sort: true,
+ templet: function (item) {
+ var date = item.accdate;
+ if (date != null) {
+ return date.substr(0, 4) + '-' + date.substr(4, 2) + '-' + date.substr(6, 2);
+ }
+ return '';
+ }
+ },
+ {
+ field: 'shopid',
+ title: '商户',
+
+ align: 'center',
+ templet: function (item) {
+ return shoplist[item.shopid];
+ }
+ },
+ {
+ field: 'status',
+ title: '流水状态',
+
+ align: 'center',
+ templet: function (item) {
+ if (item.status == 0) {
+ return '未入账';
+ } else if (item.status == 1) {
+ return '已入账';
+ } else {
+ return '未知';
+ }
+ }
+ },
+ {
+ field: 'transtype',
+ title: '流水类型',
+ sort: true,
+ align: 'center',
+ templet: function (item) {
+ if (item.transtype == 'lj') {
+ return '联机';
+ } else if (item.transtype == 'tj') {
+ return '脱机';
+ } else if (item.transtype == 'cz') {
+ return '冲正';
+ } else {
+ return '未知';
+ }
+ }
+ },
+ {
+ field: 'refno', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
+ if(item.transtype!='cz'){
+ return ' <a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>冲正</a> ';
+ }
+
+ }
+ }
+ ]
+ ]
+ });
+
+ table.on('tool(table)', function (obj) {
+ let data = obj.data;
+ let layEvent = obj.event;
+ if (layEvent === 'edit') {
+ showModel(data);
+ }
+ });
+
+ let showModel = function (data) {
+ let title = data ? '修改设备' : '添加设备';
+ admin.putTempData('t_dtl', data);
+ admin.popupCenter({
+ title: title,
+ path: '[[@{/transdtlrev/loadrevert}]]',
+ finish: function () {
+ table.reload('table', {});
+ }
+ });
+ };
+
+ // 搜索按钮点击事件
+ $('#btn-search').click(function () {
+ let custname = $('#custname').val();
+ let refno = $('#refno').val();
+ let accdate = $('#accdate').val();
+ table.reload('table', {
+ where: {
+ custname: custname,
+ accdate: accdate,
+ refno: refno,
+ }, page: {curr: 1}
+ });
+ //页面存在form需要返回false,否则layui自动刷新
+ return false;
+
+
+ });
+
+ $('#btn-reset').click(function () {
+ $(".layui-input").val("");
+ $("#accdate").val(accdate);
+ return false;
+ });
+
+ });
+
+
+ // 工具条点击事件
+
+</script>