From 0ab913e0a99430d4bdb152a62f5c7b661dc27187 Mon Sep 17 00:00:00 2001 From: Shaun Chyxion Date: Fri, 23 Nov 2018 22:49:43 +0800 Subject: [PATCH] add name prefix filter --- .../crm/controller/ApplicationController.java | 12 ++++++++-- .../crm/service/ApplicationService.java | 10 ++++++++- .../support/ApplicationServiceSupport.java | 19 ++++++++++++++++ .../pudonghot/ambition/crm/TestDriver.java | 22 +++++++++++++------ .../crm/mapper/ApplicationMapper.java | 7 ++++++ .../ambition/crm/mapper/ApplicationMapper.xml | 7 ++++++ .../ambition/crm/model/Application.java | 8 ++----- .../templates/customer-application/list.hbs | 10 +++++++-- 8 files changed, 77 insertions(+), 18 deletions(-) diff --git a/server/crm/src/main/java/com/pudonghot/ambition/crm/controller/ApplicationController.java b/server/crm/src/main/java/com/pudonghot/ambition/crm/controller/ApplicationController.java index 81d6151..9a78c44 100644 --- a/server/crm/src/main/java/com/pudonghot/ambition/crm/controller/ApplicationController.java +++ b/server/crm/src/main/java/com/pudonghot/ambition/crm/controller/ApplicationController.java @@ -11,9 +11,9 @@ import me.chyxion.tigon.model.ViewModel; import me.chyxion.tigon.model.ListResult; import com.pudonghot.ambition.crm.model.*; import org.apache.commons.lang3.tuple.Pair; +import javax.validation.constraints.NotBlank; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; -import org.hibernate.validator.constraints.NotBlank; import com.pudonghot.ambition.crm.service.UserService; import org.apache.shiro.authz.annotation.RequiresRoles; import org.springframework.web.bind.annotation.RequestParam; @@ -63,6 +63,8 @@ public class ApplicationController start, limit, strSearch, null, filters, null); result.setAttr("users", userService.listViewModels( new Search().asc(User.EMPLOYEE_ID))); + result.setAttr("namePrefixes", + ((ApplicationService) queryService).listNamePrefixes()); return result; } @@ -167,6 +169,12 @@ public class ApplicationController */ @Override protected Pair> filterCol(final String field) { - return Application.OWNER.equals(field) ? Pair.of(field, String.class) : null; + if (Application.OWNER.equals(field)) { + return Pair.of(field, String.class); + } + if (Application.NAME_PREFIX.equals(field)) { + return Pair.of(field, String.class); + } + return null; } } diff --git a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/ApplicationService.java b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/ApplicationService.java index 5c47523..e141281 100644 --- a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/ApplicationService.java +++ b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/ApplicationService.java @@ -1,8 +1,10 @@ package com.pudonghot.ambition.crm.service; +import java.util.Map; +import java.util.List; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; import com.pudonghot.ambition.crm.model.Application; -import org.hibernate.validator.constraints.NotBlank; import me.chyxion.tigon.service.BaseCrudByFormService; import com.pudonghot.ambition.crm.model.ApplicationImage; import com.pudonghot.ambition.crm.model.ApplicationAttachment; @@ -61,5 +63,11 @@ public interface ApplicationService * @param form form */ void updateAttachment(@Valid ApplicationAttachmentFormForUpdate form); + + /** + * list name prefixes + * @return name prefixes + */ + List> listNamePrefixes(); } diff --git a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ApplicationServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ApplicationServiceSupport.java index 2334c0c..b7b441d 100644 --- a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ApplicationServiceSupport.java +++ b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ApplicationServiceSupport.java @@ -2,6 +2,7 @@ package com.pudonghot.ambition.crm.service.support; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.ArrayList; import java.io.IOException; import java.io.InputStream; @@ -67,6 +68,7 @@ public class ApplicationServiceSupport final String id = idSeq.get(); final Application application = form.copy(new Application()); application.setId(id); + application.setNamePrefix(namePrefix(application.getName())); final Date now = new Date(); application.setDateUpdated(now); @@ -118,6 +120,7 @@ public class ApplicationServiceSupport else { application.setOwner(updatedBy); } + application.setNamePrefix(namePrefix(application.getName())); return update(application); } @@ -194,6 +197,14 @@ public class ApplicationServiceSupport updateFile(form, attachmentMapper::find, attachmentMapper::listSort, attachmentMapper::update); } + /** + * {@inheritDoc} + */ + @Override + public List> listNamePrefixes() { + return mapper.listNamePrefixes(); + } + /** * {@inheritDoc} */ @@ -359,4 +370,12 @@ public class ApplicationServiceSupport return false; }); } + + private String namePrefix(final String name) { + int i = name.indexOf("-"); + if (i > 0) { + return name.substring(0, i); + } + return null; + } } diff --git a/server/crm/src/test/java/com/pudonghot/ambition/crm/TestDriver.java b/server/crm/src/test/java/com/pudonghot/ambition/crm/TestDriver.java index 4dd9154..09a8dd5 100644 --- a/server/crm/src/test/java/com/pudonghot/ambition/crm/TestDriver.java +++ b/server/crm/src/test/java/com/pudonghot/ambition/crm/TestDriver.java @@ -1,17 +1,16 @@ package com.pudonghot.ambition.crm; -import com.pudonghot.ambition.crm.model.ApplicationImage; -import com.pudonghot.ambition.crm.util.AmDateUtil; -import org.apache.commons.lang3.time.DateFormatUtils; -import org.apache.commons.lang3.time.DateUtils; +import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; -import org.joda.time.DateTimeConstants; import org.joda.time.Interval; import org.joda.time.Period; import org.junit.Test; - -import java.text.ParseException; import java.util.Date; +import java.text.ParseException; +import org.joda.time.DateTimeConstants; +import org.apache.commons.lang3.time.DateUtils; +import com.pudonghot.ambition.crm.util.AmDateUtil; +import com.pudonghot.ambition.crm.model.ApplicationImage; /** * @version 0.0.1 @@ -20,6 +19,7 @@ import java.util.Date; * chyxion@163.com
* Sep 1, 2015 2:34:08 PM */ +@Slf4j public class TestDriver { @Test @@ -102,4 +102,12 @@ public class TestDriver { image.setSort(sortOld - 1.5f); System.err.println(image); } + + @Test + public void testNamePrefix() { + String name = "AT-Foo"; + int i = name.indexOf('-'); + log.info("index [{}].", i); + log.info("prefix [{}].", name.substring(0, i)); + } } diff --git a/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.java b/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.java index 297fbbd..eb2e9a8 100644 --- a/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.java +++ b/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.java @@ -1,5 +1,7 @@ package com.pudonghot.ambition.crm.mapper; +import java.util.List; +import java.util.Map; import me.chyxion.tigon.mybatis.BaseMapper; import com.pudonghot.ambition.crm.model.Application; @@ -10,4 +12,9 @@ import com.pudonghot.ambition.crm.model.Application; */ public interface ApplicationMapper extends BaseMapper { + /** + * list name prefixes + * @return name prefixes + */ + List> listNamePrefixes(); } diff --git a/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.xml b/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.xml index bb11e73..e2c3f11 100644 --- a/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.xml +++ b/server/mapper/src/main/java/com/pudonghot/ambition/crm/mapper/ApplicationMapper.xml @@ -39,4 +39,11 @@ + diff --git a/server/model/src/main/java/com/pudonghot/ambition/crm/model/Application.java b/server/model/src/main/java/com/pudonghot/ambition/crm/model/Application.java index 1d8b446..a383b7d 100644 --- a/server/model/src/main/java/com/pudonghot/ambition/crm/model/Application.java +++ b/server/model/src/main/java/com/pudonghot/ambition/crm/model/Application.java @@ -5,6 +5,7 @@ import lombok.Setter; import me.chyxion.tigon.model.M3; import me.chyxion.tigon.mybatis.Table; import me.chyxion.tigon.mybatis.Transient; +import lombok.experimental.FieldNameConstants; /** * @author Donghuang
@@ -14,15 +15,10 @@ import me.chyxion.tigon.mybatis.Transient; @Getter @Setter @Table("crm_application") +@FieldNameConstants(prefix = "") public class Application extends M3 { private static final long serialVersionUID = 1L; - // Column Names - public static final String NAME = "name"; - public static final String NAME_PREFIX = "name_prefix"; - public static final String CONTENT = "content"; - public static final String OWNER = "owner"; - // Properties private String name; private String namePrefix; diff --git a/web/app/templates/customer-application/list.hbs b/web/app/templates/customer-application/list.hbs index 9c8ed88..f53246c 100644 --- a/web/app/templates/customer-application/list.hbs +++ b/web/app/templates/customer-application/list.hbs @@ -20,7 +20,13 @@ - Name + {{th-filter name='namePrefix' + text='Name' + label='Name Filter' + options=model.namePrefixes + value-field='value' + text-field='text' + }} @@ -40,7 +46,7 @@ Enabled - + Settings