From 693c1c21146d8554000efe6fdbb7003268cf32bb Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 9 Aug 2024 14:34:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E7=AE=A1=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/BusinessConstants.java | 3 +- .../entity/bracelet/vo/PersonTreeVo.java | 33 +++++ .../controller/ConsControlController.java | 25 ++++ .../bracelet/mapper/ConsControlMapper.java | 31 ++++ .../bracelet/service/IConsControlService.java | 18 +++ .../service/impl/ConsControlServiceImpl.java | 62 +++++++- .../mapper/bracelet/ConsControlMapper.xml | 140 ++++++++++++++++++ 7 files changed, 304 insertions(+), 8 deletions(-) create mode 100644 bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java 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 c823314..1961e29 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 @@ -12,7 +12,8 @@ public class BusinessConstants { public static final int TYPE = 1; public static final int TYPE2 = 2; public static final int TYPE3 = 0; - public static final Long PARENT_ID = 0l; + public static final Long PARENT_ID = 0L; + public static final Integer LEVEL = 4; /** 资源类型 1-人员*/ public static final String RESOURCE_TYPE_USER = "1"; diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java new file mode 100644 index 0000000..9cdddd6 --- /dev/null +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java @@ -0,0 +1,33 @@ +package com.bonus.common.entity.bracelet.vo; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @className:PersonTreeVo + * @author:cwchen + * @date:2024-08-09-10:38 + * @version:1.0 + * @description:班组人员树 + */ +@Data +public class PersonTreeVo { + + /**id*/ + private String id; + /**名称*/ + private String label; + /**是否班组长*/ + private Long isTeamLeader; + /**是否告警*/ + private Integer isWarn; + + /**层级*/ + private Integer level; + /**父ID*/ + private String parentId; + + private List children = new ArrayList<>(); +} 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 f66b7bc..f82dc0f 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 @@ -65,4 +65,29 @@ public class ConsControlController extends BaseController { List list = service.getWarnLists(dto); return getDataTable(list); } + + /** + * 人员管控-人员树 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 10:34 + */ + @GetMapping("getPersonsTree") + @SysLog(title = "施工管控", businessType = OperaType.QUERY, logType = 0, module = "施工管控->人员管控", details = "人员管控") + public AjaxResult getPersonsTree(BraceletParamsDto dto){ + return service.getPersonsTree(dto); + } + + /** + * 今日施工班组/施工人数/安全帽信息 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 13:12 + */ + @GetMapping("getWorkInfo") + public AjaxResult getWorkInfo(BraceletParamsDto dto){ + return service.getWorkInfo(dto); + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java index 0158ed6..18fcd95 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java @@ -2,10 +2,13 @@ package com.bonus.bracelet.mapper; import com.bonus.common.entity.bracelet.BraceletParamsDto; import com.bonus.common.entity.bracelet.vo.BallTreeVo; +import com.bonus.common.entity.bracelet.vo.PersonTreeVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import org.apache.ibatis.annotations.MapKey; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; /** * @className:ConsControlMapper @@ -42,4 +45,32 @@ public interface ConsControlMapper { * @date 2024/8/9 9:45 */ List getWarnLists(BraceletParamsDto dto); + + /** + * 人员管控-人员树 + * @param dto + * @return List + * @author cwchen + * @date 2024/8/9 10:44 + */ + List getPersonsTree(BraceletParamsDto dto); + + /** + * 获取今日施工班组 + * @param dto + * @return List + * @author cwchen + * @date 2024/8/9 13:16 + */ + List getWorkNum(BraceletParamsDto dto); + + /** + * 安全帽绑定信息 + * @param dto + * @return List> + * @author cwchen + * @date 2024/8/9 13:49 + */ + @MapKey("id") + List> getSafetyHatInfo(BraceletParamsDto 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 3fb1336..28bc8b1 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 @@ -40,4 +40,22 @@ public interface IConsControlService { * @date 2024/8/9 9:44 */ List getWarnLists(BraceletParamsDto dto); + + /** + * 人员管控-人员树 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 10:36 + */ + AjaxResult getPersonsTree(BraceletParamsDto dto); + + /** + * 今日施工班组/施工人数/安全帽信息 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 13:14 + */ + AjaxResult getWorkInfo(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 6fb0732..a16e175 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 @@ -15,16 +15,16 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.bracelet.BraceletParamsDto; import com.bonus.common.core.utils.BuildTreeUtil; import com.bonus.common.entity.bracelet.vo.BallTreeVo; +import com.bonus.common.entity.bracelet.vo.PersonTreeVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.domain.SysFile; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; /** * @className:ConsControlServiceImpl @@ -77,19 +77,20 @@ public class ConsControlServiceImpl implements IConsControlService { vo.setBase64Url(imgBase64); } } catch (Exception e) { - log.error(e.toString(),e); + log.error(e.toString(), e); } return warnInfoVoList; } /** * 获取违章识别图片的base64 + * * @param base64Url * @return String * @author cwchen * @date 2024/8/8 18:36 */ - public String getImgBase64(String base64Url){ + public String getImgBase64(String base64Url) { try { R result = remoteFileService.getImgBase64(base64Url, SecurityConstants.INNER); if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { @@ -99,7 +100,7 @@ public class ConsControlServiceImpl implements IConsControlService { return base64; } } catch (Exception e) { - log.error(e.toString(),e); + log.error(e.toString(), e); } return null; } @@ -110,8 +111,55 @@ public class ConsControlServiceImpl implements IConsControlService { try { warnInfoVoList = mapper.getWarnLists(dto); } catch (Exception e) { - log.error(e.toString(),e); + log.error(e.toString(), e); } return warnInfoVoList; } + + @Override + public AjaxResult getPersonsTree(BraceletParamsDto dto) { + JSONArray resultTree = new JSONArray(); + try { + List list = new ArrayList<>(); + list = mapper.getPersonsTree(dto); + for (PersonTreeVo vo : list) { + //忽略工程数据、杆塔、班组数据 1.工程 2.杆塔 3.班组 4.班组成员/临时人员 + if (!Objects.equals(vo.getLevel(), BusinessConstants.LEVEL)) { + continue; + } + String[] valArr = vo.getLabel().split("-"); + if (StringUtils.isNotEmpty(valArr[1])) { + vo.setLabel(valArr[0] + "-" + Sm4Utils.decode(valArr[1])); + } + } + //构建人员树 + resultTree = BuildTreeUtil.listInfoToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentId", "children"); + } catch (Exception e) { + log.error(e.toString(), e); + } + return AjaxResult.success(resultTree); + } + + @Override + public AjaxResult getWorkInfo(BraceletParamsDto dto) { + Map mapData = new HashMap<>(); + try { + // 获取施工班组、施工人数(包含班组人员和临时人员))、安全帽绑定信息 + List workTeamList = mapper.getWorkNum(dto); + List> safetyHatLists = mapper.getSafetyHatInfo(dto); + if (CollectionUtils.isNotEmpty(safetyHatLists)) { + for (Map map : safetyHatLists) { + if (map.get("phone") != null) { + map.put("phone", Sm4Utils.decode(String.valueOf(map.get("phone")))); + } + } + } + mapData.put("workTeamNum", workTeamList.get(0)); + mapData.put("workUserNum", workTeamList.get(1) + workTeamList.get(2)); + mapData.put("safetyHatList", safetyHatLists); + } catch (Exception e) { + log.error(e.toString(), e); + } + return AjaxResult.success(mapData); + } } 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 7876228..fe01803 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 @@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND a.departId = #{departId} + AND a.departId IS NOT NULL ORDER BY a.orderTime DESC @@ -94,4 +95,143 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY tw.create_time DESC + + + + + + \ No newline at end of file From 8a9c176c6809079ecaa100284b155bdbb8fed516 Mon Sep 17 00:00:00 2001 From: jjLv <1981429112@qq.com> Date: Fri, 9 Aug 2024 14:59:03 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=83=A8=E7=AE=A1?= =?UTF-8?q?=E7=90=86bug=E4=BF=AE=E5=A4=8D=EF=BC=8C=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/BusinessConstants.java | 3 + .../exportVo/QueryConstructionExportVo.java | 41 ++++++++++++ .../exportVo/WarnHistoryExportVo.java | 29 +++++++++ .../common/entity/bracelet/vo/PersonVo.java | 5 ++ .../entity/bracelet/vo/QueryConstruction.java | 4 +- .../common/entity/bracelet/vo/WarnInfoVo.java | 26 ++++++++ .../controller/ExportFileController.java | 63 +++++++++++++++++++ .../QueryConstructionController.java | 14 +++++ .../controller/WarnHistoryController.java | 39 ++++++++++++ .../mapper/QueryConstructionMapper.java | 9 +++ .../bracelet/mapper/WarnHistoryMapper.java | 23 +++++++ .../service/IQueryConstructionService.java | 9 +++ .../bracelet/service/IWarnHistoryService.java | 20 ++++++ .../impl/QueryConstructionServiceImpl.java | 51 +++++++++++++++ .../bracelet/service/impl/WarnHistorympl.java | 38 +++++++++++ .../mapper/bracelet/BaseProjectMapper.xml | 2 +- .../bracelet/QueryConstructionMapper.xml | 32 +++++++--- .../mapper/bracelet/WarnHistoryMapper.xml | 44 +++++++++++++ 18 files changed, 442 insertions(+), 10 deletions(-) create mode 100644 bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/QueryConstructionExportVo.java create mode 100644 bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/WarnHistoryExportVo.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/WarnHistoryController.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/WarnHistoryMapper.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IWarnHistoryService.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/WarnHistorympl.java create mode 100644 bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml 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 1961e29..768a735 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 @@ -18,6 +18,9 @@ public class BusinessConstants { /** 资源类型 1-人员*/ public static final String RESOURCE_TYPE_USER = "1"; + /** 资源类型 6-临时人员*/ + public static final String RESOURCE_TYPE_USERTEMP = "6"; + public final static String XLSX = ".xlsx"; public final static String XLS = ".xls"; diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/QueryConstructionExportVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/QueryConstructionExportVo.java new file mode 100644 index 0000000..94a0688 --- /dev/null +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/QueryConstructionExportVo.java @@ -0,0 +1,41 @@ +package com.bonus.common.entity.bracelet.exportVo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @className:QueryConstructionExportVo + * @version:1.0 + * @description:施工记录导出-vo + */ +@Data +public class QueryConstructionExportVo { + + @Excel(name = "序号", width = 10.0,height = 20.0, orderNum = "0") + private String id; + + @Excel(name = "工程名称", width = 20.0,height = 15.0,orderNum = "1") + private String proName; + + @Excel(name = "项目部名称", width = 20.0,height = 15.0,orderNum = "2") + private String departName; + + @Excel(name = "施工班组", width = 20.0,height = 15.0,orderNum = "3") + private String teamName; + + @Excel(name = "班组负责人", width = 20.0,height = 15.0,orderNum = "4") + private String teamLeader; + + @Excel(name = "班组施工人数", width = 20.0,height = 15.0,orderNum = "5") + private int teamNum; + + @Excel(name = "临时人数", width = 20.0,height = 15.0,orderNum = "6") + private int tempNum; + + @Excel(name = "施工时间", width = 20.0,height = 15.0,orderNum = "7") + private String lyTime; + + @Excel(name = "施工预警次数", width = 20.0,height = 15.0,orderNum = "8") + private int warnNum; + +} diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/WarnHistoryExportVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/WarnHistoryExportVo.java new file mode 100644 index 0000000..143f944 --- /dev/null +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/exportVo/WarnHistoryExportVo.java @@ -0,0 +1,29 @@ +package com.bonus.common.entity.bracelet.exportVo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @className:WarnHistoryExportVo + * @version:1.0 + * @description:预警历史记录导出-vo + */ +@Data +public class WarnHistoryExportVo { + + @Excel(name = "序号", width = 10.0,height = 20.0, orderNum = "0") + private String id; + + @Excel(name = "设备类型", width = 20.0,height = 15.0,orderNum = "1") + private String devTypeName; + + @Excel(name = "设备名称", width = 20.0,height = 15.0,orderNum = "2") + private String devName; + + @Excel(name = "预警时间", width = 20.0,height = 15.0,orderNum = "3") + private String warnTime; + + @Excel(name = "预警内容", width = 20.0,height = 15.0,orderNum = "4") + private String warnContent; + +} diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java index c89f880..30c35f5 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java @@ -106,6 +106,11 @@ public class PersonVo implements Serializable { */ private Integer certificateNum; + /** + * 资源类型 + */ + private String sourceType; + /** * 删除的文件ID */ diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/QueryConstruction.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/QueryConstruction.java index 78cc7e8..488ec38 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/QueryConstruction.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/QueryConstruction.java @@ -37,8 +37,8 @@ public class QueryConstruction extends BaseEntity @Excel(name = "班组负责人") private String teamLeader; - /** 班组负责人 */ - @Excel(name = "班组负责人") + /** 班组负责人电话 */ + @Excel(name = "班组负责人电话") private String teamPhone; /** 班组施工人数 */ 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 86610f8..3001fb5 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 @@ -1,9 +1,13 @@ package com.bonus.common.entity.bracelet.vo; +import com.bonus.common.core.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; import java.util.Date; +import java.util.HashMap; +import java.util.Map; /** * @className:BallWarnVo @@ -27,4 +31,26 @@ public class WarnInfoVo { private String base64Url; /**人员姓名*/ private String name; + + /** 班组id */ + @Excel(name = "班组id") + private Long teamId; + + /** 请求参数 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Map params; + + public Map getParams() + { + if (params == null) + { + params = new HashMap<>(); + } + return params; + } + + public void setParams(Map params) + { + this.params = params; + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ExportFileController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ExportFileController.java index e07c484..695eb9c 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ExportFileController.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ExportFileController.java @@ -61,6 +61,12 @@ public class ExportFileController { @Resource(name = "IDeviceLyRecordService") private IDeviceLyRecordService iDeviceLyRecordService; + @Autowired + private IQueryConstructionService iQueryConstructionService; + + @Resource(name = "IWarnHistoryService") + private IWarnHistoryService iWarnHistoryService; + @Autowired private IBaseProjectService iBaseProjectService; @@ -276,4 +282,61 @@ public class ExportFileController { log.error(e.toString(), e); } } + + @GetMapping("exportConstructionRecord") + public void exportConstructionRecord(HttpServletRequest request, HttpServletResponse response, QueryConstruction dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + List queryConstructionExportVoList = new ArrayList<>(); + List queryConstructionLists = iQueryConstructionService.selectConstructionList(dto); + for (int i = 0; i < queryConstructionLists.size(); i++) { + QueryConstructionExportVo exportVo = new QueryConstructionExportVo(); + QueryConstruction vo = queryConstructionLists.get(i); + BeanUtils.copyProperties(vo, exportVo); + exportVo.setId((i + 1) + ""); + exportVo.setTeamLeader(vo.getTeamLeader()+ "\\" +vo.getTeamPhone()); + exportVo.setLyTime(sdf.format(vo.getLyTime())); + queryConstructionExportVoList.add(exportVo); + } + ExportParams exportParams = new ExportParams("施工记录", "施工记录", ExcelType.XSSF); + exportParams.setStyle(ExcelStyleUtil.class); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, QueryConstructionExportVo.class, queryConstructionExportVoList); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("施工记录" + ".xlsx", "UTF-8")); + ServletOutputStream outputStream = response.getOutputStream(); + workbook.write(outputStream); + outputStream.close(); + workbook.close(); + } catch (Exception e) { + log.error(e.toString(), e); + } + } + + @GetMapping("exportWarnHistory") + public void exportWarnHistory(HttpServletRequest request, HttpServletResponse response, WarnInfoVo dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + List warnHistoryExportVoList = new ArrayList<>(); + List warnHistoryLists = iWarnHistoryService.getWarnLists(dto); + for (int i = 0; i < warnHistoryLists.size(); i++) { + WarnHistoryExportVo exportVo = new WarnHistoryExportVo(); + WarnInfoVo vo = warnHistoryLists.get(i); + BeanUtils.copyProperties(vo, exportVo); + exportVo.setId((i + 1) + ""); + exportVo.setWarnTime(sdf.format(vo.getWarnTime())); + warnHistoryExportVoList.add(exportVo); + } + ExportParams exportParams = new ExportParams("预警历史记录", "预警历史记录", ExcelType.XSSF); + exportParams.setStyle(ExcelStyleUtil.class); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, WarnHistoryExportVo.class, warnHistoryExportVoList); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("预警历史记录" + ".xlsx", "UTF-8")); + ServletOutputStream outputStream = response.getOutputStream(); + workbook.write(outputStream); + outputStream.close(); + workbook.close(); + } catch (Exception e) { + log.error(e.toString(), e); + } + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/QueryConstructionController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/QueryConstructionController.java index db1c799..ac1926d 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/QueryConstructionController.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/QueryConstructionController.java @@ -8,6 +8,7 @@ import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.entity.bracelet.vo.PersonVo; import com.bonus.common.entity.bracelet.vo.QueryConstruction; import com.bonus.common.entity.bracelet.vo.SidebandDeviceVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; import com.bonus.common.security.annotation.RequiresPermissions; @@ -91,4 +92,17 @@ public class QueryConstructionController extends BaseController } } + /** + * 施工预警信息列表 + * @param data + * @return + */ + @GetMapping("listWarn") + @SysLog(title = "综合查询", businessType = OperaType.QUERY, module = "综合查询->施工记录管理", details = "查询施工预警信息列表") + public TableDataInfo listWarn(QueryConstruction data) { + startPage(); + List list = constructionService.getWarnLists(data); + return getDataTable(list); + } + } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/WarnHistoryController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/WarnHistoryController.java new file mode 100644 index 0000000..57c00c8 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/WarnHistoryController.java @@ -0,0 +1,39 @@ +package com.bonus.bracelet.controller; + +import com.bonus.bracelet.service.IDeviceLyRecordService; +import com.bonus.bracelet.service.IWarnHistoryService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.page.TableDataInfo; +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 lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @className:WarnHistoryController + * @description:预警历史记录-web层 + */ +@RestController +@RequestMapping("/warnHistory/") +@Slf4j +public class WarnHistoryController extends BaseController { + + @Resource(name = "IWarnHistoryService") + private IWarnHistoryService service; + + @GetMapping("listWarn") + @SysLog(title = "综合查询", businessType = OperaType.QUERY,module = "综合查询->预警历史记录",details ="查询预警历史列表") + public TableDataInfo listWarn(WarnInfoVo dto) { + startPage(); + List list = service.getWarnLists(dto); + return getDataTable(list); + } + +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/QueryConstructionMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/QueryConstructionMapper.java index 874a399..9f26e06 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/QueryConstructionMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/QueryConstructionMapper.java @@ -3,6 +3,7 @@ package com.bonus.bracelet.mapper; import com.bonus.common.entity.bracelet.vo.PersonVo; import com.bonus.common.entity.bracelet.vo.QueryConstruction; import com.bonus.common.entity.bracelet.vo.SidebandDeviceVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import java.util.List; @@ -35,4 +36,12 @@ public interface QueryConstructionMapper */ List getTempLists(PersonVo data); + /** + * 施工预警信息列表 + * @param data + * @return + */ + List getWarnLists(QueryConstruction data); + + } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/WarnHistoryMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/WarnHistoryMapper.java new file mode 100644 index 0000000..236ce89 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/WarnHistoryMapper.java @@ -0,0 +1,23 @@ +package com.bonus.bracelet.mapper; + +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:DeviceLyRecordMapper + * @description:设备领用记录-mapper + */ +@Repository(value = "WarnHistoryMapper") +public interface WarnHistoryMapper { + /** + * 预警历史记录列表 + * @param dto + * @return + */ + List getWarnLists(WarnInfoVo dto); + + +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IQueryConstructionService.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IQueryConstructionService.java index 8e8295e..210938f 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IQueryConstructionService.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IQueryConstructionService.java @@ -3,6 +3,7 @@ package com.bonus.bracelet.service; import com.bonus.common.entity.bracelet.vo.PersonVo; import com.bonus.common.entity.bracelet.vo.QueryConstruction; import com.bonus.common.entity.bracelet.vo.SidebandDeviceVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import java.util.List; @@ -33,4 +34,12 @@ public interface IQueryConstructionService * @return */ List getTempLists(PersonVo data); + + /** + * 施工预警信息列表 + * @param data + * @return + */ + List getWarnLists(QueryConstruction data); + } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IWarnHistoryService.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IWarnHistoryService.java new file mode 100644 index 0000000..0555428 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IWarnHistoryService.java @@ -0,0 +1,20 @@ +package com.bonus.bracelet.service; + +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; + +import java.util.List; + +/** + * @className:IWarnHistoryService + * @description:预警历史记录-serivice + */ +public interface IWarnHistoryService { + /** + * 预警历史记录列表 + * @param dto + * @return + */ + List getWarnLists(WarnInfoVo dto); + +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/QueryConstructionServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/QueryConstructionServiceImpl.java index 1928bb1..c20f1b8 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/QueryConstructionServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/QueryConstructionServiceImpl.java @@ -1,15 +1,26 @@ package com.bonus.bracelet.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.bonus.bracelet.mapper.QueryConstructionMapper; import com.bonus.bracelet.service.IQueryConstructionService; +import com.bonus.common.core.constant.BusinessConstants; +import com.bonus.common.core.constant.HttpStatus; +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.domain.R; import com.bonus.common.core.utils.encryption.Sm4Utils; +import com.bonus.common.entity.bracelet.vo.BaseProject; import com.bonus.common.entity.bracelet.vo.PersonVo; import com.bonus.common.entity.bracelet.vo.QueryConstruction; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import com.bonus.system.api.RemoteFileService; +import com.bonus.system.api.domain.SysFile; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -26,6 +37,8 @@ public class QueryConstructionServiceImpl implements IQueryConstructionService @Autowired private QueryConstructionMapper constructionMapper; + @Resource + private RemoteFileService remoteFileService; /** * @@ -50,8 +63,12 @@ public class QueryConstructionServiceImpl implements IQueryConstructionService @Override public List getTeamLists(PersonVo data) { List list = new ArrayList<>(); + data.setSourceType(BusinessConstants.RESOURCE_TYPE_USER); try { list = constructionMapper.getTeamLists(data); + for (PersonVo vo : list) { + vo = handleData(vo); + } } catch (Exception e) { log.error(e.toString(), e); @@ -67,8 +84,42 @@ public class QueryConstructionServiceImpl implements IQueryConstructionService @Override public List getTempLists(PersonVo data) { List list = new ArrayList<>(); + data.setSourceType(BusinessConstants.RESOURCE_TYPE_USERTEMP); try { list = constructionMapper.getTempLists(data); + for (PersonVo vo : list) { + vo = handleData(vo); + } + + } catch (Exception e) { + log.error(e.toString(), e); + } + return list; + } + + public PersonVo handleData(PersonVo vo) { + vo.setIdCard(Sm4Utils.decode(vo.getIdCard())); + vo.setPhone(Sm4Utils.decode(vo.getPhone())); + R result = remoteFileService.getImgBase64(vo.getFilePath(), 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"); + vo.setBase64Url(base64); + } + return vo; + } + + /** + * 施工预警信息 + * @param data + * @return + */ + @Override + public List getWarnLists(QueryConstruction data) { + List list = new ArrayList<>(); + try { + list = constructionMapper.getWarnLists(data); } catch (Exception e) { log.error(e.toString(), e); diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/WarnHistorympl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/WarnHistorympl.java new file mode 100644 index 0000000..6ee8b43 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/WarnHistorympl.java @@ -0,0 +1,38 @@ +package com.bonus.bracelet.service.impl; + +import com.bonus.bracelet.mapper.DeviceLyRecordMapper; +import com.bonus.bracelet.mapper.WarnHistoryMapper; +import com.bonus.bracelet.service.IDeviceLyRecordService; +import com.bonus.bracelet.service.IWarnHistoryService; +import com.bonus.common.core.utils.encryption.Sm4Utils; +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; +import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @className:DeviceLyRecordServiceImpl + * @description:设备领用记录-serviceImpl + */ +@Slf4j +@Service(value = "IWarnHistoryService") +public class WarnHistorympl implements IWarnHistoryService { + + @Resource(name = "WarnHistoryMapper") + private WarnHistoryMapper mapper; + + @Override + public List getWarnLists(WarnInfoVo dto) { + List list = new ArrayList<>(); + try { + list = mapper.getWarnLists(dto); + } catch (Exception e) { + log.error(e.toString(), e); + } + return list; + } +} diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/BaseProjectMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/BaseProjectMapper.xml index 7f5e1e5..74704fd 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/BaseProjectMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/BaseProjectMapper.xml @@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select tp.id as id,tp.name as name,tp.sex as sex,tp.id_card as idCard,tp.phone as phone,tp.aqm_code as aqmCode,tp.mj_code as mjCode + select tp.id as id,tp.name as name,tp.sex as sex,tp.id_card as idCard,tp.phone as phone, + tp.aqm_code as aqmCode,tp.mj_code as mjCode,sfs.file_path AS filePath,sfs.id AS fileId from t_work_team twt left join tb_people tp on twt.team_id = tp.team_id and tp.del_flag = 0 + left join sys_file_source sfs on tp.id = sfs.source_id AND sfs.source_type = #{sourceType} AND sfs.del_flag = 0 twt.team_id = #{teamId} and twt.del_flag = 0 AND INSTR(tp.name,#{name}) > 0 - AND INSTR(tp.sex,#{sex}) > 0 + AND tp.sex = #{sex} + + + \ No newline at end of file diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml new file mode 100644 index 0000000..4e2e5d6 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml @@ -0,0 +1,44 @@ + + + + + + \ No newline at end of file From e40e5163fb6c921c73fd900ab88a95cd9075a620 Mon Sep 17 00:00:00 2001 From: jjLv <1981429112@qq.com> Date: Fri, 9 Aug 2024 17:26:57 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=A2=86=E7=94=A8?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bracelet/controller/PersonMgeController.java | 15 ++++++++++++--- .../bonus/bracelet/mapper/PersonMgeMapper.java | 6 +++--- .../mapper/bracelet/QueryConstructionMapper.xml | 2 +- .../mapper/bracelet/WarnHistoryMapper.xml | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/PersonMgeController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/PersonMgeController.java index 6ffa8de..bb37bde 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/PersonMgeController.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/PersonMgeController.java @@ -116,7 +116,10 @@ public class PersonMgeController extends BaseController { if(delhighfile != null) { for (int i = 0; i < delhighfile.length; i++) { String high = String.valueOf(delhighfile[i]); - int certicificateId = mapper.getHighId(high); + Integer certicificateId = mapper.getHighId(high); + if(certicificateId==null){ + return AjaxResult.error("被删除的高出作业证图片资源无法找到"); + } mapper.delHigh(certicificateId); mapper.delHighFile(high, certicificateId); remoteFileService.delFile(high, SecurityConstants.INNER); @@ -125,7 +128,10 @@ public class PersonMgeController extends BaseController { if(delelectfile != null) { for (int i = 0; i < delelectfile.length; i++) { String elect = String.valueOf(delelectfile[i]); - int certicificateId = mapper.getElectId(elect); + Integer certicificateId = mapper.getElectId(elect); + if(certicificateId==null){ + return AjaxResult.error("被删除的电工作业证作业证图片资源无法找到"); + } mapper.delElect(certicificateId); mapper.delElectFile(elect,certicificateId); remoteFileService.delFile(elect,SecurityConstants.INNER); @@ -134,7 +140,10 @@ public class PersonMgeController extends BaseController { if(delelsefile != null){ for (int i = 0; i < delelsefile.length; i++) { String elseFile = String.valueOf(delelsefile[i]); - int certicificateId = mapper.getElseId(elseFile); + Integer certicificateId = mapper.getElseId(elseFile); + if(certicificateId==null){ + return AjaxResult.error("被删除的其他作业证作业证图片资源无法找到"); + } mapper.delElse(certicificateId); mapper.delElseFile(elseFile,certicificateId); remoteFileService.delFile(elseFile,SecurityConstants.INNER); diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/PersonMgeMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/PersonMgeMapper.java index f4354f9..1f0d11b 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/PersonMgeMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/PersonMgeMapper.java @@ -142,7 +142,7 @@ public interface PersonMgeMapper { * @param filepath * @return */ - int getHighId(String filepath); + Integer getHighId(String filepath); /** * 删除高工证书信息 @@ -155,7 +155,7 @@ public interface PersonMgeMapper { * @param filepath * @return */ - int getElectId(String filepath); + Integer getElectId(String filepath); /** * 删除电工证书信息 @@ -168,7 +168,7 @@ public interface PersonMgeMapper { * @param filepath * @return */ - int getElseId(String filepath); + Integer getElseId(String filepath); /** * 删除其他证书信息 diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/QueryConstructionMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/QueryConstructionMapper.xml index 3e78e9f..11106ac 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/QueryConstructionMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/QueryConstructionMapper.xml @@ -81,7 +81,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join sys_dict_data sdd on sdd.dict_value = tb.dev_type and sdd.dict_type = 'sys_device_type' where tw.team_id = #{teamId} and tw.dev_type = 1 and tw.del_flag = 0 union all - select '手环箱' as warnType,'——' as deviceName,tw.warn_time as warnTime,tw.warn_content as warnContent + select '手环箱' as warnType,'\\' as deviceName,tw.warn_time as warnTime,tw.warn_content as warnContent from tb_warn tw left join tb_bracelet tbb on tw.dev_id = tbb.id and tbb.del_flag = 0 where tw.team_id = #{teamId} and tw.dev_type = 0 and tw.del_flag = 0 diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml index 4e2e5d6..85037b4 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/WarnHistoryMapper.xml @@ -18,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND tb.id = -1 union all - select '手环箱' as warnType,'——' as deviceName,tw.warn_time as warnTime,tw.warn_content as warnContent + select '手环箱' as warnType,'\\' as deviceName,tw.warn_time as warnTime,tw.warn_content as warnContent from tb_warn tw left join tb_bracelet tbb on tw.dev_id = tbb.id and tbb.del_flag = 0 where tw.dev_type = 0 and tw.del_flag = 0 From 354ce0dbd3d12d8e243468f3cc0a4375db1cbca3 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 9 Aug 2024 18:38:44 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E7=AE=A1=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/BusinessConstants.java | 3 + .../controller/ConsControlController.java | 12 +++ .../bracelet/mapper/ConsControlMapper.java | 38 ++++++++ .../bracelet/service/IConsControlService.java | 9 ++ .../service/impl/ConsControlServiceImpl.java | 86 ++++++++++++++++++- .../mapper/bracelet/ConsControlMapper.xml | 41 +++++++++ 6 files changed, 188 insertions(+), 1 deletion(-) 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 768a735..7eba5f7 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 @@ -45,6 +45,9 @@ public class BusinessConstants { /** 在施状态值*/ public final static Integer WORK_STATUS = 0; + public static final String LAT = "纬度"; + public static final String LON = "经度"; + public final static Integer CELL_1 = 1; public final static Integer CELL_2 = 2; 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 f82dc0f..d0bbebb 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 @@ -90,4 +90,16 @@ public class ConsControlController extends BaseController { public AjaxResult getWorkInfo(BraceletParamsDto dto){ return service.getWorkInfo(dto); } + + /** + * 获取整个班组人员/班组临时人员的定位/杆塔的定位以及施工范围的半径 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 14:36 + */ + @GetMapping("getPersonsInfo") + public AjaxResult getPersonsInfo(BraceletParamsDto dto){ + return service.getPersonsInfo(dto); + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java index 18fcd95..921c211 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java @@ -5,6 +5,7 @@ import com.bonus.common.entity.bracelet.vo.BallTreeVo; import com.bonus.common.entity.bracelet.vo.PersonTreeVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -73,4 +74,41 @@ public interface ConsControlMapper { */ @MapKey("id") List> getSafetyHatInfo(BraceletParamsDto dto); + + /** + * 获取杆塔坐标 + * @return Map + * @author cwchen + * @date 2024/8/9 15:13 + */ + @MapKey("id") + Map getTowerInfo(BraceletParamsDto dto); + + /** + * 获取施工距离 + * @return String + * @author cwchen + * @date 2024/8/9 15:16 + */ + String getDistance(); + + /** + * 获取绑定手环的施工班组人员、临时人员信息 + * @param dto + * @return List> + * @author cwchen + * @date 2024/8/9 15:23 + */ + @MapKey("id") + List> getWorkPersonInfo(BraceletParamsDto dto); + + /** + * 获取已绑手环的定位信息 + * @param map + * @return Map + * @author cwchen + * @date 2024/8/9 16:30 + */ + @MapKey("id") + List> getShDeviceInfo(Map map); } 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 28bc8b1..14c8c79 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 @@ -58,4 +58,13 @@ public interface IConsControlService { * @date 2024/8/9 13:14 */ AjaxResult getWorkInfo(BraceletParamsDto dto); + + /** + * 获取整个班组人员/班组临时人员的定位/杆塔的定位以及施工范围的半径 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/9 14:40 + */ + AjaxResult getPersonsInfo(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 a16e175..a1577ed 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 @@ -3,13 +3,15 @@ package com.bonus.bracelet.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.bonus.app.entity.BraceletEntity; import com.bonus.bracelet.mapper.ConsControlMapper; import com.bonus.bracelet.service.IConsControlService; import com.bonus.common.core.constant.BusinessConstants; import com.bonus.common.core.constant.HttpStatus; import com.bonus.common.core.constant.SecurityConstants; import com.bonus.common.core.domain.R; -import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.utils.HaversineUtil; +import com.bonus.common.core.utils.StringHelper; import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.bracelet.BraceletParamsDto; @@ -21,6 +23,7 @@ import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.domain.SysFile; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -162,4 +165,85 @@ public class ConsControlServiceImpl implements IConsControlService { } return AjaxResult.success(mapData); } + + @Override + public AjaxResult getPersonsInfo(BraceletParamsDto dto) { + Map mapData = new HashMap<>(); + try { + // 获取杆塔信息、施工距离、绑定手环的班组施工人员/临时人员 位置信息 + Map towerMap = mapper.getTowerInfo(dto); + String distance = mapper.getDistance(); + Double distanceValue = 0D; + if (StringUtils.isEmpty(distance)) { + distanceValue = StringUtils.isEmpty(distance) ? 50 : Double.parseDouble(distance); + } + List> personList = mapper.getWorkPersonInfo(dto); + if (CollectionUtils.isNotEmpty(personList)) { + for (Map map : personList) { + if (map.get("phone") != null) { + map.put("phone", Sm4Utils.decode(String.valueOf(map.get("phone")))); + } + // 获取已绑手环的定位信息 + List> shMapDataList = mapper.getShDeviceInfo(map); + map = getLatAndLon(shMapDataList,map); + // 验证施工人员是否超出施工范围 + Integer isAbnormal = isAbnormal(distanceValue, map, towerMap); + map.put("isWarn", isAbnormal); + } + } + mapData.put("towerInfo", towerMap); + mapData.put("distance", distanceValue); + mapData.put("personList", personList); + } catch (Exception e) { + log.error(e.toString(), e); + } + return AjaxResult.success(mapData); + } + + /** + * 班组人员/临时人员 是否超出正常施工范围 + * + * @param distance + * @param map + * @return Integer + * @author cwchen + * @date 2024/8/9 15:56 + */ + public Integer isAbnormal(Double distance, Map map, Map towerMap) { + Integer isWarn = 0; + if(map.get("lon") == null || map.get("lat") == null){ + return isWarn; + } + Double lat = Double.parseDouble(String.valueOf(towerMap.get("lat"))); + Double lon = Double.parseDouble(String.valueOf(towerMap.get("lon"))); + Double sgLat = Double.parseDouble(String.valueOf(map.get("lat"))); + Double sgLon = Double.parseDouble(String.valueOf(map.get("lon"))); + double len = HaversineUtil.vincentyDistance(sgLat, sgLon, lat, lon); + if (len > distance) { + isWarn = 1; + } + return isWarn; + } + + /** + * 赋值手环设备的经纬度 + * @param shMapDataList + * @param map + * @return Map + * @author cwchen + * @date 2024/8/9 16:56 + */ + public Map getLatAndLon(List> shMapDataList, Map map) { + if (CollectionUtils.isEmpty(shMapDataList)) { + return map; + } + for (Map mapData : shMapDataList) { + if (Objects.equals(String.valueOf(map.get("dataCode")), BusinessConstants.LAT)) { + map.put("lat", mapData.get("dataVal")); + } else if (Objects.equals(String.valueOf(map.get("dataCode")), BusinessConstants.LON)) { + map.put("lon", mapData.get("dataVal")); + } + } + return map; + } } 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 fe01803..a279cee 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 @@ -234,4 +234,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND tp.depart_id IS NOT NULL + + + + + + + + \ No newline at end of file