市场法规清单添加导出按钮

This commit is contained in:
梁琦涛
2024-07-12 17:04:01 +08:00
parent b9d94bb7cb
commit af85e49d14
7 changed files with 152 additions and 17 deletions
@@ -3,30 +3,25 @@ package com.jero.modules.laws.marketStandard.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation; import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.entity.MarketStandardDetailVO; import com.jero.modules.laws.marketStandard.entity.MarketStandardDetailVO;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Map; import java.util.Map;
@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -22,7 +23,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Api(tags = "外部标准库-市场法规清单详情") @Api(tags = "市场法规清单-市场法规清单详情")
@RestController @RestController
@RequestMapping("/laws/marketStandardDetail") @RequestMapping("/laws/marketStandardDetail")
@Slf4j @Slf4j
@@ -216,4 +217,20 @@ public class MarketStandardDetailController {
lawsMarketStandardDetailService.downloadTemplate(response); lawsMarketStandardDetailService.downloadTemplate(response);
} }
/**
* 导出
*
* @param marketStandardDetail
* @return
*/
@AutoLog(value = "外部标准库-市场法规清单-导出")
@ApiOperation(value = "外部标准库-市场法规清单-导出", notes = "外部标准库-市场法规清单-导出")
@GetMapping(value = "/export")
@ApiOperationSupport(order = 2)
@RequiresPermissions("marketStandard:detail")
public ModelAndView export(LawsMarketStandardDetail marketStandardDetail, HttpServletRequest request) {
return lawsMarketStandardDetailService.export(marketStandardDetail,request);
}
} }
@@ -1,7 +1,13 @@
package com.jero.modules.laws.marketStandard.mapper; package com.jero.modules.laws.marketStandard.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -19,6 +25,26 @@ public interface LawsMarketStandardDetailMapper extends BaseMapper<LawsMarketSta
* @return * @return
*/ */
List<LawsMarketStandardDetail> getStandardData(List<String> listNum); List<LawsMarketStandardDetail> getStandardData(List<String> listNum);
/**
* 分页
* @param page
* @param queryWrapper
* @param listIds
* @return
*/
IPage<LawsMarketStandardDetail> pageList(Page<LawsMarketStandardDetail> page,
@Param(Constants.WRAPPER) QueryWrapper<LawsMarketStandardDetail> queryWrapper,
@Param("listIds") List<String> listIds);
/**
* 列表
* @param queryWrapper
* @param listIds
* @return
*/
List<LawsMarketStandardDetail> pageList(@Param(Constants.WRAPPER) QueryWrapper<LawsMarketStandardDetail> queryWrapper,
@Param("listIds") List<String> listIds);
} }
@@ -17,4 +17,18 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="pageList" resultType="com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail">
select ms.*
from laws_market_standard_detail ms
JOIN (
SELECT max(id) AS max_id
FROM laws_market_standard_detail
where manifest_id in
<foreach collection="listIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
GROUP BY standard_id
) ms1 on ms1.max_id = ms.id
${ew.customSqlSegment}
</select>
</mapper> </mapper>
@@ -5,6 +5,7 @@ import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -102,4 +103,12 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
* @return * @return
*/ */
Result<?> queryById(String id); Result<?> queryById(String id);
/**
* 导出详情
* @param marketStandardDetail
* @param request
* @return
*/
ModelAndView export(LawsMarketStandardDetail marketStandardDetail, HttpServletRequest request);
} }
@@ -3,10 +3,12 @@ package com.jero.modules.laws.marketStandard.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ImportExcelUtil; import com.jero.common.util.ImportExcelUtil;
@@ -19,11 +21,15 @@ import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMappe
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
import com.jero.modules.laws.utils.ValidUtil; import com.jero.modules.laws.utils.ValidUtil;
import com.jero.modules.quartz.entity.QuartzJob;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@@ -31,6 +37,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -81,22 +88,28 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(StringUtils.isBlank(marketStandardDetail.getManifestId())){ if(StringUtils.isBlank(marketStandardDetail.getManifestId())){
return Result.OK(new Page<>(pageNo, pageSize)); return Result.OK(new Page<>(pageNo, pageSize));
} }
LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId); List<LawsMarketStandard> listLawsMarketStandardOld = marketStandardService
if(Objects.isNull(lawsMarketStandardOld)){ .listByIds(Arrays.asList(manifestId.split(",")));
if(CollectionUtils.isEmpty(listLawsMarketStandardOld)){
return Result.error(NOT_DATA); return Result.error(NOT_DATA);
} }
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 for (LawsMarketStandard lawsMarketStandard : listLawsMarketStandardOld) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin) LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin) && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandardOld.getAuthor(),sysUser.getId()) && !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())
&& !Objects.equals(lawsMarketStandardOld.getManifestStatus(), MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){ && !Objects.equals(lawsMarketStandard.getManifestStatus(),
return Result.error("没有权限"); MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("没有权限");
}
} }
String manifestVersion = marketStandardDetail.getManifestVersion(); String manifestVersion = marketStandardDetail.getManifestVersion();
if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){ if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandardOld.getVersionFlag()); queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,
listLawsMarketStandardOld.get(0).getVersionFlag());
queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion); queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion);
LawsMarketStandard lawsMarketStandard = marketStandardService.getOne(queryLawsMarketStandard,false); LawsMarketStandard lawsMarketStandard = marketStandardService.getOne(queryLawsMarketStandard,false);
if(Objects.isNull(lawsMarketStandard)){ if(Objects.isNull(lawsMarketStandard)){
@@ -109,9 +122,9 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
QueryWrapper<LawsMarketStandardDetail> queryWrapper = QueryWrapper<LawsMarketStandardDetail> queryWrapper =
QueryGenerator.initQueryWrapper(marketStandardDetail, request.getParameterMap()); QueryGenerator.initQueryWrapper(marketStandardDetail, request.getParameterMap());
queryWrapper.in("manifest_id",listIds); queryWrapper.in("manifest_id",listIds);
queryWrapper.orderByDesc("create_time");
Page<LawsMarketStandardDetail> page = new Page<>(pageNo, pageSize); Page<LawsMarketStandardDetail> page = new Page<>(pageNo, pageSize);
return Result.OK(page(page, queryWrapper)); IPage<LawsMarketStandardDetail> res = lawsMarketStandardDetailMapper.pageList(page, queryWrapper, listIds);
return Result.OK(res);
} }
@Override @Override
@@ -504,6 +517,58 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
} }
return Result.OK(lawsMarketStandardDetail); return Result.OK(lawsMarketStandardDetail);
} }
@Override
public ModelAndView export(LawsMarketStandardDetail marketStandardDetail, HttpServletRequest request) {
String manifestId = marketStandardDetail.getManifestId();
if(StringUtils.isBlank(marketStandardDetail.getManifestId())){
throw new JeroBootException(NOT_DATA);
}
List<LawsMarketStandard> listLawsMarketStandardOld = marketStandardService
.listByIds(Arrays.asList(manifestId.split(",")));
if(CollectionUtils.isEmpty(listLawsMarketStandardOld)){
throw new JeroBootException(NOT_DATA);
}
for (LawsMarketStandard lawsMarketStandard : listLawsMarketStandardOld) {
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())
&& !Objects.equals(lawsMarketStandard.getManifestStatus(),
MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
throw new JeroBootException("没有权限");
}
}
String manifestVersion = marketStandardDetail.getManifestVersion();
if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,
listLawsMarketStandardOld.get(0).getVersionFlag());
queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion);
LawsMarketStandard lawsMarketStandard = marketStandardService.getOne(queryLawsMarketStandard,false);
if(Objects.isNull(lawsMarketStandard)){
throw new JeroBootException(manifestVersion + "版本不存在");
}
manifestId = lawsMarketStandard.getId();
}
List<String> listIds = Arrays.asList(manifestId.split(","));
marketStandardDetail.setManifestId(null);
QueryWrapper<LawsMarketStandardDetail> queryWrapper =
QueryGenerator.initQueryWrapper(marketStandardDetail, request.getParameterMap());
queryWrapper.in("manifest_id",listIds);
List<LawsMarketStandardDetail> res = lawsMarketStandardDetailMapper.pageList(queryWrapper, listIds);
// Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
// 导出文件名称
mv.addObject(JeroController.FILE_NAME, "市场法规清单");
mv.addObject(JeroController.CLASS, QuartzJob.class);
mv.addObject(JeroController.PARAMS, new ExportParams("市场法规清单", "", ""));
mv.addObject(NormalExcelConstants.DATA_LIST, res);
return mv;
}
} }
@@ -89,6 +89,15 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
queryWrapper.like(StringUtils.isNotBlank(marketStandard.getManifestName()), queryWrapper.like(StringUtils.isNotBlank(marketStandard.getManifestName()),
"ms.manifest_name", marketStandard.getManifestName()); "ms.manifest_name", marketStandard.getManifestName());
if (StringUtils.isNotBlank(marketStandard.getCountry())) { if (StringUtils.isNotBlank(marketStandard.getCountry())) {
if(marketStandard.getCountry().contains("-")){
// todo 验证父级是否为欧盟或类欧盟数据,带出父子级数据
String[] str = marketStandard.getCountry().split("-");
String parentItemValueA = "1";
String parentItemValueB = "2";
if(Objects.equals(str[0],parentItemValueA) || Objects.equals(str[0],parentItemValueB)){
marketStandard.setCountry(marketStandard.getCountry() + "," + str[0]);
}
}
String[] str = marketStandard.getCountry().split(","); String[] str = marketStandard.getCountry().split(",");
queryWrapper.and(i->{ queryWrapper.and(i->{
for (int i1 = 0; i1 < str.length; i1++) { for (int i1 = 0; i1 < str.length; i1++) {