# Conflicts:
#	db/update/测试阶段.sql
This commit is contained in:
2024-09-19 17:44:59 +08:00
23 changed files with 326 additions and 124 deletions
+24
View File
@@ -39,6 +39,19 @@
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Activiti生成流程图 -->
@@ -102,6 +115,17 @@
<version>2.2.3</version>
<classifier>jdk15</classifier>
<!-- jdk版本 -->
<exclusions>
<exclusion>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--加载beanutils-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -304,7 +304,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
if(!Objects.isNull(data)){
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,data.getManifestId());
queryLawsMarketStandardDetail.orderByDesc(LawsMarketStandardDetail::getId);
queryLawsMarketStandardDetail.orderByAsc(LawsMarketStandardDetail::getOrderNo);
queryLawsMarketStandardDetail.orderByDesc(LawsMarketStandardDetail::getCreateTime);
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = lawsMarketStandardDetailService.list(queryLawsMarketStandardDetail);
if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail)){
data.setList(listLawsMarketStandardDetail);
@@ -26,6 +26,7 @@ import com.jero.modules.split.service.IFileSplitItemsEOService;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.system.util.MyStringUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -270,6 +271,7 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
private List<SarFileCompareItem> wrapperItemList(List<SarFileSplitItemsEO> list, String infoId, Map<String, SarFileCompareMenu> menuMap, String leftOrRight) {
List<SarFileCompareItem> resList = new ArrayList<>();
List<SarFileCompareItem> resNullList = new ArrayList<>();
for (SarFileSplitItemsEO itemsEO : list) {
SarFileCompareItem item = new SarFileCompareItem();
item.setInfoId(infoId);
@@ -277,15 +279,23 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
item.setMenuId(itemsEO.getMenuId());
item.setItemsNum(itemsEO.getItemNum());
item.setItemsText(itemsEO.getItemContent());
item.setLeftOrRight(leftOrRight);
item.setReviewed(CompareConst.NO_REVIEWED);
SarFileCompareMenu menu = menuMap.get(itemsEO.getMenuId());
if (menu != null) {
item.setItemsDisplayNum(menu.getDisplaySeq());
resList.add(item);
}else{
resNullList.add(item);
}
item.setLeftOrRight(leftOrRight);
item.setReviewed(CompareConst.NO_REVIEWED);
resList.add(item);
}
if(!CollectionUtils.isEmpty(resList)){
resList.stream().filter(o->!Objects.isNull(o.getItemsDisplayNum())).collect(Collectors.toList());
}
if(!CollectionUtils.isEmpty(resNullList)){
resList.addAll(resNullList);
}
Collections.sort(resList, Comparator.comparingInt(SarFileCompareItem::getItemsDisplayNum));
return resList;
}
@@ -1614,6 +1614,11 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.PLEASE_UPLOAD_ZIP));
}
String contentType = file.getContentType();
if (!contentType.contains("zip")) {
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.PLEASE_UPLOAD_ZIP));
}
Path path = Files.createTempDirectory("temp");
File saveDirectory = new File(path.toUri());
if (!saveDirectory.isDirectory()) {
@@ -320,7 +320,7 @@
<select id="getSplitSelectIds" resultType="java.lang.String">
select l2.id from laws_domestic_standard l1
left join sar_file_split_info l2 on l1.id = l2.standard_id and l2.del_flag = 0
where l1.del_flag = 0 and l2.id is not null
where l1.del_flag = 0 and l2.id is not null and split_status = 2
and
<foreach collection="countryList" separator="or" item= "item" open="(" close=")">
CONCAT(',',l1.applicable_market,',') like CONCAT('%,',#{item},',%')
@@ -1879,10 +1879,12 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 查询市场下的标准
List<String> countryList = Arrays.asList(parameter.get(COUNTRY).toString().split(","));
List<String> ids = documentSplitMapper.getSplitSelectIds(countryList);
if(!CollectionUtils.isEmpty(ids)){
// in查询
selectCondition.append(" and s.info_id" + " in('").append(String.join("','",ids)).append("')");
if(CollectionUtils.isEmpty(ids)){
ids = new ArrayList<>();
ids.add("-1");
}
// in查询
selectCondition.append(" and s.info_id" + " in('").append(String.join("','",ids)).append("')");
parameter.remove(COUNTRY);
}
}
@@ -76,6 +76,7 @@ import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.Collectors;
@@ -1361,7 +1362,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
private ModelAndView exportExcelByClause(Map<String, Object> parameterMap) {
List<LawsHomeAdvancedSearchClauseVO> advancedSearchClause = getAdvancedSearchClauseExport(parameterMap);
List<Map<String, Object>> list = new ArrayList<>();
List<Map<String, Object>> list = new CopyOnWriteArrayList<>();
// 标准sheet页
List<LawsHomeAdvancedSearchStandardExcelVO> lawsHomeAdvancedSearchStandardExcelVOList =
@@ -1373,14 +1374,12 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
standardSheet.put(NormalExcelConstants.PARAMS, exportParams);
standardSheet.put(NormalExcelConstants.DATA_LIST, lawsHomeAdvancedSearchStandardExcelVOList);
list.add(standardSheet);
for (LawsHomeAdvancedSearchClauseVO lawsHomeAdvancedSearchClauseVO : advancedSearchClause) {
List<Map<String, Object>> clauseList = lawsHomeAdvancedSearchClauseVO.getClauseList();
List<LawsHomeAdvancedSearchClauseExcelVO> lawsHomeAdvancedSearchClauseExcelVOS =
JSON.parseArray(JSON.toJSONString(clauseList), LawsHomeAdvancedSearchClauseExcelVO.class);
// 条款详情
for (LawsHomeAdvancedSearchClauseExcelVO lawsHomeAdvancedSearchClauseExcelVO :
lawsHomeAdvancedSearchClauseExcelVOS) {
lawsHomeAdvancedSearchClauseExcelVOS.parallelStream().forEach(lawsHomeAdvancedSearchClauseExcelVO->{
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = sarFileSplitItemsValEOMapper.findList(
new QueryWrapper<SarFileSplitItemsValEO>()
.eq("item_id", lawsHomeAdvancedSearchClauseExcelVO.getId())
@@ -1393,11 +1392,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
.collect(Collectors.joining("\n\r"));
lawsHomeAdvancedSearchClauseExcelVO.setItemContent(itemContents);
}
}
});
// 条款sheet页
Map<String, Object> clauseSheet = new HashMap<>();
clauseSheet.put(NormalExcelConstants.CLASS, LawsHomeAdvancedSearchClauseExcelVO.class);
ExportParams exportParamss = new ExportParams(null, lawsHomeAdvancedSearchClauseVO.getStandardNumber());
ExportParams exportParamss = new ExportParams(null,
lawsHomeAdvancedSearchClauseVO.getStandardNumber().replace("/"," ")
.replace("\\"," ").replace("?"," ")
.replace("*"," ").replace("["," ")
.replace("]"," ").replace(":"," "));
exportParamss.setType(ExcelType.XSSF);
clauseSheet.put(NormalExcelConstants.PARAMS, exportParamss);
clauseSheet.put(NormalExcelConstants.DATA_LIST, lawsHomeAdvancedSearchClauseExcelVOS);
@@ -235,4 +235,20 @@ public class MarketStandardDetailController {
return lawsMarketStandardDetailService.export(marketStandardDetail,request);
}
/**
* 移动
*
* @param marketStandardDetail
* @return
*/
@AutoLog(value = "外部标准库-市场法规清单-移动")
@ApiOperation(value = "外部标准库-市场法规清单-移动", notes = "外部标准库-市场法规清单-移动")
@PostMapping(value = "/move")
@ApiOperationSupport(order = 5)
// @RequiresPermissions("marketStandard:move")
public Result<?> move(@RequestBody LawsMarketStandardDetail marketStandardDetail) {
return lawsMarketStandardDetailService.move(marketStandardDetail);
}
}
@@ -247,4 +247,17 @@ public class LawsMarketStandardDetail implements Serializable {
@ApiModelProperty(value = "清单版本")
@TableField(exist = false)
private String manifestVersion;
/**
* 排序号
*/
@ApiModelProperty(value = "排序号")
private Float orderNo;
/**
* 移动标识 上移:up 下移:down
*/
@ApiModelProperty(value = "移动标识")
@TableField(exist = false)
private String moveFlag;
}
@@ -61,7 +61,7 @@
${ew.customSqlSegment}
</select>
<select id="getOneByManifestNo" resultType="java.lang.String">
select max(manifest_no) as manifest_no from laws_market_standard where manifest_no like CONCAT(#{str},'%')
select CONCAT(max(REPLACE(manifest_no,#{str},'') * 1), '') as manifest_no from laws_market_standard where manifest_no like CONCAT(#{str},'%')
<if test = "oldStr != null and oldStr != ''">
and manifest_no &lt;> #{oldStr}
</if>
@@ -110,4 +110,11 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
* @return
*/
ModelAndView export(LawsMarketStandardDetail marketStandardDetail, HttpServletRequest request);
/**
* 移动
* @param marketStandardDetail
* @return
*/
Result<?> move(LawsMarketStandardDetail marketStandardDetail);
}
@@ -3,6 +3,7 @@ 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.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
@@ -154,6 +155,8 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
List<String> listIds = Arrays.asList(manifestId.split(","));
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.in(LawsMarketStandardDetail::getManifestId,listIds);
queryLawsMarketStandardDetail.orderByAsc(LawsMarketStandardDetail::getOrderNo);
queryLawsMarketStandardDetail.orderByDesc(LawsMarketStandardDetail::getCreateTime);
List<LawsMarketStandardDetail> list = list(queryLawsMarketStandardDetail);
return Result.OK(list);
}
@@ -207,6 +210,22 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(!StringUtils.isBlank(m.toString())){
return Result.error(m.toString());
}
if(CollectionUtils.isEmpty(listLawsMarketStandardDetail)){
return Result.OK(ResultCommon.OK);
}
QueryWrapper<LawsMarketStandardDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.select("max(order_no) as order_no");
queryWrapper.eq("manifest_id",manifestId);
LawsMarketStandardDetail lawsMarketStandardDetail = getOne(queryWrapper,false);
int no = 0;
if(!Objects.isNull(lawsMarketStandardDetail) && !Objects.isNull(lawsMarketStandardDetail.getOrderNo())){
no = lawsMarketStandardDetail.getOrderNo().intValue();
}
no = no + 1;
for (int i = 0; i < listLawsMarketStandardDetail.size(); i++) {
listLawsMarketStandardDetail.get(i).setOrderNo((float)(no + i));
}
// 更新状态
marketStandardService.updateStatus(manifestId);
@@ -448,12 +467,30 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(CollectionUtils.isEmpty(list)){
return Result.OK(ResultCommon.OK);
}
setOrderData(list, manifestId);
// 更细状态
marketStandardService.updateStatus(list.get(0).getManifestId());
saveBatch(list);
return Result.OK(ResultCommon.OK);
}
private void setOrderData(List<LawsMarketStandardDetail> list, String manifestId) {
QueryWrapper<LawsMarketStandardDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.select("max(order_no) as order_no");
queryWrapper.eq("manifest_id", manifestId);
LawsMarketStandardDetail lawsMarketStandardDetail = getOne(queryWrapper, false);
int m = 0;
if (!Objects.isNull(lawsMarketStandardDetail) && !Objects.isNull(lawsMarketStandardDetail.getOrderNo())) {
m = lawsMarketStandardDetail.getOrderNo().intValue();
}
m = m + 1;
for (int i = 0; i < list.size(); i++) {
list.get(i).setOrderNo((float) (m + i));
}
}
@Override
public synchronized Result<?> copy(String oldId,String newId) {
LawsMarketStandard lawsMarketStandard = marketStandardService.getById(newId);
@@ -495,6 +532,9 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(CollectionUtils.isEmpty(listOld)){
return Result.OK(ResultCommon.OK);
}
setOrderData(listOld, newId);
// 更细状态
marketStandardService.updateStatus(listOld.get(0).getManifestId());
saveBatch(listOld);
@@ -549,7 +589,17 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
}
// 更细状态
marketStandardService.updateStatus(marketStandardDetail.getManifestId());
if(Objects.isNull(marketStandardDetail.getOrderNo())){
QueryWrapper<LawsMarketStandardDetail> query = new QueryWrapper<>();
query.select("max(order_no) as order_no");
query.eq("manifest_id",marketStandardDetail.getManifestId());
LawsMarketStandardDetail obj = getOne(query,false);
int m = 0;
if(!Objects.isNull(obj)){
m = obj.getOrderNo().intValue();
}
marketStandardDetail.setOrderNo((float) m);
}
updateById(marketStandardDetail);
return Result.OK(ResultCommon.OK);
}
@@ -687,6 +737,67 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
mv.addObject(NormalExcelConstants.DATA_LIST, res);
return mv;
}
@Override
public Result<?> move(LawsMarketStandardDetail marketStandardDetail) {
if(StringUtils.isBlank(marketStandardDetail.getManifestId()) ||
StringUtils.isBlank(marketStandardDetail.getId()) ||
StringUtils.isBlank(marketStandardDetail.getMoveFlag())){
return Result.error(ResultCommon.PARAMETER_NOT_RECOGNIZED);
}
LawsMarketStandard lawsMarketStandard = marketStandardService.getById(marketStandardDetail.getManifestId());
if(Objects.isNull(lawsMarketStandard)){
return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
LawsMarketStandardDetail lawsMarketStandardDetail = getById(marketStandardDetail.getId());
if(Objects.isNull(lawsMarketStandardDetail)){
return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
LambdaQueryWrapper<LawsMarketStandardDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId());
queryWrapper.orderByAsc(LawsMarketStandardDetail::getOrderNo);
queryWrapper.orderByDesc(LawsMarketStandardDetail::getCreateTime);
List<LawsMarketStandardDetail> list = list(queryWrapper);
if(CollectionUtils.isEmpty(list)){
return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
if(Objects.equals(marketStandardDetail.getMoveFlag(),"up")){
for (int i = 0; i < list.size(); i++) {
LawsMarketStandardDetail now = list.get(i);
if(Objects.equals(now.getId(),marketStandardDetail.getId()) && i > 0){
LawsMarketStandardDetail last = list.get(i - 1);
LambdaUpdateWrapper<LawsMarketStandardDetail> updateNow = new LambdaUpdateWrapper<>();
updateNow.eq(LawsMarketStandardDetail::getId,now.getId());
updateNow.set(LawsMarketStandardDetail::getOrderNo,last.getOrderNo());
update(updateNow);
LambdaUpdateWrapper<LawsMarketStandardDetail> updateLast = new LambdaUpdateWrapper<>();
updateLast.eq(LawsMarketStandardDetail::getId,last.getId());
updateLast.set(LawsMarketStandardDetail::getOrderNo,now.getOrderNo());
update(updateLast);
}
}
}else if(Objects.equals(marketStandardDetail.getMoveFlag(),"down")){
for (int i = 0; i < list.size(); i++) {
LawsMarketStandardDetail now = list.get(i);
if(Objects.equals(now.getId(),marketStandardDetail.getId()) && (i != list.size() -1)){
LawsMarketStandardDetail next = list.get(i + 1);
LambdaUpdateWrapper<LawsMarketStandardDetail> updateNow = new LambdaUpdateWrapper<>();
updateNow.eq(LawsMarketStandardDetail::getId,now.getId());
updateNow.set(LawsMarketStandardDetail::getOrderNo,next.getOrderNo());
update(updateNow);
LambdaUpdateWrapper<LawsMarketStandardDetail> updateNext = new LambdaUpdateWrapper<>();
updateNext.eq(LawsMarketStandardDetail::getId,next.getId());
updateNext.set(LawsMarketStandardDetail::getOrderNo,now.getOrderNo());
update(updateNext);
}
}
}
// 更细状态
marketStandardService.updateStatus(lawsMarketStandardDetail.getManifestId());
return Result.OK(ResultCommon.OK);
}
}
@@ -220,7 +220,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
List<DictModel> listDict = map.get(marketState);
List<String> country = listDict.stream().map(DictModel::getText).collect(Collectors.toList());
// 国家/地区+自定义+固定字段自定义字段预留手填当前默认不填固定字段车型需满足标准法规清单
manifest.setManifestName(String.join("",country) +
manifest.setManifestName(String.join("",country) +
(StringUtils.isEmpty(manifest.getCustomColumnName()) ? "" : manifest.getCustomColumnName())
+ "车型需满足标准法规清单");
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -247,9 +247,9 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
if(StringUtils.isBlank(manifestNo)){
return s + "01";
}
String num = manifestNo.substring(manifestNo.length() - 2);
int m = Integer.parseInt(num);
return s + (m >= 10 ? (m + 1) : "0" + (m + 1));
int m = Integer.parseInt(manifestNo) + 1;
String n = s + (m >= 10 ? m : "0" + m);
return n;
}
@Override
@@ -288,7 +288,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
List<DictModel> listDict = map.get(marketState);
List<String> country = listDict.stream().map(DictModel::getText).collect(Collectors.toList());
// 国家/地区+自定义+固定字段自定义字段预留手填当前默认不填固定字段车型需满足标准法规清单
manifest.setManifestName(String.join("",country) +
manifest.setManifestName(String.join("",country) +
(StringUtils.isEmpty(manifest.getCustomColumnName()) ? "" : manifest.getCustomColumnName())
+ "车型需满足标准法规清单");
updateById(manifest);
@@ -1,6 +1,9 @@
package com.jero.modules.split.common;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils;
import com.xkcoding.http.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.tools.zip.ZipEntry;
@@ -53,6 +56,9 @@ public class FileUnZip {
// orgMkdirs = outPath.substring(0, outPath.lastIndexOf('/'));
file.mkdirs();
}else{
if (!isFileSafe(zipEntryName)) {
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.ERROR));
}
// orgMkdirs = outPath.substring(0, outPath.lastIndexOf('/'));
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
@@ -77,6 +83,18 @@ public class FileUnZip {
return orgMkdirs;
}
private static boolean isFileSafe(String fileName) {
// 添加文件类型检查逻辑
// 这里仅作为一个示例实际应用中需要根据需要进行扩展
String[] unsafeExtensions = {".exe", ".sh", ".bat", ".js"};
for (String ext : unsafeExtensions) {
if (fileName.endsWith(ext)) {
return false;
}
}
return true;
}
/**
* 解压zip文件
* 解决解压文件下有多个文件夹时读不到orgMkdirs问题