From 027bf7da7a012fa36f8835b2419c74da8b2f1c28 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 15 十一月 2022 11:00:21 +0800
Subject: [PATCH] 2022.11.15
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 107 insertions(+), 3 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
index 85e8d33..693e017 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
@@ -1,17 +1,27 @@
package cn.flightfeather.supervision.lightshare.service.Impl
+import cn.flightfeather.supervision.common.pdf.DynamicParam
+import cn.flightfeather.supervision.common.pdf.GeneratePdfUtil
import cn.flightfeather.supervision.domain.entity.Commitment
+import cn.flightfeather.supervision.domain.enumeration.SceneType
import cn.flightfeather.supervision.domain.mapper.CommitmentMapper
+import cn.flightfeather.supervision.domain.mapper.UserinfoMapper
import cn.flightfeather.supervision.infrastructure.utils.DateUtil
import cn.flightfeather.supervision.infrastructure.utils.FileUtil
import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
import cn.flightfeather.supervision.lightshare.service.CommitmentService
+import cn.flightfeather.supervision.lightshare.vo.BaseResponse
+import cn.flightfeather.supervision.lightshare.vo.CommitmentVo
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import com.github.pagehelper.PageHelper
+import com.google.gson.Gson
+import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import org.springframework.web.multipart.MultipartFile
import tk.mybatis.mapper.entity.Example
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
import java.util.*
import javax.servlet.http.HttpServletResponse
@@ -21,8 +31,11 @@
*/
@Service
class CommitmentServiceImpl(
- val commitmentMapper: CommitmentMapper
+ val commitmentMapper: CommitmentMapper,val userinfoMapper: UserinfoMapper
) : CommitmentService {
+
+ @Value("\${imgPath}")
+ lateinit var imgPath: String
override fun getLetterOfCommitment(userId: String, page: Int, perPage: Int, response: HttpServletResponse): List<Commitment> {
val p = PageHelper.startPage<Commitment>(page, perPage)
@@ -43,7 +56,7 @@
var success = 0
commitmentVos.forEach {
var picPath = ""
- val time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
+ val time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
files.forEach { file ->
val fileName = file.originalFilename
//TODO 姝ゅ鐨勬枃浠惰矾寰勯渶瑕佷慨鏀逛负鍔ㄦ�侀厤缃�
@@ -56,7 +69,7 @@
}
try {
//璋冪敤鏂囦欢淇濆瓨鏂规硶
- FileUtil().uploadFile(file.bytes, basePath + path, fileName!!)
+ FileUtil.uploadFile(file.bytes, basePath + path, fileName!!)
} catch (e: Exception) {
e.printStackTrace()
}
@@ -76,4 +89,95 @@
return commitmentVos.size == success
}
+
+ override fun createLetterOfCommitment(userId: String, info: String, sign: MultipartFile?, seal: MultipartFile?): BaseResponse<List<String>> {
+ sign ?: return BaseResponse(false, "绛惧悕鍥剧墖鏈笂浼犳垚鍔�")
+ val infoVo = Gson().fromJson(info, CommitmentVo::class.java)
+
+ val signUrl = infoVo.sign.ifBlank { FileUtil.compressImage2(sign.bytes, 400) }
+ val sealUrl = if (seal != null) FileUtil.compressImage2(seal.bytes, 400) else ""
+
+ val templatePath = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main/resources") + "/templates/"
+ val time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
+ val path = "commitments/$time/$userId/"
+ val contractPath = imgPath + path
+
+ val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false)
+
+ var templateName = ""
+ var contractName = ""
+ val params = mutableMapOf<String, Any>()
+ val now = Date()
+ when (userInfo.extension2?.toIntOrNull()) {
+ SceneType.Restaurant.value -> {
+ templateName = "commitment-restaurant.ftl"
+ contractName = "commitment-restaurant-${now.time}.pdf"
+ }
+ SceneType.Construction.value,
+ SceneType.Wharf.value,
+ SceneType.StorageYard.value,
+ SceneType.MixingPlant.value,
+ SceneType.Industrial.value -> {
+ templateName = "commitment-construction.ftl"
+ contractName = "commitment-construction-${now.time}.pdf"
+ }
+ SceneType.VehicleRepair.value -> {
+ templateName = "commitment-vehicle.ftl"
+ contractName = "commitment-vehicle-${now.time}.pdf"
+ }
+ }
+// val picName = contractName.replace("pdf", "jpg")
+
+ //琛ュ叏淇℃伅
+ infoVo.apply {
+ if (city.isBlank()) city = "涓婃捣甯�"
+ if (district.isBlank()) district = userInfo.extension1 ?: ""
+ if (year.isBlank()) {
+ val t = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")).split("-")
+ year = t[0]
+ month = t[1]
+ day = t[2]
+ }
+ }
+ params.apply {
+ put("City", infoVo.city)
+ put("District", infoVo.district)
+ put("Department", infoVo.department)
+ put("SocialCode", infoVo.socialCode)
+ put("Number", infoVo.number)
+ put("JuridicalPerson", infoVo.juridicalPerson)
+ put("IdNo", infoVo.idNo)
+ put("Type1", if (infoVo.type1) "鈭�" else "鈻�")
+ put("Type2", if (infoVo.type2) "鈭�" else "鈻�")
+ put("Type3", if (infoVo.type3) "鈭�" else "鈻�")
+ put("Type4", if (infoVo.type4) "鈭�" else "鈻�")
+ put("Sign", signUrl)
+ put("Seal", sealUrl)
+ put("Year", infoVo.year)
+ put("Month", infoVo.month)
+ put("Day", infoVo.day)
+ }
+ val param = DynamicParam(templatePath, templateName, contractPath, contractName, params)
+ val picPaths = GeneratePdfUtil.generateContract(param)
+ var picPath = ""
+ for (i in picPaths.indices) {
+ val picName = contractName.replace(".pdf", "(${i}).jpg");
+ if (picPath.isNotBlank()) {
+ picPath += ";"
+ }
+ picPath += (path + picName)
+ }
+
+ //灏嗙敓鎴愮殑鎵胯涔﹁褰曟彃鍏ユ暟鎹簱
+ val commitment = Commitment().apply {
+ cmGuid = UUIDGenerator.generate16ShortUUID()
+ uiGuid = userId
+ cmUrl = picPath
+ cmPdfUrl = path + contractName
+ cmCreateTime = Date()
+ }
+ val r = commitmentMapper.insert(commitment)
+
+ return BaseResponse(r == 1, data = listOf(commitment.cmUrl, commitment.cmPdfUrl))
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3