Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李苗
/
Vion-DevOps
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 60d82bad
authored
Sep 14, 2024
by
HlQ
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
[chg] 使用 LocalDateTime 替换 Date
1 parent
6b3ca06f
Hide whitespace changes
Inline
Side-by-side
Showing
181 changed files
with
1446 additions
and
900 deletions
README.md
src/main/java/vion/config/MyBatisPlusConfig.java
src/main/java/vion/config/RedisConfig.java
src/main/java/vion/config/RequestWrapper.java
src/main/java/vion/constant/RedisKeyEnum.java
src/main/java/vion/controller/AccountController.java
src/main/java/vion/controller/ConstructionTeamController.java
src/main/java/vion/controller/ContractController.java
src/main/java/vion/controller/FileController.java
src/main/java/vion/controller/FormController.java
src/main/java/vion/controller/InspectController.java
src/main/java/vion/controller/InvoiceController.java
src/main/java/vion/controller/PaymentController.java
src/main/java/vion/controller/PointDesignController.java
src/main/java/vion/controller/RRoleResourceController.java
src/main/java/vion/controller/RepairRecController.java
src/main/java/vion/controller/RoleController.java
src/main/java/vion/controller/SparePartController.java
src/main/java/vion/controller/TaskController.java
src/main/java/vion/cron/ContractRunner.java
src/main/java/vion/cron/LogPushRunner.java
src/main/java/vion/cron/TaskRunner.java
src/main/java/vion/dto/ContractDTO.java
src/main/java/vion/dto/ContractPaymentDTO.java
src/main/java/vion/dto/DeliverLogDTO.java
src/main/java/vion/dto/DeliveryRecordDTO.java
src/main/java/vion/dto/DeviceDTO.java
src/main/java/vion/dto/FileInfoDTO.java
src/main/java/vion/dto/FormDTO.java
src/main/java/vion/dto/InspectDTO.java
src/main/java/vion/dto/InvoiceDTO.java
src/main/java/vion/dto/PaymentDTO.java
src/main/java/vion/dto/PointInfoDTO.java
src/main/java/vion/dto/RContractTeamDTO.java
src/main/java/vion/dto/RepairRecDTO.java
src/main/java/vion/dto/RoleDTO.java
src/main/java/vion/dto/ServiceOrderDTO.java
src/main/java/vion/dto/SparePartDTO.java
src/main/java/vion/dto/StatusDTO.java
src/main/java/vion/dto/StoreDTO.java
src/main/java/vion/dto/TaskDTO.java
src/main/java/vion/dto/TaskTempDTO.java
src/main/java/vion/dto/UserDTO.java
src/main/java/vion/mapper/DictionaryMapper.java
src/main/java/vion/mapper/DictionaryTypeMapper.java
src/main/java/vion/mapper/FaultLogMapper.java
src/main/java/vion/mapper/FileMapper.java
src/main/java/vion/mapper/InspectMapper.java
src/main/java/vion/mapper/SparePartMapper.java
src/main/java/vion/mapper/StoreMapper.java
src/main/java/vion/mapper/TaskMapper.java
src/main/java/vion/mapper/TaskTempMapper.java
src/main/java/vion/mapper/UserMapper.java
src/main/java/vion/model/Account.java
src/main/java/vion/model/ConstructionTeam.java
src/main/java/vion/model/Contract.java
src/main/java/vion/model/ContractLog.java
src/main/java/vion/model/ContractPayment.java
src/main/java/vion/model/DeliverLog.java
src/main/java/vion/model/DeliveryRecord.java
src/main/java/vion/model/Dept.java
src/main/java/vion/model/Device.java
src/main/java/vion/model/DeviceLog.java
src/main/java/vion/model/Dictionary.java
src/main/java/vion/model/DictionaryType.java
src/main/java/vion/model/FaultLog.java
src/main/java/vion/model/FileInfo.java
src/main/java/vion/model/Form.java
src/main/java/vion/model/Inspect.java
src/main/java/vion/model/Invoice.java
src/main/java/vion/model/Payment.java
src/main/java/vion/model/PointInfo.java
src/main/java/vion/model/RContractProduct.java
src/main/java/vion/model/RContractStore.java
src/main/java/vion/model/RContractTeam.java
src/main/java/vion/model/RContractUser.java
src/main/java/vion/model/RPointDevice.java
src/main/java/vion/model/RPointWx.java
src/main/java/vion/model/RRepairDevice.java
src/main/java/vion/model/RRoleResource.java
src/main/java/vion/model/RStoreConfederate.java
src/main/java/vion/model/RStoreTag.java
src/main/java/vion/model/RStoreUser.java
src/main/java/vion/model/RUserRole.java
src/main/java/vion/model/RejectInfo.java
src/main/java/vion/model/RepairRec.java
src/main/java/vion/model/Resource.java
src/main/java/vion/model/Role.java
src/main/java/vion/model/ServiceOrder.java
src/main/java/vion/model/SettlementDiff.java
src/main/java/vion/model/SparePart.java
src/main/java/vion/model/Store.java
src/main/java/vion/model/StoreLog.java
src/main/java/vion/model/Tag.java
src/main/java/vion/model/Task.java
src/main/java/vion/model/TaskTemp.java
src/main/java/vion/model/User.java
src/main/java/vion/service/IDeviceLogService.java
src/main/java/vion/service/IRContractProductService.java
src/main/java/vion/service/IRContractStoreService.java
src/main/java/vion/service/IRContractTeamService.java
src/main/java/vion/service/IRContractUserService.java
src/main/java/vion/service/IRPointDeviceService.java
src/main/java/vion/service/IRPointWxService.java
src/main/java/vion/service/IRRepairDeviceService.java
src/main/java/vion/service/IRRoleResourceService.java
src/main/java/vion/service/IRStoreConfederateService.java
src/main/java/vion/service/IRStoreTagService.java
src/main/java/vion/service/IRStoreUserService.java
src/main/java/vion/service/IRUserRoleService.java
src/main/java/vion/service/IRejectInfoService.java
src/main/java/vion/service/IResourceService.java
src/main/java/vion/service/IStoreLogService.java
src/main/java/vion/service/ITagService.java
src/main/java/vion/service/ITaskService.java
src/main/java/vion/service/ITaskTempService.java
src/main/java/vion/service/impl/ConstructionTeamServiceImpl.java
src/main/java/vion/service/impl/ContractPaymentServiceImpl.java
src/main/java/vion/service/impl/ContractServiceImpl.java
src/main/java/vion/service/impl/DeliverLogServiceImpl.java
src/main/java/vion/service/impl/DeliveryRecordServiceImpl.java
src/main/java/vion/service/impl/DeviceLogServiceImpl.java
src/main/java/vion/service/impl/InvoiceServiceImpl.java
src/main/java/vion/service/impl/PaymentServiceImpl.java
src/main/java/vion/service/impl/PointInfoServiceImpl.java
src/main/java/vion/service/impl/RContractProductServiceImpl.java
src/main/java/vion/service/impl/RContractStoreServiceImpl.java
src/main/java/vion/service/impl/RContractTeamServiceImpl.java
src/main/java/vion/service/impl/RContractUserServiceImpl.java
src/main/java/vion/service/impl/RPointDeviceServiceImpl.java
src/main/java/vion/service/impl/RPointWxServiceImpl.java
src/main/java/vion/service/impl/RRepairDeviceServiceImpl.java
src/main/java/vion/service/impl/RRoleResourceServiceImpl.java
src/main/java/vion/service/impl/RStoreConfederateServiceImpl.java
src/main/java/vion/service/impl/RStoreTagServiceImpl.java
src/main/java/vion/service/impl/RStoreUserServiceImpl.java
src/main/java/vion/service/impl/RUserRoleServiceImpl.java
src/main/java/vion/service/impl/RejectInfoServiceImpl.java
src/main/java/vion/service/impl/RepairRecServiceImpl.java
src/main/java/vion/service/impl/ResourceServiceImpl.java
src/main/java/vion/service/impl/ServiceOrderServiceImpl.java
src/main/java/vion/service/impl/SettlementDiffServiceImpl.java
src/main/java/vion/service/impl/SparePartServiceImpl.java
src/main/java/vion/service/impl/StoreLogServiceImpl.java
src/main/java/vion/service/impl/StoreServiceImpl.java
src/main/java/vion/service/impl/TagServiceImpl.java
src/main/java/vion/service/impl/TaskServiceImpl.java
src/main/java/vion/service/impl/TaskTempServiceImpl.java
src/main/java/vion/service/impl/UserServiceImpl.java
src/main/java/vion/third/DingMod.java
src/main/java/vion/third/WechatMod.java
src/main/java/vion/utils/JsonUtil.java
src/main/java/vion/utils/excel/AttachmentExportUtil.java
src/main/java/vion/vo/ConstructionTeamVO.java
src/main/java/vion/vo/ContractPaymentVO.java
src/main/java/vion/vo/ContractVO.java
src/main/java/vion/vo/DeliverLogVO.java
src/main/java/vion/vo/DeliveryRecordVO.java
src/main/java/vion/vo/DeviceVO.java
src/main/java/vion/vo/FileInfoVO.java
src/main/java/vion/vo/FinancialAgeVO.java
src/main/java/vion/vo/FormVO.java
src/main/java/vion/vo/InspectVO.java
src/main/java/vion/vo/InvoiceVO.java
src/main/java/vion/vo/PaymentVO.java
src/main/java/vion/vo/PointInfoVO.java
src/main/java/vion/vo/RContractTeamVO.java
src/main/java/vion/vo/RepairRecVO.java
src/main/java/vion/vo/ResourceVO.java
src/main/java/vion/vo/RoleVO.java
src/main/java/vion/vo/ServiceOrderVO.java
src/main/java/vion/vo/SettlementDiffVO.java
src/main/java/vion/vo/SparePartVO.java
src/main/java/vion/vo/StoreVO.java
src/main/java/vion/vo/TaskTempVO.java
src/main/java/vion/vo/TaskVO.java
src/main/java/vion/vo/UserVO.java
src/main/resources/static/weChatBindSuccess.html
src/main/resources/static/weChatError.html
src/main/resources/static/weChatNeedAttention.html
src/main/resources/static/weChatSuccess.html
README.md
View file @
60d82ba
# 项目运维管理平台
# 项目运维管理平台
使用 SpringBoot3 + Java 21 开发
## 销帮帮相关接口
...
...
@@ -20,6 +20,7 @@
</resource>
</resources>
```
## 更新合同金额
需要在
``Contract.class``
把 金额上面的四个注解
``@ReverseAutoMapping(targetClass = ContractDTO.class, ignore = true)``
注释掉,然后调用更新接口。
\ No newline at end of file
src/main/java/vion/config/MyBatisPlusConfig.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import org.apache.ibatis.reflection.MetaObject;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -19,15 +19,15 @@ public class MyBatisPlusConfig implements MetaObjectHandler {
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
this
.
fillHasGetter
(
metaObject
,
"createTime"
,
new
Date
());
this
.
fillHasGetter
(
metaObject
,
"modifyTime"
,
new
Date
());
this
.
fillHasGetter
(
metaObject
,
"updateTime"
,
new
Date
());
this
.
fillHasGetter
(
metaObject
,
"createTime"
,
LocalDateTime
.
now
());
this
.
fillHasGetter
(
metaObject
,
"modifyTime"
,
LocalDateTime
.
now
());
this
.
fillHasGetter
(
metaObject
,
"updateTime"
,
LocalDateTime
.
now
());
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
this
.
fillHasGetter
(
metaObject
,
"modifyTime"
,
new
Date
());
this
.
fillHasGetter
(
metaObject
,
"updateTime"
,
new
Date
());
this
.
fillHasGetter
(
metaObject
,
"modifyTime"
,
LocalDateTime
.
now
());
this
.
fillHasGetter
(
metaObject
,
"updateTime"
,
LocalDateTime
.
now
());
}
protected
void
fillHasGetter
(
MetaObject
metaObject
,
String
fieldName
,
Object
fieldVal
)
{
...
...
src/main/java/vion/config/RedisConfig.java
View file @
60d82ba
package
vion
.
config
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.codec.JsonJacksonCodec
;
...
...
@@ -28,7 +30,9 @@ public class RedisConfig {
@Bean
(
destroyMethod
=
"shutdown"
)
public
RedissonClient
redissonClient
()
{
Config
config
=
new
Config
();
config
.
setCodec
(
JsonJacksonCodec
.
INSTANCE
);
ObjectMapper
objectMapper
=
new
ObjectMapper
();
objectMapper
.
registerModule
(
new
JavaTimeModule
());
config
.
setCodec
(
new
JsonJacksonCodec
(
objectMapper
));
SingleServerConfig
singleServerConfig
=
config
.
useSingleServer
();
singleServerConfig
.
setAddress
(
"redis://"
+
host
+
":"
+
port
)
.
setPassword
(
password
)
...
...
src/main/java/vion/config/RequestWrapper.java
View file @
60d82ba
package
vion
.
config
;
import
jakarta.servlet.http.HttpServletRequestWrapper
;
import
org.dromara.hutool.core.io.IoUtil
;
import
jakarta.servlet.ReadListener
;
import
jakarta.servlet.ServletInputStream
;
import
jakarta.servlet.http.HttpServletRequest
;
import
jakarta.servlet.http.HttpServletRequestWrapper
;
import
org.dromara.hutool.core.io.IoUtil
;
import
java.io.*
;
...
...
src/main/java/vion/constant/RedisKeyEnum.java
View file @
60d82ba
package
vion
.
constant
;
import
org.dromara.hutool.core.text.StrUtil
;
import
lombok.Getter
;
import
org.dromara.hutool.core.text.StrUtil
;
import
java.util.Arrays
;
...
...
src/main/java/vion/controller/AccountController.java
View file @
60d82ba
...
...
@@ -32,7 +32,7 @@ public class AccountController {
.
select
(
Account:
:
getId
,
Account:
:
getName
)
.
orderByDesc
(
Account:
:
getModifyTime
)
.
page
(
Page
.
of
(
dto
.
getPageNum
(),
dto
.
getPageSize
()));
dto
.
getPageSize
()));
}
@GetMapping
(
"/account/{id}"
)
...
...
src/main/java/vion/controller/ConstructionTeamController.java
View file @
60d82ba
...
...
@@ -11,8 +11,8 @@ import vion.vo.ConstructionTeamVO;
import
vion.vo.RContractTeamVO
;
/**
* 施工队管理
*/
* 施工队管理
*/
@RestController
@RequestMapping
(
"/api"
)
@RequiredArgsConstructor
...
...
src/main/java/vion/controller/ContractController.java
View file @
60d82ba
...
...
@@ -10,7 +10,7 @@ import com.github.liaochong.myexcel.utils.WatermarkUtil;
import
jakarta.servlet.http.HttpServletResponse
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.dromara.hutool.core.text.CharSequenceUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
...
...
@@ -31,7 +31,7 @@ import vion.vo.UserVO;
import
java.awt.*
;
import
java.io.IOException
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -166,9 +166,9 @@ public class ContractController {
@GetMapping
(
"/contract/getCRMProduct"
)
@SaCheckPermission
(
value
=
"contract:CRMProduct"
,
orRole
=
"admin"
)
public
JsonNode
getCRMProduct
(
@RequestParam
String
name
,
@RequestParam
String
code
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
defaultValue
=
"20"
)
Integer
pageSize
)
{
@RequestParam
String
code
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
defaultValue
=
"20"
)
Integer
pageSize
)
{
return
contractService
.
getCRMProduct
(
name
,
code
,
page
,
pageSize
);
}
...
...
@@ -192,7 +192,7 @@ public class ContractController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"合同列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"合同列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
src/main/java/vion/controller/FileController.java
View file @
60d82ba
...
...
@@ -7,7 +7,7 @@ import io.github.linpeilie.Converter;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Assert
;
...
...
@@ -31,7 +31,7 @@ import vion.vo.FileInfoVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@RestController
@RequestMapping
(
"/api"
)
...
...
@@ -110,7 +110,7 @@ public class FileController {
@SaCheckPermission
(
value
=
"file:form:upload"
,
orRole
=
"admin"
)
public
String
uploadFile
(
FileInfoDTO
dto
,
@RequestParam
(
name
=
"file"
)
MultipartFile
infile
)
throws
IOException
{
String
filename
=
FileNameUtil
.
mainName
(
infile
.
getOriginalFilename
())
+
"_"
+
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
)
+
"."
+
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
)
+
"."
+
FileNameUtil
.
extName
(
infile
.
getOriginalFilename
());
String
path
=
getPath
(
dto
,
filename
);
File
file
=
FileUtil
.
touch
(
path
);
...
...
@@ -142,7 +142,7 @@ public class FileController {
public
String
uploadFile1
(
FileInfo
fileInfo
,
@RequestParam
(
name
=
"files"
)
MultipartFile
[]
files
)
throws
IOException
{
for
(
MultipartFile
infile
:
files
)
{
String
filename
=
FileNameUtil
.
mainName
(
infile
.
getOriginalFilename
())
+
"_"
+
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
)
+
"."
+
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
)
+
"."
+
FileNameUtil
.
extName
(
infile
.
getOriginalFilename
());
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
fileInfo
.
getStoreId
()
+
FileUtil
.
FILE_SEPARATOR
+
fileInfo
.
getSourceId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
...
...
src/main/java/vion/controller/FormController.java
View file @
60d82ba
...
...
@@ -56,8 +56,8 @@ public class FormController {
/**
* 签字专用更新接口
*
* @param uuid
uuid
* @param dto dto
* @param uuid uuid
* @param dto
dto
* @return java.lang.String
*/
@PostMapping
(
"/form/sign/{uuid}"
)
...
...
src/main/java/vion/controller/InspectController.java
View file @
60d82ba
...
...
@@ -11,7 +11,7 @@ import vion.model.Inspect;
import
vion.service.IInspectService
;
import
vion.vo.InspectVO
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
@RestController
@RequestMapping
(
"/api"
)
...
...
@@ -47,10 +47,10 @@ public class InspectController {
boolean
result
=
inspectService
.
lambdaUpdate
()
.
eq
(
Inspect:
:
getId
,
data
.
getId
())
.
set
(
Inspect:
:
getStatus
,
data
.
getStatus
())
.
set
(
Inspect:
:
getAuditDate
,
new
Date
())
.
set
(
Inspect:
:
getAuditDate
,
LocalDate
.
now
())
.
set
(
Inspect:
:
getReviewer
,
data
.
getReviewer
())
//审核状态为已完成的时候更新完成时间(0进行中、1待审核、2已完成、3、驳回)
.
set
(
data
.
getStatus
()
==
2
,
Inspect:
:
getFinishDate
,
new
Date
())
.
set
(
data
.
getStatus
()
==
2
,
Inspect:
:
getFinishDate
,
LocalDate
.
now
())
.
update
();
return
result
?
"更新巡检状态成功"
:
"更新巡检状态失败"
;
}
...
...
src/main/java/vion/controller/InvoiceController.java
View file @
60d82ba
...
...
@@ -10,7 +10,7 @@ import io.github.linpeilie.Converter;
import
jakarta.servlet.http.HttpServletResponse
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.InvoiceDTO
;
...
...
@@ -21,7 +21,7 @@ import vion.vo.UserVO;
import
java.awt.*
;
import
java.io.IOException
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
...
...
@@ -79,7 +79,7 @@ public class InvoiceController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"发票列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"发票列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
src/main/java/vion/controller/PaymentController.java
View file @
60d82ba
...
...
@@ -2,31 +2,31 @@ package vion.controller;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.stp.StpUtil
;
import
org.dromara.hutool.core.date.DateUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.liaochong.myexcel.core.DefaultExcelBuilder
;
import
com.github.liaochong.myexcel.core.watermark.Watermark
;
import
vion.utils.excel.AttachmentExportUtil
;
import
com.github.liaochong.myexcel.utils.WatermarkUtil
;
import
io.github.linpeilie.Converter
;
import
jakarta.servlet.http.HttpServletResponse
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.date.TimeUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.PaymentDTO
;
import
vion.service.IPaymentService
;
import
vion.utils.excel.AttachmentExportUtil
;
import
vion.vo.PaymentVO
;
import
vion.vo.UserVO
;
import
jakarta.servlet.http.HttpServletResponse
;
import
java.awt.*
;
import
java.io.IOException
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
* 收款记录管理
*/
* 收款记录管理
*/
@RestController
@RequestMapping
(
"/api"
)
@RequiredArgsConstructor
...
...
@@ -79,7 +79,7 @@ public class PaymentController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"收款列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"收款列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
src/main/java/vion/controller/PointDesignController.java
View file @
60d82ba
...
...
@@ -2,28 +2,28 @@ package vion.controller;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.stp.StpUtil
;
import
org.dromara.hutool.core.date.DateUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.liaochong.myexcel.core.DefaultExcelBuilder
;
import
com.github.liaochong.myexcel.core.watermark.Watermark
;
import
vion.utils.excel.AttachmentExportUtil
;
import
com.github.liaochong.myexcel.utils.WatermarkUtil
;
import
jakarta.servlet.http.HttpServletResponse
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.date.TimeUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.PointInfoDTO
;
import
vion.model.RejectInfo
;
import
vion.service.IPointInfoService
;
import
vion.third.WechatMod
;
import
vion.utils.excel.AttachmentExportUtil
;
import
vion.vo.PointInfoVO
;
import
vion.vo.UserVO
;
import
jakarta.servlet.http.HttpServletResponse
;
import
java.awt.*
;
import
java.io.IOException
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
...
...
@@ -128,7 +128,7 @@ public class PointDesignController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"点位设计列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"点位设计列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
src/main/java/vion/controller/RRoleResourceController.java
View file @
60d82ba
package
vion
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
org.dromara.hutool.core.lang.Opt
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/vion/controller/RepairRecController.java
View file @
60d82ba
package
vion
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.RepairRecDTO
;
import
vion.service.IRepairRecService
;
...
...
src/main/java/vion/controller/RoleController.java
View file @
60d82ba
package
vion
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.text.StrUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.util.ObjUtil
;
import
org.springframework.web.bind.annotation.*
;
import
vion.dto.RoleDTO
;
...
...
src/main/java/vion/controller/SparePartController.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import jakarta.servlet.http.HttpServletResponse;
import
lombok.RequiredArgsConstructor
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -22,7 +22,7 @@ import vion.vo.UserVO;
import
java.awt.*
;
import
java.io.IOException
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
...
...
@@ -76,7 +76,7 @@ public class SparePartController {
UserVO
user
=
(
UserVO
)
StpUtil
.
getTokenSession
().
get
(
"curLoginUser"
);
dto
.
setPageSize
(
30000
);
List
<
SparePartVO
>
voPage
=
sparePartService
.
list
(
dto
);
try
(
DefaultStreamExcelBuilder
<
SparePartVO
>
defaultStreamExcelBuilder
=
DefaultStreamExcelBuilder
.
of
(
SparePartVO
.
class
).
autoMerge
().
start
())
{
try
(
DefaultStreamExcelBuilder
<
SparePartVO
>
defaultStreamExcelBuilder
=
DefaultStreamExcelBuilder
.
of
(
SparePartVO
.
class
).
autoMerge
().
start
())
{
voPage
.
forEach
(
v
->
{
var
name
=
v
.
getRepairDeviceList
().
stream
().
map
(
RRepairDevice:
:
getDeviceName
).
toList
();
var
no
=
v
.
getRepairDeviceList
().
stream
().
map
(
RRepairDevice:
:
getDeviceNo
).
toList
();
...
...
@@ -92,7 +92,7 @@ public class SparePartController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"备件申请列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"备件申请列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
src/main/java/vion/controller/TaskController.java
View file @
60d82ba
...
...
@@ -10,7 +10,7 @@ import jakarta.servlet.http.HttpServletResponse;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -27,7 +27,8 @@ import vion.vo.UserVO;
import
java.awt.*
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -81,7 +82,7 @@ public class TaskController {
FaultLog
faultLog
=
new
FaultLog
();
faultLog
.
setOperator
(
taskVO
.
getActiveUser
());
faultLog
.
setContent
(
"工单正在处理中"
);
faultLog
.
setCreateTime
(
new
Date
());
faultLog
.
setCreateTime
(
LocalDateTime
.
now
());
faultLogList
.
add
(
faultLog
);
}
return
faultLogList
;
...
...
@@ -108,7 +109,7 @@ public class TaskController {
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"任务列表_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"任务列表_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
@@ -147,8 +148,8 @@ public class TaskController {
@GetMapping
(
"/task/peopleAnal"
)
@SaCheckPermission
(
value
=
"task:peopleAnal"
,
orRole
=
"admin"
)
public
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
endDate
,
public
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
endDate
,
Integer
source
,
@RequestParam
(
required
=
false
)
List
<
Long
>
userIds
)
{
return
taskService
.
peopleAnalysis
(
startDate
,
endDate
,
source
,
userIds
);
...
...
@@ -156,8 +157,8 @@ public class TaskController {
@GetMapping
(
"/task/proAnal"
)
@SaCheckPermission
(
value
=
"task:proAnal"
,
orRole
=
"admin"
)
public
List
<
Map
<
String
,
Object
>>
proAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
endDate
,
public
List
<
Map
<
String
,
Object
>>
proAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
endDate
,
Integer
source
,
@RequestParam
(
required
=
false
)
List
<
Long
>
userIds
)
{
return
taskService
.
proAnalysis
(
startDate
,
endDate
,
source
,
userIds
);
...
...
@@ -165,8 +166,8 @@ public class TaskController {
@GetMapping
(
"/task/summaryAnal"
)
@SaCheckPermission
(
value
=
"task:summaryAnal"
,
orRole
=
"admin"
)
public
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Date
endDate
,
public
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
startDate
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
Local
Date
endDate
,
Integer
source
)
{
return
taskService
.
summaryAnalysis
(
startDate
,
endDate
,
source
);
}
...
...
src/main/java/vion/cron/ContractRunner.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.math.NumberUtil
;
import
org.dromara.hutool.core.text.StrUtil
;
...
...
@@ -165,9 +165,9 @@ public class ContractRunner {
contract
.
setName
(
jsonObj1
.
path
(
"text_14"
).
asText
());
contract
.
setContractNo
(
jsonObj1
.
path
(
"serialNo"
).
asText
());
contract
.
setType
(
contractTypeMap
.
getOrDefault
(
jsonObj1
.
path
(
"text_17"
).
path
(
"text"
).
asText
(),
0
));
contract
.
setSignDate
(
DateUtil
.
date
(
jsonObj1
.
path
(
"date_1"
).
asLong
()
*
1000
));
contract
.
setMaintainSdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_4"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
DateUtil
.
date
(
sec
.
asLong
()
*
1000
)).
orElse
(
null
));
contract
.
setMaintainEdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_5"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
DateUtil
.
date
(
sec
.
asLong
()
*
1000
)).
orElse
(
null
));
contract
.
setSignDate
(
TimeUtil
.
of
(
jsonObj1
.
path
(
"date_1"
).
asLong
()
*
1000
).
toLocalDate
(
));
contract
.
setMaintainSdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_4"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
TimeUtil
.
of
(
sec
.
asLong
()
*
1000
).
toLocalDate
(
)).
orElse
(
null
));
contract
.
setMaintainEdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_5"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
TimeUtil
.
of
(
sec
.
asLong
()
*
1000
).
toLocalDate
(
)).
orElse
(
null
));
String
warrantyPeriod
=
jsonObj1
.
path
(
"text_23"
).
path
(
"text"
).
asText
(
""
);
// 23 质保 没有维保开始时间和结束时间 25 维保
if
(
StrUtil
.
isNotBlank
(
warrantyPeriod
)
&&
warrantyPeriod
.
contains
(
"个月"
))
{
...
...
@@ -183,7 +183,7 @@ public class ContractRunner {
if
(!
paymentForm
.
isEmpty
())
{
paymentForm
.
forEach
(
pf
->
{
var
ratio
=
NumberUtil
.
div
(
BigDecimal
.
valueOf
(
Double
.
parseDouble
(
pf
.
path
(
"text_1"
).
asText
())),
100
);
var
date
=
DateUtil
.
date
(
pf
.
path
(
"date_1"
).
asLong
()
*
1000
);
var
date
=
TimeUtil
.
of
(
pf
.
path
(
"date_1"
).
asLong
()
*
1000
).
toLocalDate
(
);
var
stage
=
pf
.
path
(
"text_2"
).
path
(
"text"
).
asText
();
if
(
StrUtil
.
equals
(
stage
,
"预付款"
))
{
contract
.
setSignRatio
(
ratio
);
...
...
@@ -224,8 +224,8 @@ public class ContractRunner {
contract
.
setBackInfo
(
jsonObj1
.
path
(
"text_29"
).
asText
());
contract
.
setCreateUser
(-
1L
);
contract
.
setModifyUser
(-
1L
);
contract
.
setEntryTime
(
DateUtil
.
date
(
result
.
path
(
"addTime"
).
asLong
()
*
1000
));
contract
.
setOriginalModTime
(
DateUtil
.
date
(
result
.
path
(
"updateTime"
).
asLong
()
*
1000
));
contract
.
setEntryTime
(
TimeUtil
.
of
(
result
.
path
(
"addTime"
).
asLong
()
*
1000
));
contract
.
setOriginalModTime
(
TimeUtil
.
of
(
result
.
path
(
"updateTime"
).
asLong
()
*
1000
));
insOrUpdContractList
.
add
(
contract
);
var
productArr
=
jsonObj1
.
withArray
(
"array_4"
);
...
...
@@ -320,8 +320,7 @@ public class ContractRunner {
contractPaymentService
.
calMoney
(
exist
,
updDto
);
contractService
.
updateById
(
updDto
);
});
redissonClient
.
getBucket
(
RedisKeyEnum
.
CONTRACT_SYNC_NEW_TIME
.
getVal
()).
set
(
insOrUpdContractList
.
getFirst
().
getOriginalModTime
().
getTime
());
redissonClient
.
getBucket
(
RedisKeyEnum
.
CONTRACT_SYNC_NEW_TIME
.
getVal
()).
set
(
TimeUtil
.
toEpochMilli
(
insOrUpdContractList
.
getFirst
().
getOriginalModTime
()));
log
.
info
(
"【结束】从crm系统同步合同信息"
);
}
...
...
src/main/java/vion/cron/LogPushRunner.java
View file @
60d82ba
...
...
@@ -2,7 +2,7 @@ package vion.cron;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.dromara.hutool.core.util.ObjUtil
;
...
...
@@ -20,6 +20,7 @@ import vion.service.IStoreService;
import
vion.third.DingMod
;
import
vion.utils.JsonUtil
;
import
java.time.LocalDateTime
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
...
...
@@ -83,7 +84,7 @@ public class LogPushRunner {
.
put
(
"text"
,
StrUtil
.
format
(
"""
### 项目日志待提交提醒
#### 项目:[{}]请及时提交日志
#### 发送时间:{}"""
,
storeName
,
DateUtil
.
now
(
)));
#### 发送时间:{}"""
,
storeName
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
)));
var
msg
=
JsonUtil
.
createObj
()
.
put
(
"msgtype"
,
"markdown"
)
...
...
src/main/java/vion/cron/TaskRunner.java
View file @
60d82ba
...
...
@@ -3,7 +3,7 @@ package vion.cron;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
...
...
@@ -14,6 +14,7 @@ import vion.service.IUserService;
import
vion.third.DingMod
;
import
vion.utils.JsonUtil
;
import
java.time.LocalDateTime
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -52,7 +53,7 @@ public class TaskRunner {
.
put
(
"markdown"
,
"""
### 未完成工单提醒
#### 请查看您未完成的工单
#### 发送时间:"""
+
DateUtil
.
now
(
))
#### 发送时间:"""
+
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
))
.
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
src/main/java/vion/dto/ContractDTO.java
View file @
60d82ba
...
...
@@ -7,7 +7,8 @@ import org.springframework.format.annotation.DateTimeFormat;
import
org.springframework.web.multipart.MultipartFile
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -56,24 +57,26 @@ public class ContractDTO extends BaseDTO {
/**
* 终验日期
*/
private
Dat
e
finalDate
;
private
LocalDateTim
e
finalDate
;
/**
* 项目id
*/
private
Long
storeId
;
/** 文件来源 */
/**
* 文件来源
*/
private
Integer
sourceType
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
nodeDate
;
private
Local
Date
nodeDate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
signDateStart
;
private
Local
Date
signDateStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
signDateEnd
;
private
Local
Date
signDateEnd
;
/**
* 1:查询未关联的合同
...
...
@@ -81,7 +84,9 @@ public class ContractDTO extends BaseDTO {
*/
private
int
switchFlag
;
/** 产品线属性 */
/**
* 产品线属性
*/
private
List
<
Integer
>
productLines
;
/**
...
...
@@ -107,7 +112,9 @@ public class ContractDTO extends BaseDTO {
private
BigDecimal
amount
;
/** 操作符 > < = */
/**
* 操作符 > < =
*/
private
String
operator
;
private
OrderItem
orderItem
;
...
...
src/main/java/vion/dto/ContractPaymentDTO.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
@Getter
@Setter
...
...
@@ -31,6 +31,6 @@ public class ContractPaymentDTO {
* 节点日期,指合同到这一阶段时的时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
nodeDate
;
private
Local
Date
nodeDate
;
}
\ No newline at end of file
src/main/java/vion/dto/DeliverLogDTO.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
import
java.util.List
;
@Getter
...
...
@@ -39,13 +39,13 @@ public class DeliverLogDTO extends BaseDTO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
logDate
;
private
Local
Date
logDate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
logDateStart
;
private
Local
Date
logDateStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
logDateEnd
;
private
Local
Date
logDateEnd
;
/**
* 干系人
...
...
src/main/java/vion/dto/DeliveryRecordDTO.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
@Getter
@Setter
...
...
@@ -53,14 +53,14 @@ public class DeliveryRecordDTO extends BaseDTO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 到货签收日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
signDate
;
private
Local
Date
signDate
;
/**
* 快递公司
...
...
src/main/java/vion/dto/DeviceDTO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
@Getter
@Setter
...
...
@@ -55,7 +55,7 @@ public class DeviceDTO extends BaseDTO {
* 入库日期
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
recDate
;
private
Local
Date
recDate
;
/**
* 备注
...
...
src/main/java/vion/dto/FileInfoDTO.java
View file @
60d82ba
...
...
@@ -9,31 +9,57 @@ import java.util.List;
@Setter
public
class
FileInfoDTO
extends
BaseDTO
{
private
Long
id
;
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 文件扩展名 */
/**
* 文件扩展名
*/
private
String
type
;
/** 文件来源 */
/**
* 文件来源
*/
private
Integer
sourceType
;
private
List
<
Integer
>
sourceTypeList
;
/** 文件来源id */
/**
* 文件来源id
*/
private
Long
sourceId
;
/** 合同id */
/**
* 合同id
*/
private
Long
contractId
;
/** 合同编号 */
/**
* 合同编号
*/
private
String
contractNo
;
/** 文件名称 */
/**
* 文件名称
*/
private
String
name
;
/** 文件地址 */
/**
* 文件地址
*/
private
String
url
;
/** 备注 */
/**
* 备注
*/
private
String
remark
;
/** sha256 */
/**
* sha256
*/
private
String
sha256
;
/** 上传人 */
/**
* 上传人
*/
private
String
uploader
;
/** 标识:storeLog,用于区分项目日志的表单文件的提交存储和其他通用表单的文件存储 */
/**
* 标识:storeLog,用于区分项目日志的表单文件的提交存储和其他通用表单的文件存储
*/
private
String
flag
;
/** 更新标识,更新接口不传该字段,不允许更新文件:1.项目资料 */
/**
* 更新标识,更新接口不传该字段,不允许更新文件:1.项目资料
*/
private
Integer
updFlag
;
}
src/main/java/vion/dto/FormDTO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
...
...
@@ -41,7 +41,7 @@ public class FormDTO extends BaseDTO {
* 签字时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/**
* 来源,1:任务管理,2:巡检管理
...
...
src/main/java/vion/dto/InspectDTO.java
View file @
60d82ba
...
...
@@ -5,45 +5,68 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
@Getter
@Setter
public
class
InspectDTO
extends
BaseDTO
{
/** 自增列 */
/**
* 自增列
*/
private
Long
id
;
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 巡检时间 */
/**
* 巡检时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
inspectDate
;
private
Local
Date
inspectDate
;
/** 巡检方式(0远程、1现场) */
/**
* 巡检方式(0远程、1现场)
*/
private
Integer
type
;
/** 状态(0进行中、1待审核、2已完成、3、驳回) */
/**
* 状态(0进行中、1待审核、2已完成、3、驳回)
*/
private
Integer
status
;
/** 巡检人 */
/**
* 巡检人
*/
private
Integer
inspectUser
;
/** 审核人 */
/**
* 审核人
*/
private
Integer
reviewer
;
/** 完成时间 */
/**
* 完成时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finishDate
;
private
Local
Date
finishDate
;
/** 审核时间 */
/**
* 审核时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
auditDate
;
private
Local
Date
auditDate
;
/** 备注 */
/**
* 备注
*/
private
String
remark
;
/** 集团id */
/**
* 集团id
*/
private
Long
accountId
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
startdate
;
private
LocalDateTim
e
startdate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
enddate
;
private
LocalDateTim
e
enddate
;
}
src/main/java/vion/dto/InvoiceDTO.java
View file @
60d82ba
...
...
@@ -7,7 +7,7 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
@Getter
...
...
@@ -24,7 +24,7 @@ public class InvoiceDTO extends BaseDTO {
* 开票时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
invoicingTime
;
private
Local
Date
invoicingTime
;
/**
* 发票金额
...
...
@@ -47,9 +47,9 @@ public class InvoiceDTO extends BaseDTO {
private
String
serialNo
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
invoicingTimeStart
;
private
Local
Date
invoicingTimeStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
invoicingTimeEnd
;
private
Local
Date
invoicingTimeEnd
;
private
OrderItem
orderItem
;
...
...
src/main/java/vion/dto/PaymentDTO.java
View file @
60d82ba
...
...
@@ -7,7 +7,7 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
/**
* 收款记录表
...
...
@@ -31,7 +31,7 @@ public class PaymentDTO extends BaseDTO {
* 收款时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
collectionTime
;
private
Local
Date
collectionTime
;
/**
* 收款金额
...
...
@@ -47,10 +47,10 @@ public class PaymentDTO extends BaseDTO {
* 收款开始时间、结束时间
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
collectionTimeStart
;
private
Local
Date
collectionTimeStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
collectionTimeEnd
;
private
Local
Date
collectionTimeEnd
;
private
OrderItem
orderItem
;
...
...
src/main/java/vion/dto/PointInfoDTO.java
View file @
60d82ba
...
...
@@ -200,14 +200,20 @@ public class PointInfoDTO extends BaseDTO {
private
MultipartFile
[]
files
;
/** 客户上传合同文件 */
/**
* 客户上传合同文件
*/
private
MultipartFile
contractFile
;
/** 上传的合同范本 */
/**
* 上传的合同范本
*/
private
MultipartFile
contractTemplateFile
;
/* 终版合同 */
private
MultipartFile
finalContractFile
;
/** 微信 openid 和昵称 */
/**
* 微信 openid 和昵称
*/
private
String
openid
;
private
String
nickname
;
...
...
src/main/java/vion/dto/RContractTeamDTO.java
View file @
60d82ba
...
...
@@ -3,7 +3,7 @@ package vion.dto;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -36,12 +36,12 @@ public class RContractTeamDTO extends BaseDTO {
/**
* 分配日期
*/
private
Dat
e
assignDate
;
private
LocalDateTim
e
assignDate
;
/**
* 完成日期
*/
private
Dat
e
finishDate
;
private
LocalDateTim
e
finishDate
;
/**
* 施工状态
...
...
src/main/java/vion/dto/RepairRecDTO.java
View file @
60d82ba
...
...
@@ -6,7 +6,8 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -87,7 +88,7 @@ public class RepairRecDTO extends BaseDTO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -119,14 +120,14 @@ public class RepairRecDTO extends BaseDTO {
private
MultipartFile
[]
files
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
createTimeStart
;
private
LocalDateTim
e
createTimeStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
createTimeEnd
;
private
LocalDateTim
e
createTimeEnd
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDateStart
;
private
Local
Date
shipDateStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDateEnd
;
private
Local
Date
shipDateEnd
;
private
String
deviceName
;
private
String
deviceNo
;
...
...
src/main/java/vion/dto/RoleDTO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -36,8 +36,8 @@ public class RoleDTO extends BaseDTO {
private
String
remark
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
startDate
;
private
LocalDateTim
e
startDate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
endDate
;
private
LocalDateTim
e
endDate
;
}
src/main/java/vion/dto/ServiceOrderDTO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -12,64 +12,102 @@ import java.util.Date;
*/
@Getter
@Setter
public
class
ServiceOrderDTO
extends
BaseDTO
{
public
class
ServiceOrderDTO
extends
BaseDTO
{
/** 项目名称 */
/**
* 项目名称
*/
private
String
projectName
;
/** 报修人 */
/**
* 报修人
*/
private
String
submitter
;
/** 报修人手机号码 */
/**
* 报修人手机号码
*/
private
String
submitPhone
;
/** 报修时间 */
/**
* 报修时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
submitTime
;
private
LocalDateTim
e
submitTime
;
/** 维修人 */
/**
* 维修人
*/
private
String
repairPeople
;
/** 维修人手机号码*/
/**
* 维修人手机号码
*/
private
String
repairPhone
;
/** 部门 */
/**
* 部门
*/
private
String
dept
;
/** 服务方式(1.电话支持 2.远程服务 3.现场服务) */
/**
* 服务方式(1.电话支持 2.远程服务 3.现场服务)
*/
private
Integer
serviceType
;
/** 耗时 */
/**
* 耗时
*/
private
Double
time
;
/** 故障内容 */
/**
* 故障内容
*/
private
String
faultContent
;
/** 维修结果 */
/**
* 维修结果
*/
private
String
repairRes
;
/** 客户评价 */
/**
* 客户评价
*/
private
String
review
;
/** 工单id */
/**
* 工单id
*/
private
Long
taskId
;
/** 服务单状态 */
/**
* 服务单状态
*/
private
Integer
state
;
/** 五星好评 */
/**
* 五星好评
*/
private
Integer
stars
;
/** 签字图片base64 */
/**
* 签字图片base64
*/
private
String
signPic
;
/** 签字时间 */
/**
* 签字时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/** 完成时间 */
/**
* 完成时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
finishTime
;
/** 项目id */
private
LocalDateTime
finishTime
;
/**
* 项目id
*/
private
Long
storeId
;
}
src/main/java/vion/dto/SparePartDTO.java
View file @
60d82ba
...
...
@@ -6,7 +6,8 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -82,7 +83,7 @@ public class SparePartDTO extends BaseDTO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -114,18 +115,20 @@ public class SparePartDTO extends BaseDTO {
*/
private
String
uuid
;
/** 微信用户id */
/**
* 微信用户id
*/
private
String
openid
;
private
MultipartFile
[]
files
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
createTimeStart
;
private
LocalDateTim
e
createTimeStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
createTimeEnd
;
private
LocalDateTim
e
createTimeEnd
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDateStart
;
private
Local
Date
shipDateStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
shipDateEnd
;
private
Local
Date
shipDateEnd
;
}
\ No newline at end of file
src/main/java/vion/dto/StatusDTO.java
View file @
60d82ba
...
...
@@ -7,13 +7,21 @@ import org.springframework.web.multipart.MultipartFile;
@Getter
@Setter
public
class
StatusDTO
{
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 阶段 */
/**
* 阶段
*/
private
Integer
projectStage
;
/** 文件来源 */
/**
* 文件来源
*/
private
Integer
sourceType
;
/** 来源id */
/**
* 来源id
*/
private
Long
sourceId
;
private
MultipartFile
[]
files
;
}
src/main/java/vion/dto/StoreDTO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -16,69 +17,121 @@ import java.util.List;
public
class
StoreDTO
extends
BaseDTO
{
private
Long
id
;
private
List
<
Long
>
ids
;
/** 门店名称 */
private
String
name
;
/** 销售人 */
/**
* 门店名称
*/
private
String
name
;
/**
* 销售人
*/
private
Integer
salesperson
;
/** 客户姓名 */
/**
* 客户姓名
*/
private
String
customerName
;
/** 实施类型:0纯供货、1供货+安装、3续保、4维修 */
/**
* 实施类型:0纯供货、1供货+安装、3续保、4维修
*/
private
Integer
implementType
;
/** 项目状态:0待确认、1进行中、2已完成、3挂起 */
/**
* 项目状态:0待确认、1进行中、2已完成、3挂起
*/
private
Integer
projectState
;
/** 联系人(多个联系人逗号隔开) */
/**
* 联系人(多个联系人逗号隔开)
*/
private
String
contacts
;
/** 创建者 */
/**
* 创建者
*/
private
Long
createUser
;
/** 修改者 */
/**
* 修改者
*/
private
Long
modifyUser
;
/** 备注 */
/**
* 备注
*/
private
String
remark
;
/** 项目阶段 */
/**
* 项目阶段
*/
private
Integer
projectStage
;
/** 集团id */
/**
* 集团id
*/
private
Long
accountId
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
startdate
;
private
LocalDateTim
e
startdate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
enddate
;
/** 立项日期 */
private
LocalDateTime
enddate
;
/**
* 立项日期
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
estDate
;
private
Local
Date
estDate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
estDateStart
;
private
Local
Date
estDateStart
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
estDateEnd
;
/** 主合同id */
private
LocalDate
estDateEnd
;
/**
* 主合同id
*/
private
Long
masterContract
;
/** 维保状态 */
/**
* 维保状态
*/
private
String
maintainStatus
;
/** 产品线属性 */
/**
* 产品线属性
*/
private
Integer
productLine
;
/** 是否重点项目 0:不是 1:是 */
/**
* 是否重点项目 0:不是 1:是
*/
private
Integer
isImportant
;
/** 任务详情 */
/**
* 任务详情
*/
private
String
taskDetail
;
/** 预计完成日期 */
/**
* 预计完成日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finishDate
;
/** 完成百分比 */
private
LocalDate
finishDate
;
/**
* 完成百分比
*/
private
Double
percentage
;
/** 当前卡点 */
/**
* 当前卡点
*/
private
String
stuckPoint
;
/** 标签id */
/**
* 标签id
*/
private
Long
tagId
;
/** 项目负责人 or 项目经理 */
/**
* 项目负责人 or 项目经理
*/
private
Long
mainUser
;
/** 主要产品 */
/**
* 主要产品
*/
private
Integer
mainProduct
;
/** 点位数量 */
/**
* 点位数量
*/
private
Integer
pointNum
;
/** 计划完成日期 */
/**
* 计划完成日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
planFinishDate
;
/** 项目规模 */
private
LocalDate
planFinishDate
;
/**
* 项目规模
*/
private
Integer
projectSize
;
/**
* 巡检次数
...
...
src/main/java/vion/dto/TaskDTO.java
View file @
60d82ba
...
...
@@ -6,7 +6,8 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -22,7 +23,7 @@ public class TaskDTO extends BaseDTO {
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/**
* 故障类型
*/
...
...
@@ -48,7 +49,7 @@ public class TaskDTO extends BaseDTO {
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
solveDate
;
private
Local
Date
solveDate
;
/**
* 故障原因
*/
...
...
@@ -75,7 +76,7 @@ public class TaskDTO extends BaseDTO {
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
expDate
;
private
Local
Date
expDate
;
/**
* 备注
...
...
@@ -93,11 +94,11 @@ public class TaskDTO extends BaseDTO {
private
MultipartFile
[]
files
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
startdate
;
private
LocalDateTim
e
startdate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
enddate
;
private
LocalDateTim
e
enddate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
curDate
;
private
Local
Date
curDate
;
/**
* 工时
*/
...
...
src/main/java/vion/dto/TaskTempDTO.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -22,7 +22,7 @@ public class TaskTempDTO extends BaseDTO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/**
* 故障说明
*/
...
...
@@ -53,7 +53,7 @@ public class TaskTempDTO extends BaseDTO {
private
MultipartFile
[]
files
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
startdate
;
private
LocalDateTim
e
startdate
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Dat
e
enddate
;
private
LocalDateTim
e
enddate
;
}
src/main/java/vion/dto/UserDTO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 用户信息
...
...
@@ -18,15 +18,19 @@ public class UserDTO extends BaseDTO {
private
String
phone
;
private
Long
deptId
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
private
String
remark
;
/** 是否是预工单处理人 0:不是 1:是 */
/**
* 是否是预工单处理人 0:不是 1:是
*/
private
Integer
preWorkOrder
;
/** 员工状态 2:试用期 3:正式 5:待离职 -1:无状态 */
/**
* 员工状态 2:试用期 3:正式 5:待离职 -1:无状态
*/
private
Integer
employeeStatus
;
/* 状态 0:正常 1:禁用 */
...
...
src/main/java/vion/mapper/DictionaryMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.Dictionary
;
public
interface
DictionaryMapper
extends
MPJBaseMapper
<
Dictionary
>
{
}
src/main/java/vion/mapper/DictionaryTypeMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.DictionaryType
;
public
interface
DictionaryTypeMapper
extends
MPJBaseMapper
<
DictionaryType
>
{
}
src/main/java/vion/mapper/FaultLogMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.FaultLog
;
public
interface
FaultLogMapper
extends
MPJBaseMapper
<
FaultLog
>
{
}
src/main/java/vion/mapper/FileMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.FileInfo
;
public
interface
FileMapper
extends
MPJBaseMapper
<
FileInfo
>
{
}
src/main/java/vion/mapper/InspectMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.Inspect
;
public
interface
InspectMapper
extends
MPJBaseMapper
<
Inspect
>
{
}
src/main/java/vion/mapper/SparePartMapper.java
View file @
60d82ba
package
vion
.
mapper
;
package
vion
.
mapper
;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.SparePart
;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.SparePart
;
/**
* @author HlQ
...
...
src/main/java/vion/mapper/StoreMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.Store
;
public
interface
StoreMapper
extends
MPJBaseMapper
<
Store
>
{
}
src/main/java/vion/mapper/TaskMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.Task
;
public
interface
TaskMapper
extends
MPJBaseMapper
<
Task
>
{
}
src/main/java/vion/mapper/TaskTempMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.TaskTemp
;
public
interface
TaskTempMapper
extends
MPJBaseMapper
<
TaskTemp
>
{
}
src/main/java/vion/mapper/UserMapper.java
View file @
60d82ba
...
...
@@ -2,5 +2,6 @@ package vion.mapper;
import
com.github.yulichang.base.MPJBaseMapper
;
import
vion.model.User
;
public
interface
UserMapper
extends
MPJBaseMapper
<
User
>
{
}
src/main/java/vion/model/Account.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -29,14 +29,14 @@ public class Account extends BaseDTO {
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 备注
...
...
src/main/java/vion/model/ConstructionTeam.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import lombok.Setter;
import
vion.dto.ConstructionTeamDTO
;
import
vion.vo.ConstructionTeamVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 施工队信息表
...
...
@@ -37,8 +37,8 @@ public class ConstructionTeam {
private
String
city
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Contract.java
View file @
60d82ba
...
...
@@ -10,7 +10,8 @@ import vion.dto.ContractDTO;
import
vion.vo.ContractVO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
...
...
@@ -49,19 +50,19 @@ public class Contract {
* 合同签订日期
*/
@TableField
(
value
=
"sign_date"
)
private
Date
signDate
;
private
Local
Date
signDate
;
/**
* 合同维保开始日期
*/
@TableField
(
value
=
"maintain_sdate"
)
private
Date
maintainSdate
;
private
Local
Date
maintainSdate
;
/**
* 合同维保结束日期
*/
@TableField
(
value
=
"maintain_edate"
)
private
Date
maintainEdate
;
private
Local
Date
maintainEdate
;
/**
* 合同进度:1-签订 2-到货 3-系统验收(初验) 4-项目验收(终验) 5-质保 6-第一笔维保款 7-第二笔维保款 8-第三笔维保款 9-维保进度款 10-维保验收款
...
...
@@ -140,13 +141,13 @@ public class Contract {
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 合同质保周期(月)
...
...
@@ -158,7 +159,7 @@ public class Contract {
* 终验日期,目前取值为合同阶段为系统初验或者终验的 nodeDate
*/
@TableField
(
value
=
"final_date"
)
private
Date
finalDate
;
private
Local
Date
finalDate
;
/**
* 开票金额
...
...
@@ -170,7 +171,7 @@ public class Contract {
* 录入时间
*/
@TableField
(
value
=
"entry_time"
)
private
Dat
e
entryTime
;
private
LocalDateTim
e
entryTime
;
/**
* 财务状态
...
...
@@ -185,7 +186,7 @@ public class Contract {
private
String
backInfo
;
@TableField
(
exist
=
false
)
private
Dat
e
originalModTime
;
private
LocalDateTim
e
originalModTime
;
/**
* 合同签订付款比例
...
...
@@ -197,7 +198,7 @@ public class Contract {
* 合同签订付款日期
*/
@TableField
(
exist
=
false
)
private
Date
signDate1
;
private
Local
Date
signDate1
;
/**
* 合同到货付款比例
...
...
@@ -209,7 +210,7 @@ public class Contract {
* 合同到货付款日期
*/
@TableField
(
exist
=
false
)
private
Date
arriveDate
;
private
Local
Date
arriveDate
;
/**
* 合同系统验收付款比例
...
...
@@ -221,7 +222,7 @@ public class Contract {
* 合同系统验收付款日期
*/
@TableField
(
exist
=
false
)
private
Date
systemCheckDate
;
private
Local
Date
systemCheckDate
;
/**
* 合同项目验收付款比例
...
...
@@ -233,7 +234,7 @@ public class Contract {
* 合同项目验收付款日期
*/
@TableField
(
exist
=
false
)
private
Date
projectCheckDate
;
private
Local
Date
projectCheckDate
;
/**
* 合同质保付款比例
...
...
@@ -245,7 +246,7 @@ public class Contract {
* 合同质保付款日期
*/
@TableField
(
exist
=
false
)
private
Date
warrantyDate
;
private
Local
Date
warrantyDate
;
/**
* 合同维保付款比例1
...
...
@@ -257,7 +258,7 @@ public class Contract {
* 合同维保付款日期1
*/
@TableField
(
exist
=
false
)
private
Date
maintainDate1
;
private
Local
Date
maintainDate1
;
/**
* 合同维保付款比例2
...
...
@@ -269,7 +270,7 @@ public class Contract {
* 合同维保付款日期2
*/
@TableField
(
exist
=
false
)
private
Date
maintainDate2
;
private
Local
Date
maintainDate2
;
/**
* 合同维保付款比例3
...
...
@@ -281,7 +282,7 @@ public class Contract {
* 合同维保付款日期3
*/
@TableField
(
exist
=
false
)
private
Date
maintainDate3
;
private
Local
Date
maintainDate3
;
/**
* 维保进度款
...
...
@@ -293,7 +294,7 @@ public class Contract {
* 维保进度款付款日期
*/
@TableField
(
exist
=
false
)
private
Date
maintainProgressDate
;
private
Local
Date
maintainProgressDate
;
/**
* 维保验收款
...
...
@@ -305,5 +306,5 @@ public class Contract {
* 维保验收款付款日期
*/
@TableField
(
exist
=
false
)
private
Date
maintainAcceptanceDate
;
private
Local
Date
maintainAcceptanceDate
;
}
\ No newline at end of file
src/main/java/vion/model/ContractLog.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -47,9 +48,9 @@ public class ContractLog {
*/
@TableField
(
value
=
"rec_time"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
recTime
;
private
Local
Date
recTime
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
}
\ No newline at end of file
src/main/java/vion/model/ContractPayment.java
View file @
60d82ba
...
...
@@ -9,7 +9,8 @@ import vion.dto.ContractPaymentDTO;
import
vion.vo.ContractPaymentVO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 合同收款方式
...
...
@@ -47,13 +48,13 @@ public class ContractPayment {
* 收款日期
*/
@TableField
(
value
=
"payment_date"
)
private
Date
paymentDate
;
private
Local
Date
paymentDate
;
/**
* 节点日期,指合同到这一阶段时的时间
*/
@TableField
(
value
=
"node_date"
)
private
Date
nodeDate
;
private
Local
Date
nodeDate
;
/**
* 创建者
...
...
@@ -71,11 +72,11 @@ public class ContractPayment {
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
}
\ No newline at end of file
src/main/java/vion/model/DeliverLog.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Setter;
import
vion.dto.DeliverLogDTO
;
import
vion.vo.DeliverLogVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 项目交付人员日志
...
...
@@ -52,7 +53,7 @@ public class DeliverLog {
* 日志日期
*/
@TableField
(
value
=
"log_date"
)
private
Date
logDate
;
private
Local
Date
logDate
;
/**
* 干系人
...
...
@@ -82,11 +83,11 @@ public class DeliverLog {
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/DeliveryRecord.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Setter;
import
vion.dto.DeliveryRecordDTO
;
import
vion.vo.DeliveryRecordVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 发货记录表
...
...
@@ -36,15 +37,21 @@ public class DeliveryRecord {
@TableField
(
value
=
"contract_id"
)
private
Long
contractId
;
/** 收货人 */
/**
* 收货人
*/
@TableField
(
value
=
"consignee"
)
private
String
consignee
;
/** 收货地址 */
/**
* 收货地址
*/
@TableField
(
value
=
"address"
)
private
String
address
;
/** 收货电话 */
/**
* 收货电话
*/
@TableField
(
value
=
"phone"
)
private
String
phone
;
...
...
@@ -52,13 +59,13 @@ public class DeliveryRecord {
* 发货日期
*/
@TableField
(
value
=
"ship_date"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 到货签收日期
*/
@TableField
(
value
=
"sign_date"
)
private
Date
signDate
;
private
Local
Date
signDate
;
/**
* 快递公司
...
...
@@ -87,11 +94,11 @@ public class DeliveryRecord {
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Dept.java
View file @
60d82ba
...
...
@@ -5,11 +5,11 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
@TableName
(
value
=
"tbl_dept_info"
)
@TableName
(
value
=
"tbl_dept_info"
)
public
class
Dept
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
...
...
@@ -18,9 +18,9 @@ public class Dept {
private
Long
parentId
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
}
\ No newline at end of file
src/main/java/vion/model/Device.java
View file @
60d82ba
...
...
@@ -7,7 +7,8 @@ import lombok.Data;
import
vion.dto.DeviceDTO
;
import
vion.vo.DeviceVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 设备表
...
...
@@ -68,7 +69,7 @@ public class Device {
* 入库日期
*/
@TableField
(
value
=
"rec_date"
)
private
Date
recDate
;
private
Local
Date
recDate
;
/**
* 备注
...
...
@@ -77,8 +78,8 @@ public class Device {
private
String
remark
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/DeviceLog.java
View file @
60d82ba
...
...
@@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.annotation.*;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
* @date 2024/8/12
*/
/**
* 设备变更日志表
*/
...
...
@@ -39,5 +40,5 @@ public class DeviceLog {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
}
\ No newline at end of file
src/main/java/vion/model/Dictionary.java
View file @
60d82ba
...
...
@@ -8,11 +8,11 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.DictionaryDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
@TableName
(
value
=
"tbl_dictionary_info"
)
@TableName
(
value
=
"tbl_dictionary_info"
)
@AutoMappers
({
@AutoMapper
(
target
=
DictionaryDTO
.
class
),
})
...
...
@@ -24,13 +24,17 @@ public class Dictionary {
private
Integer
key
;
private
String
value
;
private
String
remark
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
src/main/java/vion/model/DictionaryType.java
View file @
60d82ba
...
...
@@ -8,11 +8,11 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.DictionaryTypeDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
@TableName
(
value
=
"tbl_dictionary_type"
)
@TableName
(
value
=
"tbl_dictionary_type"
)
@AutoMappers
({
@AutoMapper
(
target
=
DictionaryTypeDTO
.
class
),
})
...
...
@@ -24,13 +24,17 @@ public class DictionaryType {
private
String
type
;
private
String
remark
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
src/main/java/vion/model/FaultLog.java
View file @
60d82ba
...
...
@@ -5,33 +5,49 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 工单操作记录
*/
@Getter
@Setter
@TableName
(
value
=
"tbl_fault_log"
)
@TableName
(
value
=
"tbl_fault_log"
)
public
class
FaultLog
{
/** 自增列 */
/**
* 自增列
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 工单id */
/**
* 工单id
*/
private
Long
taskId
;
/** 操作者 */
/**
* 操作者
*/
private
Long
operator
;
/** 操作内容 */
/**
* 操作内容
*/
private
String
content
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
/** 备注 */
private
LocalDateTime
createTime
;
/**
* 备注
*/
private
String
remark
;
/** 工时 */
/**
* 工时
*/
private
Double
manHour
;
}
src/main/java/vion/model/FileInfo.java
View file @
60d82ba
...
...
@@ -8,14 +8,14 @@ import lombok.Setter;
import
vion.dto.FileInfoDTO
;
import
vion.vo.FileInfoVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 文件信息
*/
@Getter
@Setter
@TableName
(
value
=
"tbl_file_info"
)
@TableName
(
value
=
"tbl_file_info"
)
@AutoMappers
({
@AutoMapper
(
target
=
FileInfoDTO
.
class
),
@AutoMapper
(
target
=
FileInfoVO
.
class
),
...
...
@@ -23,9 +23,13 @@ import java.util.Date;
public
class
FileInfo
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 项目id */
/**
* 项目id
*/
private
Long
storeId
;
/** 文件扩展名 */
/**
* 文件扩展名
*/
private
String
type
;
/**
* 文件来源
...
...
@@ -38,22 +42,38 @@ public class FileInfo {
* <br>24验收报告,25竣工图纸,26点位表,27项目总结,28前期勘察,29巡检报告,30结算资料,31启动会</br>
*/
private
Integer
sourceType
;
/** 文件来源id */
/**
* 文件来源id
*/
private
Long
sourceId
;
/** 合同id */
/**
* 合同id
*/
private
Long
contractId
;
/** 文件名称 */
/**
* 文件名称
*/
@TableField
(
condition
=
SqlCondition
.
LIKE
)
private
String
name
;
/** 文件地址 */
/**
* 文件地址
*/
private
String
url
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Date
createTime
;
/** 备注 */
private
LocalDateTime
createTime
;
/**
* 备注
*/
private
String
remark
;
/** sha256 */
/**
* sha256
*/
private
String
sha256
;
/** 上传人 */
/**
* 上传人
*/
private
String
uploader
;
}
src/main/java/vion/model/Form.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import vion.config.JsonbTypeHandler;
import
vion.dto.FormDTO
;
import
vion.vo.FormVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
...
...
@@ -60,7 +60,7 @@ public class Form {
* 签字时间
*/
@TableField
(
value
=
"sign_time"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/**
* 唯一uuid
...
...
@@ -87,8 +87,8 @@ public class Form {
private
Long
updateUser
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Inspect.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Setter;
import
vion.dto.InspectDTO
;
import
vion.vo.InspectVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 巡检信息
...
...
@@ -21,40 +22,66 @@ import java.util.Date;
@AutoMapper
(
target
=
InspectDTO
.
class
),
})
public
class
Inspect
{
/** 自增列 */
/**
* 自增列
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 巡检时间 */
/**
* 巡检时间
*/
@OrderBy
private
Date
inspectDate
;
private
Local
Date
inspectDate
;
/** 巡检方式(0远程、1现场) */
/**
* 巡检方式(0远程、1现场)
*/
private
Integer
type
;
/** 状态(0进行中、1待审核、2已完成、3、驳回) */
/**
* 状态(0进行中、1待审核、2已完成、3、驳回)
*/
private
Integer
status
;
/** 巡检人 */
/**
* 巡检人
*/
private
Integer
inspectUser
;
/** 审核人 */
/**
* 审核人
*/
private
Integer
reviewer
;
/** 巡检时间 */
private
Date
finishDate
;
/**
* 巡检时间
*/
private
LocalDate
finishDate
;
/** 审核时间 */
private
Date
auditDate
;
/**
* 审核时间
*/
private
LocalDate
auditDate
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 修改时间 */
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Date
modifyTime
;
/** 备注 */
private
LocalDateTime
modifyTime
;
/**
* 备注
*/
private
String
remark
;
/** 集团id */
/**
* 集团id
*/
private
Long
accountId
;
}
src/main/java/vion/model/Invoice.java
View file @
60d82ba
...
...
@@ -9,7 +9,8 @@ import vion.dto.InvoiceDTO;
import
vion.vo.InvoiceVO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
...
...
@@ -36,7 +37,7 @@ public class Invoice {
* 开票时间
*/
@TableField
(
value
=
"invoicing_time"
)
private
Date
invoicingTime
;
private
Local
Date
invoicingTime
;
/**
* 发票金额
...
...
@@ -63,8 +64,8 @@ public class Invoice {
private
String
serialNo
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Payment.java
View file @
60d82ba
...
...
@@ -9,7 +9,8 @@ import vion.dto.PaymentDTO;
import
vion.vo.PaymentVO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 收款记录表
...
...
@@ -41,7 +42,7 @@ public class Payment {
* 收款时间
*/
@TableField
(
value
=
"collection_time"
)
private
Date
collectionTime
;
private
Local
Date
collectionTime
;
/**
* 收款金额
...
...
@@ -56,8 +57,8 @@ public class Payment {
private
String
remark
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/PointInfo.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import lombok.Setter;
import
vion.dto.PointInfoDTO
;
import
vion.vo.PointInfoVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -236,8 +236,8 @@ public class PointInfo {
private
String
uuid
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RContractProduct.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -93,9 +93,9 @@ public class RContractProduct {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RContractStore.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.RContractStoreDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
...
...
@@ -53,12 +53,12 @@ public class RContractStore {
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
}
\ No newline at end of file
src/main/java/vion/model/RContractTeam.java
View file @
60d82ba
...
...
@@ -11,11 +11,12 @@ import lombok.Setter;
import
vion.dto.RContractTeamDTO
;
import
vion.vo.RContractTeamVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 合同与施工队关联表
*/
* 合同与施工队关联表
*/
@Getter
@Setter
@TableName
(
value
=
"r_contract_team"
)
...
...
@@ -55,13 +56,13 @@ public class RContractTeam {
* 分配日期
*/
@TableField
(
value
=
"assign_date"
)
private
Date
assignDate
;
private
Local
Date
assignDate
;
/**
* 完成日期
*/
@TableField
(
value
=
"finish_date"
)
private
Date
finishDate
;
private
Local
Date
finishDate
;
/**
* 施工状态
...
...
@@ -88,8 +89,8 @@ public class RContractTeam {
private
String
remark
;
@TableField
(
value
=
"create_time"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RContractUser.java
View file @
60d82ba
...
...
@@ -6,7 +6,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -54,9 +55,9 @@ public class RContractUser extends BaseDTO {
*/
@TableField
(
value
=
"enter_date"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
enterDate
;
private
Local
Date
enterDate
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
}
\ No newline at end of file
src/main/java/vion/model/RPointDevice.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -32,9 +32,9 @@ public class RPointDevice {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RPointWx.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -38,9 +38,9 @@ public class RPointWx {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RRepairDevice.java
View file @
60d82ba
...
...
@@ -10,7 +10,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
...
...
@@ -136,9 +136,9 @@ public class RRepairDevice extends BaseDTO {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RRoleResource.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.RRoleResourceDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -36,13 +36,17 @@ public class RRoleResource {
@TableField
(
value
=
"resource_id"
)
private
Long
resourceId
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RStoreConfederate.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 项目干系人
...
...
@@ -47,12 +47,12 @@ public class RStoreConfederate extends BaseDTO {
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RStoreTag.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -32,9 +32,9 @@ public class RStoreTag {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RStoreUser.java
View file @
60d82ba
...
...
@@ -5,15 +5,16 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
* @date 2023/12/27
*/
/**
* 项目与用户关联表
*/
* 项目与用户关联表
*/
@Getter
@Setter
@TableName
(
value
=
"r_store_user"
)
...
...
@@ -43,11 +44,11 @@ public class RStoreUser {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@OrderBy
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
@TableField
(
exist
=
false
)
private
RStoreUser
[]
storeUsers
;
...
...
src/main/java/vion/model/RUserRole.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.RUserRoleDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -41,12 +41,12 @@ public class RUserRole {
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RejectInfo.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -39,9 +39,9 @@ public class RejectInfo extends BaseDTO {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/RepairRec.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Setter;
import
vion.dto.RepairRecDTO
;
import
vion.vo.RepairRecVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -108,7 +109,7 @@ public class RepairRec {
* 发货日期
*/
@TableField
(
value
=
"ship_date"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -144,8 +145,8 @@ public class RepairRec {
private
String
remark
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Resource.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import lombok.Setter;
import
vion.dto.ResourceDTO
;
import
vion.vo.ResourceVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -74,14 +74,18 @@ public class Resource {
@TableField
(
value
=
"remark"
)
private
String
remark
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Role.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import lombok.Setter;
import
vion.dto.RoleDTO
;
import
vion.vo.RoleVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 角色表
...
...
@@ -49,14 +49,18 @@ public class Role {
@TableField
(
value
=
"remark"
)
private
String
remark
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/ServiceOrder.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import lombok.Setter;
import
vion.dto.ServiceOrderDTO
;
import
vion.vo.ServiceOrderVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -22,74 +22,116 @@ public class ServiceOrder {
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 项目名称 */
/**
* 项目名称
*/
private
String
projectName
;
/** 报修人 */
/**
* 报修人
*/
private
String
submitter
;
/** 报修人手机号码 */
/**
* 报修人手机号码
*/
private
String
submitPhone
;
/** 报修时间 */
/**
* 报修时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
submitTime
;
private
LocalDateTim
e
submitTime
;
/** 维修人 */
/**
* 维修人
*/
private
String
repairPeople
;
/** 维修人手机号码*/
/**
* 维修人手机号码
*/
private
String
repairPhone
;
/** 部门 */
/**
* 部门
*/
private
String
dept
;
/** 服务方式(1.电话支持 2.远程服务 3.现场服务) */
/**
* 服务方式(1.电话支持 2.远程服务 3.现场服务)
*/
private
Integer
serviceType
;
/** 耗时 */
/**
* 耗时
*/
private
Double
time
;
/** 故障内容 */
/**
* 故障内容
*/
private
String
faultContent
;
/** 维修结果 */
/**
* 维修结果
*/
private
String
repairRes
;
/** 客户评价 */
/**
* 客户评价
*/
private
String
review
;
/** 工单id */
/**
* 工单id
*/
private
Long
taskId
;
/** 服务单状态 */
/**
* 服务单状态
*/
private
Integer
state
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
/** 五星好评 */
/**
* 五星好评
*/
private
Integer
stars
;
/** 签字图片base64 */
/**
* 签字图片base64
*/
private
String
signPic
;
/** 签字时间 */
/**
* 签字时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/** 完成时间 */
/**
* 完成时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
finishTime
;
private
LocalDateTim
e
finishTime
;
/** 唯一id */
/**
* 唯一id
*/
private
String
unid
;
}
src/main/java/vion/model/SettlementDiff.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import vion.dto.SettlementDiffDTO;
import
vion.vo.SettlementDiffVO
;
import
java.math.BigDecimal
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -72,5 +72,5 @@ public class SettlementDiff {
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
}
\ No newline at end of file
src/main/java/vion/model/SparePart.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Setter;
import
vion.dto.SparePartDTO
;
import
vion.vo.SparePartVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* @author HlQ
...
...
@@ -101,7 +102,7 @@ public class SparePart {
* 发货日期
*/
@TableField
(
value
=
"ship_date"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -139,13 +140,15 @@ public class SparePart {
@TableField
(
value
=
"uuid"
)
private
String
uuid
;
/** 微信用户id */
/**
* 微信用户id
*/
@TableField
(
value
=
"openid"
)
private
String
openid
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Store.java
View file @
60d82ba
...
...
@@ -9,7 +9,8 @@ import lombok.Setter;
import
vion.dto.StoreDTO
;
import
vion.vo.StoreVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 门店信息
...
...
@@ -27,7 +28,7 @@ public class Store {
/**
* 门店名称
*/
@TableField
(
condition
=
"%s ILIKE CONCAT('%%',#{%s},'%%')"
)
@TableField
(
condition
=
"%s ILIKE CONCAT('%%',#{%s},'%%')"
)
private
String
name
;
/**
* 销售人
...
...
@@ -59,14 +60,14 @@ public class Store {
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 备注
...
...
@@ -87,7 +88,7 @@ public class Store {
* 立项日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
estDate
;
private
Local
Date
estDate
;
/**
* 主合同id
...
...
@@ -117,7 +118,7 @@ public class Store {
/**
* 实际完成日期
*/
private
Date
finishDate
;
private
Local
Date
finishDate
;
/**
* 完成百分比
...
...
@@ -142,7 +143,7 @@ public class Store {
/**
* 计划完成日期
*/
private
Date
planFinishDate
;
private
Local
Date
planFinishDate
;
/**
* 项目规模
...
...
src/main/java/vion/model/StoreLog.java
View file @
60d82ba
...
...
@@ -7,11 +7,12 @@ import lombok.Setter;
import
org.springframework.format.annotation.DateTimeFormat
;
import
vion.dto.BaseDTO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 项目日志表
*/
* 项目日志表
*/
@Getter
@Setter
@TableName
(
value
=
"tbl_store_log"
)
...
...
@@ -31,7 +32,7 @@ public class StoreLog extends BaseDTO {
@TableField
(
value
=
"log_date"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
logDate
;
private
Local
Date
logDate
;
/**
* 记录人
...
...
@@ -48,9 +49,9 @@ public class StoreLog extends BaseDTO {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@OrderBy
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Tag.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.dto.BaseDTO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -33,9 +33,9 @@ public class Tag extends BaseDTO {
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/model/Task.java
View file @
60d82ba
...
...
@@ -10,7 +10,8 @@ import org.springframework.format.annotation.DateTimeFormat;
import
vion.dto.TaskDTO
;
import
vion.vo.TaskVO
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
@Getter
@Setter
...
...
@@ -35,7 +36,7 @@ public class Task {
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@OrderBy
(
sort
=
2
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/**
* 故障类型
*/
...
...
@@ -64,7 +65,7 @@ public class Task {
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
solveDate
;
private
Local
Date
solveDate
;
/**
* 故障原因
*/
...
...
@@ -90,21 +91,21 @@ public class Task {
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
expDate
;
private
Local
Date
expDate
;
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 备注
...
...
src/main/java/vion/model/TaskTemp.java
View file @
60d82ba
...
...
@@ -10,54 +10,76 @@ import org.springframework.format.annotation.DateTimeFormat;
import
vion.dto.TaskTempDTO
;
import
vion.vo.TaskTempVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
@TableName
(
value
=
"tbl_task_temp"
)
@TableName
(
value
=
"tbl_task_temp"
)
@AutoMappers
({
@AutoMapper
(
target
=
TaskTempVO
.
class
),
@AutoMapper
(
target
=
TaskTempDTO
.
class
),
})
public
class
TaskTemp
{
@TableId
(
type
=
IdType
.
AUTO
)
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 项目id */
/**
* 项目id
*/
private
Long
storeId
;
/** 项目名称(用户提交的名称) */
/**
* 项目名称(用户提交的名称)
*/
@TableField
(
condition
=
SqlCondition
.
LIKE
)
private
String
storeName
;
/** 报修时间 */
/**
* 报修时间
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@OrderBy
(
sort
=
2
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/** 故障说明 */
/**
* 故障说明
*/
private
String
faultDescription
;
/** 报修人 */
/**
* 报修人
*/
@TableField
(
condition
=
SqlCondition
.
LIKE
)
private
String
repairPeople
;
/** 联系方式 */
/**
* 联系方式
*/
@TableField
(
condition
=
SqlCondition
.
LIKE
)
private
String
repairPhone
;
/** 状态(1待确认、2进行中、3已确认) */
/**
* 状态(1待确认、2进行中、3已确认)
*/
@OrderBy
(
asc
=
true
,
sort
=
1
)
private
Integer
status
;
/** 操作人 */
/**
* 操作人
*/
private
Long
operator
;
/** 创建时间 */
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 修改时间 */
/**
* 修改时间
*/
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/** 备注 */
/**
* 备注
*/
private
String
remark
;
/**
...
...
@@ -70,7 +92,9 @@ public class TaskTemp {
*/
private
String
email
;
/** 微信用户id */
/**
* 微信用户id
*/
private
String
openid
;
}
src/main/java/vion/model/User.java
View file @
60d82ba
...
...
@@ -9,14 +9,14 @@ import lombok.Setter;
import
vion.dto.UserDTO
;
import
vion.vo.UserVO
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* 用户信息
*/
@Getter
@Setter
@TableName
(
value
=
"tbl_user_info"
)
@TableName
(
value
=
"tbl_user_info"
)
@AutoMappers
({
@AutoMapper
(
target
=
UserDTO
.
class
),
@AutoMapper
(
target
=
UserVO
.
class
),
...
...
@@ -31,16 +31,20 @@ public class User {
private
Long
deptId
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@TableField
(
value
=
"modify_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
private
String
remark
;
/** 是否是预工单处理人 0:不是 1:是 */
/**
* 是否是预工单处理人 0:不是 1:是
*/
private
Integer
preWorkOrder
;
/** 员工状态 2:试用期 3:正式 5:待离职 -1:无状态 */
/**
* 员工状态 2:试用期 3:正式 5:待离职 -1:无状态
*/
private
Integer
employeeStatus
;
/* 状态 0:正常 1:禁用 */
...
...
src/main/java/vion/service/IDeviceLogService.java
View file @
60d82ba
...
...
@@ -2,11 +2,12 @@ package vion.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
vion.model.DeviceLog
;
/**
/**
* @author HlQ
* @date 2024/8/12
*/
public
interface
IDeviceLogService
extends
IService
<
DeviceLog
>{
public
interface
IDeviceLogService
extends
IService
<
DeviceLog
>
{
}
src/main/java/vion/service/IRContractProductService.java
View file @
60d82ba
package
vion
.
service
;
import
vion.model.RContractProduct
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
import
vion.model.RContractProduct
;
/**
* @author HlQ
* @date 2024/3/26
*/
public
interface
IRContractProductService
extends
IService
<
RContractProduct
>{
public
interface
IRContractProductService
extends
IService
<
RContractProduct
>
{
}
src/main/java/vion/service/IRContractStoreService.java
View file @
60d82ba
package
vion
.
service
;
import
vion.model.RContractStore
;
import
com.github.yulichang.base.MPJBaseService
;
/**
import
vion.model.RContractStore
;
/**
* @author HlQ
* @date 2023/11/29
*/
public
interface
IRContractStoreService
extends
MPJBaseService
<
RContractStore
>{
public
interface
IRContractStoreService
extends
MPJBaseService
<
RContractStore
>
{
}
src/main/java/vion/service/IRContractTeamService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RContractTeam
;
/**
/**
* @author HlQ
* @date 2023/12/26
*/
...
...
src/main/java/vion/service/IRContractUserService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RContractUser
;
/**
/**
* @author HlQ
* @date 2023/12/28
*/
...
...
src/main/java/vion/service/IRPointDeviceService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RPointDevice
;
/**
/**
* @author HlQ
* @date 2024/1/12
*/
...
...
src/main/java/vion/service/IRPointWxService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RPointWx
;
/**
/**
* @author HlQ
* @date 2024/1/12
*/
...
...
src/main/java/vion/service/IRRepairDeviceService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RRepairDevice
;
/**
/**
* @author HlQ
* @date 2024/1/25
*/
...
...
src/main/java/vion/service/IRRoleResourceService.java
View file @
60d82ba
package
vion
.
service
;
import
vion.model.RRoleResource
;
import
com.github.yulichang.base.MPJBaseService
;
/**
import
vion.model.RRoleResource
;
/**
* @author HlQ
* @date 2023/11/28
*/
public
interface
IRRoleResourceService
extends
MPJBaseService
<
RRoleResource
>{
public
interface
IRRoleResourceService
extends
MPJBaseService
<
RRoleResource
>
{
}
src/main/java/vion/service/IRStoreConfederateService.java
View file @
60d82ba
package
vion
.
service
;
import
vion.model.RStoreConfederate
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
vion.model.RStoreConfederate
;
public
interface
IRStoreConfederateService
extends
IService
<
RStoreConfederate
>
{
...
...
src/main/java/vion/service/IRStoreTagService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RStoreTag
;
/**
/**
* @author HlQ
* @date 2024/1/30
*/
...
...
src/main/java/vion/service/IRStoreUserService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RStoreUser
;
/**
/**
* @author HlQ
* @date 2023/12/27
*/
...
...
src/main/java/vion/service/IRUserRoleService.java
View file @
60d82ba
package
vion
.
service
;
import
vion.model.RUserRole
;
import
com.github.yulichang.base.MPJBaseService
;
/**
import
vion.model.RUserRole
;
/**
* @author HlQ
* @date 2023/11/28
*/
public
interface
IRUserRoleService
extends
MPJBaseService
<
RUserRole
>{
public
interface
IRUserRoleService
extends
MPJBaseService
<
RUserRole
>
{
}
src/main/java/vion/service/IRejectInfoService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.RejectInfo
;
/**
/**
* @author HlQ
* @date 2024/1/8
*/
...
...
src/main/java/vion/service/IResourceService.java
View file @
60d82ba
...
...
@@ -13,7 +13,7 @@ import java.util.List;
* @author HlQ
* @date 2023/11/28
*/
public
interface
IResourceService
extends
MPJBaseService
<
Resource
>{
public
interface
IResourceService
extends
MPJBaseService
<
Resource
>
{
Page
<
ResourceVO
>
list
(
ResourceDTO
dto
);
...
...
src/main/java/vion/service/IStoreLogService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.StoreLog
;
/**
/**
* @author HlQ
* @date 2023/12/27
*/
...
...
src/main/java/vion/service/ITagService.java
View file @
60d82ba
...
...
@@ -2,7 +2,8 @@ package vion.service;
import
com.github.yulichang.base.MPJBaseService
;
import
vion.model.Tag
;
/**
/**
* @author HlQ
* @date 2024/1/30
*/
...
...
src/main/java/vion/service/ITaskService.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import vion.dto.TaskDTO;
import
vion.model.Task
;
import
vion.vo.TaskVO
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -28,9 +28,10 @@ public interface ITaskService extends MPJBaseService<Task> {
String
urgeTask
(
Long
taskId
,
String
remark
);
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
);
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
LocalDate
startDate
,
LocalDate
endDate
,
Integer
source
,
List
<
Long
>
userIds
);
List
<
Map
<
String
,
Object
>>
proAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
);
List
<
Map
<
String
,
Object
>>
proAnalysis
(
LocalDate
startDate
,
Local
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
);
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
);
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
LocalDate
startDate
,
Local
Date
endDate
,
Integer
source
);
}
src/main/java/vion/service/ITaskTempService.java
View file @
60d82ba
...
...
@@ -11,6 +11,7 @@ import java.util.Map;
public
interface
ITaskTempService
extends
MPJBaseService
<
TaskTemp
>
{
Page
<
TaskTempVO
>
getTaskTempList
(
TaskTempDTO
data
);
TaskTempVO
getTaskTempById
(
Long
id
);
Object
saveTaskTemp
(
TaskTempDTO
data
);
...
...
src/main/java/vion/service/impl/ConstructionTeamServiceImpl.java
View file @
60d82ba
package
vion
.
service
.
impl
;
import
org.dromara.hutool.core.text.StrUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.yulichang.base.MPJBaseServiceImpl
;
import
com.github.yulichang.wrapper.MPJLambdaWrapper
;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.springframework.stereotype.Service
;
import
vion.dto.ConstructionTeamDTO
;
import
vion.dto.RContractTeamDTO
;
...
...
src/main/java/vion/service/impl/ContractPaymentServiceImpl.java
View file @
60d82ba
...
...
@@ -32,7 +32,7 @@ public class ContractPaymentServiceImpl extends MPJBaseServiceImpl<ContractPayme
* 当合同状态变化或者应收款变化时,重新计算款项
*
* @param existContract 数据库中当前合同记录
* @param dto 要变更的合同记录
* @param dto
要变更的合同记录
*/
@Override
public
void
calMoney
(
Contract
existContract
,
Contract
dto
)
{
...
...
src/main/java/vion/service/impl/ContractServiceImpl.java
View file @
60d82ba
...
...
@@ -19,8 +19,7 @@ import org.dromara.hutool.core.collection.CollUtil;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.collection.set.SetUtil
;
import
org.dromara.hutool.core.comparator.CompareUtil
;
import
org.dromara.hutool.core.date.DateUnit
;
import
org.dromara.hutool.core.date.DateUtil
;
import
org.dromara.hutool.core.date.TimeUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Assert
;
...
...
@@ -31,7 +30,6 @@ import org.dromara.hutool.core.text.StrUtil;
import
org.dromara.hutool.core.util.ObjUtil
;
import
org.dromara.hutool.crypto.SecureUtil
;
import
org.dromara.hutool.http.client.HttpDownloader
;
import
org.dromara.hutool.json.JSONObject
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.MediaType
;
import
org.springframework.scheduling.annotation.Scheduled
;
...
...
@@ -52,6 +50,9 @@ import vion.vo.*;
import
java.io.File
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.temporal.ChronoUnit
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -360,7 +361,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
"contract"
+
FileUtil
.
FILE_SEPARATOR
+
contract
.
getId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -432,7 +433,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
.
between
(
ArrayUtil
.
isAllNotNull
(
dto
.
getSignDateStart
(),
dto
.
getSignDateEnd
()),
Contract:
:
getSignDate
,
dto
.
getSignDateStart
(),
dto
.
getSignDateEnd
())
.
list
();
if
(
CollUtil
.
isEmpty
(
contractList
))
{
return
new
JSONObject
();
return
Map
.
of
();
}
Map
<
Long
,
List
<
ContractPayment
>>
id2PaymentMap
=
Opt
.
ofEmptyAble
(
contractPaymentService
...
...
@@ -441,7 +442,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
.
map
(
list
->
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
ContractPayment:
:
getContractId
)))
.
orElse
(
MapUtil
.
empty
());
if
(
MapUtil
.
isEmpty
(
id2PaymentMap
))
{
return
new
JSONObject
();
return
Map
.
of
();
}
List
<
FinancialAgeVO
>
financialAgeVOList
=
new
ArrayList
<>();
...
...
@@ -452,7 +453,8 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
}
BigDecimal
totalAmount
=
c
.
getTotalAmount
();
BigDecimal
paidAmount
=
c
.
getPaidAmount
();
Map
<
Integer
,
Date
>
type2DateMap
=
contractPaymentList
.
stream
().
filter
(
cp
->
cp
.
getPaymentType
()
<=
c
.
getStatus
()).
collect
(
HashMap:
:
new
,
(
m
,
v
)
->
m
.
put
(
v
.
getPaymentType
(),
v
.
getPaymentDate
()),
HashMap:
:
putAll
);
Map
<
Integer
,
LocalDate
>
type2DateMap
=
contractPaymentList
.
stream
().
filter
(
cp
->
cp
.
getPaymentType
()
<=
c
.
getStatus
()).
collect
(
HashMap:
:
new
,
(
m
,
v
)
->
m
.
put
(
v
.
getPaymentType
(),
v
.
getPaymentDate
()),
HashMap:
:
putAll
);
Map
<
Integer
,
BigDecimal
>
type2AmountMap
=
contractPaymentList
.
stream
().
filter
(
cp
->
cp
.
getPaymentType
()
<=
c
.
getStatus
()).
collect
(
Collectors
.
toMap
(
ContractPayment:
:
getPaymentType
,
v
->
NumberUtil
.
mul
(
v
.
getPaymentRatio
(),
totalAmount
)));
TreeMap
<
Integer
,
BigDecimal
>
sortMap
=
MapUtil
.
sort
(
type2AmountMap
,
Comparator
.
comparingInt
(
Integer:
:
intValue
));
...
...
@@ -475,7 +477,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
Opt
.
ofNullable
(
type2DateMap
.
get
(
type
)).
ifPresent
(
date
->
{
financialAgeVO
.
setPayableDate
(
date
);
long
age
=
DateUtil
.
between
(
date
,
new
Date
(),
DateUnit
.
DAY
,
true
);
long
age
=
Math
.
abs
(
date
.
until
(
LocalDate
.
now
(),
ChronoUnit
.
DAYS
)
);
financialAgeVO
.
setAge
(((
int
)
age
));
}
);
...
...
@@ -626,7 +628,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
ArrayNode
jsonArray
=
jobO
.
path
(
"result"
).
withArray
(
"list"
);
var
fileList
=
StreamSupport
.
stream
(
jsonArray
.
spliterator
(),
false
)
.
map
(
v
->
{
var
fileArr
=
v
.
path
(
"data"
).
withArray
(
"file_1"
);
var
fileArr
=
JsonUtil
.
parseTree
(
v
.
path
(
"data"
).
path
(
"file_1"
).
asText
()
);
var
contractNo
=
v
.
path
(
"data"
).
path
(
"serialNo"
).
asText
();
return
(
JsonNode
)
JsonUtil
.
createObj
().
put
(
"contractNo"
,
contractNo
).
set
(
"fileArr"
,
fileArr
);
}).
collect
(
Collectors
.
toList
());
...
...
@@ -839,7 +841,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
contract
.
getContractNo
(),
contract
.
getName
(),
applicantName
,
DateUtil
.
now
(
));
contract
.
getContractNo
(),
contract
.
getName
(),
applicantName
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"markdown"
,
markdown
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"action_card"
).
set
(
"action_card"
,
content
);
...
...
@@ -862,7 +864,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
contract
.
getContractNo
(),
contract
.
getName
(),
statusStr
,
DateUtil
.
formatDate
(
dto
.
getNodeDate
()),
DateUtil
.
now
(
));
contract
.
getContractNo
(),
contract
.
getName
(),
statusStr
,
dto
.
getNodeDate
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"text"
,
markdown
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
...
...
@@ -1048,8 +1050,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
var
result
=
jobj1
.
path
(
"result"
);
var
jsonObj1
=
result
.
path
(
"data"
);
Map
<
String
,
Integer
>
contractTypeMap
=
Db
.
list
(
Wrappers
.
lambdaQuery
(
Dictionary
.
class
).
eq
(
Dictionary:
:
getType
,
"contract_type"
))
Map
<
String
,
Integer
>
contractTypeMap
=
Db
.
list
(
Wrappers
.
lambdaQuery
(
Dictionary
.
class
).
eq
(
Dictionary:
:
getType
,
"contract_type"
))
.
stream
()
.
collect
(
Collectors
.
toMap
(
Dictionary:
:
getValue
,
Dictionary:
:
getKey
));
...
...
@@ -1057,9 +1058,9 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
xbongContract
.
setName
(
jsonObj1
.
path
(
"text_14"
).
asText
());
xbongContract
.
setContractNo
(
jsonObj1
.
path
(
"serialNo"
).
asText
());
xbongContract
.
setType
(
contractTypeMap
.
getOrDefault
(
jsonObj1
.
path
(
"text_17"
).
path
(
"text"
).
asText
(),
0
));
xbongContract
.
setSignDate
(
DateUtil
.
date
(
jsonObj1
.
path
(
"date_1"
).
asLong
()
*
1000
).
toJdk
Date
());
xbongContract
.
setMaintainSdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_4"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
DateUtil
.
date
(
sec
.
asLong
()
*
1000
).
toJdk
Date
()).
orElse
(
null
));
xbongContract
.
setMaintainEdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_5"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
DateUtil
.
date
(
sec
.
asLong
()
*
1000
).
toJdk
Date
()).
orElse
(
null
));
xbongContract
.
setSignDate
(
TimeUtil
.
of
(
jsonObj1
.
path
(
"date_1"
).
asLong
()
*
1000
).
toLocal
Date
());
xbongContract
.
setMaintainSdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_4"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
TimeUtil
.
of
(
sec
.
asLong
()
*
1000
).
toLocal
Date
()).
orElse
(
null
));
xbongContract
.
setMaintainEdate
(
Opt
.
ofNullable
(
jsonObj1
.
path
(
"date_5"
)).
filter
(
JsonNode:
:
isNumber
).
map
(
sec
->
TimeUtil
.
of
(
sec
.
asLong
()
*
1000
).
toLocal
Date
()).
orElse
(
null
));
String
warrantyPeriod
=
jsonObj1
.
path
(
"text_23"
).
path
(
"text"
).
asText
(
""
);
if
(
StrUtil
.
isNotBlank
(
warrantyPeriod
)
&&
warrantyPeriod
.
contains
(
"个月"
))
{
String
substring
=
warrantyPeriod
.
substring
(
0
,
(
warrantyPeriod
.
length
()
-
2
));
...
...
@@ -1074,7 +1075,7 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
if
(!
paymentForm
.
isEmpty
())
{
paymentForm
.
forEach
(
pf
->
{
var
ratio
=
NumberUtil
.
div
(
BigDecimal
.
valueOf
(
Double
.
parseDouble
(
pf
.
path
(
"text_1"
).
asText
())),
100
);
var
date
=
DateUtil
.
date
(
pf
.
path
(
"date_1"
).
asLong
()
*
1000
);
var
date
=
TimeUtil
.
of
(
pf
.
path
(
"date_1"
).
asLong
()
*
1000
).
toLocalDate
(
);
var
stage
=
pf
.
path
(
"text_2"
).
path
(
"text"
).
asText
();
if
(
StrUtil
.
equals
(
stage
,
"预付款"
))
{
xbongContract
.
setSignRatio
(
ratio
);
...
...
@@ -1114,8 +1115,8 @@ public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Cont
xbongContract
.
setSaleName
(
jsonObj1
.
path
(
"text_8"
).
path
(
"name"
).
asText
());
xbongContract
.
setCreateUser
(-
1L
);
xbongContract
.
setModifyUser
(-
1L
);
xbongContract
.
setEntryTime
(
DateUtil
.
date
(
result
.
path
(
"addTime"
).
asLong
()
*
1000
).
toJdkDate
(
));
xbongContract
.
setOriginalModTime
(
DateUtil
.
date
(
result
.
path
(
"updateTime"
).
asLong
()
*
1000
).
toJdkDate
(
));
xbongContract
.
setEntryTime
(
TimeUtil
.
of
(
result
.
path
(
"addTime"
).
asLong
()
*
1000
));
xbongContract
.
setOriginalModTime
(
TimeUtil
.
of
(
result
.
path
(
"updateTime"
).
asLong
()
*
1000
));
var
bongMap
=
BeanUtil
.
beanToMap
(
xbongContract
,
new
HashMap
<>(),
copyOptions
);
if
(!
mapEqual
(
platMap
,
bongMap
))
{
...
...
src/main/java/vion/service/impl/DeliverLogServiceImpl.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.redisson.api.RedissonClient
;
...
...
@@ -21,6 +21,7 @@ import vion.third.DingMod;
import
vion.utils.JsonUtil
;
import
vion.vo.DeliverLogVO
;
import
java.time.LocalDateTime
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -59,7 +60,7 @@ public class DeliverLogServiceImpl extends MPJBaseServiceImpl<DeliverLogMapper,
.
ifPresent
(
rContractUser
->
log
.
setContractSaleName
(
rContractUser
.
getUsername
()))
);
return
deliverLogList
.
stream
().
collect
(
Collectors
.
groupingBy
(
DeliverLogVO:
:
getUsername
,
Collectors
.
groupingBy
(
v
->
DateUtil
.
formatDate
(
v
.
getLogDate
()
),
()
->
new
TreeMap
<
String
,
Collectors
.
groupingBy
(
v
->
v
.
getLogDate
().
toString
(
),
()
->
new
TreeMap
<
String
,
List
<
DeliverLogVO
>>(
Comparator
.
reverseOrder
()),
Collectors
.
toList
())));
}
...
...
@@ -146,7 +147,7 @@ public class DeliverLogServiceImpl extends MPJBaseServiceImpl<DeliverLogMapper,
confederateName
,
deliverLog
.
getLogHour
(),
deliverLog
.
getContent
(),
DateUtil
.
now
(
)));
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
)));
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
jsonObj
.
set
(
"msg"
,
msg
);
...
...
@@ -164,7 +165,7 @@ public class DeliverLogServiceImpl extends MPJBaseServiceImpl<DeliverLogMapper,
### 项目交付日志提醒
#### 您的日志还未提交,请尽快提交!
#### 未提交日志日期:{}
#### 发送时间:{}"""
,
dateStr
,
DateUtil
.
now
(
)));
#### 发送时间:{}"""
,
dateStr
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
)));
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
jsonObj
.
set
(
"msg"
,
msg
);
...
...
src/main/java/vion/service/impl/DeliveryRecordServiceImpl.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -30,8 +30,8 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -167,7 +167,7 @@ public class DeliveryRecordServiceImpl extends MPJBaseServiceImpl<DeliveryRecord
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
contract
.
getName
(),
contract
.
getContractNo
(),
rec
.
getCourierCompany
(),
rec
.
getTrackingNumber
(),
rec
.
getConsignee
(),
DateUtil
.
formatDate
(
rec
.
getShipDate
()),
DateUtil
.
now
(
));
contract
.
getName
(),
contract
.
getContractNo
(),
rec
.
getCourierCompany
(),
rec
.
getTrackingNumber
(),
rec
.
getConsignee
(),
rec
.
getShipDate
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
@@ -191,7 +191,8 @@ public class DeliveryRecordServiceImpl extends MPJBaseServiceImpl<DeliveryRecord
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
"delivery"
+
FileUtil
.
FILE_SEPARATOR
+
deliveryRecord
.
getId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
src/main/java/vion/service/impl/DeviceLogServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.DeviceLogMapper
;
import
vion.model.DeviceLog
;
import
vion.service.IDeviceLogService
;
/**
* @author HlQ
* @date 2024/8/12
...
...
src/main/java/vion/service/impl/InvoiceServiceImpl.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import io.github.linpeilie.Converter;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.map.MapUtil
;
import
org.dromara.hutool.core.math.NumberUtil
;
...
...
@@ -31,6 +31,7 @@ import vion.vo.RoleVO;
import
vion.vo.UserVO
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -187,7 +188,7 @@ public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoic
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
contract
.
getContractNo
(),
contract
.
getName
(),
invoice
.
getInvoiceNo
(),
invoice
.
getInvoiceAmount
(),
DateUtil
.
formatDate
(
invoice
.
getInvoicingTime
()),
invoice
.
getRemark
(),
DateUtil
.
now
(
));
contract
.
getContractNo
(),
contract
.
getName
(),
invoice
.
getInvoiceNo
(),
invoice
.
getInvoiceAmount
(),
invoice
.
getInvoicingTime
(),
invoice
.
getRemark
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"text"
,
markdown
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
...
...
src/main/java/vion/service/impl/PaymentServiceImpl.java
View file @
60d82ba
...
...
@@ -8,7 +8,7 @@ import io.github.linpeilie.Converter;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Assert
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.map.MapUtil
;
...
...
@@ -32,6 +32,7 @@ import vion.vo.RoleVO;
import
vion.vo.UserVO
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -196,7 +197,7 @@ public class PaymentServiceImpl extends MPJBaseServiceImpl<PaymentMapper, Paymen
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
contract
.
getContractNo
(),
contract
.
getName
(),
payment
.
getPaymentAmount
(),
DateUtil
.
formatDate
(
payment
.
getCollectionTime
()),
payment
.
getRemark
(),
DateUtil
.
now
(
));
contract
.
getContractNo
(),
contract
.
getName
(),
payment
.
getPaymentAmount
(),
payment
.
getCollectionTime
(),
payment
.
getRemark
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"text"
,
markdown
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
...
...
src/main/java/vion/service/impl/PointInfoServiceImpl.java
View file @
60d82ba
...
...
@@ -18,7 +18,7 @@ import org.dromara.hutool.core.array.ArrayUtil;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.data.id.IdUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -44,6 +44,7 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -73,15 +74,14 @@ public class PointInfoServiceImpl extends MPJBaseServiceImpl<PointInfoMapper, Po
@Override
public
Object
frontSubmit
(
PointInfoDTO
dto
)
{
Object
obj
=
insRec
(
dto
);
if
(
obj
instanceof
Map
)
{
Map
<
String
,
Long
>
map
=
(
Map
<
String
,
Long
>)
obj
;
if
(
obj
instanceof
Map
map
)
{
Opt
.
ofNullable
(
new
String
[]{
dto
.
getOpenid
(),
dto
.
getNickname
()})
.
filter
(
ArrayUtil:
:
isAllNotNull
)
.
ifPresent
(
l
->
{
String
openid
=
l
[
0
];
String
nickname
=
l
[
1
];
RPointWx
pointWx
=
new
RPointWx
();
pointWx
.
setPointId
(
map
.
get
(
"id"
));
pointWx
.
setPointId
(
(
Long
)
map
.
get
(
"id"
));
pointWx
.
setOpenid
(
openid
);
pointWx
.
setWxName
(
nickname
);
pointWxService
.
save
(
pointWx
);
...
...
@@ -227,7 +227,7 @@ public class PointInfoServiceImpl extends MPJBaseServiceImpl<PointInfoMapper, Po
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
getPath
(
id
,
dto
,
filename
);
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -484,7 +484,7 @@ public class PointInfoServiceImpl extends MPJBaseServiceImpl<PointInfoMapper, Po
List
<
WxMpTemplateData
>
wxMpTemplateDataList
=
ListUtil
.
of
(
new
WxMpTemplateData
(
"thing4"
,
pointInfo
.
getProjectName
()),
new
WxMpTemplateData
(
"phrase11"
,
statusMap
.
get
(
pointInfo
.
getStatus
())),
new
WxMpTemplateData
(
"time3"
,
DateUtil
.
formatDateTime
(
new
Date
())),
new
WxMpTemplateData
(
"time3"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
new
WxMpTemplateData
(
"thing18"
,
content
));
return
wechatMod
.
sendMsg
(
"IzPvAwx4zgXZmm4bwMc8Pka6piBK2sUf4zf9xA4hkNk"
,
openid
,
wxMpTemplateDataList
,
StrUtil
.
format
(
"{}?uuid={}"
,
url
,
pointInfo
.
getUuid
()));
}
...
...
src/main/java/vion/service/impl/RContractProductServiceImpl.java
View file @
60d82ba
package
vion
.
service
.
impl
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
vion.model.RContractProduct
;
import
org.springframework.stereotype.Service
;
import
vion.mapper.RContractProductMapper
;
import
vion.model.RContractProduct
;
import
vion.service.IRContractProductService
;
/**
* @author HlQ
* @date 2024/3/26
...
...
src/main/java/vion/service/impl/RContractStoreServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RContractStoreMapper
;
import
vion.model.RContractStore
;
import
vion.service.IRContractStoreService
;
/**
* @author HlQ
* @date 2023/11/29
...
...
src/main/java/vion/service/impl/RContractTeamServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RContractTeamMapper
;
import
vion.model.RContractTeam
;
import
vion.service.IRContractTeamService
;
/**
* @author HlQ
* @date 2023/12/26
...
...
src/main/java/vion/service/impl/RContractUserServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RContractUserMapper
;
import
vion.model.RContractUser
;
import
vion.service.IRContractUserService
;
/**
* @author HlQ
* @date 2023/12/28
...
...
src/main/java/vion/service/impl/RPointDeviceServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RPointDeviceMapper
;
import
vion.model.RPointDevice
;
import
vion.service.IRPointDeviceService
;
/**
* @author HlQ
* @date 2024/1/12
...
...
src/main/java/vion/service/impl/RPointWxServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RPointWxMapper
;
import
vion.model.RPointWx
;
import
vion.service.IRPointWxService
;
/**
* @author HlQ
* @date 2024/1/12
...
...
src/main/java/vion/service/impl/RRepairDeviceServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RRepairDeviceMapper
;
import
vion.model.RRepairDevice
;
import
vion.service.IRRepairDeviceService
;
/**
* @author HlQ
* @date 2024/1/25
...
...
src/main/java/vion/service/impl/RRoleResourceServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RRoleResourceMapper
;
import
vion.model.RRoleResource
;
import
vion.service.IRRoleResourceService
;
/**
* @author HlQ
* @date 2023/11/28
...
...
src/main/java/vion/service/impl/RStoreConfederateServiceImpl.java
View file @
60d82ba
package
vion
.
service
.
impl
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
vion.model.RStoreConfederat
e
;
import
org.springframework.stereotype.Servic
e
;
import
vion.mapper.RStoreConfederateMapper
;
import
vion.model.RStoreConfederate
;
import
vion.service.IRStoreConfederateService
;
@Service
...
...
src/main/java/vion/service/impl/RStoreTagServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RStoreTagMapper
;
import
vion.model.RStoreTag
;
import
vion.service.IRStoreTagService
;
/**
* @author HlQ
* @date 2024/1/30
...
...
src/main/java/vion/service/impl/RStoreUserServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RStoreUserMapper
;
import
vion.model.RStoreUser
;
import
vion.service.IRStoreUserService
;
/**
* @author HlQ
* @date 2023/12/27
...
...
src/main/java/vion/service/impl/RUserRoleServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RUserRoleMapper
;
import
vion.model.RUserRole
;
import
vion.service.IRUserRoleService
;
/**
* @author HlQ
* @date 2023/11/28
...
...
src/main/java/vion/service/impl/RejectInfoServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.RejectInfoMapper
;
import
vion.model.RejectInfo
;
import
vion.service.IRejectInfoService
;
/**
* @author HlQ
* @date 2024/1/8
...
...
src/main/java/vion/service/impl/RepairRecServiceImpl.java
View file @
60d82ba
...
...
@@ -7,7 +7,7 @@ import io.github.linpeilie.Converter;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.data.id.IdUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -29,8 +29,8 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -99,7 +99,8 @@ public class RepairRecServiceImpl extends MPJBaseServiceImpl<RepairRecMapper, Re
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
"repairRec"
+
FileUtil
.
FILE_SEPARATOR
+
id
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
...
...
@@ -152,7 +153,7 @@ public class RepairRecServiceImpl extends MPJBaseServiceImpl<RepairRecMapper, Re
### 发送时间:{}
"""
,
repairRecVO
.
getProjectName
(),
Opt
.
ofBlankAble
(
repairRecVO
.
getTrackingNumber
()).
orElse
(
"暂无"
),
deviceNoStr
,
Opt
.
ofBlankAble
(
DateUtil
.
formatDate
(
repairRecVO
.
getShipDate
())).
orElse
(
"暂无"
),
DateUtil
.
now
(
));
Opt
.
ofBlankAble
(
repairRecVO
.
getShipDate
().
toString
()).
orElse
(
"暂无"
),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"text"
,
text
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
...
...
src/main/java/vion/service/impl/ResourceServiceImpl.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.map.MapUtil
;
import
org.dromara.hutool.core.tree.MapTree
;
...
...
@@ -57,8 +57,8 @@ public class ResourceServiceImpl extends MPJBaseServiceImpl<ResourceMapper, Reso
.
put
(
"sortCode"
,
v
.
getSortCode
())
.
put
(
"type"
,
v
.
getType
())
.
put
(
"remark"
,
v
.
getRemark
())
.
put
(
"createTime"
,
DateUtil
.
formatDateTime
(
v
.
getCreateTime
()))
.
put
(
"updateTime"
,
DateUtil
.
formatDateTime
(
v
.
getUpdateTime
()))
.
put
(
"createTime"
,
TimeUtil
.
formatNormal
(
v
.
getCreateTime
()))
.
put
(
"updateTime"
,
TimeUtil
.
formatNormal
(
v
.
getUpdateTime
()))
.
build
();
node
.
setExtra
(
map
);
nodeList
.
add
(
node
);
...
...
src/main/java/vion/service/impl/ServiceOrderServiceImpl.java
View file @
60d82ba
package
vion
.
service
.
impl
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.toolkit.Db
;
...
...
@@ -10,6 +7,9 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateData
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.springframework.stereotype.Service
;
import
vion.dto.ServiceOrderDTO
;
import
vion.mapper.ServiceOrderMapper
;
...
...
src/main/java/vion/service/impl/SettlementDiffServiceImpl.java
View file @
60d82ba
package
vion
.
service
.
impl
;
import
cn.dev33.satoken.stp.StpUtil
;
import
org.dromara.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.yulichang.base.MPJBaseServiceImpl
;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.date.TimeUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
import
org.dromara.hutool.core.text.StrUtil
;
import
org.dromara.hutool.crypto.SecureUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.yulichang.base.MPJBaseServiceImpl
;
import
io.github.linpeilie.Converter
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -28,8 +28,8 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -125,7 +125,7 @@ public class SettlementDiffServiceImpl extends MPJBaseServiceImpl<SettlementDiff
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
"settlementDiff"
+
FileUtil
.
FILE_SEPARATOR
+
dto
.
getContractNo
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
src/main/java/vion/service/impl/SparePartServiceImpl.java
View file @
60d82ba
...
...
@@ -7,7 +7,7 @@ import io.github.linpeilie.Converter;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.data.id.IdUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -29,8 +29,8 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -94,7 +94,8 @@ public class SparePartServiceImpl extends MPJBaseServiceImpl<SparePartMapper, Sp
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
"sparePart"
+
FileUtil
.
FILE_SEPARATOR
+
id
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -146,7 +147,7 @@ public class SparePartServiceImpl extends MPJBaseServiceImpl<SparePartMapper, Sp
### 发送时间:{}
"""
,
sparePartVO
.
getProjectName
(),
Opt
.
ofBlankAble
(
sparePartVO
.
getTrackingNumber
()).
orElse
(
"暂无"
),
deviceNoStr
,
Opt
.
ofBlankAble
(
DateUtil
.
formatDate
(
sparePartVO
.
getShipDate
())).
orElse
(
"暂无"
),
DateUtil
.
now
(
));
Opt
.
ofBlankAble
(
sparePartVO
.
getShipDate
().
toString
()).
orElse
(
"暂无"
),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"text"
,
text
);
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
...
...
src/main/java/vion/service/impl/StoreLogServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.StoreLogMapper
;
import
vion.model.StoreLog
;
import
vion.service.IStoreLogService
;
/**
* @author HlQ
* @date 2023/12/27
...
...
src/main/java/vion/service/impl/StoreServiceImpl.java
View file @
60d82ba
...
...
@@ -18,7 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.collection.ListUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -52,6 +52,8 @@ import vion.vo.UserVO;
import
java.awt.*
;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.*
;
import
java.util.function.Function
;
...
...
@@ -253,7 +255,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
statusDTO
.
getStoreId
()
+
FileUtil
.
FILE_SEPARATOR
+
statusDTO
.
getSourceId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -315,11 +317,11 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
.
filter
(
CollUtil:
:
isNotEmpty
)
.
map
(
l
->
l
.
getFirst
().
getNodeDate
())
.
ifPresent
(
masterContract:
:
setFinalDate
);
Date
finalDate
=
masterContract
.
getFinalDate
();
Local
Date
finalDate
=
masterContract
.
getFinalDate
();
if
(
ArrayUtil
.
isAllNotNull
(
finalDate
,
warrantyPeriod
))
{
Date
finalDateEnd
=
DateUtil
.
offsetMonth
(
finalDate
,
warrantyPeriod
);
boolean
isIn
=
DateUtil
.
isIn
(
new
Date
(),
finalDate
,
finalDateEnd
);
LocalDate
finalDateEnd
=
finalDate
.
plusMonths
(
warrantyPeriod
);
boolean
isIn
=
TimeUtil
.
isIn
(
LocalDate
.
now
(),
finalDate
,
finalDateEnd
);
if
(
isIn
)
{
s
.
setMaintainStatus
(
"在保"
);
Store
updStore
=
new
Store
();
...
...
@@ -339,7 +341,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
.
filter
(
contract
->
ObjUtil
.
equals
(
contract
.
getType
(),
1
))
.
map
(
Contract:
:
getMaintainEdate
)
.
filter
(
Objects:
:
nonNull
)
.
forEach
(
maintainEdate
->
maintainStatusSet
.
add
(
DateUtil
.
compare
(
maintainEdate
,
new
Date
())
>=
0
));
.
forEach
(
maintainEdate
->
maintainStatusSet
.
add
(
!
maintainEdate
.
isBefore
(
LocalDate
.
now
())
));
s
.
setMaintainStatus
(
CollUtil
.
isEmpty
(
maintainStatusSet
)
?
s
.
getMaintainStatus
()
:
maintainStatusSet
.
contains
(
true
)
?
"在保"
:
"脱保"
);
}
Store
updStore
=
new
Store
();
...
...
@@ -456,7 +458,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
### 提交日期:{}
### 内容:
> {}
"""
,
storeVO
.
getName
(),
user
.
getUsername
(),
DateUtil
.
formatDate
(
storeLog
.
getLogDate
()
),
logText
);
"""
,
storeVO
.
getName
(),
user
.
getUsername
(),
storeLog
.
getLogDate
(
),
logText
);
var
markdown
=
JsonUtil
.
createObj
()
.
put
(
"title"
,
"项目日志提醒"
)
.
put
(
"text"
,
text
);
...
...
@@ -476,7 +478,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
### 提交日期:{}
### 内容:
> {}
"""
,
atUser
,
storeVO
.
getName
(),
user
.
getUsername
(),
DateUtil
.
formatDate
(
storeLog
.
getLogDate
()
),
logText
);
"""
,
atUser
,
storeVO
.
getName
(),
user
.
getUsername
(),
storeLog
.
getLogDate
(
),
logText
);
markdown
.
put
(
"text"
,
text
);
}
...
...
@@ -653,8 +655,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
watermark
.
setText
(
user
.
getUsername
()
+
"-"
+
user
.
getPhone
());
watermark
.
setFont
(
new
Font
(
"SimSun"
,
Font
.
PLAIN
,
16
));
WatermarkUtil
.
addWatermark
(
workbook
,
watermark
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"项目资料_{}"
,
DateUtil
.
formatDateTime
(
new
Date
())),
response
);
AttachmentExportUtil
.
export
(
workbook
,
StrUtil
.
format
(
"项目资料_{}"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
response
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
@@ -694,7 +695,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
.
put
(
"title"
,
"项目日志提醒"
)
.
put
(
"text"
,
StrUtil
.
format
(
"""
#### 项目:[{}]请及时提交日志
#### 发送时间:{}"""
,
storeName
,
DateUtil
.
now
(
)));
#### 发送时间:{}"""
,
storeName
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
)));
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
jsonObj
.
set
(
"msg"
,
msg
);
...
...
@@ -723,7 +724,7 @@ public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> imp
#### 资料名称:
{}
#### 发送时间:{}"""
,
storeName
,
contractNo
,
userVO
.
getUsername
(),
sourceName
,
fileNameStr
,
DateUtil
.
now
(
)));
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
)));
var
msg
=
JsonUtil
.
createObj
().
put
(
"msgtype"
,
"markdown"
).
set
(
"markdown"
,
content
);
jsonObj
.
set
(
"msg"
,
msg
);
...
...
src/main/java/vion/service/impl/TagServiceImpl.java
View file @
60d82ba
...
...
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
import
vion.mapper.TagMapper
;
import
vion.model.Tag
;
import
vion.service.ITagService
;
/**
* @author HlQ
* @date 2024/1/30
...
...
src/main/java/vion/service/impl/TaskServiceImpl.java
View file @
60d82ba
...
...
@@ -13,7 +13,7 @@ import org.dromara.hutool.core.collection.ListUtil;
import
org.dromara.hutool.core.collection.set.SetUtil
;
import
org.dromara.hutool.core.data.MaskingUtil
;
import
org.dromara.hutool.core.data.id.IdUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Assert
;
...
...
@@ -43,6 +43,8 @@ import vion.vo.UserVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -344,7 +346,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
List
<
WxMpTemplateData
>
wxMpTemplateDataList
=
ListUtil
.
of
(
new
WxMpTemplateData
(
"character_string21"
,
existTask
.
getUuid
()),
new
WxMpTemplateData
(
"thing12"
,
MaskingUtil
.
chineseName
(
user
.
getUsername
())),
new
WxMpTemplateData
(
"time11"
,
DateUtil
.
formatDateTime
(
new
Date
())),
new
WxMpTemplateData
(
"time11"
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
())),
new
WxMpTemplateData
(
"thing20"
,
existTask
.
getFaultDescription
().
length
()
>
20
?
StrUtil
.
sub
(
existTask
.
getFaultDescription
(),
0
,
17
)
+
"..."
:
existTask
.
getFaultDescription
()),
new
WxMpTemplateData
(
"phrase25"
,
statusMap
.
get
(
existTask
.
getStatus
())));
String
sentMsg
=
wechatMod
.
sendMsg
(
"H3zWJysLWrcxrUlrgqPnjDV7LyWLaml_Ap9WsLuQDCs"
,
openid
,
wxMpTemplateDataList
,
null
);
...
...
@@ -366,7 +368,8 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
task
.
getStoreId
()
+
FileUtil
.
FILE_SEPARATOR
+
task
.
getId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -410,7 +413,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
FaultLog
faultLog
=
new
FaultLog
();
faultLog
.
setOperator
(
vo
.
getActiveUser
());
faultLog
.
setContent
(
"工单正在处理中"
);
faultLog
.
setCreateTime
(
new
Date
());
faultLog
.
setCreateTime
(
LocalDateTime
.
now
());
vo
.
getFaultLogList
().
add
(
faultLog
);
}
return
vo
;
...
...
@@ -442,7 +445,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
}
@Override
public
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
)
{
public
List
<
Map
<
String
,
Object
>>
peopleAnalysis
(
LocalDate
startDate
,
Local
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
)
{
List
<
Task
>
taskList
=
this
.
lambdaQuery
()
.
between
(
ArrayUtil
.
isAllNotNull
(
startDate
,
endDate
),
Task:
:
getRepairTime
,
startDate
,
endDate
)
.
isNotNull
(
ObjUtil
.
equals
(
source
,
1
),
Task:
:
getTaskTempId
)
...
...
@@ -469,7 +472,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
var
hourSum
=
list
.
stream
().
mapToDouble
(
v
->
taskId2HourMap
.
getOrDefault
(
v
.
getId
(),
0
D
)).
sum
();
var
inList
=
list
.
stream
().
filter
(
v
->
v
.
getStatus
().
equals
(
2
)).
toList
();
var
expList
=
inList
.
stream
().
filter
(
v
->
v
.
getExpDate
().
after
(
new
Date
())).
toList
();
var
expList
=
inList
.
stream
().
filter
(
v
->
v
.
getExpDate
().
isAfter
(
LocalDate
.
now
())).
toList
();
var
finishList
=
taskList
.
stream
().
filter
(
t
->
user2TaskIdMap
.
getOrDefault
(
p
,
List
.
of
()).
contains
(
t
.
getId
())).
toList
();
var
storeIdSet
=
list
.
stream
().
map
(
Task:
:
getStoreId
).
collect
(
Collectors
.
toSet
());
var
storeNameList
=
storeList
.
stream
().
filter
(
v
->
storeIdSet
.
contains
(
v
.
getId
())).
distinct
().
map
(
Store:
:
getName
).
collect
(
Collectors
.
joining
(
","
));
...
...
@@ -488,7 +491,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
}
@Override
public
List
<
Map
<
String
,
Object
>>
proAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
)
{
public
List
<
Map
<
String
,
Object
>>
proAnalysis
(
LocalDate
startDate
,
Local
Date
endDate
,
Integer
source
,
List
<
Long
>
userIds
)
{
List
<
Task
>
taskList
=
this
.
lambdaQuery
()
.
between
(
ArrayUtil
.
isAllNotNull
(
startDate
,
endDate
),
Task:
:
getRepairTime
,
startDate
,
endDate
)
.
isNotNull
(
ObjUtil
.
equals
(
source
,
1
),
Task:
:
getTaskTempId
)
...
...
@@ -508,7 +511,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
var
hourSum
=
list
.
stream
().
mapToDouble
(
v
->
taskId2HourMap
.
getOrDefault
(
v
.
getId
(),
0
D
)).
sum
();
var
inList
=
list
.
stream
().
filter
(
v
->
v
.
getStatus
().
equals
(
2
)).
toList
();
var
expList
=
inList
.
stream
().
filter
(
v
->
v
.
getExpDate
().
after
(
new
Date
())).
toList
();
var
expList
=
inList
.
stream
().
filter
(
v
->
v
.
getExpDate
().
isAfter
(
LocalDate
.
now
())).
toList
();
var
finishList
=
list
.
stream
().
filter
(
v
->
v
.
getStatus
().
equals
(
3
)).
toList
();
var
userSet
=
list
.
stream
().
map
(
Task:
:
getActiveUser
).
distinct
().
map
(
id2UsernameMap:
:
get
).
collect
(
Collectors
.
joining
(
","
));
Map
<
String
,
Object
>
cntMap
=
Map
.
of
(
"name"
,
storeId2NameMap
.
get
(
p
),
...
...
@@ -525,7 +528,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
}
@Override
public
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
Date
startDate
,
Date
endDate
,
Integer
source
)
{
public
Map
<
String
,
Map
<
String
,
List
<
Task
>>>
summaryAnalysis
(
LocalDate
startDate
,
Local
Date
endDate
,
Integer
source
)
{
Map
<
Long
,
String
>
id2UsernameMap
=
userService
.
list
().
stream
().
collect
(
Collectors
.
toMap
(
User:
:
getId
,
User:
:
getUsername
));
Map
<
Long
,
String
>
id2StoreNameMap
=
storeService
.
list
().
stream
().
collect
(
Collectors
.
toMap
(
Store:
:
getId
,
Store:
:
getName
));
...
...
@@ -564,7 +567,8 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
task
.
getFaultDescription
(),
DateUtil
.
now
());
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
task
.
getFaultDescription
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()));
content
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
@@ -593,7 +597,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
storeName
,
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
task
.
getFaultDescription
(),
DateUtil
.
now
(
));
storeName
,
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
task
.
getFaultDescription
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
@@ -624,7 +628,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
task
.
getFaultDescription
(),
DateUtil
.
now
(
));
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
task
.
getFaultDescription
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
@@ -657,7 +661,7 @@ public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implem
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
remark
,
DateUtil
.
now
(
));
storeName
,
task
.
getUuid
(),
task
.
getRepairPeople
(),
task
.
getRepairPhone
(),
orderStatusMap
.
get
(
task
.
getStatus
()),
remark
,
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
content
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
var
jsonArray
=
JsonUtil
.
createArr
()
...
...
src/main/java/vion/service/impl/TaskTempServiceImpl.java
View file @
60d82ba
...
...
@@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.dromara.hutool.core.array.ArrayUtil
;
import
org.dromara.hutool.core.bean.BeanUtil
;
import
org.dromara.hutool.core.collection.CollUtil
;
import
org.dromara.hutool.core.date.
Dat
eUtil
;
import
org.dromara.hutool.core.date.
Tim
eUtil
;
import
org.dromara.hutool.core.io.file.FileNameUtil
;
import
org.dromara.hutool.core.io.file.FileUtil
;
import
org.dromara.hutool.core.lang.Opt
;
...
...
@@ -35,8 +35,8 @@ import vion.vo.TaskTempVO;
import
java.io.File
;
import
java.io.IOException
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
...
...
@@ -94,7 +94,7 @@ public class TaskTempServiceImpl extends MPJBaseServiceImpl<TaskTempMapper, Task
String
orgName
=
infile
.
getOriginalFilename
();
String
mainName
=
FileNameUtil
.
mainName
(
orgName
);
String
fileExt
=
FileNameUtil
.
extName
(
orgName
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
filename
=
StrUtil
.
format
(
"{}_{}.{}"
,
mainName
,
TimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyyMMdd_HHmmssSSS"
),
fileExt
);
String
path
=
fileUrl
+
FileUtil
.
FILE_SEPARATOR
+
0
+
FileUtil
.
FILE_SEPARATOR
+
taskTemp
.
getId
()
+
FileUtil
.
FILE_SEPARATOR
+
filename
;
File
file
=
FileUtil
.
touch
(
path
);
try
{
...
...
@@ -164,7 +164,7 @@ public class TaskTempServiceImpl extends MPJBaseServiceImpl<TaskTempMapper, Task
#### 发送时间:{}
"""
;
String
markdown
=
StrUtil
.
format
(
template
,
taskTemp
.
getStoreName
(),
taskTemp
.
getRepairPeople
(),
taskTemp
.
getRepairPhone
(),
taskTemp
.
getFaultDescription
(),
DateUtil
.
now
(
));
taskTemp
.
getStoreName
(),
taskTemp
.
getRepairPeople
(),
taskTemp
.
getRepairPhone
(),
taskTemp
.
getFaultDescription
(),
TimeUtil
.
formatNormal
(
LocalDateTime
.
now
()
));
var
content
=
JsonUtil
.
createObj
()
.
put
(
"title"
,
"客户提交工单,请及时处理哦~_~"
)
.
put
(
"markdown"
,
markdown
).
put
(
"btn_orientation"
,
"1"
);
...
...
src/main/java/vion/service/impl/UserServiceImpl.java
View file @
60d82ba
...
...
@@ -28,6 +28,7 @@ import vion.service.IUserService;
import
vion.vo.RoleVO
;
import
vion.vo.UserVO
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -103,7 +104,7 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
@Override
public
void
syncUser
()
{
Opt
.
ofEmptyAble
(
this
.
list
())
Opt
.
ofEmptyAble
(
this
.
l
ambdaQuery
().
ge
(
User:
:
getModifyTime
,
LocalDate
.
now
()).
l
ist
())
.
ifPresent
(
l
->
l
.
forEach
(
user
->
{
redissonClient
.
getBucket
(
RedisKeyEnum
.
DING_PREFIX
.
getVal
()
+
RedisKeyEnum
.
USER_ID
.
getVal
()
+
user
.
getId
()).
set
(
user
);
redissonClient
.
getBucket
(
RedisKeyEnum
.
DING_PREFIX
.
getVal
()
+
RedisKeyEnum
.
USER_NAME
.
getVal
()
+
user
.
getUsername
()).
set
(
user
);
...
...
src/main/java/vion/third/DingMod.java
View file @
60d82ba
...
...
@@ -109,8 +109,8 @@ public class DingMod {
jsonNode
.
path
(
"result"
).
withArray
(
"data_list"
)
.
forEach
(
v
->
userIdList
.
add
(
v
.
asText
()));
Long
nextCursor
=
jsonNode
.
path
(
"result"
).
path
(
"next_cursor"
).
asLong
(
);
if
(
ObjUtil
.
isNotNull
(
nextCursor
)
)
{
long
nextCursor
=
jsonNode
.
path
(
"result"
).
path
(
"next_cursor"
).
asLong
(-
1L
);
if
(
nextCursor
>
0
)
{
offset
=
nextCursor
;
}
else
{
flag
=
false
;
...
...
src/main/java/vion/third/WechatMod.java
View file @
60d82ba
...
...
@@ -58,7 +58,7 @@ public class WechatMod {
/**
* 生成微信网页授权链接用于 pc 端故障保修、点位设计等页面,绑定openid
*
* @param id 生成单子的 id
* @param id
生成单子的 id
* @param flag 1:故障保修 2:点位设计
* @return java.lang.String
*/
...
...
@@ -72,7 +72,7 @@ public class WechatMod {
* 关注公众号的用户,直接获取 openid,返回前端,前端提交工单(或其他单子)时带上 openid。
* 未关注公众号的用户,直接返回一个页面,提示用户关注公众号。
*
* @param id 提交单子的主键id
* @param id
提交单子的主键id
* @param flag 1:故障保修 2:点位设计 3:备件申请 4:设备返修
* @param code 授权码
* @return java.lang.Object
...
...
@@ -101,7 +101,7 @@ public class WechatMod {
/**
* 点位设计详情页获取绑定微信二维码
*
* @param uuid
点位记录 uuid
* @param uuid 点位记录 uuid
* @return java.lang.String
*/
public
String
genBindOpenidQRCode
(
String
uuid
)
{
...
...
src/main/java/vion/utils/JsonUtil.java
View file @
60d82ba
...
...
@@ -115,7 +115,7 @@ public class JsonUtil {
* 使用 {@link #parseObject(String, Class)} 时,在@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 的场景下,
* 如果 text 没有 class 属性,则会报错。此时,使用这个方法,可以解决。
*
* @param text 字符串
* @param text
字符串
* @param clazz 类型
* @return 对象
*/
...
...
@@ -154,7 +154,7 @@ public class JsonUtil {
/**
* 解析 JSON 字符串成指定类型的对象,如果解析失败,则返回 null
*
* @param text 字符串
* @param text
字符串
* @param typeReference 类型引用
* @return 指定类型的对象
*/
...
...
src/main/java/vion/utils/excel/AttachmentExportUtil.java
View file @
60d82ba
...
...
@@ -45,7 +45,7 @@ public class AttachmentExportUtil {
private
static
void
clear
(
Workbook
workbook
)
{
if
(
workbook
instanceof
SXSSFWorkbook
)
{
((
SXSSFWorkbook
)
workbook
).
dispose
();
((
SXSSFWorkbook
)
workbook
).
dispose
();
}
try
{
...
...
src/main/java/vion/vo/ConstructionTeamVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
import
java.time.LocalDateTime
;
@Getter
@Setter
public
class
ConstructionTeamVO
{
...
...
@@ -21,8 +22,8 @@ public class ConstructionTeamVO {
private
String
city
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/ContractPaymentVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
/**
* 合同收款方式
...
...
@@ -34,13 +35,13 @@ public class ContractPaymentVO {
* 收款日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
paymentDate
;
private
Local
Date
paymentDate
;
/**
* 节点日期,指合同到这一阶段时的时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
nodeDate
;
private
Local
Date
nodeDate
;
/**
* 创建者
...
...
@@ -56,11 +57,11 @@ public class ContractPaymentVO {
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
}
\ No newline at end of file
src/main/java/vion/vo/ContractVO.java
View file @
60d82ba
...
...
@@ -10,7 +10,8 @@ import vion.model.ContractPayment;
import
vion.model.RContractProduct
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -42,21 +43,21 @@ public class ContractVO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
4
,
title
=
"签订日期"
,
format
=
"yyyy-MM-dd"
)
private
Date
signDate
;
private
Local
Date
signDate
;
/**
* 合同维保开始日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
5
,
title
=
"维保开始日期"
,
format
=
"yyyy-MM-dd"
)
private
Date
maintainSdate
;
private
Local
Date
maintainSdate
;
/**
* 合同维保结束日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
6
,
title
=
"维保结束日期"
,
format
=
"yyyy-MM-dd"
)
private
Date
maintainEdate
;
private
Local
Date
maintainEdate
;
/**
* 合同进度:1-签订 2-到货 3-系统验收(初验) 4-项目验收(终验) 5-质保 6-第一笔维保款 7-第二笔维保款 8-第三笔维保款 9-维保进度款 10-维保验收款
...
...
@@ -131,13 +132,13 @@ public class ContractVO {
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 合同质保周期(月)
...
...
@@ -148,7 +149,7 @@ public class ContractVO {
* 终验日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finalDate
;
private
Local
Date
finalDate
;
/**
* 财务状态
...
...
@@ -170,7 +171,7 @@ public class ContractVO {
* 录入时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
entryTime
;
private
LocalDateTim
e
entryTime
;
/**
* 合同关联的项目名
...
...
src/main/java/vion/vo/DeliverLogVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.RContractUser
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -41,7 +42,7 @@ public class DeliverLogVO {
* 日志日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
logDate
;
private
Local
Date
logDate
;
/**
* 干系人
...
...
@@ -68,11 +69,11 @@ public class DeliverLogVO {
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/DeliveryRecordVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.FileInfo
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -48,13 +49,13 @@ public class DeliveryRecordVO {
* 发货日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 到货签收日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
signDate
;
private
Local
Date
signDate
;
/**
* 快递公司
...
...
@@ -72,21 +73,21 @@ public class DeliveryRecordVO {
private
String
shippingRemark
;
/**
* 备注
*/
* 备注
*/
private
String
remark
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/**
* 修改时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
List
<
FileInfo
>
fileList
;
...
...
src/main/java/vion/vo/DeviceVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.DeviceLog
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -57,7 +58,7 @@ public class DeviceVO {
* 入库日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
recDate
;
private
Local
Date
recDate
;
/**
* 备注
...
...
@@ -65,10 +66,10 @@ public class DeviceVO {
private
String
remark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
List
<
DeviceLog
>
logList
;
}
\ No newline at end of file
src/main/java/vion/vo/FileInfoVO.java
View file @
60d82ba
...
...
@@ -5,38 +5,64 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
public
class
FileInfoVO
{
private
Long
id
;
/** 门店id */
/**
* 门店id
*/
private
Long
storeId
;
/** 文件扩展名 */
/**
* 文件扩展名
*/
private
String
type
;
/** 文件来源 */
/**
* 文件来源
*/
private
Integer
sourceType
;
/** 文件来源id */
/**
* 文件来源id
*/
private
Long
sourceId
;
/** 合同id */
/**
* 合同id
*/
private
Long
contractId
;
/** 合同编号 */
/**
* 合同编号
*/
private
String
contractNo
;
/** 合同名称 */
/**
* 合同名称
*/
private
String
contractName
;
/** 文件名称 */
/**
* 文件名称
*/
private
String
name
;
/** 文件地址 */
/**
* 文件地址
*/
@JsonIgnore
private
String
url
;
/** 创建时间 */
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
/** 备注 */
private
LocalDateTime
createTime
;
/**
* 备注
*/
private
String
remark
;
/** sha256 */
/**
* sha256
*/
private
String
sha256
;
/** 上传人 */
/**
* 上传人
*/
private
String
uploader
;
}
src/main/java/vion/vo/FinancialAgeVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.
util.
Date
;
import
java.
time.Local
Date
;
/**
* @author HlQ
...
...
@@ -16,13 +16,21 @@ import java.util.Date;
public
class
FinancialAgeVO
{
private
String
contractNo
;
private
String
contractName
;
/** 账款类型 */
/**
* 账款类型
*/
private
Integer
status
;
/** 账款金额 */
/**
* 账款金额
*/
private
BigDecimal
amount
;
/** 应付日期 */
/**
* 应付日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
payableDate
;
/** 财龄 */
private
LocalDate
payableDate
;
/**
* 财龄
*/
private
Integer
age
;
}
src/main/java/vion/vo/FormVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -44,7 +44,7 @@ public class FormVO {
* 签字时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/**
* 唯一uuid
...
...
@@ -66,8 +66,8 @@ public class FormVO {
private
Long
updateUser
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/InspectVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -15,37 +16,59 @@ public class InspectVO {
private
Long
storeId
;
/** 巡检时间 */
/**
* 巡检时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
inspectDate
;
private
Local
Date
inspectDate
;
/** 巡检方式(0远程、1现场) */
/**
* 巡检方式(0远程、1现场)
*/
private
Integer
type
;
/** 状态(0进行中、1待审核、2已完成、3、驳回) */
/**
* 状态(0进行中、1待审核、2已完成、3、驳回)
*/
private
Integer
status
;
/** 巡检人 */
/**
* 巡检人
*/
private
Integer
inspectUser
;
/** 审核人 */
/**
* 审核人
*/
private
Integer
reviewer
;
/** 巡检时间 */
/**
* 巡检时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finishDate
;
private
Local
Date
finishDate
;
/** 审核时间 */
/**
* 审核时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
auditDate
;
private
Local
Date
auditDate
;
/** 创建时间 */
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 修改时间 */
/**
* 修改时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
modifyTime
;
/** 备注 */
private
LocalDateTime
modifyTime
;
/**
* 备注
*/
private
String
remark
;
/** 集团id */
/**
* 集团id
*/
private
Long
accountId
;
private
String
accountName
;
...
...
src/main/java/vion/vo/InvoiceVO.java
View file @
60d82ba
...
...
@@ -7,7 +7,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
@Getter
...
...
@@ -27,7 +28,7 @@ public class InvoiceVO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
1
,
title
=
"开票时间"
,
format
=
"yyyy-MM-dd"
)
private
Date
invoicingTime
;
private
Local
Date
invoicingTime
;
/**
* 发票金额
...
...
@@ -55,8 +56,8 @@ public class InvoiceVO {
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
6
,
title
=
"录入时间"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/PaymentVO.java
View file @
60d82ba
...
...
@@ -7,7 +7,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
@Getter
@Setter
...
...
@@ -32,7 +33,7 @@ public class PaymentVO {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ExcelColumn
(
order
=
2
,
title
=
"收款时间"
,
format
=
"yyyy-MM-dd"
)
private
Date
collectionTime
;
private
Local
Date
collectionTime
;
/**
* 收款金额
...
...
@@ -47,8 +48,8 @@ public class PaymentVO {
private
String
remark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/PointInfoVO.java
View file @
60d82ba
...
...
@@ -9,7 +9,7 @@ import lombok.Setter;
import
vion.model.FileInfo
;
import
java.math.BigDecimal
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
/**
...
...
@@ -234,18 +234,22 @@ public class PointInfoVO {
*/
private
String
uuid
;
/** 绑定单子的微信昵称列表 */
/**
* 绑定单子的微信昵称列表
*/
private
List
<
String
>
wxNameList
;
/** 单子施工后的设备序列号列表 */
/**
* 单子施工后的设备序列号列表
*/
private
List
<
String
>
deviceNoList
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
/**
* 客户上传的图纸文件
...
...
src/main/java/vion/vo/RContractTeamVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
@Getter
@Setter
...
...
@@ -16,16 +17,22 @@ public class RContractTeamVO {
* 合同id
*/
private
Long
contractId
;
/** 合同编号 */
/**
* 合同编号
*/
private
String
contractNo
;
/** 合同名称 */
/**
* 合同名称
*/
private
String
contractName
;
/**
* 施工队id
*/
private
Long
ctId
;
/** 施工队名称 */
/**
* 施工队名称
*/
private
String
teamName
;
/**
...
...
@@ -42,13 +49,13 @@ public class RContractTeamVO {
* 分配日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
assignDate
;
private
Local
Date
assignDate
;
/**
* 完成日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finishDate
;
private
Local
Date
finishDate
;
/**
* 施工状态
...
...
@@ -72,10 +79,10 @@ public class RContractTeamVO {
private
String
remark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
Integer
contractStatus
;
}
\ No newline at end of file
src/main/java/vion/vo/RepairRecVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.RRepairDevice
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -102,7 +103,7 @@ public class RepairRecVO {
* 发货日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -132,10 +133,10 @@ public class RepairRecVO {
private
String
remark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
List
<
RRepairDevice
>
repairDeviceList
;
...
...
src/main/java/vion/vo/ResourceVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -55,12 +55,16 @@ public class ResourceVO {
*/
private
String
remark
;
/** 创建时间 */
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
}
\ No newline at end of file
src/main/java/vion/vo/RoleVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -19,9 +19,9 @@ public class RoleVO {
private
Integer
status
;
private
String
remark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
Long
userId
;
}
src/main/java/vion/vo/ServiceOrderVO.java
View file @
60d82ba
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
/**
* @author HlQ
...
...
@@ -15,68 +15,108 @@ import java.util.Date;
public
class
ServiceOrderVO
{
private
String
projectName
;
/** 报修人 */
/**
* 报修人
*/
private
String
submitter
;
/** 报修人手机号码 */
/**
* 报修人手机号码
*/
private
String
submitPhone
;
/** 报修时间 */
/**
* 报修时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
submitTime
;
private
LocalDateTim
e
submitTime
;
/** 维修人 */
/**
* 维修人
*/
private
String
repairPeople
;
/** 维修人手机号码*/
/**
* 维修人手机号码
*/
private
String
repairPhone
;
/** 部门 */
/**
* 部门
*/
private
String
dept
;
/** 服务方式(1.电话支持 2.远程服务 3.现场服务) */
/**
* 服务方式(1.电话支持 2.远程服务 3.现场服务)
*/
private
String
serviceType
;
/** 耗时 */
/**
* 耗时
*/
private
Double
time
;
/** 故障内容 */
/**
* 故障内容
*/
private
String
faultContent
;
/** 维修结果 */
/**
* 维修结果
*/
private
String
repairRes
;
/** 客户评价 */
/**
* 客户评价
*/
private
String
review
;
/** 工单id */
/**
* 工单id
*/
private
Long
taskId
;
/** 服务单状态 */
/**
* 服务单状态
*/
private
Integer
state
;
/** 创建时间 */
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
/** 更新时间 */
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
/** 五星好评 */
/**
* 五星好评
*/
private
Integer
stars
;
/** 签字图片base64 */
/**
* 签字图片base64
*/
private
String
signPic
;
/** 签字时间 */
/**
* 签字时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
signTime
;
private
LocalDateTim
e
signTime
;
/** 完成时间 */
/**
* 完成时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
finishTime
;
private
LocalDateTim
e
finishTime
;
/** 唯一id */
/**
* 唯一id
*/
private
String
unid
;
}
src/main/java/vion/vo/SettlementDiffVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
@Getter
@Setter
...
...
@@ -51,5 +51,5 @@ public class SettlementDiffVO {
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
}
\ No newline at end of file
src/main/java/vion/vo/SparePartVO.java
View file @
60d82ba
...
...
@@ -8,7 +8,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.RRepairDevice
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -95,7 +96,7 @@ public class SparePartVO {
* 发货日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
shipDate
;
private
Local
Date
shipDate
;
/**
* 快递公司
...
...
@@ -127,14 +128,16 @@ public class SparePartVO {
*/
private
String
uuid
;
/** 微信用户id */
/**
* 微信用户id
*/
private
String
openid
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
updateTime
;
private
LocalDateTim
e
updateTime
;
private
List
<
RRepairDevice
>
repairDeviceList
;
...
...
src/main/java/vion/vo/StoreVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,8 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.StoreLog
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -45,15 +46,15 @@ public class StoreVO {
*/
private
Integer
modifyUser
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 立项日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
estDate
;
private
Local
Date
estDate
;
/**
* 备注
*/
...
...
@@ -89,7 +90,7 @@ public class StoreVO {
* 实际完成日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
finishDate
;
private
Local
Date
finishDate
;
/**
* 完成百分比
*/
...
...
@@ -112,7 +113,7 @@ public class StoreVO {
* 计划完成日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
planFinishDate
;
private
Local
Date
planFinishDate
;
/**
* 项目规模
...
...
src/main/java/vion/vo/TaskTempVO.java
View file @
60d82ba
...
...
@@ -6,7 +6,7 @@ import lombok.Setter;
import
vion.model.FileInfo
;
import
vion.model.Task
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
@Getter
...
...
@@ -32,7 +32,7 @@ public class TaskTempVO {
* 报修时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/**
* 故障说明
*/
...
...
@@ -50,9 +50,9 @@ public class TaskTempVO {
*/
private
Integer
status
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
private
String
remark
;
/**
* 工程师姓名
...
...
src/main/java/vion/vo/TaskVO.java
View file @
60d82ba
...
...
@@ -11,7 +11,8 @@ import vion.model.FaultLog;
import
vion.model.FileInfo
;
import
vion.model.ServiceOrder
;
import
java.util.Date
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Getter
...
...
@@ -41,7 +42,7 @@ public class TaskVO {
*/
@ExcelColumn
(
order
=
5
,
title
=
"提交时间"
,
format
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
repairTime
;
private
LocalDateTim
e
repairTime
;
/**
* 故障类型
*/
...
...
@@ -71,7 +72,7 @@ public class TaskVO {
* 解决日期
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
solveDate
;
private
Local
Date
solveDate
;
/**
* 故障原因
*/
...
...
@@ -98,11 +99,11 @@ public class TaskVO {
*/
@ExcelColumn
(
order
=
8
,
title
=
"截止日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
expDate
;
private
Local
Date
expDate
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
/**
* 备注
*/
...
...
src/main/java/vion/vo/UserVO.java
View file @
60d82ba
...
...
@@ -5,7 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
vion.model.Resource
;
import
java.
util.Dat
e
;
import
java.
time.LocalDateTim
e
;
import
java.util.List
;
@Getter
...
...
@@ -17,15 +17,19 @@ public class UserVO {
private
String
phone
;
private
Long
deptId
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
createTime
;
private
LocalDateTim
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Dat
e
modifyTime
;
private
LocalDateTim
e
modifyTime
;
private
String
remark
;
/** 是否是预工单处理人 0:不是 1:是 */
/**
* 是否是预工单处理人 0:不是 1:是
*/
private
Integer
preWorkOrder
;
/** 员工状态 2:试用期 3:正式 5:待离职 -1:无状态 */
/**
* 员工状态 2:试用期 3:正式 5:待离职 -1:无状态
*/
private
Integer
employeeStatus
;
/* 状态 0:正常 1:禁用 */
...
...
@@ -33,7 +37,9 @@ public class UserVO {
private
String
token
;
/** 权限码列表 */
/**
* 权限码列表
*/
private
List
<
Resource
>
resourceList
;
private
List
<
RoleVO
>
roleVOList
;
...
...
src/main/resources/static/weChatBindSuccess.html
View file @
60d82ba
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定成功
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
绑定成功
</p>
</div>
</body>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定成功
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
绑定成功
</p>
</div>
</body>
</html>
\ No newline at end of file
src/main/resources/static/weChatError.html
View file @
60d82ba
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定失败
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
绑定失败
</p>
</div>
</body>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定失败
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
绑定失败
</p>
</div>
</body>
</html>
\ No newline at end of file
src/main/resources/static/weChatNeedAttention.html
View file @
60d82ba
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定成功
</title>
<style>
.center
{
/*line-height: 200px;*/
height
:
auto
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
3rem
;
}
.center
img
{
width
:
30rem
;
height
:
100%
;
}
</style>
<body
>
<div
class=
"center"
>
<p>
关注工单失败!
<br>
请先关注【VION智慧门店】公众号,
<br>
再扫工单二维码以接收工单信息提醒。
</p>
</div>
<div
class=
"center"
>
<img
src=
"data:image/jpeg;base64,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"
alt=
"VION智慧门店"
/>
</div>
<div
class=
"center"
>
<p>
长按或扫码关注
</p>
</div>
</body>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
绑定成功
</title>
<style>
.center
{
/*line-height: 200px;*/
height
:
auto
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
3rem
;
}
.center
img
{
width
:
30rem
;
height
:
100%
;
}
</style>
<body>
<div
class=
"center"
>
<p>
关注工单失败!
<br>
请先关注【VION智慧门店】公众号,
<br>
再扫工单二维码以接收工单信息提醒。
</p>
</div>
<div
class=
"center"
>
<img
src=
"data:image/jpeg;base64,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"
alt=
"VION智慧门店"
/>
</div>
<div
class=
"center"
>
<p>
长按或扫码关注
</p>
</div>
</body>
</html>
\ No newline at end of file
src/main/resources/static/weChatSuccess.html
View file @
60d82ba
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
扫码成功
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
扫码成功
</p>
</div>
</body>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/xml; charset=utf-8"
/>
</head>
<title>
扫码成功
</title>
<style>
.center
{
line-height
:
200px
;
height
:
100%
;
text-align
:
center
;
}
.center
p
{
line-height
:
1.5
;
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
6rem
;
}
</style>
<body>
<div
class=
"center"
>
<p>
扫码成功
</p>
</div>
</body>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
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 post a comment