diff --git a/start/src/main/resources/bootstrap.yml b/start/src/main/resources/bootstrap.yml index b922a66..f893e23 100644 --- a/start/src/main/resources/bootstrap.yml +++ b/start/src/main/resources/bootstrap.yml @@ -3,8 +3,8 @@ spring: import: # - classpath:nacos.yml # - classpath:sdk.yml -# - classpath:nacos-prod.yml -# - classpath:sdk-prod.yml - - classpath:nacos-prod-gwj.yml - - classpath:sdk-prod-gwj.yml + - classpath:nacos-prod.yml + - classpath:sdk-prod.yml +# - classpath:nacos-prod-gwj.yml +# - classpath:sdk-prod-gwj.yml - classpath:swagger.yml diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java index d1c01c9..55a7b45 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java @@ -21,6 +21,7 @@ import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; /** @@ -104,5 +105,12 @@ public class EightworkInfoController { return MultiResponse.of(eightworkInfoService.statisticsByWorkType(qry)); } + @ApiOperation("有限空间导出") + @GetMapping("/exportConfinedspace") + public void exportConfinedspace(EightworkInfoPageQry qry, + HttpServletResponse httpServletResponse) { + eightworkInfoService.exportConfinedspace(qry,httpServletResponse); + } + } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/convertor/EightworkInfoCoConvertor.java b/web-app/src/main/java/com/zcloud/eightwork/command/convertor/EightworkInfoCoConvertor.java index 287bb83..369d253 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/convertor/EightworkInfoCoConvertor.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/convertor/EightworkInfoCoConvertor.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.gbscommon.excelEntity.EightworkConfinedspaceExcelExportEntity; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; @@ -70,5 +71,7 @@ public interface EightworkInfoCoConvertor { } return value.toJSONString(); } + + List converDOsToExcelEntitys(List data); } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java index e296ba8..8f362d8 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java @@ -1,19 +1,31 @@ package com.zcloud.eightwork.command.query; import com.alibaba.cola.dto.PageResponse; +import com.alibaba.fastjson.JSONObject; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.eightwork.command.convertor.EightworkInfoCoConvertor; +import com.zcloud.eightwork.domain.model.EightworkInfoE; +import com.zcloud.eightwork.domain.model.enums.WorkCodeEnum; import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.EightworkSupplementaryInfoDO; import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; +import com.zcloud.eightwork.persistence.repository.EightworkSupplementaryInfoRepository; +import com.zcloud.gbscommon.excelEntity.EightworkConfinedspaceExcelExportEntity; +import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -27,10 +39,13 @@ import java.util.stream.Collectors; */ @Component @AllArgsConstructor +@Slf4j public class EightworkInfoQueryExe { private final EightworkInfoRepository eightworkInfoRepository; private final EightworkInfoCoConvertor eightworkInfoCoConvertor; + private final EightworkSupplementaryInfoRepository eightworkSupplementaryInfoRepository; + /** * 根据id查询 * @@ -66,5 +81,96 @@ public class EightworkInfoQueryExe { return statisticsByWorkTypeCO; }).collect(Collectors.toList()); } + + public void exportConfinedspace(EightworkInfoPageQry qry, HttpServletResponse httpServletResponse) { +// Map params = new HashMap<>(); +// params.put("ids",ids); +// params.put("eqWorkType", WorkCodeEnum.CONFINEDSPACE_WORK.getWorkType()); + qry.setPageSize(10000); + Map params = PageQueryHelper.toHashMap(qry); + + PageResponse pageResponse = eightworkInfoRepository.listPage(params); + +// List userExcelExportEntities = eightworkInfoCoConvertor.converDOsToExcelEntitys(pageResponse.getData()); + List userExcelExportEntities = new ArrayList<>(); + //获取idlist + List workIdList = pageResponse.getData().stream().map(EightworkInfoDO::getWorkId).collect(Collectors.toList()); + List eightworkSupplementaryInfoDOList = eightworkSupplementaryInfoRepository.getListByWorkIdList(workIdList, "gas"); + //分组,取创建时间排序取第一个 + Map eightworkSupplementaryInfoDOMap = eightworkSupplementaryInfoDOList.stream() + .collect(Collectors.groupingBy( + EightworkSupplementaryInfoDO::getWorkId, + Collectors.collectingAndThen( + Collectors.maxBy((o1, o2) -> { + if (o1.getCreateTime() == null && o2.getCreateTime() == null) return 0; + if (o1.getCreateTime() == null) return -1; + if (o2.getCreateTime() == null) return 1; + return o1.getCreateTime().compareTo(o2.getCreateTime()); + }), + optional -> optional.orElse(null) + ) + )) + .entrySet().stream() + .filter(entry -> entry.getValue() != null) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + + for (EightworkInfoDO eightworkInfoDO : pageResponse.getData()) { + JSONObject infoJson; + if (StringUtils.isNotBlank(eightworkInfoDO.getInfo())) { + try { + infoJson = JSONObject.parseObject(eightworkInfoDO.getInfo()); + } catch (Exception e) { + log.warn("解析 info 失败,使用空对象: workId={}", eightworkInfoDO.getWorkId(), e); + infoJson = new JSONObject(); + } + } else { + infoJson = new JSONObject(); + } + JSONObject chooseLimitedSpaceJson = infoJson.getJSONObject("chooseLimitedSpace"); + if (chooseLimitedSpaceJson == null) { + chooseLimitedSpaceJson = new JSONObject(); + } + + EightworkConfinedspaceExcelExportEntity userExcelExportEntity = new EightworkConfinedspaceExcelExportEntity(); + userExcelExportEntity.setWorkTime(infoJson.getString("applyTime")); + userExcelExportEntity.setWorkContent(infoJson.getString("workContent")); + userExcelExportEntity.setType(infoJson.getString("operationTypeName")); + userExcelExportEntity.setSpaceNameAndCode(infoJson.getString("limitedSpaceNameAndCode")); + userExcelExportEntity.setLocationAndRange(chooseLimitedSpaceJson.getString("positionAndRange")); + userExcelExportEntity.setRiskLevel(chooseLimitedSpaceJson.getString("riskLevelName")); + userExcelExportEntity.setWorkPersonCount(infoJson.getString("limitSpaceWorkNum")); + + //获取 + EightworkSupplementaryInfoDO eightworkSupplementaryInfoDO = eightworkSupplementaryInfoDOMap.get(eightworkInfoDO.getWorkId()); + if (eightworkSupplementaryInfoDO != null) { + //{"oxygeAmount": "3", "samplingTime": "2026-06-09 11:24:39", "signImagePath": "1983773013086048256/202606/special_operation_restricted_space_gas_analysis_signature_photo/679bec60bf754ef69972051341714e5b.png", "samplingLocation": "4", "combustibleGasContent": "2", "toxicSubstanceContent": "1"} + JSONObject gasJson; + if (StringUtils.isNotBlank(eightworkSupplementaryInfoDO.getDetails())) { + try { + gasJson = JSONObject.parseObject(eightworkSupplementaryInfoDO.getDetails()); + } catch (Exception e) { + log.warn("解析 info 失败,使用空对象: workId={}", eightworkInfoDO.getWorkId(), e); + gasJson = new JSONObject(); + } + } else { + gasJson = new JSONObject(); + } + StringBuilder sb = new StringBuilder(); + sb.append("有毒有害物质含量:"); + sb.append(gasJson.getString("toxicSubstanceContent")); + sb.append(";可燃气含量:"); + sb.append(gasJson.getString("combustibleGasContent")); + sb.append(";氧气量:"); + sb.append(gasJson.getString("oxygeAmount")); + sb.append(";"); + userExcelExportEntity.setPreWorkDetection(sb.toString()); + } + userExcelExportEntities.add(userExcelExportEntity); + } + + EightworkInfoE eightworkInfoE = new EightworkInfoE(); + eightworkInfoE.exportConfinedspace(httpServletResponse, userExcelExportEntities); + + } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java index dba8581..2e4dfdd 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java @@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -161,5 +162,10 @@ public class EightworkInfoServiceImpl implements EightworkInfoServiceI { public List statisticsByWorkType(EightworkInfoPageQry qry){ return eightworkInfoQueryExe.statisticsByWorkType(qry); } + + @Override + public void exportConfinedspace(EightworkInfoPageQry qry, HttpServletResponse httpServletResponse) { + eightworkInfoQueryExe.exportConfinedspace(qry,httpServletResponse); + } } diff --git a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java index 2de294a..e03a1e1 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java +++ b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java @@ -8,6 +8,7 @@ import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -46,5 +47,7 @@ public interface EightworkInfoServiceI { * @param reason 撤回原因 */ void withdraw(Long id, String reason); + + void exportConfinedspace(EightworkInfoPageQry ids, HttpServletResponse httpServletResponse); } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java index 5e96e68..8d09434 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java @@ -26,6 +26,7 @@ public class EightworkInfoPageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ + private List ids; private String menuPath; private String eqWorkType; private List inCorpInfoId; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java index 50e8ff1..feb2b39 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java @@ -57,6 +57,8 @@ public class TaskFlowCO extends ClientObject { //sign_step_flag == 1 在那个步骤选人 @ApiModelProperty(value = "sign_step_flag == 1 在那个步骤选人") private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; @ApiModelProperty(value = "是否可以添加安全措施") private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java index 9c1e79f..7c29501 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java @@ -98,6 +98,8 @@ public class TaskLogCO extends ClientObject { //sign_step_flag == 1 在那个步骤选人 @ApiModelProperty(value = "sign_step_flag == 1 在那个步骤选人") private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; @ApiModelProperty(value = "是否可以添加安全措施") private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/EightworkInfoE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/EightworkInfoE.java index 19db1e7..e38b55e 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/EightworkInfoE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/EightworkInfoE.java @@ -1,10 +1,17 @@ package com.zcloud.eightwork.domain.model; +import com.alibaba.cola.exception.BizException; import com.alibaba.fastjson.JSONObject; import com.jjb.saas.framework.domain.model.BaseE; +import com.zcloud.gbscommon.excelEntity.EightworkConfinedspaceExcelExportEntity; +import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; +import com.zcloud.gbscommon.utils.ExcelUtils; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** * web-domain * @@ -41,5 +48,13 @@ public class EightworkInfoE extends BaseE { private Integer lockFlag; //详细信息 private String info; + + public void exportConfinedspace(HttpServletResponse httpServletResponse, List userExcelExportEntities) { + try { + ExcelUtils.exportExcel(httpServletResponse, EightworkConfinedspaceExcelExportEntity.class, "有限空间作业台账", userExcelExportEntities); + } catch (Exception e) { + throw new BizException("导出失败"); + } + } } diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java index 6f38db4..8caf211 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java @@ -44,6 +44,8 @@ public class TaskFlowE extends BaseE { private String specialStepCode; //sign_step_flag == 1 在那个步骤选人 private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; //是否可以添加安全措施 private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java index bb50db5..54fbf81 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java @@ -70,6 +70,8 @@ public class TaskLogE extends BaseE { private String specialStepCode; //sign_step_flag == 1 在那个步骤选人 private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; //是否可以添加安全措施 private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java index 7c1e081..c4d73ec 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java @@ -60,6 +60,8 @@ public class TaskFlowDO extends BaseDO { //sign_step_flag == 1 在那个步骤选人 @ApiModelProperty(value = "sign_step_flag == 1 在那个步骤选人") private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; @ApiModelProperty(value = "是否可以添加安全措施") private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java index bb9cbe1..6b6d548 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java @@ -95,6 +95,8 @@ public class TaskLogArchiveDO extends BaseDO { //sign_step_flag == 1 在那个步骤选人 @ApiModelProperty(value = "sign_step_flag == 1 在那个步骤选人") private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; @ApiModelProperty(value = "是否可以添加安全措施") private Integer measuresStepFlag; //0无分支1有分支开始2有分支结束 diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java index 0859c33..14b5fac 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java @@ -98,6 +98,8 @@ public class TaskLogDO extends BaseDO { //sign_step_flag == 1 在那个步骤选人 @ApiModelProperty(value = "sign_step_flag == 1 在那个步骤选人") private Integer selectSignStep; + @ApiModelProperty(value = "是否显示选人按钮,1是,2否") + private Integer showSignFlag; @ApiModelProperty(value = "是否可以添加安全措施") private Integer measuresStepFlag; //是否可以打回1是2否 diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java index b62fc1e..c1e7d16 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java @@ -25,5 +25,7 @@ public interface EightworkSupplementaryInfoRepository extends BaseRepository getListByWorkIdList(List workIdList, String gas); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java index 3e3d8da..3c39770 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java @@ -14,6 +14,7 @@ import com.zcloud.gbscommon.utils.Query; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -50,5 +51,13 @@ public class EightworkSupplementaryInfoRepositoryImpl extends BaseRepositoryImpl // 使用 Mapper 中定义的物理删除 SQL return eightworkSupplementaryInfoMapper.physicalDeleteByWorkId(workId); } + + @Override + public List getListByWorkIdList(List workIdList, String type) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(EightworkSupplementaryInfoDO::getWorkId, workIdList); + queryWrapper.eq(EightworkSupplementaryInfoDO::getType, type); + return list(queryWrapper); + } } diff --git a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml index 4bc6249..ef50150 100644 --- a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml @@ -9,6 +9,12 @@ left join vi_corp_info c on t.corpinfo_id = c.id where t.delete_enum = 'FALSE' and t.status !=0 + + and t.id in + + #{item} + + and t.work_type = #{params.eqWorkType}