feat(eightwork): 添加有限空间作业导出功能
parent
b58a480c0f
commit
eab5c0bac2
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<EightworkConfinedspaceExcelExportEntity> converDOsToExcelEntitys(List<EightworkInfoDO> data);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<String, Object> params = new HashMap<>();
|
||||
// params.put("ids",ids);
|
||||
// params.put("eqWorkType", WorkCodeEnum.CONFINEDSPACE_WORK.getWorkType());
|
||||
qry.setPageSize(10000);
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
|
||||
PageResponse<EightworkInfoDO> pageResponse = eightworkInfoRepository.listPage(params);
|
||||
|
||||
// List<EightworkConfinedspaceExcelExportEntity> userExcelExportEntities = eightworkInfoCoConvertor.converDOsToExcelEntitys(pageResponse.getData());
|
||||
List<EightworkConfinedspaceExcelExportEntity> userExcelExportEntities = new ArrayList<>();
|
||||
//获取idlist
|
||||
List<String> workIdList = pageResponse.getData().stream().map(EightworkInfoDO::getWorkId).collect(Collectors.toList());
|
||||
List<EightworkSupplementaryInfoDO> eightworkSupplementaryInfoDOList = eightworkSupplementaryInfoRepository.getListByWorkIdList(workIdList, "gas");
|
||||
//分组,取创建时间排序取第一个
|
||||
Map<String, EightworkSupplementaryInfoDO> 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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<StatisticsByWorkTypeCO> statisticsByWorkType(EightworkInfoPageQry qry){
|
||||
return eightworkInfoQueryExe.statisticsByWorkType(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportConfinedspace(EightworkInfoPageQry qry, HttpServletResponse httpServletResponse) {
|
||||
eightworkInfoQueryExe.exportConfinedspace(qry,httpServletResponse);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ public class EightworkInfoPageQry extends PageQuery {
|
|||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private List<Long> ids;
|
||||
private String menuPath;
|
||||
private String eqWorkType;
|
||||
private List<Long> inCorpInfoId;
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -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<EightworkConfinedspaceExcelExportEntity> userExcelExportEntities) {
|
||||
try {
|
||||
ExcelUtils.exportExcel(httpServletResponse, EightworkConfinedspaceExcelExportEntity.class, "有限空间作业台账", userExcelExportEntities);
|
||||
} catch (Exception e) {
|
||||
throw new BizException("导出失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -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有分支结束
|
||||
|
|
|
|||
|
|
@ -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否
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@ public interface EightworkSupplementaryInfoRepository extends BaseRepository<Eig
|
|||
* @return 删除的记录数
|
||||
*/
|
||||
int physicalDeleteByWorkId(String workId);
|
||||
|
||||
List<EightworkSupplementaryInfoDO> getListByWorkIdList(List<String> workIdList, String gas);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<EightworkSupplementaryInfoDO> getListByWorkIdList(List<String> workIdList, String type) {
|
||||
LambdaQueryWrapper<EightworkSupplementaryInfoDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(EightworkSupplementaryInfoDO::getWorkId, workIdList);
|
||||
queryWrapper.eq(EightworkSupplementaryInfoDO::getType, type);
|
||||
return list(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<if test="params.ids != null and params.ids.size() > 0">
|
||||
and t.id in
|
||||
<foreach collection="params.ids" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="params.eqWorkType != null and params.eqWorkType != ''">
|
||||
and t.work_type = #{params.eqWorkType}
|
||||
</if>
|
||||
|
|
|
|||
Loading…
Reference in New Issue