From d9a32c2d9ee3aa31b1558904617b851b2f310214 Mon Sep 17 00:00:00 2001 From: "anna.ho" Date: Wed, 1 Jun 2022 16:17:11 +0800 Subject: [PATCH] customer report --- .../tbms/api/service/CustomerApiService.java | 2 +- .../service/CustomerReportService.java | 55 +++++++++++++++--- .../reports/web/CustomerReportController.java | 19 +++++-- .../webapp/resources/js/store/ReportStore.js | 21 ++----- .../resources/js/view/Order/OrderForm.js | 1 - .../view/Report/Report_CustomerContainer.js | 56 +++++++++++++++---- 6 files changed, 111 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/ffii/tbms/api/service/CustomerApiService.java b/src/main/java/com/ffii/tbms/api/service/CustomerApiService.java index 0b5f945..5061a8f 100644 --- a/src/main/java/com/ffii/tbms/api/service/CustomerApiService.java +++ b/src/main/java/com/ffii/tbms/api/service/CustomerApiService.java @@ -83,7 +83,7 @@ public class CustomerApiService extends AbstractService { } } - sql.append(" ORDER BY ( 0 "); + sql.append(" ORDER BY ( 0+0 "); if (args != null) { if (args.containsKey("searchStr")){ diff --git a/src/main/java/com/ffii/tbms/reports/service/CustomerReportService.java b/src/main/java/com/ffii/tbms/reports/service/CustomerReportService.java index 52a4526..c6d2bd5 100644 --- a/src/main/java/com/ffii/tbms/reports/service/CustomerReportService.java +++ b/src/main/java/com/ffii/tbms/reports/service/CustomerReportService.java @@ -10,19 +10,18 @@ ******************************************************************************/ package com.ffii.tbms.reports.service; -import java.util.HashMap; import java.util.List; import java.util.Map; +import com.ffii.core.dao.JdbcDao; +import com.ffii.core.utils.SecurityUtils; +import com.ffii.core.web.AbstractService; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; -import com.ffii.core.dao.JdbcDao; -import com.ffii.core.utils.SecurityUtils; -import com.ffii.core.web.AbstractService; - @Service public class CustomerReportService extends AbstractService { @@ -37,8 +36,8 @@ public class CustomerReportService extends AbstractService { StringBuilder sql = new StringBuilder( " SELECT " + " c.created, " - +" CONCAT(IF(c.firstName IS NULL, '', CONCAT(c.firstName, ' ')), " - +" IF(c.surname IS NULL, '', CONCAT(c.surname, ' '))) AS customerName, " + + " CONCAT(IF(c.firstName IS NULL, '', CONCAT(c.firstName, ' ')), " + + " IF(c.surname IS NULL, '', CONCAT(c.surname, ' '))) AS customerName, " + " c.nameCh, " + " c.phone1, " + " c.phone2, " @@ -66,10 +65,48 @@ public class CustomerReportService extends AbstractService { if(args != null){ if(args.containsKey("sysGroupId")) sql.append(" AND c.sysGroupId = :sysGroupId "); + + if(args.containsKey("customerName")){ + String str = args.get("customerName").toString(); + String[] array = str.split(" "); + str = ""; + for(int i = 0; i :dateFrom) "); + if(args.containsKey("dateTo")) + sql.append(" AND (c.created < :dateTo) "); + + } + + sql.append(" GROUP BY c.id HAVING 1=1 "); + if(args != null){ + if(args.containsKey("amountFrom")) + sql.append(" AND (orderAmount >= :amountFrom) "); + if(args.containsKey("amountTo")) + sql.append(" AND (orderAmount <= :amountTo) "); } - sql.append(" GROUP BY c.id " - + " ORDER BY c.created "); + sql.append(" ORDER BY (0+0 "); + if (args != null) { + if (args.containsKey("customerName")){ + sql.append(" + IF( c.surname = :customerName,1,0) + IF( c.surname LIKE '"+args.get("customerName")+"%',1,0) "); + sql.append(" + IF( c.firstName = :customerName,1,0) + IF( c.firstName LIKE '"+args.get("customerName")+"%',1,0) "); + sql.append(" + IF( c.nameCh = :customerName,1,0) + IF( c.nameCh LIKE '"+args.get("customerName")+"%',1,0) "); + } + } + sql.append(" ) DESC, c.created "); return jdbcDao.queryForList(sql.toString(), args); } diff --git a/src/main/java/com/ffii/tbms/reports/web/CustomerReportController.java b/src/main/java/com/ffii/tbms/reports/web/CustomerReportController.java index 02e45c4..b09ef45 100644 --- a/src/main/java/com/ffii/tbms/reports/web/CustomerReportController.java +++ b/src/main/java/com/ffii/tbms/reports/web/CustomerReportController.java @@ -51,6 +51,13 @@ public class CustomerReportController extends AbstractController { Map args = new HashMap(); CriteriaUtils.addDate(request, args, "dateFrom"); CriteriaUtils.addDateTo(request, args, "dateTo"); + CriteriaUtils.addStringLike(request, args, "customerName"); + CriteriaUtils.addStringLike(request, args, "phone"); + CriteriaUtils.addStringLike(request, args, "email"); + CriteriaUtils.addStringLike(request, args, "address"); + CriteriaUtils.addStringLike(request, args, "remarks"); + CriteriaUtils.addInteger(request, args, "amountFrom"); + CriteriaUtils.addInteger(request, args, "amountTo"); List> records = service.search(args); @@ -70,14 +77,16 @@ public class CustomerReportController extends AbstractController { Map args = new HashMap(); CriteriaUtils.addDate(request, args, "dateFrom"); CriteriaUtils.addDateTo(request, args, "dateTo"); - - //CriteriaUtils.addInteger(request, args, "start"); - //CriteriaUtils.addInteger(request, args, "limit"); + CriteriaUtils.addString(request, args, "customerName"); + CriteriaUtils.addStringLike(request, args, "phone"); + CriteriaUtils.addStringLike(request, args, "email"); + CriteriaUtils.addStringLike(request, args, "address"); + CriteriaUtils.addStringLike(request, args, "remarks"); + CriteriaUtils.addInteger(request, args, "amountFrom"); + CriteriaUtils.addInteger(request, args, "amountTo"); List> records = service.search(args); - //Map count = service.count(args); - //model.addAttribute("total", NumberUtils.intValue(count.get("count"))); model.addAttribute(Params.RECORDS, records); model.addAttribute(Params.SUCCESS, Boolean.TRUE); diff --git a/src/main/webapp/resources/js/store/ReportStore.js b/src/main/webapp/resources/js/store/ReportStore.js index b7069e0..cfde016 100644 --- a/src/main/webapp/resources/js/store/ReportStore.js +++ b/src/main/webapp/resources/js/store/ReportStore.js @@ -144,21 +144,7 @@ Ext.define('App.store.Report_OrderStore', { idProperty: 'orderId' } }, - reader: new Ext.data.JsonReader({}, [ - {name: 'orderId'}, - {name: 'date' }, - {name: 'code'}, - {name: 'orderNo'}, - {name: 'customerName'}, - {name: 'status'}, - {name: 'remarks'}, - {name: 'status'}, - {name: 'item'}, - {name: 'orderAmount'}, - {name: 'outstanding'}, - {name: 'paymentAmount'}, - ]), - /* + fields: [ { name: 'orderId', @@ -209,7 +195,6 @@ Ext.define('App.store.Report_OrderStore', { type: 'string' }, ], - */ }, cfg)]); } @@ -241,6 +226,10 @@ Ext.define('App.store.Report_CustomerStore', { { name: "created", type: 'date', + convert: function (value) { + var d = new Date(value); + return Ext.util.Format.date(d, 'Y/m/d') + }, }, { name: "customerName", diff --git a/src/main/webapp/resources/js/view/Order/OrderForm.js b/src/main/webapp/resources/js/view/Order/OrderForm.js index 632d1af..8795daa 100644 --- a/src/main/webapp/resources/js/view/Order/OrderForm.js +++ b/src/main/webapp/resources/js/view/Order/OrderForm.js @@ -186,7 +186,6 @@ Ext.define("App.view.OrderForm", { field.isPressing = true; } } - },{ xtype: 'label', html: '', diff --git a/src/main/webapp/resources/js/view/Report/Report_CustomerContainer.js b/src/main/webapp/resources/js/view/Report/Report_CustomerContainer.js index ff9db11..43444a4 100644 --- a/src/main/webapp/resources/js/view/Report/Report_CustomerContainer.js +++ b/src/main/webapp/resources/js/view/Report/Report_CustomerContainer.js @@ -5,6 +5,7 @@ Ext.define('App.view.Report_CustomerContainer', { focusable:true, layout: 'vbox', + defaults: { width: '100%', margin: '2 4 2 4' @@ -62,17 +63,48 @@ Ext.define('App.view.Report_CustomerContainer', { { xtype: 'datefield', fieldLabel: App.localeRes('Date From'), - allowBlank: false, name: 'dateFrom', - value: firstDay }, { xtype: 'datefield', fieldLabel: App.localeRes('Date To'), - allowBlank: false, name: 'dateTo', - value: lastDay - } + }, + { + xtype: 'textfield', + fieldLabel: App.localeRes('Customer Name'), + name: 'customerName', + }, + { + xtype: 'textfield', + fieldLabel: App.localeRes('Phone'), + name: 'phone', + }, + { + xtype: 'textfield', + fieldLabel: App.localeRes('Email'), + name: 'email', + }, + { + xtype: 'textfield', + fieldLabel: App.localeRes('Address'), + name: 'address', + }, + { + xtype: 'textfield', + fieldLabel: App.localeRes('Remarks'), + name: 'remarks', + }, + { + xtype: 'numberfield', + fieldLabel: App.localeRes('Amount From'), + name: 'amountFrom', + }, + { + xtype: 'numberfield', + fieldLabel: App.localeRes('Amount To'), + name: 'amountTo', + }, ] } ], @@ -132,6 +164,9 @@ Ext.define('App.view.Report_CustomerGrid', { scrollable: { alwaysShow: true }, + viewConfig : { + enableTextSelection: true, + }, reloadStore: function() { var me = this; @@ -142,10 +177,6 @@ Ext.define('App.view.Report_CustomerGrid', { initComponent: function() { var me = this; Ext.apply(me, { - bbar: { - xtype: 'pagingtoolbar', - displayInfo: true - }, store: Ext.create('App.store.Report_CustomerStore', {}), columns: [ { @@ -153,15 +184,16 @@ Ext.define('App.view.Report_CustomerGrid', { width: 80 }, { - xtype: 'datecolumn', + xtype: 'gridcolumn', dataIndex: 'created', text: App.localeRes('Creation Date'), - flex: 1 + format: 'Y-m-d' }, { xtype: 'gridcolumn', dataIndex: 'customerName', text: App.localeRes('Customer (Eng)'), + width: 150, }, { xtype: 'gridcolumn', @@ -182,11 +214,13 @@ Ext.define('App.view.Report_CustomerGrid', { xtype: 'gridcolumn', dataIndex: 'email', text: App.localeRes('Email'), + width: 150, }, { xtype: 'gridcolumn', dataIndex: 'address', text: App.localeRes('Address'), + width: 150, }, { xtype: 'gridcolumn',