Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-operation
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-operation
Commits
52968795
提交
52968795
authored
11月 05, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
考勤打卡信息
上级
596b5893
隐藏空白字符变更
内嵌
并排
正在显示
24 个修改的文件
包含
991 行增加
和
20 行删除
+991
-20
Dockerfile
Dockerfile
+13
-0
pom.xml
pom.xml
+5
-6
settings.xml
settings.xml
+161
-0
WangxiaoluSfaModuleOperationApplication.java
...fa/operation/WangxiaoluSfaModuleOperationApplication.java
+6
-0
ControllerResponseAdvice.java
...va/com/sfa/operation/advice/ControllerResponseAdvice.java
+46
-0
KqMxCoreController.java
...com/sfa/operation/controller/core/KqMxCoreController.java
+50
-0
KqMxQueryController.java
...m/sfa/operation/controller/query/KqMxQueryController.java
+36
-0
ISfaKqmxDao.java
src/main/java/com/sfa/operation/domain/dao/ISfaKqmxDao.java
+17
-0
SfaKqmxDaoImpl.java
...ava/com/sfa/operation/domain/dao/impl/SfaKqmxDaoImpl.java
+55
-0
SfaKqmx.java
src/main/java/com/sfa/operation/domain/entity/SfaKqmx.java
+156
-0
SfaKqmxMapper.java
...n/java/com/sfa/operation/domain/mapper/SfaKqmxMapper.java
+24
-0
KqMxVo.java
src/main/java/com/sfa/operation/pojo/request/KqMxVo.java
+46
-0
SfaKqMxDto.java
...main/java/com/sfa/operation/pojo/response/SfaKqMxDto.java
+82
-0
IKqMxCoreService.java
...main/java/com/sfa/operation/service/IKqMxCoreService.java
+12
-0
IKqMxQueryService.java
...ain/java/com/sfa/operation/service/IKqMxQueryService.java
+14
-0
KqMxCoreServiceImpl.java
...a/com/sfa/operation/service/impl/KqMxCoreServiceImpl.java
+44
-0
KqMxQueryServiceImpl.java
.../com/sfa/operation/service/impl/KqMxQueryServiceImpl.java
+32
-0
application.properties
src/main/resources/application.properties
+0
-1
bootstrap-dev.yml
src/main/resources/bootstrap-dev.yml
+15
-0
bootstrap-qa.yml
src/main/resources/bootstrap-qa.yml
+15
-0
bootstrap.yml
src/main/resources/bootstrap.yml
+3
-0
logback-spring.xml
src/main/resources/logback-spring.xml
+98
-0
SfaKqmxMapper.xml
src/main/resources/mapper/operation/SfaKqmxMapper.xml
+61
-0
WangxiaoluSfaModuleOperationApplicationTests.java
...eration/WangxiaoluSfaModuleOperationApplicationTests.java
+0
-13
没有找到文件。
Dockerfile
0 → 100644
浏览文件 @
52968795
FROM
openjdk:8
WORKDIR
/sfa
ADD
./target/wangxiaolu-sfa-module-operation.jar /sfa/app.jar
#设置时区
RUN
ln
-sf
/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&&
echo
'Asia/Shanghai'
>
/etc/timezone
# 定义容器启动命令ENTRYPOINT 和 CMD指令类似,都可以用于增加启动参数
ENTRYPOINT
["nohup","java", "-jar", "/sfa/app.jar"]
CMD
["--spring.profiles.active=qa"]
EXPOSE
9202
pom.xml
浏览文件 @
52968795
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<groupId>
com.wangxiaolu.sfa
</groupId>
<groupId>
com.wangxiaolu.sfa
</groupId>
<artifactId>
wangxiaolu-sfa-parent
</artifactId>
<artifactId>
wangxiaolu-sfa-parent
</artifactId>
<version>
0.0.1
</version>
<version>
0.0.1
</version>
<relativePath/
>
<!-- <relativePath/>--
>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
@@ -71,11 +71,6 @@
...
@@ -71,11 +71,6 @@
<artifactId>
wangxiaolu-sfa-common-swagger
</artifactId>
<artifactId>
wangxiaolu-sfa-common-swagger
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-annotation
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
...
@@ -91,6 +86,10 @@
...
@@ -91,6 +86,10 @@
<artifactId>
spring-webmvc
</artifactId>
<artifactId>
spring-webmvc
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
settings.xml
0 → 100644
浏览文件 @
52968795
<?xml version="1.0" encoding="UTF-8"?>
<settings
xmlns=
"http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
>
<localRepository>
/Library/apache-maven-3.8.6/repository
</localRepository>
<mirrors>
<!-- <mirror>-->
<!-- <id>mirror</id>-->
<!-- <mirrorOf>!rdc-releases,!rdc-snapshots</mirrorOf>-->
<!-- <name>mirror</name>-->
<!-- <url>http://maven.aliyun.com/nexus/content/groups/public</url>-->
<!-- </mirror>-->
<mirror>
<id>
nexus-tencentyun
</id>
<!-- 此配置避免了本仓库制品的拉取流量被切换到腾讯云镜像源,保证您在使用镜像加速的同时可以从本仓库拉取制品 -->
<mirrorOf>
!g-pkkp8204-wangxiaolu-sfa-maven
</mirrorOf>
<name>
Nexus tencentyun
</name>
<url>
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
</url>
</mirror>
</mirrors>
<servers>
<server>
<id>
rdc-releases
</id>
<username>
G8G0iR
</username>
<password>
Do1l7QXnPg
</password>
</server>
<server>
<id>
rdc-snapshots
</id>
<username>
G8G0iR
</username>
<password>
Do1l7QXnPg
</password>
</server>
<server>
<id>
g-pkkp8204-wangxiaolu-sfa-maven
</id>
<username>
liqiulin@wangxiaolu.com.cn
</username>
<password>
Wangxiaolu_lql123
</password>
</server>
</servers>
<profiles>
<profile>
<id>
nexus
</id>
<repositories>
<repository>
<id>
central
</id>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
</repository>
<repository>
<id>
snapshots
</id>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
<releases>
<enabled>
false
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</repository>
<repository>
<id>
rdc-releases
</id>
<url>
https://repo.rdc.aliyun.com/repository/35126-release-kef1BI/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
</repository>
<repository>
<id>
rdc-snapshots
</id>
<url>
https://repo.rdc.aliyun.com/repository/35126-snapshot-j8LEe7/
</url>
<releases>
<enabled>
false
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>
central
</id>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>
snapshots
</id>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
<releases>
<enabled>
false
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>
rdc-releases
</id>
<url>
https://repo.rdc.aliyun.com/repository/35126-release-kef1BI/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>
rdc-snapshots
</id>
<url>
https://repo.rdc.aliyun.com/repository/35126-snapshot-j8LEe7/
</url>
<releases>
<enabled>
false
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>
Repository Proxy
</id>
<activation>
<activeByDefault>
true
</activeByDefault>
</activation>
<repositories>
<repository>
<id>
g-pkkp8204-wangxiaolu-sfa-maven
</id>
<name>
maven
</name>
<url>
https://g-pkkp8204-maven.pkg.coding.net/repository/wangxiaolu-sfa/maven/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>
nexus
</activeProfile>
</activeProfiles>
</settings>
\ No newline at end of file
src/main/java/com/sfa/operation/WangxiaoluSfaModuleOperationApplication.java
浏览文件 @
52968795
package
com
.
sfa
.
operation
;
package
com
.
sfa
.
operation
;
import
com.sfa.common.security.annotation.EnableCustomConfig
;
import
com.sfa.common.security.annotation.EnableRyFeignClients
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@EnableCustomConfig
@EnableRyFeignClients
@MapperScan
(
"com.sfa.operation.domain.mapper"
)
@SpringBootApplication
@SpringBootApplication
public
class
WangxiaoluSfaModuleOperationApplication
{
public
class
WangxiaoluSfaModuleOperationApplication
{
...
...
src/main/java/com/sfa/operation/advice/ControllerResponseAdvice.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
advice
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.sfa.common.core.domain.R
;
import
com.sfa.common.core.web.domain.AjaxResult
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.server.ServerHttpRequest
;
import
org.springframework.http.server.ServerHttpResponse
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice
;
/**
* @author : liqiulin
* @date : 2024-10-28 17
* @describe :自动封装
*/
@RestControllerAdvice
public
class
ControllerResponseAdvice
implements
ResponseBodyAdvice
<
Object
>{
/**
* response是R类型或者注释了NotControllerResponseAdvice都不进行包装
*/
@Override
public
boolean
supports
(
MethodParameter
methodParameter
,
Class
converterType
)
{
return
!
methodParameter
.
getParameterType
().
isAssignableFrom
(
R
.
class
);
}
@Override
public
Object
beforeBodyWrite
(
Object
body
,
MethodParameter
methodParameter
,
MediaType
selectedContentType
,
Class
selectedConverterType
,
ServerHttpRequest
request
,
ServerHttpResponse
response
)
{
// String类型不能直接包装
if
(
methodParameter
.
getGenericParameterType
().
equals
(
String
.
class
))
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
try
{
// 将数据包装在ResultVo里后转换为json串进行返回
return
objectMapper
.
writeValueAsString
(
R
.
ok
(
body
));
}
catch
(
JsonProcessingException
e
)
{
throw
new
RuntimeException
();
}
}
// 包装成R返回
return
R
.
ok
(
body
);
}
}
src/main/java/com/sfa/operation/controller/core/KqMxCoreController.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
controller
.
core
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.operation.pojo.request.KqMxVo
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
import
com.sfa.operation.service.IKqMxCoreService
;
import
com.sfa.system.api.model.LoginUser
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Date
;
/**
* @author : liqiulin
* @date : 2024-11-04 17
* @describe :
*/
@RestController
@RequestMapping
(
"/kqmx/core"
)
public
class
KqMxCoreController
{
@Autowired
IKqMxCoreService
kqMxCoreService
;
/**
* 打卡
* @param kqMxVo 打卡基础明细
*/
@PostMapping
public
void
kqClockIn
(
@RequestBody
@Validated
KqMxVo
kqMxVo
){
SfaKqMxDto
kqMxDto
=
new
SfaKqMxDto
();
BeanUtils
.
copyProperties
(
kqMxVo
,
kqMxDto
);
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
Date
date
=
new
Date
();
kqMxDto
.
setKqUserid
(
loginUser
.
getUserid
())
.
setKqTime
(
date
)
.
setRuleId
(
loginUser
.
getRuleId
())
.
setRuleName
(
loginUser
.
getRuleName
())
.
setCreateDate
(
date
)
.
setCreateBy
(
loginUser
.
getUsername
())
.
setCreateUserId
(
loginUser
.
getUserid
())
.
setKqAddress
(
kqMxDto
.
getKqProvinc
()
+
"-"
+
kqMxDto
.
getKqCity
()
+
"-"
+
kqMxDto
.
getKqCounty
()
+
"-"
+
kqMxDto
.
getKqAddress
());
kqMxCoreService
.
kqClockIn
(
kqMxDto
);
}
}
src/main/java/com/sfa/operation/controller/query/KqMxQueryController.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
controller
.
query
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.operation.service.IKqMxQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author : liqiulin
* @date : 2024-11-05 13
* @describe :
*/
@RestController
@RequestMapping
(
"/kqmx/query"
)
public
class
KqMxQueryController
{
@Autowired
IKqMxQueryService
kqMxQueryService
;
@GetMapping
(
"/roll"
)
public
Map
rollDateList
(){
Long
userId
=
SecurityUtils
.
getUserId
();
DateTime
dateTime
=
DateUtil
.
offsetDay
(
new
DateTime
(),
-
7
);
Map
dataMap
=
kqMxQueryService
.
rollDateList
(
dateTime
,
userId
);
HashMap
<
String
,
Object
>
rMap
=
new
HashMap
<>();
rMap
.
put
(
"data"
,
dataMap
);
rMap
.
put
(
"current"
,
new
DateTime
());
return
rMap
;
}
}
src/main/java/com/sfa/operation/domain/dao/ISfaKqmxDao.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
domain
.
dao
;
import
cn.hutool.core.date.DateTime
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2024-11-05 10
* @describe :
*/
public
interface
ISfaKqmxDao
{
void
add
(
SfaKqMxDto
kqMxDto
);
List
<
SfaKqMxDto
>
betweentDate
(
DateTime
dateTime
,
Long
userId
);
}
src/main/java/com/sfa/operation/domain/dao/impl/SfaKqmxDaoImpl.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
domain
.
dao
.
impl
;
import
cn.hutool.core.date.DateTime
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.WXLSQLException
;
import
com.sfa.operation.domain.dao.ISfaKqmxDao
;
import
com.sfa.operation.domain.entity.SfaKqmx
;
import
com.sfa.operation.domain.mapper.SfaKqmxMapper
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2024-11-05 10
* @describe :
*/
@Service
public
class
SfaKqmxDaoImpl
implements
ISfaKqmxDao
{
@Autowired
SfaKqmxMapper
sfaKqmxMapper
;
@Override
public
void
add
(
SfaKqMxDto
kqMxDto
)
{
try
{
SfaKqmx
kqDo
=
new
SfaKqmx
();
BeanUtils
.
copyProperties
(
kqMxDto
,
kqDo
);
kqDo
.
setKqLon
(
kqMxDto
.
getKqLocal
()[
0
]);
kqDo
.
setKqLat
(
kqMxDto
.
getKqLocal
()[
1
]);
sfaKqmxMapper
.
insertOne
(
kqDo
);
}
catch
(
Exception
e
)
{
String
eMsg
=
e
.
getCause
().
getMessage
();
if
(
eMsg
.
contains
(
"for key 'date_type_unique'"
))
{
throw
new
WXLSQLException
(
ECode
.
KQMX_CURRENTLY_TYPE_KQ_HAS
);
}
else
{
throw
new
WXLSQLException
(
ECode
.
KQMX_CLOCK_IN_ERRPR
);
}
}
}
@Override
public
List
<
SfaKqMxDto
>
betweentDate
(
DateTime
dateTime
,
Long
userId
)
{
LambdaQueryWrapper
<
SfaKqmx
>
qw
=
new
LambdaQueryWrapper
<>();
qw
.
ge
(
SfaKqmx:
:
getCreateDate
,
dateTime
);
qw
.
eq
(
SfaKqmx:
:
getCreateUserId
,
userId
);
List
<
SfaKqmx
>
dos
=
sfaKqmxMapper
.
selectList
(
qw
);
List
<
SfaKqMxDto
>
dtos
=
com
.
sfa
.
common
.
core
.
utils
.
bean
.
BeanUtils
.
transitionDtos
(
dos
,
SfaKqMxDto
.
class
);
return
dtos
;
}
}
src/main/java/com/sfa/operation/domain/entity/SfaKqmx.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
domain
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* sfa考勤明细表
* @TableName sfa_kqmx
*/
@AllArgsConstructor
@NoArgsConstructor
@TableName
(
value
=
"sfa_kqmx"
)
@Data
public
class
SfaKqmx
implements
Serializable
{
/**
* 考勤明细ID
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
kqmxId
;
/**
* 员工ID
*/
private
Long
kqUserid
;
/**
* 考勤规则ID
*/
private
Long
ruleId
;
/**
* 考勤规则名称
*/
private
String
ruleName
;
/**
* 上班打卡时间
*/
private
Date
kqTime
;
/**
* 经度
*/
private
BigDecimal
kqLon
;
/**
* 纬度
*/
private
BigDecimal
kqLat
;
/**
* 打卡-省-市-区-详细地址
*/
private
String
kqAddress
;
/**
* 打卡省编码
*/
private
String
kqProvinceNum
;
/**
* 打卡省编码
*/
private
String
kqProvinc
;
/**
* 打卡城市编码
*/
private
String
kqCityNum
;
/**
* 打卡市编码
*/
private
String
kqCity
;
/**
* 打卡县/区编码
*/
private
String
kqCountyNum
;
/**
* 打卡区编码
*/
private
String
kqCounty
;
/**
* 考勤照片
*/
private
String
kqPicurl
;
/**
* 1:上班;2:午班;3:下班;
*/
private
Integer
kqType
;
private
Date
createDate
;
/**
* 记录版本
*/
private
Integer
flag
;
/**
* 记录删除
*/
private
String
delFlag
;
/**
* 创建者/打卡人员
*/
private
String
createBy
;
/**
* 创建人UserID
*/
private
Long
createUserId
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新者
*/
private
String
updateBy
;
/**
* 修改人UserID
*/
private
Long
updateUserId
;
/**
* 更新时间
*/
private
Date
updateTime
;
/**
* 备注
*/
private
String
remark
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
src/main/java/com/sfa/operation/domain/mapper/SfaKqmxMapper.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
domain
.
mapper
;
import
com.sfa.operation.domain.entity.SfaKqmx
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
/**
* @author a02200059
* @description 针对表【sfa_kqmx(sfa考勤明细表)】的数据库操作Mapper
* @createDate 2024-11-04 15:50:25
* @Entity com.sfa.operation.domain.entity.SfaKqmx
*/
@Mapper
@Repository
public
interface
SfaKqmxMapper
extends
BaseMapper
<
SfaKqmx
>
{
void
insertOne
(
SfaKqmx
kqDo
);
}
src/main/java/com/sfa/operation/pojo/request/KqMxVo.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
pojo
.
request
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.awt.geom.Point2D
;
import
java.lang.reflect.Array
;
import
java.math.BigDecimal
;
/**
* @author : liqiulin
* @date : 2024-11-04 16
* @describe :
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
KqMxVo
{
@NotNull
(
message
=
"打卡经纬度获取不到"
)
private
BigDecimal
[]
kqLocal
;
@NotBlank
(
message
=
"打卡省份获取不到"
)
private
String
kqProvinc
;
@NotBlank
(
message
=
"打卡城市获取不到"
)
private
String
kqCity
;
@NotBlank
(
message
=
"打卡区域获取不到"
)
private
String
kqCounty
;
@NotBlank
(
message
=
"详细位置获取不到"
)
private
String
kqAddress
;
private
String
kqPicurl
;
/**
* 1:上班;2:午班;3:下班;
*/
@NotNull
(
message
=
"无法判断上下班类型,请刷新重试"
)
@Max
(
value
=
3
,
message
=
"无法判断上下班类型,请刷新重试(<=3)"
)
@Min
(
value
=
1
,
message
=
"无法判断上下班类型,请刷新重试(>=1)"
)
private
Integer
kqType
;
}
src/main/java/com/sfa/operation/pojo/response/SfaKqMxDto.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
pojo
.
response
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.lang.reflect.Array
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author : liqiulin
* @date : 2024-11-04 16
* @describe :
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
SfaKqMxDto
{
/**
* 考勤明细ID
*/
private
Long
kqmxId
;
private
Date
kqTime
;
private
BigDecimal
[]
kqLocal
;
private
String
kqProvinc
;
private
String
kqCity
;
private
String
kqCounty
;
private
String
kqAddress
;
private
String
kqPicurl
;
/**
* 1:上班;2:午班;3:下班;
*/
private
Integer
kqType
;
/**
* 员工ID
*/
private
Long
kqUserid
;
/**
* 考勤规则ID
*/
private
Long
ruleId
;
/**
* 考勤规则名称
*/
private
String
ruleName
;
/**
* 打卡省编码
*/
private
String
kqProvinceNum
;
/**
* 打卡城市编码
*/
private
String
kqCityNum
;
/**
* 打卡县/区编码
*/
private
String
kqCountyNum
;
private
Date
createDate
;
/**
* 创建者/打卡人员
*/
private
String
createBy
;
/**
* 创建人UserID
*/
private
Long
createUserId
;
}
src/main/java/com/sfa/operation/service/IKqMxCoreService.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
service
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
/**
* @author : liqiulin
* @date : 2024-11-04 18
* @describe :
*/
public
interface
IKqMxCoreService
{
void
kqClockIn
(
SfaKqMxDto
kqMxDto
);
}
src/main/java/com/sfa/operation/service/IKqMxQueryService.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
service
;
import
cn.hutool.core.date.DateTime
;
import
java.util.Map
;
/**
* @author : liqiulin
* @date : 2024-11-05 14
* @describe :
*/
public
interface
IKqMxQueryService
{
Map
rollDateList
(
DateTime
dateTime
,
Long
userId
);
}
src/main/java/com/sfa/operation/service/impl/KqMxCoreServiceImpl.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
service
.
impl
;
import
com.sfa.common.core.constant.SecurityConstants
;
import
com.sfa.common.core.domain.R
;
import
com.sfa.operation.domain.dao.ISfaKqmxDao
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
import
com.sfa.operation.service.IKqMxCoreService
;
import
com.sfa.system.api.RemoteSiteService
;
import
com.sfa.system.api.pojo.response.SiteDto
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-11-04 18
* @describe :
*/
@Service
public
class
KqMxCoreServiceImpl
implements
IKqMxCoreService
{
@Autowired
RemoteSiteService
remoteSiteService
;
@Autowired
ISfaKqmxDao
kqmxDao
;
@Override
public
void
kqClockIn
(
SfaKqMxDto
kqMxDto
)
{
SiteDto
siteDto
=
new
SiteDto
()
.
setProvinceName
(
kqMxDto
.
getKqProvinc
())
.
setCityName
(
kqMxDto
.
getKqCity
())
.
setCountyName
(
kqMxDto
.
getKqCounty
());
R
<
SiteDto
>
siteDtoR
=
remoteSiteService
.
getCountyName
(
siteDto
,
SecurityConstants
.
INNER
);
if
(!
Objects
.
isNull
(
siteDtoR
.
getData
())){
SiteDto
data
=
siteDtoR
.
getData
();
kqMxDto
.
setKqProvinceNum
(
data
.
getProvinceNum
())
.
setKqCityNum
(
data
.
getCityNum
())
.
setKqCountyNum
(
data
.
getCountyNum
());
}
kqmxDao
.
add
(
kqMxDto
);
}
}
src/main/java/com/sfa/operation/service/impl/KqMxQueryServiceImpl.java
0 → 100644
浏览文件 @
52968795
package
com
.
sfa
.
operation
.
service
.
impl
;
import
cn.hutool.core.date.DateTime
;
import
com.sfa.operation.domain.dao.ISfaKqmxDao
;
import
com.sfa.operation.pojo.response.SfaKqMxDto
;
import
com.sfa.operation.service.IKqMxQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
import
java.util.stream.Collectors
;
/**
* @author : liqiulin
* @date : 2024-11-05 14
* @describe :
*/
@Service
public
class
KqMxQueryServiceImpl
implements
IKqMxQueryService
{
@Autowired
ISfaKqmxDao
sfaKqmxDao
;
@Override
public
Map
rollDateList
(
DateTime
dateTime
,
Long
userId
)
{
List
<
SfaKqMxDto
>
dtos
=
sfaKqmxDao
.
betweentDate
(
dateTime
,
userId
);
TreeMap
<
Date
,
List
<
SfaKqMxDto
>>
collect
=
dtos
.
stream
().
collect
(
Collectors
.
groupingBy
(
SfaKqMxDto:
:
getCreateDate
,
TreeMap:
:
new
,
Collectors
.
toList
()));
return
collect
.
descendingMap
();
}
}
src/main/resources/application.properties
deleted
100644 → 0
浏览文件 @
596b5893
spring.application.name
=
wangxiaolu-sfa-module-operation
src/main/resources/bootstrap-dev.yml
0 → 100644
浏览文件 @
52968795
spring
:
application
:
name
:
wangxiaolu-sfa-operation
cloud
:
nacos
:
discovery
:
server-addr
:
192.168.100.38:8848
group
:
sfa
namespace
:
7c6a8032-90e9-462f-9c58-ab8fcceb71f8
config
:
server-addr
:
192.168.100.38:8848
file-extension
:
yaml
group
:
sfa
namespace
:
7c6a8032-90e9-462f-9c58-ab8fcceb71f8
src/main/resources/bootstrap-qa.yml
0 → 100644
浏览文件 @
52968795
spring
:
application
:
name
:
wangxiaolu-sfa-operation
cloud
:
nacos
:
discovery
:
server-addr
:
192.168.100.38:8848
group
:
sfa
namespace
:
0be11bc6-b70a-4d5a-a774-b50a22863544
config
:
server-addr
:
192.168.100.38:8848
file-extension
:
yaml
group
:
sfa
namespace
:
0be11bc6-b70a-4d5a-a774-b50a22863544
src/main/resources/bootstrap.yml
0 → 100644
浏览文件 @
52968795
spring
:
profiles
:
active
:
dev
src/main/resources/logback-spring.xml
0 → 100644
浏览文件 @
52968795
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration
scan=
"true"
scanPeriod=
"60 seconds"
debug=
"false"
>
<property
name=
"APP_NAME"
value=
"wangxiaolu-sfa-module-operation"
/>
<property
name=
"MODEL_NAME"
value=
"operation"
/>
<contextName>
${APP_NAME}
</contextName>
<!-- 日志存放路径 对应yml文件中spring.profiles.active配置-->
<springProfile
name=
"dev"
>
<property
name=
"LOG_PATH"
value=
"./logs/${APP_NAME}"
/>
</springProfile>
<springProfile
name=
"qa,live"
>
<property
name=
"LOG_PATH"
value=
"/var/logs/sfa/${APP_NAME}"
/>
</springProfile>
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<property
name=
"CONSOLE_LOG_PATTERN"
value=
"${CONSOLE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} --- [%thread] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<property
name=
"FILE_LOG_PATTERN"
value=
"${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} --- [%thread] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<!-- 控制台输出 -->
<appender
name=
"console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder>
<pattern>
${CONSOLE_LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender
name=
"rollingFile"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder>
<pattern>
${FILE_LOG_PATTERN}
</pattern>
</encoder>
<file>
${LOG_PATH}/${MODEL_NAME}-today.log
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<cleanHistoryOnStart>
false
</cleanHistoryOnStart>
<fileNamePattern>
${LOG_PATH}/${MODEL_NAME}-%d{yyyy-MM-dd}.%i.gz
</fileNamePattern>
<maxFileSize>
200MB
</maxFileSize>
<maxHistory>
30
</maxHistory>
<totalSizeCap>
0
</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 按照每天生成日志文件 -->
<appender
name=
"errorFile"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder>
<pattern>
${FILE_LOG_PATTERN}
</pattern>
</encoder>
<file>
${LOG_PATH}/${MODEL_NAME}-error-today.log
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<cleanHistoryOnStart>
false
</cleanHistoryOnStart>
<fileNamePattern>
${LOG_PATH}/${MODEL_NAME}-error-%d{yyyy-MM-dd}.%i.gz
</fileNamePattern>
<maxFileSize>
200MB
</maxFileSize>
<maxHistory>
30
</maxHistory>
<totalSizeCap>
0
</totalSizeCap>
</rollingPolicy>
<!--
此日志文件只记录debug级别的
onMatch和onMismatch都有三个属性值,分别为Accept、DENY和NEUTRAL
onMatch="ACCEPT" 表示匹配该级别及以上
onMatch="DENY" 表示不匹配该级别及以上
onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
onMismatch="ACCEPT" 表示匹配该级别以下
onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
onMismatch="DENY" 表示不匹配该级别以下的
-->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<!-- 控制台-->
<root
level=
"INFO"
>
<appender-ref
ref=
"console"
/>
</root>
<!-- 文件日志-->
<root
level=
"INFO"
>
<appender-ref
ref=
"rollingFile"
/>
<appender-ref
ref=
"errorFile"
/>
<!-- <appender-ref ref="logstash"/>-->
</root>
</configuration>
\ No newline at end of file
src/main/resources/mapper/operation/SfaKqmxMapper.xml
0 → 100644
浏览文件 @
52968795
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.sfa.operation.domain.mapper.SfaKqmxMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.sfa.operation.domain.entity.SfaKqmx"
>
<id
property=
"kqmxId"
column=
"kqmx_id"
jdbcType=
"BIGINT"
/>
<result
property=
"kqUserid"
column=
"kq_userid"
jdbcType=
"BIGINT"
/>
<result
property=
"ruleId"
column=
"rule_id"
jdbcType=
"BIGINT"
/>
<result
property=
"ruleName"
column=
"rule_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqTime"
column=
"kq_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"kqLon"
column=
"kq_lon"
jdbcType=
"DECIMAL"
/>
<result
property=
"kqLat"
column=
"kq_lat"
jdbcType=
"DECIMAL"
/>
<result
property=
"kqAddress"
column=
"kq_address"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqProvinceNum"
column=
"kq_province_num"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqProvinc"
column=
"kq_provinc"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqCityNum"
column=
"kq_city_num"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqCity"
column=
"kq_city"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqCountyNum"
column=
"kq_county_num"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqCounty"
column=
"kq_county"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqPicurl"
column=
"kq_picurl"
jdbcType=
"VARCHAR"
/>
<result
property=
"kqType"
column=
"kq_type"
jdbcType=
"INTEGER"
/>
<result
property=
"createDate"
column=
"create_date"
jdbcType=
"DATE"
/>
<result
property=
"flag"
column=
"flag"
jdbcType=
"INTEGER"
/>
<result
property=
"delFlag"
column=
"del_flag"
jdbcType=
"CHAR"
/>
<result
property=
"createBy"
column=
"create_by"
jdbcType=
"VARCHAR"
/>
<result
property=
"createUserId"
column=
"create_user_id"
jdbcType=
"BIGINT"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateBy"
column=
"update_by"
jdbcType=
"VARCHAR"
/>
<result
property=
"updateUserId"
column=
"update_user_id"
jdbcType=
"BIGINT"
/>
<result
property=
"updateTime"
column=
"update_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"remark"
column=
"remark"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
kqmx_id
,kq_userid,rule_id,
rule_name,kq_time,
kq_lon,kq_lat,kq_address,
kq_province_num,kq_provinc,kq_city_num,
kq_city,kq_county_num,kq_county,
kq_picurl,kq_type,create_date,
flag,del_flag,create_by,
create_user_id,create_time,update_by,
update_user_id,update_time,remark
</sql>
<insert
id=
"insertOne"
parameterType=
"com.sfa.operation.domain.entity.SfaKqmx"
>
INSERT INTO sfa_kqmx (kq_userid, rule_id, rule_name, kq_time, kq_local, kq_lon, kq_lat, kq_address,
kq_province_num, kq_provinc, kq_city_num, kq_city, kq_county_num, kq_county, kq_picurl,
kq_type, create_date, create_by, create_user_id)
VALUES (#{kqUserid}, #{ruleId}, #{ruleName}, #{kqTime},ST_GeomFromText('POINT(${kqLon} ${kqLat})'),
#{kqLon},
#{kqLat}, #{kqAddress}, #{kqProvinceNum}, #{kqProvinc}, #{kqCityNum},
#{kqCity},
#{kqCountyNum},
#{kqCounty}, #{kqPicurl}, #{kqType}, #{createDate}, #{createBy},
#{createUserId});
</insert>
</mapper>
src/test/java/com/sfa/operation/WangxiaoluSfaModuleOperationApplicationTests.java
deleted
100644 → 0
浏览文件 @
596b5893
package
com
.
sfa
.
operation
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
WangxiaoluSfaModuleOperationApplicationTests
{
@Test
void
contextLoads
()
{
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论