From f65356dec80631adcf78ddab8b1d918f60247f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Wed, 3 Jul 2024 11:59:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=95=E8=A7=84=E6=B8=85=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MarketStandardDetailController.java | 139 ++++++++++++++++++ .../entity/LawsMarketStandard.java | 3 +- .../entity/LawsMarketStandardDetail.java | 11 +- .../impl/LawsMarketStandardServiceImpl.java | 67 ++++++++- .../src/main/resources/application-dev.yml | 7 + 5 files changed, 215 insertions(+), 12 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java new file mode 100644 index 00000000..73b3b97d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java @@ -0,0 +1,139 @@ +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.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 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; + + +@Api(tags = "外部标准库-市场法规清单详情") +@RestController +@RequestMapping("/laws/marketStandardDetail") +@Slf4j +public class MarketStandardDetailController { + + @Resource + private ILawsMarketStandardService marketStandardService; + + + /** + * 查看 + * + * @param marketStandardDetail + * @return + */ + @AutoLog(value = "外部标准库-市场法规清单-查看") + @ApiOperation(value = "外部标准库-市场法规清单-查看", notes = "外部标准库-市场法规清单-查看") + @GetMapping(value = "/detail") + @ApiOperationSupport(order = 2) + @RequiresPermissions("marketStandard:detail") + public Result detail(LawsMarketStandardDetail marketStandardDetail) { + MarketStandardDetailVO result = marketStandardService.detail(marketStandardDetail); + return Result.OK(result); + } + + /** + * 导出excel + */ + @AutoLog(value = "外部标准库-市场法规清单-导出") + @ApiOperation(value = "外部标准库-市场法规清单-导出", notes = "外部标准库-市场法规清单-导出") + @ApiOperationSupport(order = 3) + @RequiresPermissions("marketStandard:export") + @GetMapping(value = "/exportXls", produces = "application/zip") + public void exportXls(HttpServletResponse response, LawsMarketStandard LawsMarketStandard, HttpServletRequest req) { + marketStandardService.export(response, LawsMarketStandard, "市场法规清单", "市场法规清单", req); + } + + /** + * 批量删除 + * + * @param map + * @return + */ + @AutoLog(value = "外部标准库-市场法规清单-批量删除") + @ApiOperation(value = "外部标准库-市场法规清单-批量删除", notes = "外部标准库-市场法规清单-批量删除") + @ApiOperationSupport(order = 4) + @PostMapping(value = "/deleteBatch") + @RequiresPermissions("marketStandard:deleteBatch") + public Result deleteBatch(@RequestBody Map map) { + if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) { + return Result.error("请选择数据!"); + } + this.marketStandardService.deleteByIds(Arrays.asList(map.get("ids").split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 新增 + * + * @param marketStandardDetailVO + * @return + */ + @AutoLog(value = "外部标准库-市场法规清单-新增") + @ApiOperation(value = "外部标准库-市场法规清单-新增", notes = "外部标准库-市场法规清单-新增") + @ApiOperationSupport(order = 5) + @PostMapping(value = "/add") + @RequiresPermissions("marketStandard:add") + public Result add(@RequestBody MarketStandardDetailVO marketStandardDetailVO) { + this.marketStandardService.add(marketStandardDetailVO); + return Result.OK("新增成功!"); + } + + /** + * 编辑 + * + * @param marketStandardDetailVO + * @return + */ + @AutoLog(value = "外部标准库-市场法规清单-编辑") + @ApiOperation(value = "外部标准库-市场法规清单-编辑", notes = "外部标准库-市场法规清单-编辑") + @ApiOperationSupport(order = 6) + @PostMapping(value = "/edit") + @RequiresPermissions("marketStandard:edit") + public Result edit(@RequestBody MarketStandardDetailVO marketStandardDetailVO) { + this.marketStandardService.edit(marketStandardDetailVO); + return Result.OK("修改成功!"); + } + + /** + * 导入 + * + * @param file + * @return + */ + @AutoLog(value = "外部标准库-市场法规清单-导入") + @ApiOperation(value = "外部标准库-市场法规清单-导入", notes = "外部标准库-市场法规清单-导入") + @ApiOperationSupport(order = 7) + @PostMapping(value = "/importExcel") + @RequiresPermissions("marketStandard:importExcel") + public Result importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file) { + List errorMessages = marketStandardService.importExcel(file); + if (!errorMessages.isEmpty()) { + return Result.error(MessageUtils.getMessage(ResultCommon.IMPORT_ERROR)); + } + return Result.OK(); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandard.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandard.java index fdd88dc3..6d6f5d54 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandard.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandard.java @@ -95,7 +95,6 @@ public class LawsMarketStandard implements Serializable { /** * 清单版本 */ - @Dict(dicCode = "manifest_version") @ApiModelProperty(value = "清单版本") private String manifestVersion; @@ -154,4 +153,4 @@ public class LawsMarketStandard implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java index fea13ff2..0f2ebf72 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java @@ -12,7 +12,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** - * + * * @TableName laws_market_standard_detail */ @TableName(value ="laws_market_standard_detail") @@ -207,4 +207,11 @@ public class LawsMarketStandardDetail implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; -} \ No newline at end of file + + /** + * 清单版本 + */ + @ApiModelProperty(value = "清单版本") + @TableField(exist = false) + private String manifestVersion; +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java index 0d4fac57..62e3e7f7 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java @@ -5,14 +5,21 @@ 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.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; import com.jero.modules.laws.marketStandard.constans.MarketStandardConstants; 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.mapper.LawsMarketStandardMapper; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService; -import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardMapper; +import com.jero.modules.system.entity.SysRole; +import com.jero.modules.system.service.ISysRoleService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +29,8 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * @author ThinkBook @@ -34,9 +43,21 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl queryPage(LawsMarketStandard marketStandard, Integer pageNo, Integer pageSize) { @@ -118,6 +139,21 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl idList = Arrays.asList(ids.split(",")); + LawsMarketStandard manifest = getById(idList.get(0)); + // 清单版本不为空,查询指定版本 + if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){ + LambdaQueryWrapper queryLawsMarketStandard = new LambdaQueryWrapper<>(); + queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,marketStandardDetail.getManifestVersion()); + queryLawsMarketStandard.eq(LawsMarketStandard::getManifestNo,manifest.getManifestNo()); + manifest = getOne(queryLawsMarketStandard,false); + if(Objects.isNull(manifest)){ + throw new JeroBootException("市场法规清单不存在"); + } + idList = new ArrayList<>(); + idList.add(manifest.getId()); + } + result.setManifest(manifest); + // 列表数据 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(StringUtils.isNotBlank(marketStandardDetail.getStandardNumber()), @@ -132,14 +168,29 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl 1) { return result; } - LawsMarketStandard manifest = getById(idList.get(0)); - result.setManifest(manifest); - // TODO 历史版本信息 - result.setHistoryVersions(new ArrayList<>()); + + // 历史版本信息 + // 只允许法规管理员和超级管理员查看历史版本数据 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if(StringUtils.isBlank(sysUser.getRoleIds())){ + return result; + } + if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin) + && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)){ + return result; + } + + LambdaQueryWrapper queryManifestNo = new LambdaQueryWrapper<>(); + queryManifestNo.select(LawsMarketStandard::getManifestVersion); + queryManifestNo.isNotNull(LawsMarketStandard::getManifestNo); + queryManifestNo.eq(LawsMarketStandard::getManifestNo,manifest.getManifestNo()); + queryManifestNo.orderByDesc(LawsMarketStandard::getManifestVersion); + List listManifestNo = list(queryManifestNo); + if(!CollectionUtils.isEmpty(listManifestNo)){ + result.setHistoryVersions(listManifestNo.stream().map(LawsMarketStandard::getManifestVersion).collect(Collectors.toList())); + } return result; } - - } diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index e9d6f3fa..369f88a9 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -541,3 +541,10 @@ OCR: ocrDownPath: /data/slrs/ocrResultFile/ times: 20 convertType: BOTH + +# 系统内置角色 +sys_role: + # 法规管理员 + laws_admin: admin + # 超级管理员 + super_admin: KFGLY