瀏覽代碼

update customer

tags/Baseline_30082024_BACKEND_UAT
cyril.tsui 1 年之前
父節點
當前提交
7d871b4e37
共有 8 個文件被更改,包括 72 次插入31 次删除
  1. +2
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java
  2. +1
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiaryRepository.java
  3. +15
    -7
      src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt
  4. +15
    -9
      src/main/java/com/ffii/tsms/modules/data/service/CustomerService.kt
  5. +18
    -8
      src/main/java/com/ffii/tsms/modules/data/service/CustomerSubsidiaryService.kt
  6. +17
    -4
      src/main/java/com/ffii/tsms/modules/data/web/CustomerController.kt
  7. +2
    -2
      src/main/java/com/ffii/tsms/modules/data/web/CustomerSubsidiaryController.kt
  8. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/web/models/CustomerResponse.kt

+ 2
- 1
src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java 查看文件

@@ -8,6 +8,7 @@ import org.springframework.data.repository.query.Param;
import com.ffii.core.support.AbstractRepository;

public interface CustomerRepository extends AbstractRepository<Customer, Long> {

List<Customer> findAllByDeletedFalse();
Optional<Customer> findByCode(@Param("code") String code);
}

+ 1
- 0
src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiaryRepository.java 查看文件

@@ -11,4 +11,5 @@ public interface CustomerSubsidiaryRepository extends AbstractRepository<Custome
List<CustomerSubsidiary> findAllByCustomerId(@Param("customerId") Long customerId);

Optional<CustomerSubsidiary> findByCustomerIdAndSubsidiaryId(@Param("customerId") Long customerId, @Param("subsidiaryId") Long subsidiaryId);
}

+ 15
- 7
src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt 查看文件

