From 3bdb279a4a9f0b2b12d16a367953f75fe810de12 Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Tue, 11 Jun 2019 11:09:41 +0800 Subject: [PATCH] =?utf8?q?=E7=A7=91=E7=9B=AE=E6=B1=87=E6=80=BB=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../framework/core/DayendSettleTask.java | 4 +- .../dlpay/framework/dao/SubjectdayDao.java | 13 +- .../dlpay/system/bean/SubjectDayInfo.java | 25 +++ .../dlpay/system/bean/SubjectDayShowBean.java | 103 +++++++++++ .../controller/SettleReportController.java | 57 ++++++ .../system/service/SettleReportService.java | 14 ++ .../service/impl/SettleReportServiceImpl.java | 69 ++++++++ .../custom/module/treetable-lay/treetable.css | 1 + .../custom/module/treetable-lay/treetable.js | 152 ++++++++-------- .../templates/system/report/subjectday.html | 165 ++++++++++++++++++ 10 files changed, 531 insertions(+), 72 deletions(-) create mode 100644 src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayInfo.java create mode 100644 src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayShowBean.java create mode 100644 src/main/java/com/supwisdom/dlpay/system/controller/SettleReportController.java create mode 100644 src/main/java/com/supwisdom/dlpay/system/service/SettleReportService.java create mode 100644 src/main/java/com/supwisdom/dlpay/system/service/impl/SettleReportServiceImpl.java create mode 100644 src/main/resources/templates/system/report/subjectday.html diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java b/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java index 785ef419..0560c061 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java +++ b/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java @@ -22,8 +22,8 @@ public class DayendSettleTask { private static final Logger logger = LoggerFactory.getLogger(DayendSettleTask.class); -// @Scheduled(cron="0 3/30 2-3 * * ? ") - @Scheduled(cron="0 0/2 * * * ? ") + @Scheduled(cron="0 3/30 2-3 * * ? ") +// @Scheduled(cron="0 0/2 * * * ? ") public void doSettleTask() { if (logger.isDebugEnabled()) logger.debug("进入日结算任务!"); diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectdayDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectdayDao.java index fb103623..9a6a92c6 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectdayDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/SubjectdayDao.java @@ -4,6 +4,7 @@ import com.supwisdom.dlpay.framework.data.FSubjectInfoBean; import com.supwisdom.dlpay.framework.data.MerchBean; import com.supwisdom.dlpay.framework.domain.TSubjectday; import com.supwisdom.dlpay.framework.domain.TSubjectdayPK; +import com.supwisdom.dlpay.system.bean.SubjectDayInfo; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -28,10 +29,20 @@ public interface SubjectdayDao extends JpaRepository @Query(value = "select sum(sb.begindrbal) as begindrbal,sum(sb.begincrbal) as begincrbal,sum(sb.dramt) as dramt,sum(sb.cramt) as cramt,sum(sb.drbal) as drbal,sum(sb.crbal) as crbal " + "from TB_SUBJECTDAY sb, TB_SUBJECT s " + - "where sb.accdate =:accdate and sb.subjno=s.subjno and s.subjlevel=2 and s.fsubjno=:fsubjno ",nativeQuery = true) + "where sb.accdate =:accdate and sb.subjno=s.subjno and s.subjlevel=2 and s.fsubjno=:fsubjno ", nativeQuery = true) FSubjectInfoBean getParentSumInfo(@Param("accdate") String accdate, @Param("fsubjno") String fsubjno); @Query(value = "select sum(begindrbal) as begindrbal,sum(begincrbal) as begincrbal,sum(dramt) as dramt,sum(cramt) as cramt,sum(drbal) as drbal,sum(crbal) as crbal " + "from tb_subjectday where accdate=:accdate and subjno in (select subjno from tb_subject where subjlevel=1) ", nativeQuery = true) FSubjectInfoBean getAllParentSubjectSumInfo(@Param("accdate") String accdate); + + @Query(value = "SELECT t.subjno AS subjno, t.subjname AS subjname,t.fsubjno AS fsubjno,t.subjlevel AS subjlevel,t.displayflag, " + + "a.begindrbal AS lastdaydrbal,a.begincrbal AS lastdaycrbal, " + + "b.dramt AS dramt,b.cramt AS cramt,c.drbal AS drbal,c.crbal AS crbal " + + "FROM tb_subject t " + + "left join (SELECT t1.subjno,t1.begindrbal,t1.begincrbal FROM tb_subjectday t1 WHERE t1.accdate = :startdate ) a on t.subjno=a.subjno " + + "left join (SELECT t2.subjno,SUM(t2.dramt) dramt,SUM(t2.cramt) cramt FROM tb_subjectday t2 WHERE t2.accdate>=:startdate and t2.accdate<=:enddate GROUP BY t2.subjno) b on t.subjno=b.subjno " + + "left join (SELECT t3.subjno, t3.drbal, t3.crbal FROM tb_subjectday t3 WHERE t3.accdate = :enddate) c on t.subjno=c.subjno " + + "ORDER BY t.subjno asc ", nativeQuery = true) + List getAllTSubjectday(@Param("startdate") String startdate, @Param("enddate") String enddate); } diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayInfo.java b/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayInfo.java new file mode 100644 index 00000000..f31d5b51 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayInfo.java @@ -0,0 +1,25 @@ +package com.supwisdom.dlpay.system.bean; + +public interface SubjectDayInfo { + String getSubjno(); + + String getSubjname(); + + String getFsubjno(); + + Integer getSubjlevel(); + + String getDisplayflag(); + + Double getLastdaydrbal(); + + Double getLastdaycrbal(); + + Double getDramt(); + + Double getCramt(); + + Double getDrbal(); + + Double getCrbal(); +} diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayShowBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayShowBean.java new file mode 100644 index 00000000..c36c2122 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/bean/SubjectDayShowBean.java @@ -0,0 +1,103 @@ +package com.supwisdom.dlpay.system.bean; + +public class SubjectDayShowBean { + private String subjno; + private String subjname; + private String fsubjno; + private Integer subjlevel; + private String displayflag; + private Double lastdaydrbal; + private Double lastdaycrbal; + private Double dramt; + private Double cramt; + private Double drbal; + private Double crbal; + + public String getSubjno() { + return subjno; + } + + public void setSubjno(String subjno) { + this.subjno = subjno; + } + + public String getSubjname() { + return subjname; + } + + public void setSubjname(String subjname) { + this.subjname = subjname; + } + + public String getFsubjno() { + return fsubjno; + } + + public void setFsubjno(String fsubjno) { + this.fsubjno = fsubjno; + } + + public Integer getSubjlevel() { + return subjlevel; + } + + public void setSubjlevel(Integer subjlevel) { + this.subjlevel = subjlevel; + } + + public String getDisplayflag() { + return displayflag; + } + + public void setDisplayflag(String displayflag) { + this.displayflag = displayflag; + } + + public Double getLastdaydrbal() { + return lastdaydrbal; + } + + public void setLastdaydrbal(Double lastdaydrbal) { + this.lastdaydrbal = lastdaydrbal; + } + + public Double getLastdaycrbal() { + return lastdaycrbal; + } + + public void setLastdaycrbal(Double lastdaycrbal) { + this.lastdaycrbal = lastdaycrbal; + } + + public Double getDramt() { + return dramt; + } + + public void setDramt(Double dramt) { + this.dramt = dramt; + } + + public Double getCramt() { + return cramt; + } + + public void setCramt(Double cramt) { + this.cramt = cramt; + } + + public Double getDrbal() { + return drbal; + } + + public void setDrbal(Double drbal) { + this.drbal = drbal; + } + + public Double getCrbal() { + return crbal; + } + + public void setCrbal(Double crbal) { + this.crbal = crbal; + } +} diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/SettleReportController.java b/src/main/java/com/supwisdom/dlpay/system/controller/SettleReportController.java new file mode 100644 index 00000000..b86669e7 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/controller/SettleReportController.java @@ -0,0 +1,57 @@ +package com.supwisdom.dlpay.system.controller; + +import com.supwisdom.dlpay.api.bean.JsonResult; +import com.supwisdom.dlpay.framework.domain.TSubject; +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.system.bean.SubjectDayShowBean; +import com.supwisdom.dlpay.system.service.SettleReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class SettleReportController { + @Autowired + private SettleReportService settleReportService; + + /** + * ==================================================== + * 科目日结表 + * ==================================================== + */ + @GetMapping("/report/subjectday") + public String subjectdayReport(ModelMap map) { + String settledate = settleReportService.getSystemSettledate(); + map.addAttribute("maxdate", DateUtil.parseToDateFormat(DateUtil.getNewDay(settledate, -1))); + return "system/report/subjectday"; + } + + @GetMapping("/report/subjectdaylist") + @PreAuthorize("hasPermission('/report/subjectday','')") + @ResponseBody + public PageResult getSubjectdayData(@RequestParam(value = "startdate",required = false) String startdate, + @RequestParam(value = "enddate",required = false) String enddate, + @RequestParam(value = "nodealshow", required = false, defaultValue = "false") Boolean noDealShow) { + try { + if (StringUtil.isEmpty(startdate) || StringUtil.isEmpty(enddate)) { + return new PageResult<>(99, "请选择时间段"); + } else if (!DateUtil.checkDatetimeValid(DateUtil.unParseToDateFormat(startdate), "yyyyMMdd")) { + return new PageResult<>(99, "起始时间非法"); + } else if (!DateUtil.checkDatetimeValid(DateUtil.unParseToDateFormat(enddate), "yyyyMMdd")) { + return new PageResult<>(99, "截止时间非法"); + } + return settleReportService.getSubjectDayInfos(DateUtil.unParseToDateFormat(startdate), DateUtil.unParseToDateFormat(enddate), noDealShow); + } catch (Exception e) { + e.printStackTrace(); + return new PageResult<>(99, "系统查询错误"); + } + } + + +} diff --git a/src/main/java/com/supwisdom/dlpay/system/service/SettleReportService.java b/src/main/java/com/supwisdom/dlpay/system/service/SettleReportService.java new file mode 100644 index 00000000..cf59944b --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/service/SettleReportService.java @@ -0,0 +1,14 @@ +package com.supwisdom.dlpay.system.service; + +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.system.bean.SubjectDayShowBean; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +public interface SettleReportService { + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + String getSystemSettledate(); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + PageResult getSubjectDayInfos(String startdate,String enddate, boolean nodealshow); +} diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/SettleReportServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/SettleReportServiceImpl.java new file mode 100644 index 00000000..dabf5e8c --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/SettleReportServiceImpl.java @@ -0,0 +1,69 @@ +package com.supwisdom.dlpay.system.service.impl; + +import com.supwisdom.dlpay.framework.dao.SettleCtlDao; +import com.supwisdom.dlpay.framework.dao.SubjectdayDao; +import com.supwisdom.dlpay.framework.domain.TSettlectl; +import com.supwisdom.dlpay.framework.util.DateUtil; +import com.supwisdom.dlpay.framework.util.MoneyUtil; +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.framework.util.StringUtil; +import com.supwisdom.dlpay.system.bean.SubjectDayInfo; +import com.supwisdom.dlpay.system.bean.SubjectDayShowBean; +import com.supwisdom.dlpay.system.service.SettleReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class SettleReportServiceImpl implements SettleReportService { + @Autowired + private SubjectdayDao subjectdayDao; + @Autowired + private SettleCtlDao settleCtlDao; + + @Override + public String getSystemSettledate() { + TSettlectl settlectl = settleCtlDao.getOne(1); + if (null != settlectl && null != settlectl.getSettledate()) { + return settlectl.getSettledate().toString(); + } + return DateUtil.getNow("yyyyMMdd"); + } + + @Override + public PageResult getSubjectDayInfos(String startdate, String enddate, boolean nodealshow) { + List list = subjectdayDao.getAllTSubjectday(startdate, enddate); + if (StringUtil.isEmpty(list)) { + return new PageResult<>(99, "无数据"); + } + + List result = new ArrayList<>(0); + for (SubjectDayInfo info : list) { + SubjectDayShowBean bean = new SubjectDayShowBean(); + bean.setSubjno(info.getSubjno()); + bean.setSubjname(info.getSubjname()); + bean.setFsubjno(info.getFsubjno() == null ? "-1" : info.getFsubjno()); + bean.setSubjlevel(info.getSubjlevel()); + bean.setDisplayflag(info.getDisplayflag()); + bean.setLastdaydrbal(info.getLastdaydrbal() == null ? 0.00 : info.getLastdaydrbal()); + bean.setLastdaycrbal(info.getLastdaycrbal() == null ? 0.00 : info.getLastdaycrbal()); + bean.setDramt(info.getDramt() == null ? 0.00 : info.getDramt()); + bean.setCramt(info.getCramt() == null ? 0.00 : info.getCramt()); + bean.setDrbal(info.getDrbal() == null ? 0.00 : info.getDrbal()); + bean.setCrbal(info.getCrbal() == null ? 0.00 : info.getCrbal()); + if (bean.getLastdaydrbal() == 0 && bean.getLastdaycrbal() == 0 && bean.getDramt() == 0 && bean.getCramt() == 0 && bean.getDrbal() == 0 && bean.getCrbal() == 0) { + //无交易记录 + if (nodealshow && "y".equals(bean.getDisplayflag())) { + result.add(bean); //显示 + } else { + continue; + } + } else { + result.add(bean); + } + } + return new PageResult(result); + } +} diff --git a/src/main/resources/static/custom/module/treetable-lay/treetable.css b/src/main/resources/static/custom/module/treetable-lay/treetable.css index ca2922d1..584b2f8c 100755 --- a/src/main/resources/static/custom/module/treetable-lay/treetable.css +++ b/src/main/resources/static/custom/module/treetable-lay/treetable.css @@ -13,5 +13,6 @@ .treeTable-icon.open .layui-icon-triangle-d:before { content: "\e625"; + background-color: transparent; } diff --git a/src/main/resources/static/custom/module/treetable-lay/treetable.js b/src/main/resources/static/custom/module/treetable-lay/treetable.js index 35efdcf2..af7361a5 100755 --- a/src/main/resources/static/custom/module/treetable-lay/treetable.js +++ b/src/main/resources/static/custom/module/treetable-lay/treetable.js @@ -10,91 +10,105 @@ layui.define(['layer', 'table'], function (exports) { if (!treetable.checkParam(param)) { return; } - var doneCallback = param.done; // 获取数据 + if (param.data) { + treetable.init(param, param.data); + } else { + $.getJSON(param.url, param.where, function (res) { + treetable.init(param, res.data); + }); + } + }, + // 渲染表格 + init: function (param, data) { var mData = []; - $.getJSON(param.url, param.where, function (res) { - var tNodes = res.data; - // 补上id和pid字段 - for (var i = 0; i < tNodes.length; i++) { - var tt = tNodes[i]; - if (!tt.id) { - if (!param.treeIdName) { - layer.msg('参数treeIdName不能为空', {icon: 5}); - return; - } - tt.id = tt[param.treeIdName]; + var doneCallback = param.done; + var tNodes = data; + // 补上id和pid字段 + for (var i = 0; i < tNodes.length; i++) { + var tt = tNodes[i]; + if (!tt.id) { + if (!param.treeIdName) { + layer.msg('参数treeIdName不能为空', {icon: 5}); + return; } - if (!tt.pid) { - if (!param.treePidName) { - layer.msg('参数treePidName不能为空', {icon: 5}); - return; - } - tt.pid = tt[param.treePidName]; + tt.id = tt[param.treeIdName]; + } + if (!tt.pid) { + if (!param.treePidName) { + layer.msg('参数treePidName不能为空', {icon: 5}); + return; } + tt.pid = tt[param.treePidName]; } + } - // 对数据进行排序 - var sort = function (s_pid, data) { - for (var i = 0; i < data.length; i++) { - if (data[i].pid == s_pid) { - var len = mData.length; - if (len > 0 && mData[len - 1].id == s_pid) { - mData[len - 1].isParent = true; - } - mData.push(data[i]); - sort(data[i].id, data); + // 对数据进行排序 + var sort = function (s_pid, data) { + for (var i = 0; i < data.length; i++) { + if (data[i].pid == s_pid) { + var len = mData.length; + if (len > 0 && mData[len - 1].id == s_pid) { + mData[len - 1].isParent = true; } + mData.push(data[i]); + sort(data[i].id, data); } - }; - sort(param.treeSpid, tNodes); + } + }; + sort(param.treeSpid, tNodes); - // 重写参数 - param.url = undefined; - param.data = mData; - param.page = { - count: param.data.length, - limit: param.data.length - }; - param.cols[0][param.treeColIndex].templet = function (d) { - var mId = d.id; - var mPid = d.pid; - var isDir = d.isParent; - var emptyNum = treetable.getEmptyNum(mPid, mData); - var iconHtml = ''; - for (var i = 0; i < emptyNum; i++) { - iconHtml += ''; - } + // 重写参数 + param.url = undefined; + param.data = mData; + param.page = { + count: param.data.length, + limit: param.data.length + }; + param.cols[0][param.treeColIndex].templet = function (d) { + var mId = d.id; + var mPid = d.pid; + var isDir = d.isParent; + var showIcon = true; + if (undefined != param.showicon && (param.showicon == true || param.showicon == false)) { + showIcon = param.showicon; + } + var emptyNum = treetable.getEmptyNum(mPid, mData); + var iconHtml = ''; + for (var i = 0; i < emptyNum; i++) { + iconHtml += ''; + } + if (showIcon) { if (isDir) { iconHtml += ' '; } else { iconHtml += ''; } - iconHtml += '  '; - var ttype = isDir ? 'dir' : 'file'; - var vg = ''; - return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '' - }; + } + iconHtml += '  '; + var ttype = isDir ? 'dir' : 'file'; + var vg = ''; + return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '' + }; - param.done = function (res, curr, count) { - $(param.elem).next().addClass('treeTable'); - $('.treeTable .layui-table-page').css('display', 'none'); - $(param.elem).next().attr('treeLinkage', param.treeLinkage); - // 绑定事件换成对body绑定 - /*$('.treeTable .treeTable-icon').click(function () { - treetable.toggleRows($(this), param.treeLinkage); - });*/ - if (param.treeDefaultClose) { - treetable.foldAll(param.elem); - } - if (doneCallback) { - doneCallback(res, curr, count); - } - }; + param.done = function (res, curr, count) { + $(param.elem).next().addClass('treeTable'); + $('.treeTable .layui-table-page').css('display', 'none'); + $(param.elem).next().attr('treeLinkage', param.treeLinkage); + // 绑定事件换成对body绑定 + /*$('.treeTable .treeTable-icon').click(function () { + treetable.toggleRows($(this), param.treeLinkage); + });*/ + if (param.treeDefaultClose) { + treetable.foldAll(param.elem); + } + if (doneCallback) { + doneCallback(res, curr, count); + } + }; - // 渲染表格 - table.render(param); - }); + // 渲染表格 + table.render(param); }, // 计算缩进的数量 getEmptyNum: function (pid, data) { diff --git a/src/main/resources/templates/system/report/subjectday.html b/src/main/resources/templates/system/report/subjectday.html new file mode 100644 index 00000000..75c140c4 --- /dev/null +++ b/src/main/resources/templates/system/report/subjectday.html @@ -0,0 +1,165 @@ +
+
+

科目汇总表

+ + 结算中心 + 科目汇总表 + +
+
+
+ +
+
+ +
+ +
+
-
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+ + + + +
+
+
+ + + + \ No newline at end of file -- 2.17.1