From a408b55326f1f38030f2cf56e47ba100cbb5c1cc Mon Sep 17 00:00:00 2001 From: todking Date: Wed, 14 Aug 2019 15:03:49 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fix=20=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=89=8D=E7=AB=AF=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ui/static/payment/partner/partner-manage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index 047ac71dc..8eb6f29a2 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -3739,7 +3739,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.uploadAgreementFile = function (file) { if (file != null) { if (file.size > 10 * 1024 * 1024) { - commonDialog.alert({title: 'Error', content: '文件大小不能超过5MB,请压缩后重试', type: 'error'}) + commonDialog.alert({title: 'Error', content: '文件大小不能超过10MB,请压缩后重试', type: 'error'}) } else { $scope.agreementFileProgress = {value: 0}; Upload.upload({ From 5b4f7a79e77175ca3e15bca411fda5445841e6a9 Mon Sep 17 00:00:00 2001 From: todking Date: Wed, 14 Aug 2019 18:11:52 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix=20v4=E9=A1=B5=E9=9D=A2=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ui/static/images/Bitmap_payment.png | Bin 0 -> 46928 bytes .../static/templates/payment/v4/payment.css | 95 ++++++++++++------ 2 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 src/main/ui/static/images/Bitmap_payment.png diff --git a/src/main/ui/static/images/Bitmap_payment.png b/src/main/ui/static/images/Bitmap_payment.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7e36c73afd27b2cecdc0755d75039d64e8fbac GIT binary patch literal 46928 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 literal 0 HcmV?d00001 diff --git a/src/main/ui/static/templates/payment/v4/payment.css b/src/main/ui/static/templates/payment/v4/payment.css index c8d95f23d..45b7dd950 100644 --- a/src/main/ui/static/templates/payment/v4/payment.css +++ b/src/main/ui/static/templates/payment/v4/payment.css @@ -1,21 +1,22 @@ .header-banner { - background:url(/static/images/pay_v4_banner.png) no-repeat; + background: url(/static/images/pay_v4_banner.png) no-repeat; background-size: 92% 100%; background-position: center; - box-shadow:0 0 10px #dddddd inset; + box-shadow: 0 0 10px #dddddd inset; } -.merchant-title{ +.merchant-title { font-family: PingFang-SC-Medium; font-size: 13px; color: #FFFFFF; letter-spacing: 0; } -.line{ +.line { margin-top: 15px; margin-bottom: 15px; } + body { -webkit-touch-callout: auto; -webkit-user-select: auto; @@ -30,12 +31,14 @@ body { div, span, p, ul, li { box-sizing: border-box; } -.warning-sm{ - color:red; - font-size:10px; + +.warning-sm { + color: red; + font-size: 10px; transform-origin: left; transform: scale(0.8); } + .weui_grid { padding: 7px; height: 53px; @@ -173,27 +176,29 @@ input.value:focus { } .new_year { - width:100%; - height:100%; - position:absolute; - top:18%; - left:0; - z-index:-1; + width: 100%; + height: 100%; + position: absolute; + top: 18%; + left: 0; + z-index: -1; border-radius: 0 0 25px 25px; } + .bankpay { text-align: center; padding: 20px; color: #FFFFFF; } -@media screen and (max-height: 520px){ +@media screen and (max-height: 520px) { .bankpay { text-align: center; padding: 0; color: #FFFFFF; } } + .row { width: 100%; padding: 0 30px; @@ -266,7 +271,7 @@ input.value:focus { } -@media screen and (max-height:670px){ +@media screen and (max-height: 670px) { .currencyrow { box-sizing: border-box; margin-top: 0; @@ -275,7 +280,7 @@ input.value:focus { } } -@media screen and (max-height: 520px){ +@media screen and (max-height: 520px) { .currencyrow { box-sizing: border-box; margin-top: 20px; @@ -466,8 +471,9 @@ input.value:focus { #coupon-box-toggle { padding: 0 20px; margin-bottom: 10px; + margin-top: 15px; text-align: right; - color: #30af69; + color: #FF7E28; font-size: 12px; cursor: pointer; } @@ -492,7 +498,7 @@ input.value:focus { display: none; } -.coupons-container.show{ +.coupons-container.show { display: block; } @@ -517,7 +523,7 @@ input.value:focus { transform: translate(-50%, -50%); } -.coupons-container .coupon-box-title{ +.coupons-container .coupon-box-title { width: 100%; display: block; background: #fff; @@ -526,19 +532,19 @@ input.value:focus { border-bottom: 1px solid #d0d0d0; } -.coupons-container .coupon-box-title:after{ +.coupons-container .coupon-box-title:after { content: ''; display: block; clear: both; } -.coupons-container .coupon-box-title>.title{ +.coupons-container .coupon-box-title > .title { float: left; display: block; - color: #0BB20C; + color: #FF7E28; } -.coupons-container .coupon-box-title>#close-coupon-box{ +.coupons-container .coupon-box-title > #close-coupon-box { color: #700; float: right; display: block; @@ -546,12 +552,12 @@ input.value:focus { } -.actCharity-red{ +.actCharity-red { color: #FB5252; display: inline; } -.actCharity{ +.actCharity { display: inline; font-family: PingFang-SC-Medium; font-size: 13px; @@ -571,12 +577,30 @@ input.value:focus { -webkit-appearance: none; } +.remark-textarea-new { + box-shadow: none; + font-size: 13px; + width: calc(100% - 40px); + margin: 0 20px; + padding: 10px 0; + height: 18px; + border: 1px solid #FBF9FE; + border-bottom-color: #BCBCBC; + -webkit-appearance: none; + background-color: #FBF9FE; +} + +.remark-textarea-new::-webkit-input-placeholder { + font-size: 13px; + color: #BCBCBC; +} + .remark-textarea::-webkit-input-placeholder { font-size: 13px; color: #BCBCBC; } -.paynow-button{ +.paynow-button { background: #19AD18; border: 1px solid #179B16; border-radius: 3px; @@ -592,7 +616,7 @@ input.value:focus { margin-top: 31px; } -.bankpay-button{ +.bankpay-button { border: 1px solid #FF6600; border-radius: 3px; font-size: 16px; @@ -605,7 +629,7 @@ input.value:focus { background-color: white; } -#coupon-box-toggle.canUse-coupon{ +#coupon-box-toggle.canUse-coupon { padding: 0 30px; margin-bottom: 10px; text-align: right; @@ -614,7 +638,8 @@ input.value:focus { cursor: pointer; margin: 11px; } -input::-webkit-input-placeholder{ + +input::-webkit-input-placeholder { font-size: 50px; color: #FFFFFF; line-height: 60px; @@ -628,8 +653,18 @@ input::-webkit-input-placeholder{ padding-top: 10px; } -.merchant-div{ +.merchant-div { display: inline-block; padding-left: 10px; padding-top: 20px; } + +.advertisement { + display: flex; + justify-content: center; + margin-top: 10px; +} + +.arrow-color { + color: #FF7E28; +} From deb7f8e261fb5d550c5a7d5f57ec846b0d308f90 Mon Sep 17 00:00:00 2001 From: todking Date: Wed, 14 Aug 2019 19:36:25 +0800 Subject: [PATCH 3/8] fix v4 css --- src/main/ui/static/templates/payment/v4/payment.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/ui/static/templates/payment/v4/payment.css b/src/main/ui/static/templates/payment/v4/payment.css index 45b7dd950..c1d51ce51 100644 --- a/src/main/ui/static/templates/payment/v4/payment.css +++ b/src/main/ui/static/templates/payment/v4/payment.css @@ -585,6 +585,7 @@ input.value:focus { padding: 10px 0; height: 18px; border: 1px solid #FBF9FE; + border-radius: 0; border-bottom-color: #BCBCBC; -webkit-appearance: none; background-color: #FBF9FE; From c0f1988e6c1af67652746a72fa4387e53a5790ae Mon Sep 17 00:00:00 2001 From: todking Date: Wed, 14 Aug 2019 20:46:40 +0800 Subject: [PATCH 4/8] fix v4 css --- src/main/ui/static/templates/payment/v4/payment.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/ui/static/templates/payment/v4/payment.css b/src/main/ui/static/templates/payment/v4/payment.css index c1d51ce51..7001c3821 100644 --- a/src/main/ui/static/templates/payment/v4/payment.css +++ b/src/main/ui/static/templates/payment/v4/payment.css @@ -172,7 +172,7 @@ input.value:focus { right: 0; bottom: 0; overflow-x: hidden; - background-color: #fbf9fe; + background-color: #FFFFFF; } .new_year { @@ -578,17 +578,17 @@ input.value:focus { } .remark-textarea-new { + background-color: #FFFFFF; box-shadow: none; font-size: 13px; width: calc(100% - 40px); margin: 0 20px; padding: 10px 0; height: 18px; - border: 1px solid #FBF9FE; + border: 1px solid #FFFFFF; border-radius: 0; border-bottom-color: #BCBCBC; -webkit-appearance: none; - background-color: #FBF9FE; } .remark-textarea-new::-webkit-input-placeholder { From 672d58fec9c58cc94d5a6ed49a3b3bad86585e5a Mon Sep 17 00:00:00 2001 From: todking Date: Thu, 15 Aug 2019 09:10:35 +0800 Subject: [PATCH 5/8] fix v4 js --- src/main/ui/static/templates/alipay/v4/payment.js | 4 ++-- src/main/ui/static/templates/payment/v4/payment.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/ui/static/templates/alipay/v4/payment.js b/src/main/ui/static/templates/alipay/v4/payment.js index 1da983012..8585cc64c 100644 --- a/src/main/ui/static/templates/alipay/v4/payment.js +++ b/src/main/ui/static/templates/alipay/v4/payment.js @@ -261,7 +261,7 @@ $(function () { }); $('#key_P').click(function () { - dataCache.remark = $('.remark-textarea').val(); + dataCache.remark = $('.remark-textarea-new').val(); if (window.requireRemark) { if (!dataCache.remark) { var config = { @@ -275,7 +275,7 @@ $(function () { }); $('#key_P').bind('touchstart', function () { - dataCache.remark = $('.remark-textarea').val(); + dataCache.remark = $('.remark-textarea-new').val(); if (window.requireRemark) { if (!dataCache.remark) { return; diff --git a/src/main/ui/static/templates/payment/v4/payment.js b/src/main/ui/static/templates/payment/v4/payment.js index 1d8468bf9..5fbe1c3f8 100644 --- a/src/main/ui/static/templates/payment/v4/payment.js +++ b/src/main/ui/static/templates/payment/v4/payment.js @@ -253,7 +253,7 @@ $(function () { }); $('#key_P').click(function () { - dataCache.remark = $('.remark-textarea').val(); + dataCache.remark = $('.remark-textarea-new').val(); if (window.requireRemark) { if (!dataCache.remark) { var config = { @@ -267,7 +267,7 @@ $(function () { }); $('#key_P').bind('touchstart', function () { - dataCache.remark = $('.remark-textarea').val(); + dataCache.remark = $('.remark-textarea-new').val(); if (window.requireRemark) { if (!dataCache.remark) { return; From 042c95fed11f42a71190bd203128e8609463e14d Mon Sep 17 00:00:00 2001 From: "taylor.dang" Date: Thu, 15 Aug 2019 16:21:49 +0800 Subject: [PATCH 6/8] =?UTF-8?q?[Y]=E7=A7=BB=E9=99=A4tax=5Fin=5Fsurcharge?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=EF=BC=9A=E8=B4=B9=E7=8E=87=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=BB=B6=E6=9C=9F=E3=80=81=E4=B8=8A=E4=BC=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=9D=90=E6=96=99=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../payment/manage/dev/core/impl/ManualServiceimpl.java | 1 - .../payment/manage/merchants/core/impls/ClientManagerImpl.java | 2 -- .../manage/system/core/impl/ClientContractServiceImpl.java | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 52dd127ca..f169dc9b0 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 manage - 1.1.15 + 1.1.16 UTF-8 diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java index c5f08f985..485c09450 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java @@ -108,6 +108,5 @@ public class ManualServiceimpl implements ManualService { } }); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client_moniker, "tax_in_surcharge", false)); } } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index 88d98677a..86bb56b45 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -4997,7 +4997,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid rpayApi.modifySurchargeConfig(clientMapper.findClient(client_id)); } } - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client.getString("client_moniker"), "tax_in_surcharge", false)); adminAccounts.forEach(o -> { sendClientPostponeNotify(o, expireDate); }); @@ -5017,7 +5016,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid public boolean postponeClientRate(int clientId, String clientMoniker, String nextYearExipryDate) { try { clientRateMapper.postponeMerchantRateByClientId(clientId); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, clientMoniker, "tax_in_surcharge", false)); List adminAccounts = clientAccountMapper.listAdminAccounts(clientId); adminAccounts.forEach(o -> { sendClientPostponeNotify(o, nextYearExipryDate); diff --git a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java index b4082fb18..3b9102fbf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java @@ -104,7 +104,6 @@ public class ClientContractServiceImpl implements ClientContractService { contract.put("confirm_time", now); contract.put("signatory", account.getString("display_name")); clientsContractMapper.update(contract); - clientManager.setClientTaxInSurcharge(clientAccountMapper.findById(account_id),client.getString("client_moniker"), false); } @Override From 2aa3f072fe855a2a9df9d84bce14e0821bf3e827 Mon Sep 17 00:00:00 2001 From: duLingLing Date: Fri, 16 Aug 2019 10:17:52 +0800 Subject: [PATCH 7/8] =?UTF-8?q?Upd:=E4=BC=98=E5=8C=96BD=E9=94=80=E9=87=8F?= =?UTF-8?q?=EF=BC=8C=E5=90=88=E4=BC=99=E4=BA=BA=E4=BA=A4=E6=98=93=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=20Add:=E7=94=9F=E6=88=90BD?= =?UTF-8?q?=E9=94=80=E9=87=8F=E6=95=B0=E6=8D=AE=E6=AF=8F=E6=97=A5=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/core/BDAnalysisService.java | 6 + .../core/impls/BDAnalysisServiceImpl.java | 223 ++++++++++++------ .../core/impls/OrgAnalysisServiceImp.java | 49 +++- .../analysis/mappers/BDAnalysisMapper.java | 3 + .../manage/dev/web/AnalysisController.java | 28 +++ .../log/StatisticsBDSalesReportMapper.java | 29 +++ .../manage/task/DBSaleAnalysisTask.java | 34 +++ .../analysis/mappers/BDAnalysisMapper.xml | 148 +++++++----- .../mappers/TransactionAnalysisMapper.xml | 39 ++- .../log/StatisticsBDSalesReportMapper.xml | 86 +++++++ src/main/ui/static/analysis/bd-sale-volume.js | 2 +- .../analysis/org-tranaction-analysis.js | 2 + .../analysis/templates/bd_sale_analysis.html | 13 - .../analysis/templates/org_sale_analysis.html | 4 - .../manage/task/DBAnalysisTaskTest.java | 28 +++ 15 files changed, 523 insertions(+), 171 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.xml create mode 100644 src/test/java/au/com/royalpay/payment/manage/task/DBAnalysisTaskTest.java diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java index ae814453e..7f9360453 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java @@ -30,4 +30,10 @@ public interface BDAnalysisService { * @return bd_id, bd_name, num */ List approvedAnalysis(JSONObject params); + + /** + * BD销售每日数据统计 + * @param format + */ + void generateReport(String format); } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java index 579561871..96f113b02 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java @@ -3,10 +3,13 @@ package au.com.royalpay.payment.manage.analysis.core.impls; import au.com.royalpay.payment.manage.analysis.beans.AnalysisBean; import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; import au.com.royalpay.payment.manage.analysis.mappers.BDAnalysisMapper; +import au.com.royalpay.payment.manage.mappers.log.StatisticsBDSalesReportMapper; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; @@ -18,8 +21,12 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.UUID; /** * Created by yishuqian on 30/09/2016. @@ -30,24 +37,50 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Resource private BDAnalysisMapper bdAnalysisMapper; + @Resource + private StatisticsBDSalesReportMapper bdSalesReportMapper; + @Override public List getSalesAnalysis(JSONObject jsonObject) { return listSalesAnalysis(jsonObject); } - private List listSalesAnalysis(JSONObject jsonObject){ + private List listSalesAnalysis(JSONObject jsonObject) { List listCountApproved = bdAnalysisMapper.countApproved(jsonObject); - List bdSaleList = bdAnalysisMapper.getBDSaleList(jsonObject); - for(JSONObject countApproved : listCountApproved){ - for(JSONObject saleList : bdSaleList){ - if(countApproved.getString("bd_id").equals(saleList.getString("bd_id"))){ - saleList.put("num",countApproved.getString("num")); + List bdSaleList = bdSalesReportMapper.getBDSaleList(jsonObject); + for (JSONObject countApproved : listCountApproved) { + for (JSONObject saleList : bdSaleList) { + if (countApproved.getString("bd_id").equals(saleList.getString("bd_id"))) { + saleList.put("num", countApproved.getString("num")); + } + } + } + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + if (sd.format(jsonObject.getDate("end")).equals(sd.format(DateUtils.addDays(new Date(), 1)))) { + jsonObject.put("begin", DateUtils.addDays(jsonObject.getDate("end"), -1)); +// jsonObject.put("end", DateUtils.addDays(jsonObject.getDate("end"), -2)); + jsonObject.put("end",jsonObject.getDate("end")); + List todaySaleList = bdAnalysisMapper.getBDSaleList(jsonObject); + for (JSONObject todayBDSaleItem : todaySaleList) { + boolean flag = false; + for(JSONObject baSaleItem: bdSaleList){ + if (baSaleItem.getString("bd_id").equals(todayBDSaleItem.getString("bd_id"))) { + BigDecimal newAmount = baSaleItem.getBigDecimal("total").add(todayBDSaleItem.getBigDecimal("total")); + baSaleItem.put("total",newAmount); + flag = true; + } + } + if (!flag) { + bdSaleList.add(todayBDSaleItem); } } } + return bdSaleList; } + //单独计算当日数据 + @Override public List getSalesPartnersByBD(JSONObject jsonObject) { @@ -58,32 +91,32 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { public List getSalesPartnersReportByBD(JSONObject jsonObject) { List bdAnalysis = bdAnalysisMapper.getBDSalePartnerReport(jsonObject); List result = new ArrayList<>(); - String keys_1[] = {"1","2","3","4","5","6","7","8","9"}; - String key_2[] = {"10","11","12"}; - result = getPartnerTypes(keys_1,result,1,5,bdAnalysis); - return getPartnerTypes(key_2,result,2,6,bdAnalysis); + String keys_1[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9"}; + String key_2[] = {"10", "11", "12"}; + result = getPartnerTypes(keys_1, result, 1, 5, bdAnalysis); + return getPartnerTypes(key_2, result, 2, 6, bdAnalysis); } - private List getPartnerTypes(String keys[],List result,int short_length,int long_length,List bdAnalysis){ - for(String key : keys){ + private List getPartnerTypes(String keys[], List result, int short_length, int long_length, List bdAnalysis) { + for (String key : keys) { int countValue = 0; int countTotal = 0; JSONObject object = new JSONObject(); JSONArray list = new JSONArray(); - for(JSONObject type : bdAnalysis){ - if(type.getString("royalpayindustry") != null && type.getString("royalpayindustry").startsWith(key) && (type.getString("royalpayindustry").length()==short_length || type.getString("royalpayindustry").length()==long_length)){ + for (JSONObject type : bdAnalysis) { + if (type.getString("royalpayindustry") != null && type.getString("royalpayindustry").startsWith(key) && (type.getString("royalpayindustry").length() == short_length || type.getString("royalpayindustry").length() == long_length)) { countValue += type.getIntValue("partner_counts"); countTotal += type.getIntValue("total"); list.add(type); } } - if(countValue == 0){ + if (countValue == 0) { continue; } - object.put("count_value",countValue); - object.put("count_total",countTotal); - object.put("mccCode",key); - object.put("children",list); + object.put("count_value", countValue); + object.put("count_total", countTotal); + object.put("mccCode", key); + object.put("children", list); result.add(object); } return result; @@ -92,7 +125,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Override public void exportSalesExcel(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { httpResponse.setContentType("application/vnd.ms-excel"); - String fileName = analysisBean.getBegin_month()+"~"+analysisBean.getEnd_month(); + String fileName = analysisBean.getBegin_month() + "~" + analysisBean.getEnd_month(); // String fileName = new String(URLEncoder.encode(defaultname,"utf8")); httpResponse.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); @@ -113,20 +146,20 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { List bds = bdAnalysisMapper.getBDSaleList(params); HSSFWorkbook workbook = new HSSFWorkbook(); - for (JSONObject bd:bds){ + for (JSONObject bd : bds) { String bd_id = bd.getString("bd_id"); String bd_name = bd.getString("bd_name"); JSONObject monthParams = new JSONObject(); - monthParams.put("bd_id",bd_id); - monthParams.put("begin_month",analysisBean.getBegin_month()); - monthParams.put("end_month",analysisBean.getEnd_month()); + monthParams.put("bd_id", bd_id); + monthParams.put("begin_month", analysisBean.getBegin_month()); + monthParams.put("end_month", analysisBean.getEnd_month()); List monthTotalSale = bdAnalysisMapper.getMonthSalesList(monthParams); - for (JSONObject month:monthTotalSale){ - monthParams.put("month",month.getString("y_m")); - List clientsMonthSale = bdAnalysisMapper.getClientsMonthSale(bd_id,analysisBean.getBegin_month(),analysisBean.getEnd_month(),month.getString("y_m")); - month.put("clients",clientsMonthSale); + for (JSONObject month : monthTotalSale) { + monthParams.put("month", month.getString("y_m")); + List clientsMonthSale = bdAnalysisMapper.getClientsMonthSale(bd_id, analysisBean.getBegin_month(), analysisBean.getEnd_month(), month.getString("y_m")); + month.put("clients", clientsMonthSale); } - exportExcel(workbook,bd_name,monthTotalSale); + exportExcel(workbook, bd_name, monthTotalSale); } OutputStream outputStream = httpResponse.getOutputStream(); try { @@ -144,14 +177,52 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { return bdAnalysisMapper.countApproved(params); } + /** + * BD销售每日数据统计 + * @param date + */ + @Override + public void generateReport(String date) { + try { + Date beginTime = DateUtils.parseDate(date, new String[]{"yyyy-MM-dd"}); + Date yesterdayEndTime = DateUtils.addDays(beginTime, 1); + String endDate = DateFormatUtils.format(yesterdayEndTime, "yyyy-MM-dd"); + Date endTime = DateUtils.parseDate(endDate, new String[]{"yyyy-MM-dd"}); + JSONObject params = new JSONObject(); + params.put("begin", beginTime); + params.put("end", endTime); + List bdSaleList = bdAnalysisMapper.getOneDayBDSaleList(params); + if (bdSaleList.size() != 0) { + for (JSONObject item : bdSaleList) { + JSONObject existBDSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("bd_id"),beginTime); + if(existBDSalesReport==null){ + JSONObject object = new JSONObject(item); + object.put("log_id", UUID.randomUUID().toString()); + object.put("log_date", beginTime); + object.put("create_time", new Date()); + bdSalesReportMapper.save(object); + }else{ + existBDSalesReport.put("pay_amount",item.getString("pay_amount")); + existBDSalesReport.put("refund_amount",item.getString("refund_amount")); + existBDSalesReport.put("net_amount",item.getString("net_amount")); + bdSalesReportMapper.update(existBDSalesReport); + } + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + @Override public void exportPartnerExcelByBd(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { OutputStream ous = null; - try{ + try { JSONObject parmerters = analysisBean.toParams(null); List listPartnerByBd = bdAnalysisMapper.getBDSalePartnerList(parmerters); httpResponse.setContentType("application/octet-stream;"); - httpResponse.addHeader("Content-Disposition", "attachment; filename=" + "Merchant_list--" +parmerters.getString("bd_name") + analysisBean.getBegin() + "~" + analysisBean.getEnd() + ".xls"); + httpResponse.addHeader("Content-Disposition", "attachment; filename=" + "Merchant_list--" + parmerters.getString("bd_name") + analysisBean.getBegin() + "~" + analysisBean.getEnd() + ".xls"); ous = httpResponse.getOutputStream(); HSSFWorkbook wb = new HSSFWorkbook(); HSSFFont font = wb.createFont(); @@ -159,7 +230,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { font.setFontHeightInPoints((short) 15); CellStyle analysisStyle = wb.createCellStyle(); analysisStyle.setFont(font); - Sheet sheet = wb.createSheet("Merchant list" ); + Sheet sheet = wb.createSheet("Merchant list"); sheet.createFreezePane(1, 2); sheet.setDefaultColumnWidth((short) 25); int rowNum = 0; @@ -168,7 +239,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { for (int i = 0; i < title.length; i++) { row.createCell(i, Cell.CELL_TYPE_STRING).setCellValue(title[i]); } - for(JSONObject partner : listPartnerByBd){ + for (JSONObject partner : listPartnerByBd) { row = sheet.createRow(++rowNum); row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(partner.getString("short_name")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(partner.getString("client_moniker")); @@ -176,7 +247,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { } wb.write(ous); ous.flush(); - }catch (IOException e){ + } catch (IOException e) { } finally { IOUtils.closeQuietly(ous); } @@ -186,7 +257,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Override public void exportPartnerExcelByData(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { OutputStream ous = null; - try{ + try { JSONObject parmerters = analysisBean.toParams(null); List listPartnerByData = listSalesAnalysis(parmerters); httpResponse.setContentType("application/octet-stream;"); @@ -198,31 +269,31 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { font.setFontHeightInPoints((short) 15); CellStyle analysisStyle = wb.createCellStyle(); analysisStyle.setFont(font); - Sheet sheet = wb.createSheet("Merchant Sale List" ); + Sheet sheet = wb.createSheet("Merchant Sale List"); sheet.createFreezePane(1, 2); sheet.setDefaultColumnWidth((short) 25); int rowNum = 0; Row row = sheet.createRow(rowNum); - String[] title = {"BD Name", "AUD Amount", "Refund Fee","New Merchants"}; + String[] title = {"BD Name", "AUD Amount", "Refund Fee", "New Merchants"}; for (int i = 0; i < title.length; i++) { row.createCell(i, Cell.CELL_TYPE_STRING).setCellValue(title[i]); } - for(JSONObject dataSale : listPartnerByData){ + for (JSONObject dataSale : listPartnerByData) { row = sheet.createRow(++rowNum); row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("bd_name")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("total")); row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("refund_fee")); - row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("num") == null? "0" : dataSale.getString("num")); + row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("num") == null ? "0" : dataSale.getString("num")); } wb.write(ous); ous.flush(); - }catch (IOException e){ + } catch (IOException e) { } finally { IOUtils.closeQuietly(ous); } } - private void exportExcel(HSSFWorkbook workbook,String title,List monthTotalSale) { + private void exportExcel(HSSFWorkbook workbook, String title, List monthTotalSale) { // 声明一个工作薄 // 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); @@ -271,9 +342,9 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { // comment.setAuthor("leno"); //产生表格标题行 - HSSFRow row0= sheet.createRow(0); - HSSFRow row1= sheet.createRow(1); - HSSFRow row2= sheet.createRow(2); + HSSFRow row0 = sheet.createRow(0); + HSSFRow row1 = sheet.createRow(1); + HSSFRow row2 = sheet.createRow(2); HSSFCell cell00 = row0.createCell(0); HSSFCell cell01 = row0.createCell(1); HSSFCell cell20 = row2.createCell(0); @@ -294,15 +365,13 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { cell20.setCellValue(text20); - - for (int i = 0; i < monthTotalSale.size(); i++) { - sheet.addMergedRegion(new CellRangeAddress(0,0,2*i+2,2*i+3)); - HSSFCell cell02 = row0.createCell(i*2+2); - HSSFCell cell12 = row1.createCell(i*2+2); - HSSFCell cell13 = row1.createCell(i*2+3); - HSSFCell cell22 = row2.createCell(i*2+2); - HSSFCell cell23 = row2.createCell(i*2+3); + sheet.addMergedRegion(new CellRangeAddress(0, 0, 2 * i + 2, 2 * i + 3)); + HSSFCell cell02 = row0.createCell(i * 2 + 2); + HSSFCell cell12 = row1.createCell(i * 2 + 2); + HSSFCell cell13 = row1.createCell(i * 2 + 3); + HSSFCell cell22 = row2.createCell(i * 2 + 2); + HSSFCell cell23 = row2.createCell(i * 2 + 3); cell02.setCellStyle(style); cell12.setCellStyle(style); @@ -314,19 +383,18 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { HSSFRichTextString text13 = new HSSFRichTextString("增长百分比"); HSSFRichTextString text22 = new HSSFRichTextString(monthTotalSale.get(i).getString("total")); double rate = 0; - if (i>0){ - BigDecimal lastTotal = monthTotalSale.get(i-1).getBigDecimal("total"); - BigDecimal total = monthTotalSale.get(i).getBigDecimal("total"); - if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) !=0){ - rate=100; - } - else if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) ==0){ - rate=0; - }else { - rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal,2,BigDecimal.ROUND_DOWN).doubleValue(); - } + if (i > 0) { + BigDecimal lastTotal = monthTotalSale.get(i - 1).getBigDecimal("total"); + BigDecimal total = monthTotalSale.get(i).getBigDecimal("total"); + if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) != 0) { + rate = 100; + } else if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) == 0) { + rate = 0; + } else { + rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal, 2, BigDecimal.ROUND_DOWN).doubleValue(); + } } - HSSFRichTextString text23 = i==0?new HSSFRichTextString("-"):new HSSFRichTextString(String.valueOf(rate)); + HSSFRichTextString text23 = i == 0 ? new HSSFRichTextString("-") : new HSSFRichTextString(String.valueOf(rate)); cell02.setCellValue(text0); cell12.setCellValue(text12); cell13.setCellValue(text13); @@ -335,35 +403,34 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { } List partnersSale = (List) monthTotalSale.get(0).get("clients"); - for (int m=0;m clients = (List) monthTotalSale.get(n).get("clients"); - HSSFCell celli2 = row.createCell(n*2+2); - HSSFCell celli3 = row.createCell(n*2+3); + HSSFCell celli2 = row.createCell(n * 2 + 2); + HSSFCell celli3 = row.createCell(n * 2 + 3); celli2.setCellStyle(style2); celli3.setCellStyle(style2); HSSFRichTextString texti2 = new HSSFRichTextString(clients.get(m).getString("month_total")); double rate = 0; - if (n>0){ - List lastClients = (List) monthTotalSale.get(n-1).get("clients"); + if (n > 0) { + List lastClients = (List) monthTotalSale.get(n - 1).get("clients"); BigDecimal lastTotal = lastClients.get(m).getBigDecimal("month_total"); BigDecimal total = clients.get(m).getBigDecimal("month_total"); - if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) !=0){ - rate=100; - } - else if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) ==0){ - rate=0; - }else { - rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal,2,BigDecimal.ROUND_DOWN).doubleValue(); + if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) != 0) { + rate = 100; + } else if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) == 0) { + rate = 0; + } else { + rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal, 2, BigDecimal.ROUND_DOWN).doubleValue(); } } HSSFRichTextString texti3 = new HSSFRichTextString(String.valueOf(rate)); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java index 66510785d..af9119612 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java @@ -1,12 +1,19 @@ package au.com.royalpay.payment.manage.analysis.core.impls; import au.com.royalpay.payment.manage.analysis.core.OrgAnalysisService; +import au.com.royalpay.payment.manage.analysis.mappers.CustomerAndOrdersStatisticsMapper; import au.com.royalpay.payment.manage.analysis.mappers.TransactionAnalysisMapper; +import au.com.royalpay.payment.manage.mappers.log.StatisticsBDSalesReportMapper; import au.com.royalpay.payment.manage.organizations.core.OrgManager; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -17,14 +24,52 @@ public class OrgAnalysisServiceImp implements OrgAnalysisService { @Resource private TransactionAnalysisMapper transactionAnalysisMapper; + @Resource + private StatisticsBDSalesReportMapper statisticsBDSalesReportMapper; + @Resource private OrgManager orgManager; + @Resource + private CustomerAndOrdersStatisticsMapper customerAndOrdersStatisticsMapper; + @Override public List getSalesAnalysis(JSONObject params,JSONObject manager) { orgManager.checkOrgIds(manager,params); - List OrgTransaction = transactionAnalysisMapper.getOrgTransactionAnalysis(params); - return OrgTransaction; + params.put("org_type",0); + List OrgTransaction = statisticsBDSalesReportMapper.getPartnerAmountList(params); + List newOrgTransaction = new ArrayList<>(); + OrgTransaction.forEach(item->{ + newOrgTransaction.add(new JSONObject(){{ + put("org_id",item.getString("org_id")); + put("org_name",item.getString("org_name")); + put("amount",item.getString("clearing_amount")); + }} + ); + }); + //判断查询的最后一天是否是当日,若是当日,将当日数据添加至结果集内 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + if (sd.format(params.getDate("end")).equals(sd.format(DateUtils.addDays(new Date(), 1)))) { + params.put("begin", DateUtils.addDays(params.getDate("end"), -1)); + params.put("end",params.getDate("end")); + List todayOrgTransaction = transactionAnalysisMapper.getOrgTransactionAnalysis(params); + if(todayOrgTransaction.size()!=0){ + for (JSONObject todayOrgTransactionItem : todayOrgTransaction) { + boolean flag = false; + for (JSONObject orgTransaction : newOrgTransaction) { + if (orgTransaction.getString("org_id").equals(todayOrgTransactionItem.getString("org_id"))) { + BigDecimal newAmount = orgTransaction.getBigDecimal("clearing_amount").add(todayOrgTransactionItem.getBigDecimal("amount")); + orgTransaction.put("amount", newAmount); + flag = true; + } + } + if (!flag) { + newOrgTransaction.add(todayOrgTransactionItem); + } + } + } + } + return newOrgTransaction; } @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java index 9d51ce7ba..c3cc1400c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java @@ -26,4 +26,7 @@ public interface BDAnalysisMapper { List countApproved(JSONObject params); List getBDSalePartnerReport(JSONObject jsonObject); + + //获取指定一天销售数据 + List getOneDayBDSaleList(JSONObject params); } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java new file mode 100644 index 000000000..46216c5b4 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java @@ -0,0 +1,28 @@ +package au.com.royalpay.payment.manage.dev.web; + +import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +@RestController +@RequestMapping("/analysis") +public class AnalysisController { + + @Resource + private BDAnalysisService bdAnalysisService; + + + @GetMapping("/report/bd/sales") + public void reportDBSalesList(@RequestParam("date") String date) throws ParseException { + Date newDate = new SimpleDateFormat("yyyy-MM-dd").parse(date); + bdAnalysisService.generateReport(DateFormatUtils.format(newDate, "yyyy-MM-dd")); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java new file mode 100644 index 000000000..eec5be137 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java @@ -0,0 +1,29 @@ +package au.com.royalpay.payment.manage.mappers.log; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * Created by dulingling on 2019-08-14 + */ +@AutoMapper(tablename = "statistics_bd_sales", pkName = "log_id") +public interface StatisticsBDSalesReportMapper { + + @AutoSql(type = SqlType.INSERT) + void save(JSONObject report); + + List getBDSaleList(JSONObject params); + + List getPartnerAmountList(JSONObject params); + + JSONObject findByBDIdAndLogDate(@Param("bd_id") String bd_id, @Param("log_date")Date beginTime); + + @AutoSql(type = SqlType.UPDATE) + void update(JSONObject existBDSalesReport); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java b/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java new file mode 100644 index 000000000..4be3a3e08 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java @@ -0,0 +1,34 @@ +package au.com.royalpay.payment.manage.task; + +import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; +import au.com.royalpay.payment.tools.scheduler.SynchronizedScheduler; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * Created by dulingling on 2019-08-14 + */ +@Component +@ConditionalOnProperty(value = "app.run-tasks", havingValue = "true") +public class DBSaleAnalysisTask { + + @Resource + private SynchronizedScheduler synchronizedScheduler; + + @Resource + private BDAnalysisService bdAnalysisService; + + @Scheduled(cron = "0 0 10 * * ?") + public void dailyReportAutoGenerateReport() { + synchronizedScheduler.executeProcess("manage_task:dailyReportAutoGenerateReport", 120_000, () -> { + Date yesterday = DateUtils.addDays(new Date(), -1); + bdAnalysisService.generateReport(DateFormatUtils.format(yesterday, "yyyy-MM-dd")); + }); + } +} diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml index 2f2de891e..6e06c0c03 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml @@ -3,67 +3,41 @@ @@ -179,11 +153,11 @@ where client_id in(select client_id from sys_clients c where c.approve_time >= #{begin} AND c.approve_time < #{end} AND c.is_valid = 1 AND c.approve_result = 1 ]]> - and c.org_id=#{org_id} - and c.org_id in - #{org_id} - and c.source=1 - and c.source!=1 + and c.org_id=#{org_id} + and c.org_id in + #{org_id} + and c.source=1 + and c.source!=1 - group by bd_id - order by num desc + group by bd_id + order by num desc + + + diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml index 96ee0b611..7990d193a 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml @@ -716,20 +716,37 @@ + SELECT + bd_id, + bd_name, + org_id, + org_name, + SUM(pay_amount) AS total, + SUM(refund_amount) AS refund_fee + FROM statistics_bd_sales + + + AND org_id = #{org_id} + + + AND org_type = #{org_type} + + + AND log_date >= #{begin} + + + AND log_date < #{end} + + + AND org.org_id in + #{org_id} + + + GROUP BY bd_id + ORDER BY total DESC + + + + + + + + \ No newline at end of file diff --git a/src/main/ui/static/analysis/bd-sale-volume.js b/src/main/ui/static/analysis/bd-sale-volume.js index 5230d2821..486c1ef05 100644 --- a/src/main/ui/static/analysis/bd-sale-volume.js +++ b/src/main/ui/static/analysis/bd-sale-volume.js @@ -76,7 +76,6 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts', './bd/analysis-b }; $scope.loadSale = function () { - var params = angular.copy($scope.params); if (params.begin) { params.begin = $filter('date')(params.begin, 'yyyyMMdd'); @@ -88,6 +87,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts', './bd/analysis-b } else { params.end = $filter('date')(new Date(), 'yyyyMMdd'); } + params.org_id =1; $http.get('/analysis/bd/sales', {params: params}).then(function (resp) { $scope.sales = resp.data; loadSaleChart(); diff --git a/src/main/ui/static/analysis/org-tranaction-analysis.js b/src/main/ui/static/analysis/org-tranaction-analysis.js index 8285fce69..e15d190dd 100644 --- a/src/main/ui/static/analysis/org-tranaction-analysis.js +++ b/src/main/ui/static/analysis/org-tranaction-analysis.js @@ -59,6 +59,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./org/analysis-o $scope.showOrg = 'Organization'; $http.get('/sys/orgs', {params: {}}).then(function (resp) { $scope.orgs = resp.data; + $scope.orgs.splice($scope.orgs.findIndex(item => item.org_id === 1), 1) }); } @@ -98,6 +99,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./org/analysis-o $scope.future_loading = false; }); }; + $scope.chooseToday() $scope.chooseOrgId = function (org) { if (org == 'all') { delete $scope.params.org_id; diff --git a/src/main/ui/static/analysis/templates/bd_sale_analysis.html b/src/main/ui/static/analysis/templates/bd_sale_analysis.html index f2e5b96fe..7fac5442d 100644 --- a/src/main/ui/static/analysis/templates/bd_sale_analysis.html +++ b/src/main/ui/static/analysis/templates/bd_sale_analysis.html @@ -68,19 +68,6 @@ This Year -
- - - -
diff --git a/src/main/ui/static/analysis/templates/org_sale_analysis.html b/src/main/ui/static/analysis/templates/org_sale_analysis.html index 191815499..f85c3c73b 100644 --- a/src/main/ui/static/analysis/templates/org_sale_analysis.html +++ b/src/main/ui/static/analysis/templates/org_sale_analysis.html @@ -60,10 +60,6 @@ Last Month -