Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
entrance_api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王琮
entrance_api
Commits
8afbbbe2
Commit
8afbbbe2
authored
Nov 26, 2022
by
王琮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加二维码接口,添加模板下拉选demo,修改生产环境配置文件权限问题
parent
b7326fe0
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
129 additions
and
73 deletions
+129
-73
AttendanceServiceImpl.java
...ft/sys/attendance/service/impl/AttendanceServiceImpl.java
+49
-37
SysUserController.java
...org/rcisoft/sys/sysuser/controller/SysUserController.java
+43
-0
ExcelDTO.java
src/main/java/org/rcisoft/sys/sysuser/dto/ExcelDTO.java
+9
-0
SysUserServiceImpl.java
.../rcisoft/sys/sysuser/service/impl/SysUserServiceImpl.java
+20
-11
CyEpExcelUtil.java
...main/java/org/rcisoft/sys/sysuser/util/CyEpExcelUtil.java
+6
-11
VisitUserServiceImpl.java
.../rcisoft/sys/visit/service/impl/VisitUserServiceImpl.java
+1
-13
application-prod-conf.yml
src/main/resources/application-prod-conf.yml
+1
-1
No files found.
src/main/java/org/rcisoft/sys/attendance/service/impl/AttendanceServiceImpl.java
View file @
8afbbbe2
...
...
@@ -55,14 +55,18 @@ public class AttendanceServiceImpl implements AttendanceService {
Map
<
String
,
List
<
DoorRecord
>>
list
=
listMap
.
get
(
key
).
stream
()
.
collect
(
Collectors
.
groupingBy
(
f
->
sdf
.
format
(
f
.
getCrossTime
())));
for
(
String
l
:
list
.
keySet
())
{
List
<
DoorRecord
>
records
=
list
.
get
(
l
);
// 某个员工某日所有通行记录
Attendance
att
=
new
Attendance
();
att
.
setPeopleName
(
list
.
get
(
l
)
.
get
(
0
).
getName
());
att
.
setPhoneNumber
(
list
.
get
(
l
)
.
get
(
0
).
getMobile
());
att
.
setDeptName
(
list
.
get
(
l
)
.
get
(
0
).
getDeptName
());
att
.
setPositionName
(
list
.
get
(
l
)
.
get
(
0
).
getPositionName
());
att
.
setNltBz
(
list
.
get
(
l
)
.
get
(
0
).
getNltBz
());
att
.
setPeopleName
(
records
.
get
(
0
).
getName
());
att
.
setPhoneNumber
(
records
.
get
(
0
).
getMobile
());
att
.
setDeptName
(
records
.
get
(
0
).
getDeptName
());
att
.
setPositionName
(
records
.
get
(
0
).
getPositionName
());
att
.
setNltBz
(
records
.
get
(
0
).
getNltBz
());
att
.
setKqDate
(
l
);
att
=
setValue
(
records
,
att
);
if
(
att
!=
null
)
attendanceList
.
add
(
att
);
}
}
return
null
;
...
...
@@ -79,41 +83,49 @@ public class AttendanceServiceImpl implements AttendanceService {
// 获取最后的出去时间
DoorRecord
out
=
records
.
stream
().
filter
(
r
->
r
.
getDeviceType
().
equals
(
"2"
)).
skip
(
records
.
size
()
-
1
)
.
findFirst
().
orElse
(
null
);
// 判断最后出去的时间是否大于最早进来的时间
if
(
work
!=
null
&&
out
!=
null
)
{
Date
beginTime
=
null
;
Date
endTime
=
null
;
long
sumTime
=
0
l
;
for
(
int
i
=
0
;
i
<
records
.
size
();
i
++)
{
if
(
records
.
get
(
i
).
getDeviceType
().
equals
(
"1"
))
beginTime
=
records
.
get
(
i
).
getCrossTime
();
if
(
records
.
get
(
i
).
getDeviceType
().
equals
(
"2"
))
endTime
=
records
.
get
(
i
).
getCrossTime
();
if
(
beginTime
!=
null
&&
endTime
!=
null
)
{
sumTime
+=
TimeUtils
.
getDatePoor
(
beginTime
,
endTime
);
beginTime
=
null
;
endTime
=
null
;
}
}
if
(
sumTime
>
0
)
{
BigDecimal
totalFee
=
new
BigDecimal
(
sumTime
);
BigDecimal
d100
=
new
BigDecimal
(
60
*
60
*
1000
);
BigDecimal
big3
=
totalFee
.
divide
(
d100
,
1
,
RoundingMode
.
HALF_UP
);
attendance
.
setDuration
(
big3
);
}
// 查询所有班次
SysDictData
sysDictData
=
new
SysDictData
();
sysDictData
.
setDictType
(
"shift"
);
List
<
SysDictData
>
shiftList
=
sysDictDataRepositorys
.
querySysDictDatas
(
sysDictData
);
SysDictData
data
=
shiftList
.
stream
().
filter
(
s
->
s
.
getDictLabel
()
.
equals
(
attendance
.
getNltBz
())).
findFirst
().
orElse
(
null
);
attendance
.
setKqFlag
(
"异常"
);
if
(
data
!=
null
)
{
// 班次最小时长
BigDecimal
xz
=
new
BigDecimal
(
data
.
getRemarks
());
if
(
xz
.
compareTo
(
attendance
.
getDuration
())
<
0
)
attendance
.
setKqFlag
(
"正常"
);
String
begin
=
time
.
format
(
work
.
getCrossTime
());
String
end
=
time
.
format
(
out
.
getCrossTime
());
if
(!(
begin
.
compareTo
(
end
)
>
0
))
return
null
;
attendance
.
setWorkShift
(
sdf
.
format
(
work
.
getCrossTime
()));
attendance
.
setClosingTime
(
sdf
.
format
(
out
.
getCrossTime
()));
}
else
return
null
;
Date
beginTime
=
null
;
Date
endTime
=
null
;
long
sumTime
=
0
l
;
for
(
int
i
=
0
;
i
<
records
.
size
();
i
++)
{
if
(
records
.
get
(
i
).
getDeviceType
().
equals
(
"1"
))
beginTime
=
records
.
get
(
i
).
getCrossTime
();
if
(
records
.
get
(
i
).
getDeviceType
().
equals
(
"2"
))
endTime
=
records
.
get
(
i
).
getCrossTime
();
if
(
beginTime
!=
null
&&
endTime
!=
null
)
{
sumTime
+=
TimeUtils
.
getDatePoor
(
beginTime
,
endTime
);
beginTime
=
null
;
endTime
=
null
;
}
}
if
(
sumTime
>
0
)
{
BigDecimal
totalFee
=
new
BigDecimal
(
sumTime
);
BigDecimal
d100
=
new
BigDecimal
(
60
*
60
*
1000
);
BigDecimal
big3
=
totalFee
.
divide
(
d100
,
1
,
RoundingMode
.
HALF_UP
);
attendance
.
setDuration
(
big3
);
}
// 查询所有班次
SysDictData
sysDictData
=
new
SysDictData
();
sysDictData
.
setDictType
(
"shift"
);
List
<
SysDictData
>
shiftList
=
sysDictDataRepositorys
.
querySysDictDatas
(
sysDictData
);
SysDictData
data
=
shiftList
.
stream
().
filter
(
s
->
s
.
getDictLabel
()
.
equals
(
attendance
.
getNltBz
())).
findFirst
().
orElse
(
null
);
attendance
.
setKqFlag
(
"异常"
);
if
(
data
!=
null
)
{
// 班次最小时长
BigDecimal
xz
=
new
BigDecimal
(
data
.
getRemarks
());
if
(
xz
.
compareTo
(
attendance
.
getDuration
())
<
0
)
attendance
.
setKqFlag
(
"正常"
);
}
return
attendance
;
}
}
src/main/java/org/rcisoft/sys/sysuser/controller/SysUserController.java
View file @
8afbbbe2
...
...
@@ -3,13 +3,17 @@ package org.rcisoft.sys.sysuser.controller;
/*固定导入*/
import
cn.hutool.core.codec.Base64Encoder
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.rcisoft.core.anno.CyEptSm4EnableAnno
;
import
org.rcisoft.core.anno.CyOpeLogAnno
;
import
org.rcisoft.core.exception.CyServiceException
;
import
org.rcisoft.core.operlog.enums.CyLogTypeEnum
;
import
org.rcisoft.core.result.enums.CyReSysExcEnum
;
import
org.rcisoft.core.util.CyEpExcelUtil
;
import
org.rcisoft.core.util.CyQrCodeUtil
;
import
org.rcisoft.sys.sysuser.dao.SysUserRepositorys
;
import
org.rcisoft.sys.sysuser.dto.ExportUserDTO
;
import
org.rcisoft.sys.sysuser.entity.SysUser
;
...
...
@@ -24,11 +28,14 @@ import org.rcisoft.core.constant.CyMessCons;
import
org.rcisoft.core.controller.CyPaginationController
;
import
org.rcisoft.core.model.CyGridModel
;
import
javax.imageio.ImageIO
;
import
javax.servlet.http.HttpServletResponse
;
import
org.rcisoft.sys.sysuser.service.SysUserService
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.awt.image.BufferedImage
;
import
java.io.ByteArrayOutputStream
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
...
...
@@ -209,4 +216,40 @@ public class SysUserController extends CyPaginationController<SysUser> {
CyMessCons
.
MESSAGE_ALERT_ERROR
,
sysUserServiceImpl
.
importUserExcel
(
file
));
}
/**
* 获取 二维码接口地址
* 配置文件需要 配置 前缀
*
* @param businessId
* @return
* @deprecated 前端生成 二维码
* 后端返回 base64
*/
@GetMapping
(
"/getTradeScan/{businessId:\\w+}"
)
@ResponseBody
public
CyResult
getTradeScan
(
@PathVariable
Integer
businessId
)
{
String
codeUrl
=
"sysUserServiceImpl.findById(businessId).toString()"
;
String
png_base64
=
null
;
//返回二维码 并且构造支付包web支付对象
ByteArrayOutputStream
baOp
=
new
ByteArrayOutputStream
();
try
{
BufferedImage
bufImg
=
CyQrCodeUtil
.
qRCodeCommon
(
codeUrl
);
// 生成二维码QRCode图片
ImageIO
.
write
(
bufImg
,
"png"
,
baOp
);
byte
[]
bytes
=
baOp
.
toByteArray
();
//转换成字节
/**
* jdk 17 替代方案
*/
png_base64
=
Base64Encoder
.
encode
(
bytes
).
trim
();
png_base64
=
png_base64
.
replaceAll
(
"\n"
,
""
).
replaceAll
(
"\r"
,
""
);
//删除 \r\n
}
catch
(
Exception
e
)
{
throw
new
CyServiceException
(
CyReSysExcEnum
.
ERROR
);
}
return
CyResultGenUtil
.
builder
(
new
CyPersistModel
(
1
),
CyMessCons
.
MESSAGE_ALERT_SUCCESS
,
CyMessCons
.
MESSAGE_ALERT_ERROR
,
png_base64
);
}
}
src/main/java/org/rcisoft/sys/sysuser/dto/ExcelDTO.java
0 → 100644
View file @
8afbbbe2
package
org
.
rcisoft
.
sys
.
sysuser
.
dto
;
import
lombok.Data
;
@Data
public
class
ExcelDTO
{
// 职位
private
String
[]
shift
;
}
src/main/java/org/rcisoft/sys/sysuser/service/impl/SysUserServiceImpl.java
View file @
8afbbbe2
...
...
@@ -18,13 +18,13 @@ import org.rcisoft.sys.sysuser.dao.SysDeptRepositorys;
import
org.rcisoft.sys.sysuser.dao.SysDictDataRepositorys
;
import
org.rcisoft.sys.sysuser.dao.SysUserRepositorys
;
import
org.rcisoft.sys.sysuser.dao.SysUserRoleRepository
;
import
org.rcisoft.sys.sysuser.dto.ExcelDTO
;
import
org.rcisoft.sys.sysuser.dto.ExportUserDTO
;
import
org.rcisoft.sys.sysuser.entity.SysDept
;
import
org.rcisoft.sys.sysuser.entity.SysDictData
;
import
org.rcisoft.sys.sysuser.entity.SysUser
;
import
org.rcisoft.sys.sysuser.entity.SysUserRole
;
import
org.rcisoft.sys.sysuser.service.SysUserService
;
//import org.rcisoft.sys.sysuser.util.CheckUtil;
import
org.rcisoft.sys.sysuser.util.CheckUtil
;
import
org.rcisoft.sys.sysuser.util.CyEpExcelUtil
;
import
org.rcisoft.sys.wbac.user.dto.ErrorDTO
;
...
...
@@ -318,13 +318,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserRepositorys, SysUser>
}
@Override
public
List
<
SysUser
>
getList
(){
public
List
<
SysUser
>
getList
()
{
List
<
SysUser
>
sysUserList
=
baseMapper
.
getUserList
();
for
(
SysUser
user
:
sysUserList
)
{
String
deptId
=
user
.
getDeptId
();
if
(
deptId
!=
null
){
for
(
SysUser
user
:
sysUserList
)
{
String
deptId
=
user
.
getDeptId
();
if
(
deptId
!=
null
)
{
SysDept
dept
=
sysDeptRepositorys
.
getDeptById
(
deptId
);
if
(
dept
!=
null
&&
dept
.
getDeptName
()
!=
null
)
{
if
(
dept
!=
null
&&
dept
.
getDeptName
()
!=
null
)
{
user
.
setDeptName
(
dept
.
getDeptName
());
}
}
...
...
@@ -332,12 +332,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserRepositorys, SysUser>
return
sysUserList
;
}
public
SysUser
getUserById
(
Integer
id
){
public
SysUser
getUserById
(
Integer
id
)
{
SysUser
user
=
baseMapper
.
getUserById
(
id
);
String
deptId
=
user
.
getDeptId
();
if
(
deptId
!=
null
){
String
deptId
=
user
.
getDeptId
();
if
(
deptId
!=
null
)
{
SysDept
dept
=
sysDeptRepositorys
.
getDeptById
(
deptId
);
if
(
dept
!=
null
&&
dept
.
getDeptName
()
!=
null
)
{
if
(
dept
!=
null
&&
dept
.
getDeptName
()
!=
null
)
{
user
.
setDeptName
(
dept
.
getDeptName
());
}
}
...
...
@@ -429,8 +429,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserRepositorys, SysUser>
for
(
int
i
=
0
;
i
<
500
;
i
++)
{
imOutSysUsers
.
add
(
exportUserDTO
);
}
// 导出模板需要的下拉列的值
ExcelDTO
excelDto
=
new
ExcelDTO
();
SysDictData
sysDictData
=
new
SysDictData
();
sysDictData
.
setDictType
(
"shift"
);
sysDictData
.
setNormal
();
List
<
SysDictData
>
shiftList
=
sysDictDataRepositorys
.
querySysDictDatas
(
sysDictData
);
String
[]
shift
=
shiftList
.
stream
().
map
(
SysDictData:
:
getDictLabel
).
collect
(
Collectors
.
toList
())
.
toArray
(
new
String
[
shiftList
.
size
()]);
excelDto
.
setShift
(
shift
);
CyEpExcelUtil
.
exportExcelSelect
(
imOutSysUsers
,
"用户信息"
,
"用户"
,
ExportUserDTO
.
class
,
"模板.xls"
,
response
,
null
);
ExportUserDTO
.
class
,
"模板.xls"
,
response
,
excelDto
);
return
1
;
}
...
...
src/main/java/org/rcisoft/sys/sysuser/util/CyEpExcelUtil.java
View file @
8afbbbe2
...
...
@@ -18,7 +18,7 @@ import org.apache.poi.ss.usermodel.Workbook;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.ss.util.CellRangeAddressList
;
import
org.rcisoft.core.exception.CyServiceException
;
import
org.rcisoft.sys.
wbac.
user.dto.ExcelDTO
;
import
org.rcisoft.sys.
sys
user.dto.ExcelDTO
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -180,18 +180,13 @@ public class CyEpExcelUtil {
private
static
void
defaultExportSelect
(
List
<?>
list
,
Class
<?>
pojoClass
,
String
fileName
,
HttpServletResponse
response
,
ExportParams
exportParams
,
ExcelDTO
excelDto
)
{
Workbook
workbook
=
ExcelExportUtil
.
exportExcel
(
exportParams
,
pojoClass
,
list
);
/*
CellRangeAddress c = CellRangeAddress.valueOf("G
3:H3");
workbook.getSheetAt(0).setAutoFilter(c);
/* CellRangeAddress c = CellRangeAddress.valueOf("H
3:H3");
workbook.getSheetAt(0).setAutoFilter(c);
*/
//岗位
if (null != excelDto.getPost() && excelDto.getPost().length > 0) {
CyEpExcelUtil.selectList(workbook, 3, 510, 7, 7, excelDto.getPost());
}
//性别
if (null != excelDto.getSex() && excelDto.getSex().length > 0) {
CyEpExcelUtil.selectList(workbook, 3, 510, 6, 6, excelDto.getSex());
if
(
null
!=
excelDto
.
getShift
()
&&
excelDto
.
getShift
().
length
>
0
)
{
CyEpExcelUtil
.
selectList
(
workbook
,
3
,
510
,
7
,
7
,
excelDto
.
getShift
());
}
*/
if
(
workbook
!=
null
)
{
downLoadExcel
(
fileName
,
response
,
workbook
);
}
...
...
src/main/java/org/rcisoft/sys/visit/service/impl/VisitUserServiceImpl.java
View file @
8afbbbe2
...
...
@@ -8,9 +8,6 @@ import org.rcisoft.core.result.enums.CyResSvcExcEnum;
import
org.rcisoft.core.util.CyCompareToolUtils
;
import
org.rcisoft.core.util.CyUserUtil
;
import
org.rcisoft.core.model.CyPersistModel
;
import
org.rcisoft.sys.dictionary.service.DictionaryService
;
import
org.rcisoft.sys.sysuser.dao.SysDeptRepositorys
;
import
org.rcisoft.sys.sysuser.dao.SysDictDataRepositorys
;
import
org.rcisoft.sys.sysuser.dao.SysUserRepositorys
;
import
org.rcisoft.sys.sysuser.entity.SysUser
;
import
org.rcisoft.sys.sysuser.service.impl.SysUserServiceImpl
;
...
...
@@ -23,7 +20,6 @@ import org.rcisoft.sys.visit.entity.VisitUser;
import
org.rcisoft.sys.visit.service.VisitUserService
;
import
org.rcisoft.sys.wbac.user.dto.ErrorDTO
;
import
org.rcisoft.sys.wbac.user.dto.ExcelDTO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Isolation
;
...
...
@@ -50,13 +46,6 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
@Autowired
private
SysUserRepositorys
sysUserRepositorys
;
@Autowired
private
SysDeptRepositorys
sysDeptRepositorys
;
@Autowired
private
SysDictDataRepositorys
sysDictDataRepositorys
;
@Autowired
private
DictionaryService
dictionaryService
;
@Autowired
private
CyDownErrorTxtComp
errorTxt
;
@Autowired
...
...
@@ -182,9 +171,8 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
for
(
int
i
=
0
;
i
<
500
;
i
++)
{
dtoList
.
add
(
exportVisitUserDTO
);
}
ExcelDTO
excelDto
=
new
ExcelDTO
();
CyEpExcelUtil
.
exportExcelSelect
(
dtoList
,
"访客信息"
,
"访客"
,
ExportVisitUserDTO
.
class
,
"模板.xls"
,
response
,
excelDto
);
ExportVisitUserDTO
.
class
,
"模板.xls"
,
response
,
null
);
return
1
;
}
...
...
src/main/resources/application-prod-conf.yml
View file @
8afbbbe2
...
...
@@ -63,7 +63,7 @@ cy:
-
"
/excelUtil/**"
#- "/cros/**"
-
"
/nlttest/add/**"
-
"
/**/**"
#
- "/**/**"
permitStatic
:
[
"
/"
,
"
/*.html"
,
"
/favicon.ico"
,
"
/**/*.html"
,
"
/**/*.js"
,
"
/**/*.css"
]
logoutSuccessUrl
:
"
/login"
loginPage
:
"
/login"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment