Commit 8afbbbe2 authored by 王琮's avatar 王琮

添加二维码接口,添加模板下拉选demo,修改生产环境配置文件权限问题

parent b7326fe0
......@@ -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 = 0l;
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 = 0l;
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;
}
}
......@@ -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);
}
}
package org.rcisoft.sys.sysuser.dto;
import lombok.Data;
@Data
public class ExcelDTO {
// 职位
private String[] shift;
}
......@@ -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;
}
......
......@@ -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.sysuser.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("G3:H3");
workbook.getSheetAt(0).setAutoFilter(c);
/* CellRangeAddress c = CellRangeAddress.valueOf("H3: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);
}
......
......@@ -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;
}
......
......@@ -63,7 +63,7 @@ cy:
- "/excelUtil/**"
#- "/cros/**"
- "/nlttest/add/**"
- "/**/**"
#- "/**/**"
permitStatic: [ "/", "/*.html", "/favicon.ico", "/**/*.html", "/**/*.js", "/**/*.css" ]
logoutSuccessUrl: "/login"
loginPage: "/login"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment