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

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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
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.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.entity.MarketStandardDetailVO;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -22,7 +23,7 @@ import java.util.List;
import java.util.Map;
@Api(tags = "外部标准库-市场法规清单详情")
@Api(tags = "市场法规清单-市场法规清单详情")
@RestController
@RequestMapping("/laws/marketStandardDetail")
@Slf4j
@@ -216,4 +217,20 @@ public class MarketStandardDetailController {
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;
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.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -19,6 +25,26 @@ public interface LawsMarketStandardDetailMapper extends BaseMapper<LawsMarketSta
* @return
*/
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}
</foreach>
</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>
@@ -5,6 +5,7 @@ import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -102,4 +103,12 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
* @return
*/
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
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.vo.LoginUser;
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.ILawsMarketStandardService;
import com.jero.modules.laws.utils.ValidUtil;
import com.jero.modules.quartz.entity.QuartzJob;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
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.view.JeecgEntityExcelView;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -81,22 +88,28 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(StringUtils.isBlank(marketStandardDetail.getManifestId())){
return Result.OK(new Page<>(pageNo, pageSize));
}
LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId);
if(Objects.isNull(lawsMarketStandardOld)){
List<LawsMarketStandard> listLawsMarketStandardOld = marketStandardService
.listByIds(Arrays.asList(manifestId.split(",")));
if(CollectionUtils.isEmpty(listLawsMarketStandardOld)){
return Result.error(NOT_DATA);
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
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(lawsMarketStandardOld.getAuthor(),sysUser.getId())
&& !Objects.equals(lawsMarketStandardOld.getManifestStatus(), MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("没有权限");
&& !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())
&& !Objects.equals(lawsMarketStandard.getManifestStatus(),
MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("没有权限");
}
}
String manifestVersion = marketStandardDetail.getManifestVersion();
if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandardOld.getVersionFlag());
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,
listLawsMarketStandardOld.get(0).getVersionFlag());
queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion);
LawsMarketStandard lawsMarketStandard = marketStandardService.getOne(queryLawsMarketStandard,false);
if(Objects.isNull(lawsMarketStandard)){
@@ -109,9 +122,9 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
QueryWrapper<LawsMarketStandardDetail> queryWrapper =
QueryGenerator.initQueryWrapper(marketStandardDetail, request.getParameterMap());
queryWrapper.in("manifest_id",listIds);
queryWrapper.orderByDesc("create_time");
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
@@ -504,6 +517,58 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
}
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()),
"ms.manifest_name", marketStandard.getManifestName());
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(",");
queryWrapper.and(i->{
for (int i1 = 0; i1 < str.length; i1++) {