LED屏显示调整
parent
df917bbe01
commit
3dbbca0291
|
|
@ -21,6 +21,14 @@ public interface DevTowerProjectConfigMapper
|
|||
*/
|
||||
public DevTowerProjectConfig selectDevTowerProjectConfigById(Long id);
|
||||
|
||||
/**
|
||||
* 根据设备ID查询塔基检测配置
|
||||
*
|
||||
* @param deviceId 设备ID
|
||||
* @return 塔基检测配置
|
||||
*/
|
||||
public DevTowerProjectConfig selectDevTowerProjectConfigByDeviceId(Long deviceId);
|
||||
|
||||
/**
|
||||
* 查询塔基检测配置列表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -96,6 +96,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<include refid="selectDevTowerProjectConfigVo"/>
|
||||
where dtpc.id = #{id} and dtpc.is_del=0
|
||||
</select>
|
||||
|
||||
<select id="selectDevTowerProjectConfigByDeviceId" parameterType="Long" resultMap="DevTowerProjectConfigResult">
|
||||
<include refid="selectDevTowerProjectConfigVo"/>
|
||||
where dtpc.id = #{deviceId} and dtpc.is_del=0
|
||||
</select>
|
||||
|
||||
<insert id="insertDevTowerProjectConfig" parameterType="DevTowerProjectConfig" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into dev_tower_project_config
|
||||
|
|
|
|||
|
|
@ -61,9 +61,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="latitude != null "> and pma.latitude = #{latitude}</if>
|
||||
<if test="attDate != null "> and pma.att_date = #{attDate}</if>
|
||||
<if test="attImg != null and attImg != ''"> and pma.att_img = #{attImg}</if>
|
||||
<if test="isDel != null "> and pma.is_del = #{isDel}</if>
|
||||
<if test="isDel != null "> and pma.work_area_id = #{isDel}</if>
|
||||
<if test="state != null "> and pma.state = #{state}</if>
|
||||
<if test="workAreaId != null "> and wa.work_area_id = #{workAreaId}</if>
|
||||
<if test="workAreaId != null "> and pma.is_del = #{workAreaId}</if>
|
||||
<if test="userName!=null and userName!=''"> and psu.user_name like concat('%', #{userName}, '%')</if>
|
||||
<if test="userPhone!=null and userPhone!=''"> and psu.user_phone like concat('%', #{userPhone}, '%')</if>
|
||||
<if test="startDate!=null"> and date(pma.att_date) >= date(#{startDate})</if>
|
||||
|
|
@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
) psu ON pma.user_id = psu.user_id
|
||||
left join sys_dict_data dic1 on psu.`craft_type`=dic1.`dict_value` and dic1.`dict_type`='pro_craft_type'
|
||||
left join sys_dict_data dic2 on psu.`craft_post`=dic2.`dict_value` and dic2.`dict_type`='pro_craft_post'
|
||||
WHERE pma.is_del = 0 AND pma.in_out = 'in' AND pma.work_area_id = #{workAreaId} and pma.project_id = #{projectId}
|
||||
WHERE pma.work_area_id = 0 AND pma.in_out = 'in' AND pma.is_del = #{workAreaId} and pma.project_id = #{projectId}
|
||||
AND DATE(pma.att_date) = CURDATE()
|
||||
) ranked_data
|
||||
WHERE rn = 1
|
||||
|
|
|
|||
|
|
@ -105,10 +105,13 @@ public class LedDrawService {
|
|||
programFile.addArea(area);
|
||||
// 添加图片页
|
||||
if (imagePaths != null && imagePaths.length > 0) {
|
||||
logger.info("图片数量2={},sn={},x:0,y:17,w:{},h:{}",imagePaths.length,ledScreen.getDeviceSn(),ledScreen.getWidth().intValue(),
|
||||
ledScreen.getHeight().intValue()-32);
|
||||
area = new TextCaptionBxArea(0, 17, ledScreen.getWidth().intValue(),
|
||||
ledScreen.getHeight().intValue()-16, profile);
|
||||
ledScreen.getHeight().intValue()-32, profile);
|
||||
for (String imagePath : imagePaths) {
|
||||
ImageFileBxPage imagePage = new ImageFileBxPage(imagePath);
|
||||
logger.info("图片路径:{}", imagePath);
|
||||
area.addPage(imagePage);
|
||||
}
|
||||
programFile.addArea(area);
|
||||
|
|
@ -118,7 +121,7 @@ public class LedDrawService {
|
|||
onbon.bx06.area.DateTimeBxArea timeBxArea = new onbon.bx06.area.DateTimeBxArea(0, ledScreen.getHeight().intValue()-16, ledScreen.getWidth().intValue(), 16, profile);
|
||||
timeBxArea.setMultiline(false);
|
||||
timeBxArea.setDateStyle(DateStyle.YYYY_MM_DD_3);
|
||||
timeBxArea.setTimeStyle(TimeStyle.HH12_MM_SS_1);
|
||||
timeBxArea.setTimeStyle(TimeStyle.HH_MM_SS_1);
|
||||
timeBxArea.setWeekStyle(WeekStyle.CHINESE);
|
||||
|
||||
programFile.addArea(timeBxArea);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ import com.yanzhu.manage.mapper.ProMobileAttendanceDataMapper;
|
|||
import com.yanzhu.system.domain.SysLedscreen;
|
||||
import com.yanzhu.system.domain.SysWorkArea;
|
||||
import com.yanzhu.system.mapper.SysLedscreenMapper;
|
||||
import com.yanzhu.system.mapper.SysWorkAreaMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -18,11 +19,14 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Service
|
||||
public class LedScreenServiceImpl implements ILedScreenService {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(LedScreenServiceImpl.class);
|
||||
@Autowired
|
||||
private SysLedscreenMapper sysLedscreenMapper;
|
||||
|
||||
|
|
@ -154,7 +158,11 @@ public class LedScreenServiceImpl implements ILedScreenService {
|
|||
where.setWorkAreaId(ledScreen.getWorkareaId());
|
||||
where.setProjectId(ledScreen.getProjectId());
|
||||
// 可以添加更多筛选条件,如最近考勤时间等
|
||||
return proMobileAttendanceDataMapper.selectProMobileAttendanceDataListByWorkArea(where);
|
||||
List<ProMobileAttendanceData> list=proMobileAttendanceDataMapper.selectProMobileAttendanceDataListByWorkArea(where);
|
||||
//打印日志
|
||||
log.info("根据工区ID获取考勤数据: {}条, 工区ID: {}, 项目ID: {}", list.size(), ledScreen.getWorkareaId(), ledScreen.getProjectId());
|
||||
//根据屏的DeviceNo为目录创建图片路径
|
||||
return list;
|
||||
// return Arrays.stream("1,2,3,4,5,6,7,8,9,10".split(",")).map(id -> {
|
||||
// ProMobileAttendanceData d=new ProMobileAttendanceData();
|
||||
// d.setId(Long.parseLong(id));
|
||||
|
|
|
|||
|
|
@ -26,108 +26,117 @@ public class Uni2LedDrawer extends BaseDrawer{
|
|||
|
||||
|
||||
int screenHeight=ledScreen.getHeight().intValue();
|
||||
int dataLine = Math.max(3, (screenHeight-32)/16-1); // 确保dataLine至少为1
|
||||
int dataLine = Math.max(3, (screenHeight-32)/18-1); // 确保dataLine至少为1
|
||||
List<String> imagePaths = new ArrayList<>();
|
||||
//根据dataLine来对list进行分页,调用绘制方法
|
||||
if (!attendanceDataList.isEmpty() && dataLine > 0) { // 检查列表不为空且dataLine大于0
|
||||
for (int i = 0; i < attendanceDataList.size(); i += dataLine) {
|
||||
List<ProMobileAttendanceData> subList = attendanceDataList.subList(i, Math.min(i + dataLine, attendanceDataList.size()));
|
||||
String imagePath=ledSavePath + "image" + (i / dataLine + 1) + ".bmp";
|
||||
drawImage(ledScreen, subList, imagePath);
|
||||
drawImage(ledScreen, subList, imagePath, dataLine);
|
||||
imagePaths.add(imagePath);
|
||||
}
|
||||
}
|
||||
imagePaths.clear();
|
||||
return imagePaths.toArray(new String[0]);
|
||||
}
|
||||
|
||||
private static void drawImage(SysLedscreen ledScreen, List<ProMobileAttendanceData> subList, String imagePath) {
|
||||
private static void drawImage(SysLedscreen ledScreen, List<ProMobileAttendanceData> subList, String imagePath, int maxRows) {
|
||||
int screenWidth=ledScreen.getWidth().intValue();
|
||||
int lineHeight = 16;
|
||||
int screenHeight=ledScreen.getHeight().intValue();
|
||||
int lineHeight = 18;
|
||||
int headerHeight = lineHeight;
|
||||
int rowHeight = lineHeight;
|
||||
|
||||
int margin = 3;
|
||||
int margin = 2;
|
||||
int drawWidth = screenWidth - 2 * margin;
|
||||
int totalHeight = headerHeight + subList.size() * rowHeight;
|
||||
int imageHeight = screenHeight - 32;
|
||||
int totalHeight = imageHeight - 2 * margin;
|
||||
|
||||
int imageWidth = screenWidth;
|
||||
int imageHeight = totalHeight + 2 * margin;
|
||||
|
||||
// 创建4位16色的BMP图片
|
||||
BufferedImage image = create4BitBmpImage(imageWidth, imageHeight);
|
||||
BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_BINARY);
|
||||
Graphics2D g2d = image.createGraphics();
|
||||
|
||||
try {
|
||||
// 设置背景色为黑色
|
||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
|
||||
|
||||
g2d.setColor(Color.BLACK);
|
||||
g2d.fillRect(0, 0, imageWidth, imageHeight);
|
||||
|
||||
// 设置字体
|
||||
Font font = new Font("宋体", Font.PLAIN, 12);
|
||||
Font font = new Font("宋体", Font.BOLD, 14);
|
||||
g2d.setFont(font);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
|
||||
|
||||
// 设置文字颜色为白色
|
||||
g2d.setColor(Color.WHITE);
|
||||
|
||||
// 表头:姓名 班组 进入时间
|
||||
String[] headers = {"姓名", "班组", "进入时间"};
|
||||
int[] columnWidths = {drawWidth / 3, drawWidth / 3, drawWidth / 3};
|
||||
|
||||
// 绘制表头
|
||||
int x = margin;
|
||||
for (int i = 0; i < headers.length; i++) {
|
||||
g2d.drawString(headers[i], x + 2, margin + headerHeight - 4);
|
||||
g2d.drawString(headers[i], x + 2, margin + headerHeight - 2);
|
||||
x += columnWidths[i];
|
||||
}
|
||||
|
||||
// 绘制表头下划线
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawLine(margin, margin + headerHeight, margin + drawWidth, margin + headerHeight);
|
||||
|
||||
// 绘制数据行
|
||||
g2d.setColor(Color.WHITE);
|
||||
for (int i = 0; i < subList.size(); i++) {
|
||||
ProMobileAttendanceData data = subList.get(i);
|
||||
for (int i = 0; i < maxRows; i++) {
|
||||
int rowY = margin + headerHeight + i * rowHeight;
|
||||
int lineY = rowY + rowHeight;
|
||||
|
||||
// 获取数据
|
||||
String userName = data.getUserName() != null ? data.getUserName() : "";
|
||||
String subDeptGroupName = data.getSubDeptGroupName() != null ? data.getSubDeptGroupName() : "";
|
||||
|
||||
// 格式化考勤时间
|
||||
String attTime = "";
|
||||
if (data.getAttDate() != null) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
||||
attTime = sdf.format(data.getAttDate());
|
||||
if (lineY > margin + totalHeight) {
|
||||
lineY = margin + totalHeight;
|
||||
}
|
||||
|
||||
// 绘制数据行
|
||||
x = margin;
|
||||
g2d.drawString(userName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString(subDeptGroupName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString(attTime, x + 2, rowY + rowHeight - 4);
|
||||
if (i < subList.size()) {
|
||||
ProMobileAttendanceData data = subList.get(i);
|
||||
|
||||
String userName = data.getUserName() != null ? data.getUserName() : "";
|
||||
String subDeptGroupName = data.getSubDeptGroupName() != null ? data.getSubDeptGroupName() : "";
|
||||
|
||||
String attTime = "";
|
||||
if (data.getAttDate() != null) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
||||
attTime = sdf.format(data.getAttDate());
|
||||
}
|
||||
|
||||
x = margin;
|
||||
g2d.drawString(userName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString(subDeptGroupName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString(attTime, x + 2, rowY + rowHeight - 4);
|
||||
} else {
|
||||
x = margin;
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
}
|
||||
|
||||
// 绘制行下划线
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawLine(margin, rowY + rowHeight, margin + drawWidth, rowY + rowHeight);
|
||||
g2d.drawLine(margin, lineY, margin + drawWidth, lineY);
|
||||
}
|
||||
|
||||
// 绘制垂直分割线
|
||||
g2d.setColor(Color.WHITE);
|
||||
int x1 = margin + columnWidths[0];
|
||||
int x2 = margin + columnWidths[0] + columnWidths[1];
|
||||
g2d.drawLine(x1, margin, x1, margin + totalHeight);
|
||||
g2d.drawLine(x2, margin, x2, margin + totalHeight);
|
||||
|
||||
// 绘制表格外边框
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawRect(margin, margin, drawWidth, totalHeight);
|
||||
|
||||
// 保存图片为BMP格式
|
||||
File outputFile = new File(imagePath);
|
||||
ImageIO.write(image, "bmp", outputFile);
|
||||
|
||||
|
|
|
|||
|
|
@ -27,111 +27,120 @@ public class UniLedDrawer extends BaseDrawer{
|
|||
|
||||
|
||||
int screenHeight=ledScreen.getHeight().intValue();
|
||||
int dataLine = Math.max(3, (screenHeight-32)/16-1); // 确保dataLine至少为1
|
||||
int dataLine = Math.max(3, (screenHeight-32)/18-1); // 确保dataLine至少为1
|
||||
List<String> imagePaths = new ArrayList<>();
|
||||
//根据dataLine来对list进行分页,调用绘制方法
|
||||
if (!attendanceDataList.isEmpty() && dataLine > 0) { // 检查列表不为空且dataLine大于0
|
||||
for (int i = 0; i < attendanceDataList.size(); i += dataLine) {
|
||||
List<ProMobileAttendanceData> subList = attendanceDataList.subList(i, Math.min(i + dataLine, attendanceDataList.size()));
|
||||
String imagePath=ledSavePath + "image" + (i / dataLine + 1) + ".bmp";
|
||||
drawImage(ledScreen, subList, imagePath);
|
||||
drawImage(ledScreen, subList, imagePath, dataLine);
|
||||
imagePaths.add(imagePath);
|
||||
}
|
||||
}
|
||||
imagePaths.clear();
|
||||
return imagePaths.toArray(new String[0]);
|
||||
}
|
||||
|
||||
private static void drawImage(SysLedscreen ledScreen, List<ProMobileAttendanceData> subList, String imagePath) {
|
||||
private static void drawImage(SysLedscreen ledScreen, List<ProMobileAttendanceData> subList, String imagePath, int maxRows) {
|
||||
int screenWidth=ledScreen.getWidth().intValue();
|
||||
int lineHeight = 16;
|
||||
int screenHeight=ledScreen.getHeight().intValue();
|
||||
int lineHeight = 18;
|
||||
int headerHeight = lineHeight;
|
||||
int rowHeight = lineHeight;
|
||||
|
||||
int margin = 3;
|
||||
int margin = 2;
|
||||
int drawWidth = screenWidth - 2 * margin;
|
||||
int totalHeight = headerHeight + subList.size() * rowHeight;
|
||||
|
||||
int imageHeight = screenHeight - 32;
|
||||
int totalHeight = imageHeight - 2 * margin;
|
||||
|
||||
int imageWidth = screenWidth;
|
||||
int imageHeight = totalHeight + 2 * margin;
|
||||
|
||||
// 创建4位16色的BMP图片
|
||||
BufferedImage image = create4BitBmpImage(imageWidth, imageHeight);
|
||||
|
||||
BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_BINARY);
|
||||
Graphics2D g2d = image.createGraphics();
|
||||
|
||||
|
||||
try {
|
||||
// 设置背景色为黑色
|
||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
|
||||
|
||||
g2d.setColor(Color.BLACK);
|
||||
g2d.fillRect(0, 0, imageWidth, imageHeight);
|
||||
|
||||
// 设置字体
|
||||
Font font = new Font("宋体", Font.PLAIN, 12);
|
||||
|
||||
Font font = new Font("宋体", Font.BOLD, 14);
|
||||
g2d.setFont(font);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||
|
||||
// 设置文字颜色为白色
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
|
||||
// 表头:姓名 班组 进入时间
|
||||
|
||||
String[] headers = {"姓名", "班组", "进入时间"};
|
||||
int[] columnWidths = {drawWidth / 3, drawWidth / 3, drawWidth / 3};
|
||||
|
||||
// 绘制表头
|
||||
|
||||
int x = margin;
|
||||
for (int i = 0; i < headers.length; i++) {
|
||||
g2d.drawString(headers[i], x + 2, margin + headerHeight - 4);
|
||||
g2d.drawString(headers[i], x + 2, margin + headerHeight - 2);
|
||||
x += columnWidths[i];
|
||||
}
|
||||
|
||||
// 绘制表头下划线
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawLine(margin, margin + headerHeight, margin + drawWidth, margin + headerHeight);
|
||||
|
||||
// 绘制数据行
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
for (int i = 0; i < subList.size(); i++) {
|
||||
ProMobileAttendanceData data = subList.get(i);
|
||||
for (int i = 0; i < maxRows; i++) {
|
||||
int rowY = margin + headerHeight + i * rowHeight;
|
||||
|
||||
// 获取数据
|
||||
String userName = data.getUserName() != null ? data.getUserName() : "";
|
||||
String subDeptGroupName = data.getSubDeptGroupName() != null ? data.getSubDeptGroupName() : "";
|
||||
|
||||
// 格式化考勤时间
|
||||
String attTime = "";
|
||||
if (data.getAttDate() != null) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
||||
attTime = sdf.format(data.getAttDate());
|
||||
int lineY = rowY + rowHeight;
|
||||
|
||||
if (lineY > margin + totalHeight) {
|
||||
lineY = margin + totalHeight;
|
||||
}
|
||||
|
||||
// 绘制数据行
|
||||
x = margin;
|
||||
g2d.drawString(userName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString(subDeptGroupName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString(attTime, x + 2, rowY + rowHeight - 4);
|
||||
|
||||
// 绘制行下划线
|
||||
|
||||
if (i < subList.size()) {
|
||||
ProMobileAttendanceData data = subList.get(i);
|
||||
|
||||
String userName = data.getUserName() != null ? data.getUserName() : "";
|
||||
String subDeptGroupName = data.getSubDeptGroupName() != null ? data.getSubDeptGroupName() : "";
|
||||
|
||||
String attTime = "";
|
||||
if (data.getAttDate() != null) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
||||
attTime = sdf.format(data.getAttDate());
|
||||
}
|
||||
|
||||
x = margin;
|
||||
g2d.drawString(userName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString(subDeptGroupName, x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString(attTime, x + 2, rowY + rowHeight - 4);
|
||||
} else {
|
||||
x = margin;
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[0];
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
x += columnWidths[1];
|
||||
g2d.drawString("", x + 2, rowY + rowHeight - 4);
|
||||
}
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawLine(margin, rowY + rowHeight, margin + drawWidth, rowY + rowHeight);
|
||||
g2d.drawLine(margin, lineY, margin + drawWidth, lineY);
|
||||
}
|
||||
|
||||
// 绘制垂直分割线
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
int x1 = margin + columnWidths[0];
|
||||
int x2 = margin + columnWidths[0] + columnWidths[1];
|
||||
g2d.drawLine(x1, margin, x1, margin + totalHeight);
|
||||
g2d.drawLine(x2, margin, x2, margin + totalHeight);
|
||||
|
||||
// 绘制表格外边框
|
||||
|
||||
g2d.setColor(Color.WHITE);
|
||||
g2d.drawRect(margin, margin, drawWidth, totalHeight);
|
||||
|
||||
// 保存图片为BMP格式
|
||||
|
||||
File outputFile = new File(imagePath);
|
||||
ImageIO.write(image, "bmp", outputFile);
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -404,11 +404,11 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/tyLinux/run/push")
|
||||
public AjaxResult tyLinuxPushRunData(@RequestBody @Valid TyTowerLinuxRunReqVO req) {
|
||||
log.info("desApi.towerCrane.tyLinux.run.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
String deviceKey = req.getEid().toString();
|
||||
String deviceKey = config.getDeviceSn();
|
||||
DevTowerDataLimit devTowerDataLimit = staticLimitMap.get(deviceKey);
|
||||
if(devTowerDataLimit==null){
|
||||
DevTowerDataLimit devTowerDataLimitQuery = new DevTowerDataLimit();
|
||||
|
|
@ -456,11 +456,11 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/v2_ty/run/push")
|
||||
public AjaxResult tyPushRunData(@RequestBody @Valid TyTowerRunReqVO req) {
|
||||
log.info("desApi.towerCrane.v2_ty.run.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
String deviceKey = req.getEid().toString();
|
||||
String deviceKey = config.getDeviceSn();
|
||||
DevTowerDataLimit devTowerDataLimit = staticLimitMap.get(deviceKey);
|
||||
if(devTowerDataLimit==null){
|
||||
DevTowerDataLimit devTowerDataLimitQuery = new DevTowerDataLimit();
|
||||
|
|
@ -508,7 +508,7 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/tyLinux/round/push")
|
||||
public AjaxResult tyLinuxPushRoundData(@RequestBody @Valid TyTowerLinuxRoundReqVO req) {
|
||||
log.info("desApi.towerCrane.tyLinux.round.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
|
|
@ -548,7 +548,7 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/v2_ty/round/push")
|
||||
public AjaxResult tyPushRoundData(@RequestBody @Valid TyTowerRoundReqVO req) {
|
||||
log.info("desApi.towerCrane.v2_ty.round.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
|
|
@ -588,7 +588,7 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/tyLinux/warning/push")
|
||||
public AjaxResult tyLinuxPushWarningData(@RequestBody @Valid TyTowerLinuxWarningReqVO req) {
|
||||
log.info("desApi.towerCrane.tyLinux.warning.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
|
|
@ -629,7 +629,7 @@ public class TowerCraneApiController {
|
|||
@PostMapping("/v2_ty/warning/push")
|
||||
public AjaxResult tyPushWarningData(@RequestBody @Valid TyTowerWarningReqVO req) {
|
||||
log.info("desApi.towerCrane.v2_ty.warning.push...{}",req.getEid());
|
||||
DevTowerProjectConfig config = redisService.getCacheObject(YANZHU_DEVICE_TOWER + req.getEid());
|
||||
DevTowerProjectConfig config = devTowerProjectConfigService.selectDevTowerProjectConfigByDeviceId(req.getEid().longValue());
|
||||
if (config == null) {
|
||||
throw new ServiceException(HttpStatusEnum.ERROR.getInfo(), HttpStatusEnum.ERROR.getCode());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,14 @@ public interface IDevTowerProjectConfigService
|
|||
*/
|
||||
public DevTowerProjectConfig selectDevTowerProjectConfigById(Long id);
|
||||
|
||||
/**
|
||||
* 根据设备ID查询塔基检测配置
|
||||
*
|
||||
* @param deviceId 设备ID
|
||||
* @return 塔基检测配置
|
||||
*/
|
||||
public DevTowerProjectConfig selectDevTowerProjectConfigByDeviceId(Long deviceId);
|
||||
|
||||
/**
|
||||
* 查询塔基检测配置列表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -73,6 +73,21 @@ public class DevTowerProjectConfigServiceImpl implements IDevTowerProjectConfigS
|
|||
return devTowerProjectConfigMapper.selectDevTowerProjectConfigById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备ID查询塔基检测配置
|
||||
*
|
||||
* @param deviceId 设备ID
|
||||
* @return 塔基检测配置
|
||||
*/
|
||||
@Override
|
||||
public DevTowerProjectConfig selectDevTowerProjectConfigByDeviceId(Long deviceId)
|
||||
{
|
||||
DevTowerProjectConfig config = new DevTowerProjectConfig();
|
||||
config.setId(deviceId);
|
||||
List<DevTowerProjectConfig> configList = devTowerProjectConfigMapper.selectDevTowerProjectConfigList(config);
|
||||
return CollectionUtils.isNotEmpty(configList) ? configList.get(0) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询塔基检测配置列表
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue