@@ -1,28 +1,41 @@ | |||||
package com.ffii.tsms.modules.claim.service | package com.ffii.tsms.modules.claim.service | ||||
import com.ffii.core.support.AbstractBaseEntityService | |||||
import com.ffii.core.support.JdbcDao | |||||
import com.ffii.tsms.modules.claim.entity.Claim | import com.ffii.tsms.modules.claim.entity.Claim | ||||
import com.ffii.tsms.modules.claim.entity.ClaimDetail | import com.ffii.tsms.modules.claim.entity.ClaimDetail | ||||
import com.ffii.tsms.modules.claim.entity.ClaimDetailRepository | import com.ffii.tsms.modules.claim.entity.ClaimDetailRepository | ||||
import com.ffii.tsms.modules.claim.entity.ClaimRepository | import com.ffii.tsms.modules.claim.entity.ClaimRepository | ||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimDetailRequest | |||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimRequest | |||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimResponse | import com.ffii.tsms.modules.claim.web.models.SaveClaimResponse | ||||
import com.ffii.tsms.modules.file.entity.FileBlob | |||||
import com.ffii.tsms.modules.data.entity.StaffRepository | |||||
import com.ffii.tsms.modules.data.service.StaffsService | |||||
import com.ffii.tsms.modules.file.entity.FileRepository | |||||
import com.ffii.tsms.modules.file.service.FileService | import com.ffii.tsms.modules.file.service.FileService | ||||
import com.ffii.tsms.modules.project.entity.ProjectRepository | import com.ffii.tsms.modules.project.entity.ProjectRepository | ||||
import org.springframework.beans.BeanUtils | |||||
import com.ffii.tsms.modules.user.entity.User | |||||
import com.ffii.tsms.modules.user.entity.UserRepository | |||||
import com.ffii.tsms.modules.user.service.UserService | |||||
import org.springframework.security.core.Authentication | |||||
import org.springframework.security.core.context.SecurityContextHolder | |||||
import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
import org.springframework.transaction.annotation.Transactional | import org.springframework.transaction.annotation.Transactional | ||||
import java.text.NumberFormat | |||||
import org.springframework.web.multipart.MultipartFile | |||||
import java.math.BigDecimal | |||||
import java.time.LocalDate | import java.time.LocalDate | ||||
import java.time.format.DateTimeFormatter | import java.time.format.DateTimeFormatter | ||||
import java.util.HashMap | |||||
import java.util.* | |||||
@Service | @Service | ||||
open class ClaimService( | open class ClaimService( | ||||
private val claimRepository: ClaimRepository, | private val claimRepository: ClaimRepository, | ||||
private val fileService: FileService, private val claimDetailRepository: ClaimDetailRepository, private val projectRepository: ProjectRepository | |||||
) { | |||||
private val fileService: FileService, | |||||
private val claimDetailRepository: ClaimDetailRepository, | |||||
private val projectRepository: ProjectRepository, | |||||
private val jdbcDao: JdbcDao, | |||||
private val fileRepository: FileRepository, | |||||
private val userRepository: UserRepository, | |||||
private val staffsService: StaffsService, | |||||
) : AbstractBaseEntityService<Claim, Long, ClaimRepository>(jdbcDao, claimRepository) { | |||||
open fun allClaims(): List<Claim> { | open fun allClaims(): List<Claim> { | ||||
return claimRepository.findAllByDeletedFalse() | return claimRepository.findAllByDeletedFalse() | ||||
} | } | ||||
@@ -41,52 +54,99 @@ open class ClaimService( | |||||
} | } | ||||
@Transactional(rollbackFor = [Exception::class]) | @Transactional(rollbackFor = [Exception::class]) | ||||
open fun saveClaimDetail(claimDetail: SaveClaimDetailRequest, claim: Claim) { | |||||
val oldSupportingDocumentId = claimDetail.oldSupportingDocument?.id // fileId | |||||
val newSupportingDocument = claimDetail.newSupportingDocument | |||||
val claimDetailId = claimDetail.id | |||||
val projectId = claimDetail.project.id | |||||
open fun saveClaimDetail( | |||||
claimDetailId: Long, | |||||
claimDetailInvoiceDate: LocalDate, | |||||
claimDetailProjectId: Long, | |||||
claimDetailDescription: String, | |||||
claimDetailAmount: BigDecimal, | |||||
claimDetailNewSupportingDocument: MultipartFile?, | |||||
claimDetailOldSupportingDocumentId: Long?, | |||||
claim: Claim, | |||||
) { | |||||
var result: MutableMap<String, Any> = HashMap<String, Any>() | var result: MutableMap<String, Any> = HashMap<String, Any>() | ||||
if (oldSupportingDocumentId != null && oldSupportingDocumentId > 0 && newSupportingDocument != null) { | |||||
result = fileService.updateFile(multipartFile = newSupportingDocument, refId = claim.id, refType = "claimDetail", refCode = claim.code, maxSize = 50, fileId = oldSupportingDocumentId) | |||||
} else if ((oldSupportingDocumentId == null || oldSupportingDocumentId <= 0) && newSupportingDocument != null) { | |||||
result = fileService.uploadFile(multipartFile = newSupportingDocument, refId = claim.id, refType = "claimDetail", refCode = claim.code, maxSize = 50) | |||||
if (claimDetailOldSupportingDocumentId != null && claimDetailOldSupportingDocumentId > 0 && claimDetailNewSupportingDocument != null) { | |||||
result = fileService.updateFile( | |||||
multipartFile = claimDetailNewSupportingDocument, | |||||
refId = claim.id, | |||||
refType = "claimDetail", | |||||
refCode = claim.code, | |||||
maxSize = 50, | |||||
fileId = claimDetailOldSupportingDocumentId | |||||
) | |||||
} else if ((claimDetailOldSupportingDocumentId == null || claimDetailOldSupportingDocumentId <= 0) && claimDetailNewSupportingDocument != null) { | |||||
result = fileService.uploadFile( | |||||
multipartFile = claimDetailNewSupportingDocument, | |||||
refId = claim.id, | |||||
refType = "claimDetail", | |||||
refCode = claim.code, | |||||
maxSize = 50 | |||||
) | |||||
} | } | ||||
val instance = claimDetailRepository.findById(claimDetailId).orElse(ClaimDetail()) | |||||
BeanUtils.copyProperties(claimDetail, instance) | |||||
if (result["fileId"] != null && result["fileId"] as Long > 0) { | |||||
val instance = claimDetailRepository.findById(claimDetailId).orElse(ClaimDetail()) | |||||
val project = projectRepository.findById(claimDetailProjectId).orElseThrow() | |||||
val file = fileRepository.findById(result["fileId"] as Long).orElseThrow() | |||||
instance.apply { | |||||
this.claim = claim | |||||
invoiceDate = claimDetailInvoiceDate | |||||
this.project = project | |||||
description = claimDetailDescription | |||||
amount = claimDetailAmount | |||||
this.file = file | |||||
} | |||||
val project = projectRepository.findById(projectId!!).orElseThrow() | |||||
instance.apply { | |||||
this.project = project | |||||
claimDetailRepository.save(instance) | |||||
} else { | |||||
logger.info("error") | |||||
} | } | ||||
claimDetailRepository.save(instance) | |||||
} | } | ||||
@Transactional(rollbackFor = [Exception::class]) | @Transactional(rollbackFor = [Exception::class]) | ||||
open fun saveClaim(saveClaimRequest: SaveClaimRequest): SaveClaimResponse { | |||||
val claimId = saveClaimRequest.id | |||||
val addClaimDetails = saveClaimRequest.addClaimDetails | |||||
open fun saveClaim( | |||||
id: Long?, | |||||
expenseType: String, | |||||
status: String, | |||||
addClaimDetailIds: List<Long>, | |||||
addClaimDetailInvoiceDates: List<LocalDate>, | |||||
addClaimDetailProjectIds: List<Long>, | |||||
addClaimDetailDescriptions: List<String>, | |||||
addClaimDetailAmounts: List<BigDecimal>, | |||||
addClaimDetailNewSupportingDocuments: List<MultipartFile>, | |||||
addClaimDetailOldSupportingDocumentIds: List<Long> | |||||
): SaveClaimResponse { | |||||
// Save to claim | // Save to claim | ||||
val instance = if (claimId != null && claimId > 0) claimRepository.findById(claimId).orElseThrow() else Claim(); | |||||
val instance = if (id != null && id > 0) claimRepository.findById(id).orElseThrow() else Claim(); | |||||
val user = SecurityContextHolder.getContext().authentication.principal as User | |||||
logger.info(user.id) | |||||
val staff = staffsService.findByUserId(user.id!!).orElseThrow() | |||||
instance.apply { | instance.apply { | ||||
type = saveClaimRequest.expenseType | |||||
code = if(instance.code.isNullOrEmpty()) generateCode() else instance.code | |||||
type = expenseType | |||||
code = if (instance.code.isNullOrEmpty()) generateCode() else instance.code | |||||
this.staff = staff | |||||
this.status = status | |||||
} | } | ||||
claimRepository.save(instance) | claimRepository.save(instance) | ||||
// Save to claim detail | // Save to claim detail | ||||
if (addClaimDetails.isNotEmpty()) { | |||||
for(addClaimDetail in addClaimDetails) { | |||||
saveClaimDetail(addClaimDetail, instance) | |||||
if (addClaimDetailIds.isNotEmpty()) { | |||||
for (i in addClaimDetailIds.indices) { | |||||
saveClaimDetail( | |||||
addClaimDetailIds[i], | |||||
addClaimDetailInvoiceDates[i], | |||||
addClaimDetailProjectIds[i], | |||||
addClaimDetailDescriptions[i], | |||||
addClaimDetailAmounts[i], | |||||
addClaimDetailNewSupportingDocuments[i], | |||||
addClaimDetailOldSupportingDocumentIds[i], | |||||
instance | |||||
) | |||||
} | } | ||||
} | } | ||||
return SaveClaimResponse(claim = instance, message = "Success"); | |||||
return SaveClaimResponse(claim = Claim(), message = "Success"); | |||||
} | } | ||||
} | } |
@@ -1,17 +1,28 @@ | |||||
package com.ffii.tsms.modules.claim.web | package com.ffii.tsms.modules.claim.web | ||||
import com.ffii.tsms.modules.claim.entity.Claim | import com.ffii.tsms.modules.claim.entity.Claim | ||||
import com.ffii.tsms.modules.claim.entity.ClaimDetail | |||||
import com.ffii.tsms.modules.claim.service.ClaimService | import com.ffii.tsms.modules.claim.service.ClaimService | ||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimDetailRequest | |||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimRequest | import com.ffii.tsms.modules.claim.web.models.SaveClaimRequest | ||||
import com.ffii.tsms.modules.claim.web.models.SaveClaimResponse | import com.ffii.tsms.modules.claim.web.models.SaveClaimResponse | ||||
import com.ffii.tsms.modules.data.web.models.SaveCustomerResponse | import com.ffii.tsms.modules.data.web.models.SaveCustomerResponse | ||||
import com.ffii.tsms.modules.project.web.models.SaveCustomerRequest | import com.ffii.tsms.modules.project.web.models.SaveCustomerRequest | ||||
import jakarta.validation.Valid | import jakarta.validation.Valid | ||||
import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required | |||||
import org.springframework.web.bind.ServletRequestBindingException | |||||
import org.springframework.web.bind.annotation.GetMapping | import org.springframework.web.bind.annotation.GetMapping | ||||
import org.springframework.web.bind.annotation.ModelAttribute | |||||
import org.springframework.web.bind.annotation.PostMapping | import org.springframework.web.bind.annotation.PostMapping | ||||
import org.springframework.web.bind.annotation.RequestBody | import org.springframework.web.bind.annotation.RequestBody | ||||
import org.springframework.web.bind.annotation.RequestMapping | import org.springframework.web.bind.annotation.RequestMapping | ||||
import org.springframework.web.bind.annotation.RequestParam | |||||
import org.springframework.web.bind.annotation.RequestPart | |||||
import org.springframework.web.bind.annotation.RestController | import org.springframework.web.bind.annotation.RestController | ||||
import org.springframework.web.multipart.MultipartFile | |||||
import java.io.IOException | |||||
import java.math.BigDecimal | |||||
import java.time.LocalDate | |||||
@RestController | @RestController | ||||
@RequestMapping("/claim") | @RequestMapping("/claim") | ||||
@@ -22,8 +33,40 @@ class ClaimController(private val claimService: ClaimService) { | |||||
return claimService.allClaims() | return claimService.allClaims() | ||||
} | } | ||||
@PostMapping("/test") | |||||
fun forTest(@RequestBody testFiles: List<MultipartFile>) { | |||||
System.out.println(testFiles.size) | |||||
} | |||||
@PostMapping("/save") | @PostMapping("/save") | ||||
fun saveClaim(@Valid @RequestBody saveClaimRequest: SaveClaimRequest): SaveClaimResponse { | |||||
return claimService.saveClaim(saveClaimRequest) | |||||
fun saveClaim( | |||||
@RequestParam(required = false) id: Long?, | |||||
@RequestParam expenseType: String, | |||||
@RequestParam status: String, | |||||
@RequestParam addClaimDetailIds: List<Long>, | |||||
@RequestParam addClaimDetailInvoiceDates: List<LocalDate>, | |||||
@RequestParam addClaimDetailProjectIds: List<Long>, | |||||
@RequestParam addClaimDetailDescriptions: List<String>, | |||||
@RequestParam addClaimDetailAmounts: List<BigDecimal>, | |||||
@RequestParam addClaimDetailNewSupportingDocuments: List<MultipartFile>, | |||||
@RequestParam addClaimDetailOldSupportingDocumentIds: List<Long>, | |||||
): SaveClaimResponse { | |||||
System.out.println("yo") | |||||
return claimService.saveClaim(id, expenseType, status, addClaimDetailIds, addClaimDetailInvoiceDates, addClaimDetailProjectIds, addClaimDetailDescriptions, addClaimDetailAmounts, addClaimDetailNewSupportingDocuments, addClaimDetailOldSupportingDocumentIds) | |||||
} | |||||
@PostMapping("/save2") | |||||
fun saveClaim2( | |||||
@RequestParam id: Long, | |||||
@RequestParam expenseType: String, | |||||
@RequestParam status: String, | |||||
@RequestParam addClaimDetailIds: List<Long>, | |||||
@RequestParam addClaimDetailInvoiceDates: List<LocalDate>, | |||||
@RequestParam addClaimDetailDescriptions: List<String>, | |||||
@RequestParam addClaimDetailProjectIds: List<Long>, | |||||
@RequestParam addClaimDetailNewSupportingDocuments: List<MultipartFile>, | |||||
@RequestParam addClaimDetailOldSupportingDocumentIds: List<Long>, | |||||
) { | |||||
System.out.println("yo") | |||||
} | } | ||||
} | } |
@@ -16,9 +16,9 @@ data class Project ( | |||||
val id: Long, | val id: Long, | ||||
) | ) | ||||
data class SaveClaimDetailRequest ( | data class SaveClaimDetailRequest ( | ||||
val id: Long, | |||||
val id: String?, | |||||
val invoiceDate: LocalDate, | val invoiceDate: LocalDate, | ||||
val description: String, | |||||
val description: String?, | |||||
val project: Project, | val project: Project, | ||||
val amount: BigDecimal, | val amount: BigDecimal, | ||||
val newSupportingDocument: MultipartFile?, | val newSupportingDocument: MultipartFile?, | ||||
@@ -30,6 +30,7 @@ data class SaveClaimRequest ( | |||||
val expenseType: String, | val expenseType: String, | ||||
val addClaimDetails: List<SaveClaimDetailRequest>, | val addClaimDetails: List<SaveClaimDetailRequest>, | ||||
val addClaimDetailsFiles: List<MultipartFile>, | |||||
val status: String, | val status: String, | ||||
val id: Long?, | val id: Long?, |
@@ -15,4 +15,6 @@ public interface StaffRepository extends AbstractRepository<Staff, Long> { | |||||
List<StaffSearchInfo> findAllStaffSearchInfoByIdIn(List<Long> ids); | List<StaffSearchInfo> findAllStaffSearchInfoByIdIn(List<Long> ids); | ||||
Optional<Staff> findByStaffId(@Param("staffId") String staffId); | Optional<Staff> findByStaffId(@Param("staffId") String staffId); | ||||
Optional<Staff> findByUserId(@Param("userId") Long userId); | |||||
} | } |
@@ -70,6 +70,10 @@ open class StaffsService( | |||||
return staffRepository.findByStaffId(id); | return staffRepository.findByStaffId(id); | ||||
} | } | ||||
open fun findByUserId(userId: Long): Optional<Staff> { | |||||
return staffRepository.findByUserId(userId); | |||||
} | |||||
@Transactional(rollbackFor = [Exception::class]) | @Transactional(rollbackFor = [Exception::class]) | ||||
open fun saveStaff(req: NewStaffRequest): Staff { | open fun saveStaff(req: NewStaffRequest): Staff { | ||||
val user = userRepository.saveAndFlush( | val user = userRepository.saveAndFlush( | ||||
@@ -1,19 +1,15 @@ | |||||
package com.ffii.tsms.modules.file.entity | package com.ffii.tsms.modules.file.entity | ||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.core.entity.IdEntity | |||||
import jakarta.persistence.Column | import jakarta.persistence.Column | ||||
import jakarta.persistence.Entity | import jakarta.persistence.Entity | ||||
import jakarta.persistence.Table | import jakarta.persistence.Table | ||||
import jakarta.validation.constraints.NotNull | import jakarta.validation.constraints.NotNull | ||||
import java.math.BigInteger | |||||
@Entity | @Entity | ||||
@Table(name = "file") | @Table(name = "file") | ||||
open class File : BaseEntity<Long>() { | open class File : BaseEntity<Long>() { | ||||
open val DEFAULT_UPLOAD_MAX_FILE_SIZE_MB: Int = 50 | |||||
@NotNull | @NotNull | ||||
@Column(name = "skey", length = 32) | @Column(name = "skey", length = 32) | ||||
open var skey: String? = null | open var skey: String? = null | ||||
@@ -24,7 +20,7 @@ open class File : BaseEntity<Long>() { | |||||
@NotNull | @NotNull | ||||
@Column(name = "extension", length = 10) | @Column(name = "extension", length = 10) | ||||
open var description: String? = null | |||||
open var extension: String? = null | |||||
@NotNull | @NotNull | ||||
@Column(name = "mimetype", length = 255) | @Column(name = "mimetype", length = 255) | ||||
@@ -1,6 +1,5 @@ | |||||
package com.ffii.tsms.modules.file.entity | package com.ffii.tsms.modules.file.entity | ||||
import com.ffii.core.entity.BaseEntity | |||||
import com.ffii.core.entity.IdEntity | import com.ffii.core.entity.IdEntity | ||||
import jakarta.persistence.Column | import jakarta.persistence.Column | ||||
import jakarta.persistence.Entity | import jakarta.persistence.Entity | ||||
@@ -11,7 +10,7 @@ import jakarta.validation.constraints.NotNull | |||||
@Entity | @Entity | ||||
@Table(name = "file_blob") | @Table(name = "file_blob") | ||||
open class FileBlob : BaseEntity<Long>() { | |||||
open class FileBlob : IdEntity<Long>() { | |||||
@NotNull | @NotNull | ||||
@OneToOne | @OneToOne | ||||
@@ -1,6 +1,5 @@ | |||||
package com.ffii.tsms.modules.file.entity | package com.ffii.tsms.modules.file.entity | ||||
import com.ffii.core.entity.BaseEntity | |||||
import com.ffii.core.entity.IdEntity | import com.ffii.core.entity.IdEntity | ||||
import jakarta.persistence.Column | import jakarta.persistence.Column | ||||
import jakarta.persistence.Entity | import jakarta.persistence.Entity | ||||
@@ -11,7 +10,7 @@ import jakarta.validation.constraints.NotNull | |||||
@Entity | @Entity | ||||
@Table(name = "file_ref") | @Table(name = "file_ref") | ||||
open class FileRef : BaseEntity<Long>() { | |||||
open class FileRef : IdEntity<Long>() { | |||||
@NotNull | @NotNull | ||||
@Column(name = "refType", length = 20) | @Column(name = "refType", length = 20) | ||||
@@ -5,6 +5,7 @@ import com.ffii.core.support.JdbcDao | |||||
import com.ffii.core.utils.FileUtils | import com.ffii.core.utils.FileUtils | ||||
import com.ffii.core.utils.NumberUtils | import com.ffii.core.utils.NumberUtils | ||||
import com.ffii.core.utils.Params | import com.ffii.core.utils.Params | ||||
import com.ffii.core.utils.StringUtils | |||||
import com.ffii.tsms.modules.file.entity.* | import com.ffii.tsms.modules.file.entity.* | ||||
import org.apache.commons.lang3.RandomStringUtils | import org.apache.commons.lang3.RandomStringUtils | ||||
import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
@@ -13,8 +14,8 @@ import org.springframework.transaction.annotation.Transactional | |||||
import org.springframework.web.multipart.MultipartFile | import org.springframework.web.multipart.MultipartFile | ||||
import java.io.ByteArrayInputStream | import java.io.ByteArrayInputStream | ||||
import java.io.IOException | import java.io.IOException | ||||
import java.util.* | |||||
import java.util.Map | import java.util.Map | ||||
import java.util.Optional | |||||
import javax.imageio.ImageIO | import javax.imageio.ImageIO | ||||
@@ -99,7 +100,7 @@ open class FileService( | |||||
+ " fr.refType," | + " fr.refType," | ||||
+ " f.created," | + " f.created," | ||||
+ " u.name AS createdByName," | + " u.name AS createdByName," | ||||
+ " f.description" | |||||
+ " f.extension" | |||||
+ " FROM file f" | + " FROM file f" | ||||
+ " LEFT JOIN file_ref fr ON f.id = fr.fileId" | + " LEFT JOIN file_ref fr ON f.id = fr.fileId" | ||||
+ " LEFT JOIN user u ON f.createdBy = u.id" | + " LEFT JOIN user u ON f.createdBy = u.id" | ||||
@@ -155,7 +156,7 @@ open class FileService( | |||||
@Transactional(isolation = Isolation.SERIALIZABLE, rollbackFor = [Exception::class], readOnly = false) | @Transactional(isolation = Isolation.SERIALIZABLE, rollbackFor = [Exception::class], readOnly = false) | ||||
open fun saveFile( | open fun saveFile( | ||||
filename: String, | filename: String, | ||||
description: String, | |||||
// extension: String, | |||||
refType: String, | refType: String, | ||||
refId: Long, | refId: Long, | ||||
refCode: String, | refCode: String, | ||||
@@ -165,7 +166,7 @@ open class FileService( | |||||
file.apply { | file.apply { | ||||
this.filename = filename | this.filename = filename | ||||
this.description = description | |||||
this.extension = StringUtils.substringAfterLast(filename, "."); | |||||
mimetype = FileUtils.guessMimetype(filename) | mimetype = FileUtils.guessMimetype(filename) | ||||
filesize = NumberUtils.toLong(bytes.size, 0L) | filesize = NumberUtils.toLong(bytes.size, 0L) | ||||
skey = RandomStringUtils.randomAlphanumeric(32) | skey = RandomStringUtils.randomAlphanumeric(32) | ||||
@@ -207,7 +208,7 @@ open class FileService( | |||||
@Throws(IOException::class) | @Throws(IOException::class) | ||||
open fun uploadFile( | open fun uploadFile( | ||||
multipartFile: MultipartFile, refId: Long?, refType: String?, refCode: String?, | multipartFile: MultipartFile, refId: Long?, refType: String?, refCode: String?, | ||||
maxSize: Int | |||||
maxSize: Int = 50 | |||||
): MutableMap<String, Any> { | ): MutableMap<String, Any> { | ||||
val result: MutableMap<String, Any> = HashMap<String, Any>() | val result: MutableMap<String, Any> = HashMap<String, Any>() | ||||
@@ -221,6 +222,7 @@ open class FileService( | |||||
file.apply { | file.apply { | ||||
filename = multipartFile.originalFilename | filename = multipartFile.originalFilename | ||||
extension = StringUtils.substringAfterLast(multipartFile.originalFilename, "."); | |||||
mimetype = FileUtils.guessMimetype(multipartFile.originalFilename) | mimetype = FileUtils.guessMimetype(multipartFile.originalFilename) | ||||
filesize = multipartFile.size | filesize = multipartFile.size | ||||
skey = RandomStringUtils.randomAlphanumeric(32) | skey = RandomStringUtils.randomAlphanumeric(32) | ||||
@@ -287,6 +289,7 @@ open class FileService( | |||||
file.apply { | file.apply { | ||||
filename = multipartFile.originalFilename | filename = multipartFile.originalFilename | ||||
extension = StringUtils.substringAfterLast(multipartFile.originalFilename, "."); | |||||
mimetype = FileUtils.guessMimetype(multipartFile.originalFilename) | mimetype = FileUtils.guessMimetype(multipartFile.originalFilename) | ||||
filesize = multipartFile.size | filesize = multipartFile.size | ||||
skey = RandomStringUtils.randomAlphanumeric(32) | skey = RandomStringUtils.randomAlphanumeric(32) | ||||
@@ -49,7 +49,7 @@ open class FileController (private val fileService: FileService) { | |||||
if (file != null) { | if (file != null) { | ||||
file.apply { | file.apply { | ||||
filename = req.filename | filename = req.filename | ||||
description = req.description | |||||
extension = req.extension | |||||
} | } | ||||
fileService.saveFile(file) | fileService.saveFile(file) | ||||
@@ -35,7 +35,7 @@ class UploadFileController(private val settingsService: SettingsService, private | |||||
if (multipartFileList != null) { | if (multipartFileList != null) { | ||||
for (multipartFile in multipartFileList) { | for (multipartFile in multipartFileList) { | ||||
result = fileService.uploadFile(multipartFile, refId, refType, refCode, File().DEFAULT_UPLOAD_MAX_FILE_SIZE_MB) | |||||
result = fileService.uploadFile(multipartFile, refId, refType, refCode, 50) | |||||
} | } | ||||
} | } | ||||
@@ -4,5 +4,5 @@ data class UpdateFileReq ( | |||||
val fileId: Long, | val fileId: Long, | ||||
val filename: String, | val filename: String, | ||||
val skey: String, | val skey: String, | ||||
val description: String, | |||||
val extension: String, | |||||
) | ) |