Quellcode durchsuchen

update customer

tags/Baseline_30082024_BACKEND_UAT
cyril.tsui vor 1 Jahr
Ursprung
Commit
7d871b4e37
8 geänderte Dateien mit 72 neuen und 31 gelöschten Zeilen
  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 Datei anzeigen

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


public interface CustomerRepository extends AbstractRepository<Customer, Long> { public interface CustomerRepository extends AbstractRepository<Customer, Long> {

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

+ 1
- 0
src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiaryRepository.java Datei anzeigen

@@ -11,4 +11,5 @@ public interface CustomerSubsidiaryRepository extends AbstractRepository<Custome
List<CustomerSubsidiary> findAllByCustomerId(@Param("customerId") Long customerId); 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 Datei anzeigen

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


for (i in 0 until customerContactSize) { for (i in 0 until customerContactSize) {
val customer = customerRepository.findById(saveCustomerId).orElseThrow() 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) customerContactList.add(customerContact)
} }


+ 15
- 9
src/main/java/com/ffii/tsms/modules/data/service/CustomerService.kt Datei anzeigen

@@ -1,5 +1,7 @@
package com.ffii.tsms.modules.data.service 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.Customer
import com.ffii.tsms.modules.data.entity.CustomerContact import com.ffii.tsms.modules.data.entity.CustomerContact
import com.ffii.tsms.modules.data.entity.CustomerType import com.ffii.tsms.modules.data.entity.CustomerType
@@ -12,30 +14,31 @@ import org.springframework.stereotype.Service
import java.util.Optional import java.util.Optional


@Service @Service
class CustomerService(
open class CustomerService(
private val customerRepository: CustomerRepository, private val customerRepository: CustomerRepository,
private val customerTypeRepository: CustomerTypeRepository, private val customerTypeRepository: CustomerTypeRepository,
private val customerSubsidiaryService: CustomerSubsidiaryService, private val customerSubsidiaryService: CustomerSubsidiaryService,
private val customerContactService: CustomerContactService, 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() return customerTypeRepository.findAll()
} }


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


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


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


val duplicateCustomer = findCustomerByCode(saveCustomer.code) val duplicateCustomer = findCustomerByCode(saveCustomer.code)


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


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

instance.apply {
this.customerType = customerType
}


val customer = val customer =
customerRepository.saveAndFlush(instance) customerRepository.saveAndFlush(instance)


+ 18
- 8
src/main/java/com/ffii/tsms/modules/data/service/CustomerSubsidiaryService.kt Datei anzeigen

@@ -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.CustomerSubsidiaryRepository
import com.ffii.tsms.modules.data.entity.SubsidiaryRepository import com.ffii.tsms.modules.data.entity.SubsidiaryRepository
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.util.Optional
import kotlin.jvm.optionals.getOrNull


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


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


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

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


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


for (i in 0 until subsidiaryIdsSize) { 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) customerSubsidiaryRepository.saveAll(customerSubsidiaryList)


+ 17
- 4
src/main/java/com/ffii/tsms/modules/data/web/CustomerController.kt Datei anzeigen

@@ -1,7 +1,8 @@
package com.ffii.tsms.modules.data.web 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.CustomerService
import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService import com.ffii.tsms.modules.data.service.CustomerSubsidiaryService
import com.ffii.tsms.modules.data.web.models.CustomerResponse 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.PostMapping
import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PathVariable
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.ResponseStatus


@RestController @RestController
@RequestMapping("/customer") @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 @GetMapping
fun allCustomers(): List<Customer> { fun allCustomers(): List<Customer> {
return customerService.allCustomers() return customerService.allCustomers()
@@ -28,13 +34,20 @@ class CustomerController(private val customerService: CustomerService, private v
return customerService.allCustomerTypes() return customerService.allCustomerTypes()
} }


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

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


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


@PostMapping("/save") @PostMapping("/save")


+ 2
- 2
src/main/java/com/ffii/tsms/modules/data/web/CustomerSubsidiaryController.kt Datei anzeigen

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


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


+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/web/models/CustomerResponse.kt Datei anzeigen

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


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


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



Laden…
Abbrechen
Speichern