@@ -23,13 +23,21 @@ class CustomerContactService(

for (i in 0 until customerContactSize) {
val customer = customerRepository.findById(saveCustomerId).orElseThrow()
val customerContact = CustomerContact().apply {
id = if(saveCustomerContact[i].id!! > 0) saveCustomerContact[i].id else null
this.customer = customer
name = saveCustomerContact[i].name
phone = saveCustomerContact[i].phone
email = saveCustomerContact[i].email
}
val customerContactId = saveCustomerContact[i].id
val customerContact =
if (customerContactId != null && customerContactId > 0) customerContactRepository.findById(
customerContactId
).orElseThrow().apply {
this.customer = customer
name = saveCustomerContact[i].name
phone = saveCustomerContact[i].phone
email = saveCustomerContact[i].email
} else CustomerContact().apply {
this.customer = customer
name = saveCustomerContact[i].name
phone = saveCustomerContact[i].phone
email = saveCustomerContact[i].email
}

customerContactList.add(customerContact)
}


+ 15
- 9
src/main/java/com/ffii/tsms/modules/data/service/CustomerService.kt 查看文件

@@ -1,5 +1,7 @@
package com.ffii.tsms.modules.data.service

import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.Customer
import com.ffii.tsms.modules.data.entity.CustomerContact
import com.ffii.tsms.modules.data.entity.CustomerType
@@ -12,30 +14,31 @@ import org.springframework.stereotype.Service
import java.util.Optional

@Service
class CustomerService(
open class CustomerService(
private val customerRepository: CustomerRepository,
private val customerTypeRepository: CustomerTypeRepository,
private val customerSubsidiaryService: CustomerSubsidiaryService,
private val customerContactService: CustomerContactService,
) {
private val jdbcDao: JdbcDao
) : AbstractBaseEntityService<Customer, Long, CustomerRepository>(jdbcDao, customerRepository){

fun allCustomers(): List<Customer> {
return customerRepository.findAll()
open fun allCustomers(): List<Customer> {
return customerRepository.findAllByDeletedFalse()
}

fun allCustomerTypes(): List<CustomerType> {
open fun allCustomerTypes(): List<CustomerType> {
return customerTypeRepository.findAll()
}

fun findCustomer(id: Long): Customer {
open fun findCustomer(id: Long): Customer {
return customerRepository.findById(id).orElseThrow()
}

fun findCustomerByCode(code: String): Optional<Customer> {
open fun findCustomerByCode(code: String): Optional<Customer> {
return customerRepository.findByCode(code);
}

fun saveCustomer(saveCustomer: SaveCustomerRequest): NewCustomerResponse {
open fun saveCustomer(saveCustomer: SaveCustomerRequest): NewCustomerResponse {

val duplicateCustomer = findCustomerByCode(saveCustomer.code)

@@ -53,7 +56,10 @@ class CustomerService(
.orElseThrow() else Customer();

BeanUtils.copyProperties(saveCustomer, instance)
instance.customerType = customerType

instance.apply {
this.customerType = customerType
}

val customer =
customerRepository.saveAndFlush(instance)


+ 18
- 8
src/main/java/com/ffii/tsms/modules/data/service/CustomerSubsidiaryService.kt 查看文件

@@ -5,6 +5,8 @@ import com.ffii.tsms.modules.data.entity.CustomerSubsidiary
import com.ffii.tsms.modules.data.entity.CustomerSubsidiaryRepository
import com.ffii.tsms.modules.data.entity.SubsidiaryRepository
import org.springframework.stereotype.Service
import java.util.Optional
import kotlin.jvm.optionals.getOrNull

@Service
class CustomerSubsidiaryService(
@@ -14,13 +16,17 @@ class CustomerSubsidiaryService(
) {

fun allCustomeriesSubsidiaries(): List<CustomerSubsidiary> {
fun allCustomersSubsidiaries(): List<CustomerSubsidiary> {
return customerSubsidiaryRepository.findAll()
}

fun findAllByCustomerId(customerId : Long) : List<CustomerSubsidiary> {
return customerSubsidiaryRepository.findAllByCustomerId(customerId)
}

fun findByCustomerIdAndSubsidiaryId(customerId : Long, subsidiaryId: Long) : CustomerSubsidiary? {
return customerSubsidiaryRepository.findByCustomerIdAndSubsidiaryId(customerId, subsidiaryId).getOrNull()
}
fun findAllSubsidiaryIdsByCustomerId(customerId : Long) : List<Long> {

val customerSubsidiaryList: List<CustomerSubsidiary> = customerSubsidiaryRepository.findAllByCustomerId(customerId)
@@ -37,14 +43,18 @@ class CustomerSubsidiaryService(
val subsidiaryIdsSize = saveSubsidiaryIds.size

for (i in 0 until subsidiaryIdsSize) {
val customer = customerRepository.findById(saveCustomerId).orElseThrow()
val subsidiary = subsidiaryRepository.findById(saveSubsidiaryIds[i]).orElseThrow()
val customerSubsidiary = CustomerSubsidiary().apply {
this.customer = customer
this.subsidiary = subsidiary
}
val checkExist = findByCustomerIdAndSubsidiaryId(saveCustomerId, saveSubsidiaryIds[i])

customerSubsidiaryList.add(customerSubsidiary)
if (checkExist == null) {
val customer = customerRepository.findById(saveCustomerId).orElseThrow()
val subsidiary = subsidiaryRepository.findById(saveSubsidiaryIds[i]).orElseThrow()
val customerSubsidiary = CustomerSubsidiary().apply {
this.customer = customer
this.subsidiary = subsidiary
}

customerSubsidiaryList.add(customerSubsidiary)
}
}

customerSubsidiaryRepository.saveAll(customerSubsidiaryList)


+ 17
- 4
src/main/java/com/ffii/tsms/modules/data/web/CustomerController.kt 查看文件

@@ -1,7 +1,8 @@
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.Customer
import com.ffii.tsms.modules.data.entity.CustomerType
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.*
import com.ffii.tsms.modules.data.service.CustomerService
import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService
import com.ffii.tsms.modules.data.web.models.CustomerResponse
@@ -14,10 +15,15 @@ import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PathVariable
import jakarta.validation.Valid
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.ResponseStatus

@RestController
@RequestMapping("/customer")
class CustomerController(private val customerService: CustomerService, private val customerSubsidiaryService: CustomerSubsidiaryService) {
class CustomerController(private val customerService: CustomerService, private val customerSubsidiaryService: CustomerSubsidiaryService,
private val customerContactRepository: CustomerContactRepository
) {
@GetMapping
fun allCustomers(): List<Customer> {
return customerService.allCustomers()
@@ -28,13 +34,20 @@ class CustomerController(private val customerService: CustomerService, private v
return customerService.allCustomerTypes()
}

@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
fun deleteCustomer(@PathVariable id: Long) {
customerService.markDelete(id)
}

@GetMapping("/{id}")
fun findCustomer(@PathVariable id: Long): CustomerResponse {
val customer = customerService.findCustomer(id)
val subsidiaryIds = customerSubsidiaryService.findAllSubsidiaryIdsByCustomerId(id)
val contacts = customerContactRepository.findAllByCustomerId(id)

return CustomerResponse(customer, subsidiaryIds)
return CustomerResponse(customer, subsidiaryIds, contacts)
}

@PostMapping("/save")


+ 2
- 2
src/main/java/com/ffii/tsms/modules/data/web/CustomerSubsidiaryController.kt 查看文件

@@ -19,9 +19,9 @@ import com.ffii.core.support.JdbcDao
@RequestMapping("/customer-subsidiary")
class CustomerSubsidiaryController(private val customerSubsidiaryService: CustomerSubsidiaryService) {
@GetMapping
fun allCustomeriesSubsidiaries(): List<CustomerSubsidiary> {
fun allCustomerSubsidiaries(): List<CustomerSubsidiary> {
// JdbcDao.queryForString(sql)
return customerSubsidiaryService.allCustomeriesSubsidiaries()
return customerSubsidiaryService.allCustomersSubsidiaries()
}

@GetMapping("/subsidiaries/{customerId}")


+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/web/models/CustomerResponse.kt 查看文件

@@ -1,9 +1,11 @@
package com.ffii.tsms.modules.data.web.models

import com.ffii.tsms.modules.data.entity.Customer
import com.ffii.tsms.modules.data.entity.CustomerContact

data class CustomerResponse(
val customer: Customer,
val subsidiaryIds: List<Long>,
val contacts: List<CustomerContact>,
)


Loading…
取消
儲存