Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
service-campaign
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyen Ha
service-campaign
Commits
b1db5075
Commit
b1db5075
authored
Aug 21, 2019
by
Đào Nhật Quang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quangdn - add download template and import template
parent
56ae38e7
Changes
21
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
959 additions
and
168 deletions
+959
-168
pom.xml
pom.xml
+8
-2
src/main/java/com/viettel/campaign/mapper/CustomerMapper.java
...main/java/com/viettel/campaign/mapper/CustomerMapper.java
+3
-3
src/main/java/com/viettel/campaign/model/ccms_full/Customer.java
...n/java/com/viettel/campaign/model/ccms_full/Customer.java
+5
-2
src/main/java/com/viettel/campaign/model/ccms_full/CustomerContact.java
...com/viettel/campaign/model/ccms_full/CustomerContact.java
+2
-0
src/main/java/com/viettel/campaign/model/ccms_full/CustomerList.java
...va/com/viettel/campaign/model/ccms_full/CustomerList.java
+4
-0
src/main/java/com/viettel/campaign/model/ccms_full/CustomerListMapping.java
...viettel/campaign/model/ccms_full/CustomerListMapping.java
+12
-4
src/main/java/com/viettel/campaign/model/ccms_full/CustomizeFieldObject.java
...iettel/campaign/model/ccms_full/CustomizeFieldObject.java
+56
-0
src/main/java/com/viettel/campaign/model/ccms_full/CustomizeFieldOptionValue.java
...l/campaign/model/ccms_full/CustomizeFieldOptionValue.java
+54
-0
src/main/java/com/viettel/campaign/model/ccms_full/CustomizeFields.java
...com/viettel/campaign/model/ccms_full/CustomizeFields.java
+74
-0
src/main/java/com/viettel/campaign/repository/ccms_full/CustomerContactRepository.java
...paign/repository/ccms_full/CustomerContactRepository.java
+2
-0
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldObjectRepository.java
.../repository/ccms_full/CustomizeFieldObjectRepository.java
+11
-0
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldOptionValueRepository.java
...sitory/ccms_full/CustomizeFieldOptionValueRepository.java
+14
-0
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldsRepository.java
...paign/repository/ccms_full/CustomizeFieldsRepository.java
+12
-0
src/main/java/com/viettel/campaign/service/CustomerService.java
...in/java/com/viettel/campaign/service/CustomerService.java
+8
-6
src/main/java/com/viettel/campaign/service/impl/CustomerServiceImpl.java
...om/viettel/campaign/service/impl/CustomerServiceImpl.java
+602
-82
src/main/java/com/viettel/campaign/utils/BundleUtils.java
src/main/java/com/viettel/campaign/utils/BundleUtils.java
+14
-2
src/main/java/com/viettel/campaign/utils/Constants.java
src/main/java/com/viettel/campaign/utils/Constants.java
+4
-0
src/main/java/com/viettel/campaign/web/rest/CustomerController.java
...ava/com/viettel/campaign/web/rest/CustomerController.java
+64
-50
src/main/resources/config/globalConfig.properties
src/main/resources/config/globalConfig.properties
+10
-0
src/main/resources/sql/campaign-mng/get-customize-field.sql
src/main/resources/sql/campaign-mng/get-customize-field.sql
+0
-17
templates/temp/import_customer_template.xlsx
templates/temp/import_customer_template.xlsx
+0
-0
No files found.
pom.xml
View file @
b1db5075
...
...
@@ -49,8 +49,8 @@
<dependency>
<groupId>
com.oracle
</groupId>
<artifactId>
ojdbc7
</artifactId>
<!-- <scope>system</scope>--
>
<!-- <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>--
>
<scope>
system
</scope
>
<systemPath>
${project.basedir}/lib/ojdbc7.jar
</systemPath
>
<version>
1.0
</version>
</dependency>
<dependency>
...
...
@@ -121,6 +121,12 @@
<artifactId>
poi
</artifactId>
<version>
3.17
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
2.4
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>
org.apache.poi
</groupId>
...
...
src/main/java/com/viettel/campaign/mapper/CustomerMapper.java
View file @
b1db5075
...
...
@@ -21,7 +21,7 @@ public class CustomerMapper extends BaseMapper<Customer, CustomerDTO> {
obj
.
setMobileNumber
(
model
.
getMobileNumber
());
obj
.
setName
(
model
.
getName
());
obj
.
setSiteId
(
model
.
getSiteId
());
obj
.
setStatus
(
model
.
getStatus
());
obj
.
setStatus
(
model
.
getStatus
()
.
toString
()
);
// String additionalInfo = "";
// if (model.getName() != null && !"".equals(model.getName())) {
// additionalInfo += model.getName();
...
...
@@ -58,7 +58,7 @@ public class CustomerMapper extends BaseMapper<Customer, CustomerDTO> {
obj
.
setCustomerImg
(
dtoBean
.
getCustomerImg
());
obj
.
setCreateDate
(
dtoBean
.
getCreateDate
());
obj
.
setUpdateDate
(
dtoBean
.
getUpdateDate
());
obj
.
setStatus
(
dtoBean
.
getStatus
(
));
obj
.
setStatus
(
Long
.
parseLong
(
dtoBean
.
getStatus
()
));
obj
.
setCreateBy
(
dtoBean
.
getCreateBy
());
obj
.
setUpdateBy
(
dtoBean
.
getUpdateBy
());
obj
.
setSiteId
(
dtoBean
.
getSiteId
());
...
...
@@ -71,7 +71,7 @@ public class CustomerMapper extends BaseMapper<Customer, CustomerDTO> {
obj
.
setUserName
(
dtoBean
.
getUserName
());
obj
.
setAreaCode
(
dtoBean
.
getAreaCode
());
obj
.
setCustomerType
(
dtoBean
.
getCustomerType
());
obj
.
setCallAllowed
(
dtoBean
.
getCallAllowed
(
));
obj
.
setCallAllowed
(
Long
.
parseLong
(
dtoBean
.
getCallAllowed
()
));
obj
.
setEmailAllowed
(
dtoBean
.
getEmailAllowed
());
obj
.
setSmsAllowed
(
dtoBean
.
getSmsAllowed
());
obj
.
setIpccStatus
(
dtoBean
.
getIpccStatus
());
...
...
src/main/java/com/viettel/campaign/model/ccms_full/Customer.java
View file @
b1db5075
...
...
@@ -45,7 +45,7 @@ public class Customer implements Serializable {
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
updateDate
;
@Column
(
name
=
"STATUS"
)
private
Stri
ng
status
;
private
Lo
ng
status
;
@Size
(
max
=
50
)
@Column
(
name
=
"CREATE_BY"
)
private
String
createBy
;
...
...
@@ -80,7 +80,7 @@ public class Customer implements Serializable {
@Column
(
name
=
"CUSTOMER_TYPE"
)
private
Long
customerType
;
@Column
(
name
=
"CALL_ALLOWED"
)
private
Stri
ng
callAllowed
;
private
Lo
ng
callAllowed
;
@Column
(
name
=
"EMAIL_ALLOWED"
)
private
Long
emailAllowed
;
@Column
(
name
=
"SMS_ALLOWED"
)
...
...
@@ -88,4 +88,7 @@ public class Customer implements Serializable {
@Size
(
max
=
100
)
@Column
(
name
=
"IPCC_STATUS"
)
private
String
ipccStatus
;
@Size
(
max
=
2000
)
@Column
(
name
=
"AVATAR_LINK"
)
private
String
avatarLink
;
}
src/main/java/com/viettel/campaign/model/ccms_full/CustomerContact.java
View file @
b1db5075
...
...
@@ -43,4 +43,6 @@ public class CustomerContact {
@Column
(
name
=
"END_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
endDate
;
@Column
(
name
=
"SITE_ID"
)
private
Long
siteId
;
}
src/main/java/com/viettel/campaign/model/ccms_full/CustomerList.java
View file @
b1db5075
package
com.viettel.campaign.model.ccms_full
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.persistence.*
;
...
...
@@ -13,6 +15,8 @@ import java.util.Date;
@Table
(
name
=
"CUSTOMER_LIST"
)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
CustomerList
implements
Serializable
{
@Id
...
...
src/main/java/com/viettel/campaign/model/ccms_full/CustomerListMapping.java
View file @
b1db5075
package
com.viettel.campaign.model.ccms_full
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
@Entity
@Table
(
name
=
"CUSTOMER_LIST_MAPPING"
)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
CustomerListMapping
implements
Serializable
{
@Id
@GeneratedValue
(
generator
=
"customer_list_mapping_seq"
)
@SequenceGenerator
(
name
=
"customer_list_mapping_seq"
,
sequenceName
=
"customer_list_mapping_seq"
,
allocationSize
=
1
)
@Basic
(
optional
=
false
)
@NotNull
@Column
(
name
=
"CUSTOMER_LIST_MAPPING_ID"
)
private
Long
customerListMappingId
;
@NotNull
@Column
(
name
=
"CUSTOMER_ID"
)
private
Long
customerId
;
@Column
(
name
=
"COMPANY_SITE_ID"
)
private
Long
companySiteId
;
@NotNull
@Column
(
name
=
"CUSTOMER_LIST_ID"
)
private
Long
customerListId
;
}
src/main/java/com/viettel/campaign/
web/dto/CustomizeFieldDTO
.java
→
src/main/java/com/viettel/campaign/
model/ccms_full/CustomizeFieldObject
.java
View file @
b1db5075
package
com.viettel.campaign.
web.dto
;
package
com.viettel.campaign.
model.ccms_full
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
@Entity
@Table
(
name
=
"CUSTOMIZE_FIELD_OBJECT"
)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
CustomizeFieldDTO
{
public
class
CustomizeFieldObject
implements
Serializable
{
@Id
@GeneratedValue
(
generator
=
"CUSTOMIZE_FIELD_OBJECT_SEQ"
)
@SequenceGenerator
(
name
=
"CUSTOMIZE_FIELD_OBJECT_SEQ"
,
sequenceName
=
"CUSTOMIZE_FIELD_OBJECT_SEQ"
,
allocationSize
=
1
)
@Basic
(
optional
=
false
)
@NotNull
@Column
(
name
=
"CUSTOMIZE_FIELD_OBJECT_ID"
)
private
Long
customizeFieldObjectId
;
@Column
(
name
=
"OBJECT_ID"
)
private
Long
objectId
;
@Column
(
name
=
"CUSTOMIZE_FIELDS_ID"
)
private
Long
customizeFieldId
;
@Column
(
name
=
"VALUE_TEXT"
)
private
String
valueText
;
@Column
(
name
=
"VALUE_NUMBER"
)
private
Long
valueNumber
;
@Column
(
name
=
"VALUE_DATE"
)
private
Date
valueDate
;
@Column
(
name
=
"VALUE_CHECKBOX"
)
private
Long
valueCheckbox
;
private
Date
createBy
;
@Column
(
name
=
"CREATE_BY"
)
private
String
createBy
;
@Column
(
name
=
"CREATE_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
createDate
;
@Column
(
name
=
"UPDATE_BY"
)
private
String
updateBy
;
@Column
(
name
=
"UPDATE_DATE"
)
private
Date
updateDate
;
@Column
(
name
=
"STATUS"
)
private
Long
status
;
@Column
(
name
=
"FIELD_OPTION_VALUE_ID"
)
private
Long
fieldOptionValueId
;
@Column
(
name
=
"TITLE"
)
private
String
title
;
@Column
(
name
=
"FUNCTION_CODE"
)
private
String
functionCode
;
}
src/main/java/com/viettel/campaign/model/ccms_full/CustomizeFieldOptionValue.java
0 → 100644
View file @
b1db5075
package
com.viettel.campaign.model.ccms_full
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
@Entity
@Table
(
name
=
"CUSTOMIZE_FIELD_OPTION_VALUE"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
CustomizeFieldOptionValue
implements
Serializable
{
@Id
@Column
(
name
=
"FIELD_OPTION_VALUE_ID"
)
@Basic
(
optional
=
false
)
@NotNull
private
Long
fieldOptionValueId
;
@Column
(
name
=
"FIELD_OPTION_ID"
)
private
Long
fieldOptionId
;
@Column
(
name
=
"NAME"
)
private
String
name
;
@Column
(
name
=
"VALUE"
)
private
String
value
;
@Column
(
name
=
"POSITION"
)
private
Long
position
;
@Column
(
name
=
"CREATE_BY"
)
private
String
createBy
;
@Column
(
name
=
"CREATE_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
createDate
;
@Column
(
name
=
"UPDATE_BY"
)
private
String
updateBy
;
@Column
(
name
=
"UPDATE_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
updateDate
;
@Column
(
name
=
"STATUS"
)
private
Long
status
;
}
src/main/java/com/viettel/campaign/
web/dto/DynamicExcelHeaderDTO
.java
→
src/main/java/com/viettel/campaign/
model/ccms_full/CustomizeFields
.java
View file @
b1db5075
package
com.viettel.campaign.
web.dto
;
package
com.viettel.campaign.
model.ccms_full
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
@Entity
@Table
(
name
=
"CUSTOMIZE_FIELDS"
)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
DynamicExcelHeaderDTO
{
public
class
CustomizeFields
implements
Serializable
{
@Id
@GeneratedValue
(
generator
=
"CUSTOMIZE_FIELDS_SEQ"
)
@SequenceGenerator
(
name
=
"CUSTOMIZE_FIELDS_SEQ"
,
sequenceName
=
"CUSTOMIZE_FIELDS_SEQ"
,
allocationSize
=
1
)
@Basic
(
optional
=
false
)
@NotNull
@Column
(
name
=
"CUSTOMIZE_FIELD_ID"
)
private
Long
customizeFieldId
;
@Column
(
name
=
"SITE_ID"
)
private
Long
siteId
;
@Column
(
name
=
"FUNCTION_CODE"
)
private
String
functionCode
;
@Column
(
name
=
"CREATE_BY"
)
private
String
createBy
;
@Column
(
name
=
"CREATE_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
createDate
;
@Column
(
name
=
"UPDATE_BY"
)
private
String
updateBy
;
@Column
(
name
=
"UPDATE_DATE"
)
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
Date
updateDate
;
@Column
(
name
=
"STATUS"
)
private
Long
status
;
@Column
(
name
=
"TYPE"
)
private
String
type
;
@Column
(
name
=
"TITLE"
)
private
String
title
;
@Column
(
name
=
"PLACEHOLDER"
)
private
String
placeholder
;
@Column
(
name
=
"DESCRIPTION"
)
private
String
description
;
@Column
(
name
=
"POSITION"
)
private
Long
position
;
@Column
(
name
=
"REQUIRED"
)
private
Long
required
;
@Column
(
name
=
"FIELD_OPTIONS_ID"
)
private
Long
fieldOptionsId
;
@Column
(
name
=
"REGEXP_FOR_VALIDATION"
)
private
String
regexpForValidation
;
@Column
(
name
=
"MAX_LENGTH"
)
private
Long
maxLength
;
@Column
(
name
=
"MIN_LENGTH"
)
private
Long
minLength
;
@Column
(
name
=
"MIN"
)
private
Long
min
;
@Column
(
name
=
"MAX"
)
private
Long
max
;
@Column
(
name
=
"ACTIVE"
)
private
Long
active
;
public
CustomizeFields
(
String
type
,
String
title
)
{
this
.
type
=
type
;
this
.
title
=
title
;
}
}
src/main/java/com/viettel/campaign/repository/ccms_full/CustomerContactRepository.java
View file @
b1db5075
...
...
@@ -11,4 +11,6 @@ import java.util.List;
public
interface
CustomerContactRepository
extends
JpaRepository
<
CustomerContact
,
Long
>
{
@Query
(
"FROM CustomerContact WHERE status = 1 AND customerId = :customerId AND contactType = :contactType AND (contact IS NULL OR UPPER(contact) LIKE UPPER(concat('%', :contact, '%')))"
)
List
<
CustomerContact
>
findByCustomerIdAndAndContactTypeAndContact
(
@Param
(
"customerId"
)
Long
customerId
,
@Param
(
"contactType"
)
Short
contactType
,
@Param
(
"contact"
)
String
contact
,
Pageable
pageable
);
CustomerContact
findCustomerContactByContactTypeAndContactAndIsDirectLine
(
Short
contactType
,
String
contact
,
Short
isDirectLine
);
}
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldObjectRepository.java
0 → 100644
View file @
b1db5075
package
com.viettel.campaign.repository.ccms_full
;
import
com.viettel.campaign.model.ccms_full.CustomizeFieldObject
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
CustomizeFieldObjectRepository
extends
JpaRepository
<
CustomizeFieldObject
,
Long
>
{
List
<
CustomizeFieldObject
>
findCustomizeFieldObjectsByFunctionCodeEqualsAndObjectId
(
String
str
,
Long
id
);
}
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldOptionValueRepository.java
0 → 100644
View file @
b1db5075
package
com.viettel.campaign.repository.ccms_full
;
import
com.viettel.campaign.model.ccms_full.CustomizeFieldOptionValue
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
CustomizeFieldOptionValueRepository
extends
JpaRepository
<
CustomizeFieldOptionValue
,
Long
>
{
List
<
CustomizeFieldOptionValue
>
findCustomizeFieldOptionValuesByFieldOptionIdAndStatus
(
Long
id
,
Long
status
);
CustomizeFieldOptionValue
findCustomizeFieldOptionValueByNameEqualsAndStatus
(
String
name
,
Long
status
);
}
src/main/java/com/viettel/campaign/repository/ccms_full/CustomizeFieldsRepository.java
0 → 100644
View file @
b1db5075
package
com.viettel.campaign.repository.ccms_full
;
import
com.viettel.campaign.model.ccms_full.CustomizeFields
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
CustomizeFieldsRepository
extends
JpaRepository
<
CustomizeFields
,
Long
>
{
List
<
CustomizeFields
>
findCustomizeFieldsByFunctionCodeEqualsAndStatusAndSiteId
(
String
functionCode
,
Long
status
,
Long
siteId
);
}
src/main/java/com/viettel/campaign/service/CustomerService.java
View file @
b1db5075
...
...
@@ -2,15 +2,15 @@ package com.viettel.campaign.service;
import
com.viettel.campaign.model.ccms_full.Customer
;
import
com.viettel.campaign.model.ccms_full.CustomerList
;
import
com.viettel.campaign.model.ccms_full.CustomizeFieldObject
;
import
com.viettel.campaign.model.ccms_full.CustomizeFields
;
import
com.viettel.campaign.web.dto.*
;
import
com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO
;
import
java.io.File
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
public
interface
CustomerService
{
...
...
@@ -62,9 +62,11 @@ public interface CustomerService {
List
<
Customer
>
findAllByCondition
(
Long
siteId
,
Date
endTime
);
Customer
update
(
Customer
c
);
List
<
DynamicExcelHeaderDTO
>
getDynamicHeader
(
Long
companySiteId
);
List
<
CustomizeFields
>
getDynamicHeader
(
Long
companySiteId
);
byte
[]
buildTemplate
(
Long
companySiteId
);
void
buildTemplate
(
Long
companySiteId
);
Map
<
String
,
Object
>
readAndValidateCustomer
(
String
path
,
List
<
CustomizeFields
>
headerDTOS
,
Long
companySiteId
);
List
<
CustomizeField
DTO
>
getCustomizeField
(
Long
customerId
);
List
<
CustomizeField
Object
>
getCustomizeField
(
Long
customerId
);
}
src/main/java/com/viettel/campaign/service/impl/CustomerServiceImpl.java
View file @
b1db5075
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/utils/BundleUtils.java
View file @
b1db5075
...
...
@@ -13,14 +13,15 @@ import java.util.ResourceBundle;
public
class
BundleUtils
{
protected
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
BundleUtils
.
class
);
private
static
volatile
ResourceBundle
rsConfig
=
null
;
private
static
final
String
GLOBAL_CONFIG
=
"config/globalConfig"
;
public
static
String
getLangString
(
String
key
,
Locale
...
locale
)
{
Locale
vi
=
new
Locale
(
"vi"
);
Locale
mlocale
=
vi
;
try
{
if
(
locale
!=
null
)
{
if
(
locale
.
length
==
0
)
{
if
(
locale
!=
null
)
{
if
(
locale
.
length
==
0
)
{
rsConfig
=
ResourceBundle
.
getBundle
(
Constants
.
LANGUAGE
.
LANGUAGE
,
mlocale
);
}
else
{
rsConfig
=
ResourceBundle
.
getBundle
(
Constants
.
LANGUAGE
.
LANGUAGE
,
locale
[
0
]);
...
...
@@ -34,4 +35,15 @@ public class BundleUtils {
return
key
;
}
}
public
static
String
getGlobalConfig
(
String
configKey
)
{
String
result
=
null
;
try
{
ResourceBundle
bundle
=
ResourceBundle
.
getBundle
(
GLOBAL_CONFIG
);
result
=
bundle
.
getString
(
configKey
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
result
;
}
}
src/main/java/com/viettel/campaign/utils/Constants.java
View file @
b1db5075
...
...
@@ -43,4 +43,8 @@ public class Constants {
public
interface
DATE_FORMAT
{
String
FOMART_DATE_TYPE_1
=
"DD/MM/YYYY"
;
}
public
interface
MIME_TYPE
{
String
EXCEL_XLSX
=
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
;
}
}
src/main/java/com/viettel/campaign/web/rest/CustomerController.java
View file @
b1db5075
package
com.viettel.campaign.web.rest
;
import
com.viettel.campaign.model.ccms_full.CustomizeFieldObject
;
import
com.viettel.campaign.model.ccms_full.CustomizeFields
;
import
com.viettel.campaign.service.CustomerService
;
import
com.viettel.campaign.utils.BundleUtils
;
import
com.viettel.campaign.utils.Constants
;
import
com.viettel.campaign.utils.RedisUtil
;
import
com.viettel.campaign.web.dto.*
;
import
com.viettel.campaign.service.CustomerService
;
import
com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO
;
import
com.viettel.econtact.filter.UserSession
;
import
org.apache.log4j.Logger
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.apache.commons.io.FilenameUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.*
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.ResourceUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -21,17 +25,22 @@ import javax.servlet.http.HttpServletRequest;
import
javax.validation.Valid
;
import
java.io.File
;
import
java.nio.file.Files
;
import
java.util.ArrayList
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
@Controller
@RequestMapping
(
"/ipcc/customer"
)
@CrossOrigin
(
origins
=
"*"
)
public
class
CustomerController
{
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
CustomerController
.
class
);
private
static
final
Logger
LOGGER
=
Logger
Factory
.
getLogger
(
CustomerController
.
class
);
@Autowired
(
required
=
true
)
@Autowired
(
required
=
true
)
CustomerService
customerService
;
@GetMapping
(
"/findAll"
)
...
...
@@ -160,17 +169,15 @@ public class CustomerController {
return
new
ResponseEntity
(
result
,
HttpStatus
.
OK
);
}
//<editor-fold desc="Download and import excel" default
S
tate="collapsed">
//<editor-fold desc="Download and import excel" default
s
tate="collapsed">
@GetMapping
(
value
=
"/downloadFileTemplate"
)
public
ResponseEntity
<
byte
[]>
downloadFileTemplate
(
@RequestParam
(
"companySiteId"
)
Long
companySiteId
)
{
LOGGER
.
debug
(
"--------DOWNLOAD FILE TEMPLATE---------"
);
LOGGER
.
info
(
"--------DOWNLOAD FILE TEMPLATE---------"
);
try
{
customerService
.
buildTemplate
(
companySiteId
);
File
file
=
ResourceUtils
.
getFile
(
"classpath:templates/import_customer_template.xlsx"
);
byte
[]
content
=
Files
.
readAllBytes
(
file
.
toPath
());
byte
[]
content
=
customerService
.
buildTemplate
(
companySiteId
);
return
ResponseEntity
.
ok
()
.
header
(
HttpHeaders
.
CONTENT_DISPOSITION
,
"attachment; filename=
"
+
file
.
getName
()
)
.
contentType
(
MediaType
.
APPLICATION_OCTET_STREAM
)
.
header
(
HttpHeaders
.
CONTENT_DISPOSITION
,
"attachment; filename=
template_import_customer.xlsx"
)
.
header
(
"Content-Type"
,
Constants
.
MIME_TYPE
.
EXCEL_XLSX
)
.
body
(
content
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
.
getMessage
());
...
...
@@ -179,39 +186,28 @@ public class CustomerController {
}
@PostMapping
(
value
=
"/importFile"
)
public
ResponseEntity
<
byte
[]>
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
LOGGER
.
debug
(
"--------IMPORT FILE TEMPLATE---------"
);
public
ResponseEntity
<?>
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@RequestParam
(
"companySiteId"
)
Long
companySiteId
,
@RequestHeader
(
"X-Auth-Token"
)
String
authToken
)
{
LOGGER
.
info
(
"------------IMPORT FILE TEMPLATE--------------"
);
try
{
List
<
CustomerDTO
>
listCustomer
=
new
ArrayList
<>();
XSSFWorkbook
workbook
=
new
XSSFWorkbook
(
file
.
getInputStream
());
XSSFSheet
sheet
=
workbook
.
getSheetAt
(
0
);
for
(
int
i
=
0
;
i
<
sheet
.
getPhysicalNumberOfRows
();
i
++)
{
CustomerDTO
customer
=
new
CustomerDTO
();
XSSFRow
row
=
sheet
.
getRow
(
i
);
customer
.
setCustomerId
(
Double
.
valueOf
(
row
.
getCell
(
0
).
getNumericCellValue
()).
longValue
());
customer
.
setCreateDate
(
row
.
getCell
(
1
).
getDateCellValue
());
customer
.
setName
(
row
.
getCell
(
2
).
getStringCellValue
());
listCustomer
.
add
(
customer
);
}
// for (int i = 0; i < listCustomer.size(); i++) {
// validate du lieu
// }
// if (okay) {
// for (int i = 0; i < listCustomer.size(); i++) {
// customerService.createCustomer(listCustomer.get(i));
// }
// return ResponseEntity.ok()
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
// .contentType(MediaType.APPLICATION_OCTET_STREAM)
// .body(file.getBytes());
// } else {
// return ResponseEntity.ok()
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
// .header("Message", "Validate failed!")
// .contentType(MediaType.APPLICATION_OCTET_STREAM)
// .body(file.getBytes());
// }
return
null
;
// UserSession userSession = (UserSession) RedisUtil.getInstance().get(authToken);
if
(
file
.
isEmpty
())
{
return
new
ResponseEntity
<>(
"Please select a file"
,
HttpStatus
.
OK
);
}
if
(!
Objects
.
equals
(
FilenameUtils
.
getExtension
(
file
.
getOriginalFilename
()),
Constants
.
FileType
.
xlsx
))
{
return
new
ResponseEntity
<>(
"File khong dung dinh dang"
,
HttpStatus
.
OK
);
}
String
path
=
saveUploadFile
(
file
);
List
<
CustomizeFields
>
dynamicHeaders
=
customerService
.
getDynamicHeader
(
companySiteId
);
Map
<
String
,
Object
>
map
=
customerService
.
readAndValidateCustomer
(
path
,
dynamicHeaders
,
companySiteId
);
File
fileExport
=
(
File
)
map
.
get
(
"file"
);
String
message
=
(
String
)
map
.
get
(
"message"
);
return
ResponseEntity
.
ok
()
.
header
(
"Content-Type"
,
Constants
.
MIME_TYPE
.
EXCEL_XLSX
)
.
header
(
HttpHeaders
.
CONTENT_DISPOSITION
,
"attachment; filename=template_import_customer.xlsx"
)
.
header
(
"Message"
,
message
)
.
body
(
Files
.
readAllBytes
(
fileExport
.
toPath
()));
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
.
getMessage
());
return
new
ResponseEntity
<>(
HttpStatus
.
BAD_REQUEST
);
...
...
@@ -233,7 +229,25 @@ public class CustomerController {
@PostMapping
(
"/getCustomizeField"
)
public
ResponseEntity
<?>
getCustomizeField
(
@RequestBody
Long
customerId
)
{
List
<
CustomizeField
DTO
>
data
=
customerService
.
getCustomizeField
(
customerId
);
List
<
CustomizeField
Object
>
data
=
customerService
.
getCustomizeField
(
customerId
);
return
new
ResponseEntity
<>(
data
,
HttpStatus
.
OK
);
}
private
String
saveUploadFile
(
MultipartFile
file
)
{
try
{
String
currentTime
=
new
SimpleDateFormat
(
"yyyy_MM_dd_hh_mm_ss"
).
format
(
new
Date
());
String
fileName
=
FilenameUtils
.
getBaseName
(
file
.
getOriginalFilename
())
+
"_"
+
currentTime
+
"."
+
FilenameUtils
.
getExtension
(
file
.
getOriginalFilename
());
byte
[]
content
=
file
.
getBytes
();
File
uploadFolder
=
new
File
(
BundleUtils
.
getGlobalConfig
(
"import.uploadFolder"
));
if
(!
uploadFolder
.
exists
())
{
uploadFolder
.
mkdir
();
}
Path
path
=
Paths
.
get
(
BundleUtils
.
getGlobalConfig
(
"import.uploadFolder"
),
fileName
);
Files
.
write
(
path
,
content
);
return
path
.
toString
();
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
.
getMessage
());
}
return
null
;
}
}
src/main/resources/config/globalConfig.properties
0 → 100644
View file @
b1db5075
#DEV
import.uploadFolder
=
D:/temp/upload
#STAGGING
#import.uploadFolder=/root/temp/
#PROD
#import.uploadFolder=/root/temp/
src/main/resources/sql/campaign-mng/get-customize-field.sql
deleted
100644 → 0
View file @
56ae38e7
select
CUSTOMIZE_FIELD_OBJECT_ID
customizeFieldObjectId
,
OBJECT_ID
objectId
,
CUSTOMIZE_FIELDS_ID
customizeFieldId
,
VALUE_TEXT
valueText
,
VALUE_NUMBER
valueNumber
,
VALUE_DATE
valueDate
,
VALUE_CHECKBOX
valueCheckbox
,
CREATE_BY
createBy
,
CREATE_DATE
createDate
,
UPDATE_BY
updateBy
,
UPDATE_DATE
updateDate
,
STATUS
status
,
FIELD_OPTION_VALUE_ID
fieldOptionValueId
,
TITLE
title
,
FUNCTION_CODE
functionCode
from
customize_field_object
where
function_code
=
'CUSTOMER'
and
object_id
=
:
p_customer_id
\ No newline at end of file
templates/temp/import_customer_template.xlsx
0 → 100644
View file @
b1db5075
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment