diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java index 4534469..f2e304f 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java @@ -65,6 +65,10 @@ public class BusinessConstants { * 安全帽设备类型 */ public final static String AQM = "aqm"; + /** + * 球机 + */ + public final static String BALL = "ball"; /** * 吊装预警设备 */ diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/WarnInfoVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/WarnInfoVo.java index 3001fb5..2f3f8d3 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/WarnInfoVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/WarnInfoVo.java @@ -31,6 +31,8 @@ public class WarnInfoVo { private String base64Url; /**人员姓名*/ private String name; + /**是否加载图片*/ + private Boolean isLoad = false; /** 班组id */ @Excel(name = "班组id") diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java index f31759b..adc557f 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java @@ -1,15 +1,21 @@ package com.bonus.bracelet.controller; import com.bonus.bracelet.service.IConsControlService; +import com.bonus.common.core.constant.BusinessConstants; +import com.bonus.common.core.text.Convert; +import com.bonus.common.core.utils.ServletUtils; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.entity.app.vo.JdConfigVo; import com.bonus.common.entity.bracelet.BraceletParamsDto; import com.bonus.common.entity.bracelet.vo.CheckConfigVo; +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -46,10 +52,8 @@ public class ConsControlController extends BaseController { * @date 2024/8/8 17:58 */ @GetMapping("getBallWarnLists") - public TableDataInfo getBallWarnLists(BraceletParamsDto dto){ - startPage(); - List list = service.getBallWarnLists(dto); - return getDataTable(list); + public AjaxResult getBallWarnLists(BraceletParamsDto dto){ + return service.getBallWarnLists(dto); } /** @@ -60,10 +64,12 @@ public class ConsControlController extends BaseController { * @date 2024/8/9 9:42 */ @GetMapping("getWarnLists") - public TableDataInfo getWarnLists(BraceletParamsDto dto){ - startPage(); - List list = service.getWarnLists(dto); - return getDataTable(list); + public AjaxResult getWarnLists(BraceletParamsDto dto){ + Integer pageNum = Convert.toInt(ServletUtils.getParameter(BusinessConstants.PAGE_NUM), 1); + Integer pageSize = Convert.toInt(ServletUtils.getParameter(BusinessConstants.PAGE_SIZE), 10); + PageHelper.startPage(pageNum, pageSize); + PageInfo pageInfo = service.getWarnLists(dto); + return AjaxResult.success(pageInfo.getList()); } /** @@ -216,4 +222,16 @@ public class ConsControlController extends BaseController { public AjaxResult getConfigJdDevice(BraceletParamsDto dto){ return service.getConfigJdDevice(dto); } + + /** + * 根据文件ID获取照片 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/22 10:01 + */ + @PostMapping("getPhotosById") + public AjaxResult getPhotosById(@RequestBody BraceletParamsDto dto) { + return service.getPhotosById(dto); + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java index bb398e3..3d92e90 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java @@ -5,6 +5,7 @@ import com.bonus.common.entity.app.vo.JdConfigVo; import com.bonus.common.entity.bracelet.BraceletParamsDto; import com.bonus.common.entity.bracelet.vo.CheckConfigVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -32,7 +33,7 @@ public interface IConsControlService { * @author cwchen * @date 2024/8/8 17:58 */ - List getBallWarnLists(BraceletParamsDto dto); + AjaxResult getBallWarnLists(BraceletParamsDto dto); /** * 预警信息 @@ -41,7 +42,7 @@ public interface IConsControlService { * @author cwchen * @date 2024/8/9 9:44 */ - List getWarnLists(BraceletParamsDto dto); + PageInfo getWarnLists(BraceletParamsDto dto); /** * 人员管控-人员树 @@ -168,4 +169,13 @@ public interface IConsControlService { * @date 2024/8/18 18:02 */ AjaxResult getConfigJdDevice(BraceletParamsDto dto); + + /** + * 根据文件ID获取照片 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/22 10:01 + */ + AjaxResult getPhotosById(BraceletParamsDto dto); } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java index 518966d..6a37170 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java @@ -23,6 +23,7 @@ import com.bonus.common.entity.bracelet.vo.*; import com.bonus.common.security.utils.ValidatorsUtils; import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.domain.SysFile; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -32,6 +33,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @className:ConsControlServiceImpl @@ -78,18 +81,54 @@ public class ConsControlServiceImpl implements IConsControlService { } @Override - public List getBallWarnLists(BraceletParamsDto dto) { - List warnInfoVoList = new ArrayList<>(); + public AjaxResult getBallWarnLists(BraceletParamsDto dto) { + List> dataList = new ArrayList<>(); try { - warnInfoVoList = mapper.getBallWarnLists(dto); - for (WarnInfoVo vo : warnInfoVoList) { - String imgBase64 = getImgBase64(vo.getBase64Url()); - vo.setBase64Url(imgBase64); + // 设备类型设置为球机 + dto.setDevType(BusinessConstants.BALL); + List warnInfoVoList = mapper.getBallWarnLists(dto); + if(CollectionUtils.isNotEmpty(warnInfoVoList)){ + for (int i = 0; i < warnInfoVoList.size(); i++) { + WarnInfoVo warnInfoVo = warnInfoVoList.get(i); + if(StringUtils.isEmpty(warnInfoVo.getBase64Url())){ + warnInfoVo.setBase64Url("66c68c712350293fa1d6b197"); + } + // 前三张违章照片加载图片,其余调用加载 + if (i < 3) { + String imgBase64 = getImgBase64(warnInfoVo.getBase64Url()); + warnInfoVo.setBase64Url(imgBase64); + warnInfoVo.setIsLoad(true); + } + } + dataList = groupList(warnInfoVoList); } } catch (Exception e) { log.error(e.toString(), e); } - return warnInfoVoList; + return AjaxResult.success(dataList); + } + + private static final Integer MAX_NUMBER = 3; + + /** + * 计算切分次数 + */ + private static Integer countStep(Integer size) { + return (size + MAX_NUMBER - 1) / MAX_NUMBER; + } + + /** + * 切割数组 + * @param list + * @return List> + * @author cwchen + * @date 2024/8/22 13:31 + */ + public List> groupList(List list) { + List> dataList = new ArrayList<>(); + int limit = countStep(list.size()); + dataList = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().skip(a * MAX_NUMBER).limit(MAX_NUMBER).parallel().collect(Collectors.toList())).collect(Collectors.toList()); + return dataList; } /** @@ -116,14 +155,17 @@ public class ConsControlServiceImpl implements IConsControlService { } @Override - public List getWarnLists(BraceletParamsDto dto) { + public PageInfo getWarnLists(BraceletParamsDto dto) { List warnInfoVoList = new ArrayList<>(); try { + // 设备类型设置为球机 + dto.setDevType(BusinessConstants.BALL); warnInfoVoList = mapper.getWarnLists(dto); } catch (Exception e) { log.error(e.toString(), e); } - return warnInfoVoList; + PageInfo pageInfo = new PageInfo<>(warnInfoVoList); + return pageInfo; } @Override @@ -273,7 +315,7 @@ public class ConsControlServiceImpl implements IConsControlService { return AjaxResult.error("时间格式错误(HH:MM)"); } } - if(timeArr.length > 0){ + if (timeArr.length > 0) { return AjaxResult.error("固定时间验证不能超过时间配置项"); } } else if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE2)) { @@ -478,7 +520,7 @@ public class ConsControlServiceImpl implements IConsControlService { if (CollectionUtils.isEmpty(configItems)) { return AjaxResult.error("配置项不能为空"); } - if(configItems.size() > 10){ + if (configItems.size() > 10) { return AjaxResult.error("设备配置项不能超过十个"); } Set itemsHashSet = new HashSet<>(configItems); @@ -505,11 +547,42 @@ public class ConsControlServiceImpl implements IConsControlService { try { list = mapper.getConfigJdDevice(dto); } catch (Exception e) { - log.error(e.toString(),e); + log.error(e.toString(), e); } return AjaxResult.success(list); } + @Override + public AjaxResult getPhotosById(BraceletParamsDto dto) { + List base64List = new ArrayList<>(); + List dataName = dto.getDataName(); + for (String filePath : dataName) { + System.err.println(filePath); + String imageBase64 = getImageBase64(filePath); + base64List.add(imageBase64); + } + return AjaxResult.success(base64List); + } + + /** + * 获取文件 + * + * @param filePath + * @return String + * @author cwchen + * @date 2024/8/22 10:02 + */ + public String getImageBase64(String filePath) { + R result = remoteFileService.getImgBase64(filePath, SecurityConstants.INNER); + if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { + String jsonString = JSON.toJSONString(result.getData()); + JSONObject item = JSON.parseObject(jsonString); + String base64 = item.getString("url"); + return base64; + } + return null; + } + /** * 赋值手环设备的经纬度 * diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml index 191e5f5..394eb4a 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml @@ -87,31 +87,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY a.orderTime DESC - + @@ -125,16 +118,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN tb_project tp ON tp.id = tw.pro_id AND tp.del_flag = 0 LEFT JOIN tb_device td ON tw.dev_id = td.id AND td.del_flag = 0 LEFT JOIN sys_dict_data sdd ON td.dev_type = sdd.dict_value AND sdd.dict_type = 'sys_device_type' - - - tp.depart_id = -1 - - - AND tp.depart_id = #{departId} - - AND tp.depart_id IS NOT NULL - - ORDER BY tw.create_time DESC + WHERE tw.dev_type = 1 AND tw.warn_type = 2 + + AND tp.depart_id = -1 + + + AND tp.depart_id = #{departId} + + AND tp.depart_id IS NOT NULL + ORDER BY tw.warn_time