Merge remote-tracking branch 'origin/master'

This commit is contained in:
梁琦涛
2023-11-02 16:44:24 +08:00
20 changed files with 520 additions and 228 deletions
@@ -2,15 +2,18 @@ package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.vo.FbEntryChangeVO;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
@@ -29,12 +32,20 @@ public class ProcessFbEntryChangeController extends JeroController<ProcessFbEntr
@Autowired
private IProcessFbEntryChangeService processFbEntryChangeService;
@AutoLog(value = "标准法规入库_变更流程-发起流程")
@ApiOperation(value="标准法规入库_变更流程-发起流程", notes="标准法规入库_变更流程-发起流程")
@PostMapping("/start")
public Result<String> startProcess(@RequestBody FbEntryChangeVO fbEntryChangeVO) {
processFbEntryChangeService.startProcess(fbEntryChangeVO);
return Result.OK(ResultCommon.OK);
@AutoLog(value = "标准法规入库_变更流程-添加业务信息")
@ApiOperation(value = "标准法规入库_变更流程-添加业务信息", notes = "标准法规入库_变更流程-添加业务信息")
@PostMapping(value = "/addBusinessInfo")
public Result<T> addBusinessInfo(@Validated @RequestBody ProcessFbEntryChange processFbEntryChange) {
processFbEntryChangeService.addBusinessInfo(processFbEntryChange);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
@AutoLog(value = "标准法规入库_变更流程-编辑业务信息")
@ApiOperation(value = "标准法规入库_变更流程-编辑业务信息", notes = "标准法规入库_变更流程-编辑业务信息")
@PostMapping(value = "/editBusinessInfo")
public Result<T> edit(@Validated @RequestBody ProcessFbEntryChange processFbEntryChange) {
processFbEntryChangeService.editBusinessInfo(processFbEntryChange);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -61,24 +61,7 @@ public class ProcessFbEntryChange implements Serializable {
@Excel(name = "0表示未删除,1表示删除", width = 15)
@ApiModelProperty(value = "0表示未删除,1表示删除")
private java.lang.Integer delFlag;
/**流程示例id(流程信息)*/
@Excel(name = "流程示例id(流程信息)", width = 15)
@ApiModelProperty(value = "流程示例id(流程信息)")
private java.lang.String processInstanceId;
/**流程名称(流程信息)*/
@Excel(name = "流程名称(流程信息)", width = 15)
@ApiModelProperty(value = "流程名称(流程信息)")
private java.lang.String processname;
/**截止日期(流程信息)*/
@Excel(name = "截止日期(流程信息)", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "截止日期(流程信息)")
private java.util.Date processDueDate;
/**流程说明(流程信息)*/
@Excel(name = "流程说明(流程信息)", width = 15)
@ApiModelProperty(value = "流程说明(流程信息)")
private java.lang.String processDescription;
/**来源(1国内、2海外)*/
@Excel(name = "来源(1国内、2海外)", width = 15)
@ApiModelProperty(value = "来源(1国内、2海外)")
@@ -9,10 +9,6 @@
<result column="update_time" property="updateTime" />
<result column="org_code" property="orgCode" />
<result column="del_flag" property="delFlag" />
<result column="process_instance_id" property="processInstanceId" />
<result column="processname" property="processname" />
<result column="process_due_date" property="processDueDate" />
<result column="process_description" property="processDescription" />
<result column="source" property="source" />
<result column="operate_type" property="operateType" />
<result column="standard_property" property="standardProperty" />
@@ -2,7 +2,7 @@ package com.jero.modules.activiti.process.fb.service;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.fb.vo.FbEntryChangeVO;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
/**
* @Description: 标准法规入库/变更流程
@@ -11,11 +11,17 @@ import com.jero.modules.activiti.process.fb.vo.FbEntryChangeVO;
* @Version: V1.0
*/
public interface IProcessFbEntryChangeService extends IService<ProcessFbEntryChange> {
/**
* @Author: liao
* @Date: 2023/11/2 15:43
* @Description: 添加业务信息
**/
void addBusinessInfo(ProcessFbEntryChange processFbEntryChange);
/**
* @Author: liao
* @Date: 2023/11/1 17:23
* @Description: 发起流程
* @Date: 2023/11/2 15:48
* @Description: 编辑业务信息
**/
void startProcess(FbEntryChangeVO fbEntryChangeVO);
void editBusinessInfo(ProcessFbEntryChange processFbEntryChange);
}
@@ -3,7 +3,7 @@ package com.jero.modules.activiti.process.fb.service.impl;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.mapper.ProcessFbEntryChangeMapper;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.vo.FbEntryChangeVO;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -22,14 +22,24 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Slf4j
public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange> implements IProcessFbEntryChangeService {
/**
* @Author: liao
* @Date: 2023/11/1 17:23
* @Description: 发起流程
* @Date: 2023/11/2 15:43
* @Description: 添加业务信息
**/
@Override
public void startProcess(FbEntryChangeVO fbEntryChangeVO) {
public void addBusinessInfo(ProcessFbEntryChange processFbEntryChange) {
save(processFbEntryChange);
}
/**
* @Author: liao
* @Date: 2023/11/2 15:48
* @Description: 编辑业务信息
**/
@Override
public void editBusinessInfo(ProcessFbEntryChange processFbEntryChange) {
updateById(processFbEntryChange);
}
}
@@ -0,0 +1,97 @@
package com.jero.modules.activiti.process.fb.util;
import com.jero.common.exception.JeroBootException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Author: liao
* @Date: 2023/11/2 15:26
* @Description: 实体类转Map集合
*/
public class ObjectToMapUtil {
private static final String COMPILE = "[A-Z]";
private ObjectToMapUtil(){}
/**
* Bean -> Map
* 驼峰规范属性转下划线
* 支持递归转换,如属性为JavaBean时
*/
public static<T> Map transform(T object){
if(object == null){
return null;
}
Map<String, Object> map = new HashMap<>();
// 获取实体类所有属性,返回Field数组
Field[] fields = object.getClass().getDeclaredFields();
try {
for (int i = 0 ; i < fields.length; i++){
// 属性名称
String fieldName = fields[i].getName();
if ("serialVersionUID".equalsIgnoreCase(fieldName)) {
continue;
}
// 转换驼峰形式属性名称成下划线风格,获取map的key 例:fieldName 》 field_name
String transformFieldName = ObjectToMapUtil.getTransformFieldName(fieldName);
// map 的 value ,属性的值
Object fieldValue;
// 将属性的首字符大写,方便构造get,set方法
String name = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
// 获取属性的类型
String type = fields[i].getGenericType().toString();
Method m = object.getClass().getMethod("get" + name);
switch (type){
// 如果有需要,可以仿照下面继续进行扩充,再增加对其它类型的判断
case "class java.lang.String":
case "class java.lang.Boolean":
case "class java.util.Date":
case "class java.lang.Integer":
case "class java.lang.Long":
// 调用getter方法获取属性值
fieldValue = m.invoke(object);
break;
default:
// 属性类型为bean,则递归
Object obj = m.invoke(object);
fieldValue = ObjectToMapUtil.transform(obj);
}
map.put(transformFieldName,fieldValue);
}
}catch (Exception e){
// 系统异常
e.printStackTrace();
throw new JeroBootException("系统异常");
}
return map;
}
/**
* 转换风格 驼峰转下划线
* @param fieldName 属性名称
* @return
*/
private static String getTransformFieldName(String fieldName) {
Pattern humpPattern = Pattern.compile(COMPILE);
Matcher matcher = humpPattern.matcher(fieldName);
StringBuffer sb = new StringBuffer();
while(matcher.find()){
matcher.appendReplacement(sb, "_"+matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
return sb.toString();
}
}
@@ -1,28 +0,0 @@
package com.jero.modules.activiti.process.fb.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author: liao
* @Date: 2023/11/1 17:16
* @Description: 标准法规入库_变更流程_人员信息
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="标准法规入库_变更流程_人员信息", description="标准法规入库_变更流程_人员信息")
public class FbEntryChangeUserVO {
/**法规工程师-发起*/
@ApiModelProperty(value = "法规工程师-发起")
private java.lang.String engineerId;
/**法规工程师主管级领导-审批*/
@ApiModelProperty(value = "法规工程师主管级领导-审批")
private java.lang.String leaderId;
}
@@ -1,34 +0,0 @@
package com.jero.modules.activiti.process.fb.vo;
import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author: liao
* @Date: 2023/11/1 17:11
* @Description: 标准法规入库_变更流程VO类
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="标准法规入库_变更流程VO类", description="标准法规入库_变更流程VO类")
public class FbEntryChangeVO {
/**流程通用信息*/
@ApiModelProperty(value = "流程通用信息")
private CommonVO common;
/**业务信息*/
@ApiModelProperty(value = "业务信息")
private ProcessFbEntryChange data;
/**人员信息*/
@ApiModelProperty(value = "人员信息")
private FbEntryChangeUserVO flowUser;
}
@@ -0,0 +1,61 @@
package com.jero.modules.activiti.process.fb.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Map;
/**
* @Author: liao
* @Date: 2023/11/2 14:35
* @Description: 流程信息通用类
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="流程信息通用类", description="流程信息通用类")
public class ProcessInfoVO {
/**流程定义id*/
@ApiModelProperty(value = "流程定义id")
private java.lang.String processDefinitionId;
/**流程实例id*/
@ApiModelProperty(value = "流程实例id")
private java.lang.String processInstanceId;
/**流程信息-流程名称*/
@ApiModelProperty(value = "流程信息-流程名称")
private java.lang.String processName;
/**流程信息-截止日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "流程信息-截止日期")
private java.util.Date processDueDate;
/**流程信息-流程说明*/
@ApiModelProperty(value = "流程信息-流程说明")
private java.lang.String processDescription;
/**流程审批信息-备注*/
@ApiModelProperty(value = "流程审批信息-备注")
private java.lang.String handleText;
/**流程审批信息-附件*/
@ApiModelProperty(value = "流程审批信息-附件")
private java.lang.String handleFile;
/**流程审批信息-操作类型*/
@ApiModelProperty(value = "流程审批信息-操作类型")
private java.lang.String handleType;
/**业务id*/
@ApiModelProperty(value = "业务id")
private String businessId;
/**人员信息*/
@ApiModelProperty(value = "人员信息")
private Map<String, String> userInfoMap;
}
@@ -31,7 +31,8 @@ public class FieldCommon {
LawsFieldTypeEnum.OPTION_SINGLE.getValue(), // 下拉单选
LawsFieldTypeEnum.TREE_BOX_SINGLE.getValue(), // 树型单选
LawsFieldTypeEnum.TREE_BOX.getValue(), // 树型多选
LawsFieldTypeEnum.OPTION_MANY.getValue() // 下拉多选
LawsFieldTypeEnum.OPTION_MANY.getValue(), // 下拉多选
LawsFieldTypeEnum.TREE_OPTION.getValue() // 树形弹框选择
);
// 字典翻译类型
@@ -39,7 +40,8 @@ public class FieldCommon {
LawsFieldTypeEnum.OPTION_SINGLE.getValue(), // 下拉单选
LawsFieldTypeEnum.OPTION_MANY.getValue(), // 下拉多选
LawsFieldTypeEnum.TREE_BOX.getValue(), // 树型多选
LawsFieldTypeEnum.TREE_BOX_SINGLE.getValue() // 树型单选
LawsFieldTypeEnum.TREE_BOX_SINGLE.getValue(), // 树型单选
LawsFieldTypeEnum.TREE_OPTION.getValue() // 树形弹框选择
);
// 特殊更新记录字段
@@ -410,14 +410,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(fileList.stream()
.map(OSSFile::getFileName).collect(Collectors.toList()), ","));
}
} else if (FieldCommon.PART_NAME.equals(key)) {
// 如果是零部件名称(存的是id,数据源为其他系统,目前用字典做代替)
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysDictItem::getId, value);
SysDictItem dictItem = sysDictItemService.getOne(queryWrapper);
if (dictItem != null) {
resultMap.put(key + FieldCommon._DICT_TEXT, dictItem.getItemText());
}
}
}
@@ -766,7 +758,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
lawsNodeRelationService.addRelation(standardSystem, standardNumber, id);
// 企标授权部门处理
esAuthUserService.resetAuthDept(id, parameterMap.get(FieldCommon.AUTH_DEPT).toString());
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(module)) {
esAuthUserService.resetAuthDept(id, parameterMap.get(FieldCommon.AUTH_DEPT).toString());
}
return MessageUtils.getMessage(ResultCommon.OK);
}
@@ -863,16 +857,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
}
}
}
} else if (FieldCommon.PART_NAME.equals(key)) {
// 零部件名称(单选)
oldValue = (String) oldDataMap.get(key + FieldCommon._DICT_TEXT);
if (StringUtils.isNotBlank(value)) {
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysDictItem::getDictId, lawsTag.getDictId());
queryWrapper.eq(SysDictItem::getItemValue, value);
SysDictItem dictItem = sysDictItemService.getOne(queryWrapper);
//value = dictItem.getItemText(); // 先注释掉,后面确定好显示后再放开
}
} else if (FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())) {
// 字典翻译
oldValue = (String) oldDataMap.get(key + FieldCommon._DICT_TEXT);
@@ -60,7 +60,7 @@ public class OldSystemImportDTO {
@Excel(name = "TY", width = 15, orderNum = "15")
private String ty;
@Excel(name = "BZZT", width = 15, orderNum = "16", dicCode = "enterprise_standard_state")
@Excel(name = "BZZT", width = 15, orderNum = "16")
private String bzzt;
@Excel(name = "BZXZ", width = 15, orderNum = "17")
@@ -109,7 +109,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds);
authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
authDeptList.addAll(authDeptService.list(authDeptWrapper));
@@ -227,7 +227,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId);
authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
if (authDeptList.size() > 0) {
@@ -46,6 +46,8 @@ public class LawsUtilController {
SysDictItem dictItem = new SysDictItem();
// 字典id
dictItem.setDictId("1696007957666533377");
// 父节点
dictItem.setParentId("0");
// 是否标签管理显示(显示)
dictItem.setIsTagDict(1);
// 状态(启用)
@@ -239,10 +239,10 @@ public class LawsEnterpriseController {
return Result.OK();
}
@AutoLog(value = "企业法规标准-老法规企标数据库Excel导入")
@ApiOperation(value="企业法规标准-老法规企标数据库Excel导入", notes="企业法规标准-老法规企标数据库Excel导入")
@PostMapping("/importExcelOldSystem")
public Result<?> importExcelOldSystem(@RequestParam("file") MultipartFile file) {
@AutoLog(value = "企业法规标准-老法规企标数据库Zip导入")
@ApiOperation(value="企业法规标准-老法规企标数据库Zip导入", notes="企业法规标准-老法规企标数据库Zip导入")
@PostMapping("/importOldSystemESZip")
public Result<?> importOldSystemESZip(@RequestParam("file") MultipartFile file) {
enterpriseStandardService.importExcelOldSystem(file);
return Result.OK("导入成功");
}
@@ -196,7 +196,7 @@ public class LawsEnterpriseStandard implements Serializable {
* 引用标准
*/
@ApiModelProperty(value = "引用标准")
private String quotedStandard;
private String referenceStandard;
/**
* 被引用标准
@@ -1,7 +1,6 @@
package com.jero.modules.laws.standard.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.CommonAPI;
import com.jero.common.constant.CommonConstant;
@@ -12,44 +11,59 @@ import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.enterprise.entity.OldSystemImportDTO;
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper;
import com.jero.modules.laws.standard.service.ILawsReplacedStandardService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* @author ThinkBook
* @description 针对表【laws_enterprise_standard(企业标准)】的数据库操作Service实现
* @createDate 2023-09-18 14:49:51
*/
* @author ThinkBook
* @description 针对表【laws_enterprise_standard(企业标准)】的数据库操作Service实现
* @createDate 2023-09-18 14:49:51
*/
@Slf4j
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpriseStandardMapper, LawsEnterpriseStandard>
implements ILawsEnterpriseStandardService, ESSequenceNumberProvider {
implements ILawsEnterpriseStandardService, ESSequenceNumberProvider {
@Resource
private LawsEnterpriseStandardMapper esMapper;
@Resource
private ILawsDomesticStandardService domesticStandardService;
@Resource
private ExcelUtils excelUtils;
@Resource
private CommonAPI commonAPI;
@Resource
private ILawsReplacedStandardService lawsReplacedStandardService;
@Override
public LawsEnterpriseStandard queryByStandardNumber(String standardNumber) {
if (StringUtils.isBlank(standardNumber)){
if (StringUtils.isBlank(standardNumber)) {
return null;
}
LambdaQueryWrapper<LawsEnterpriseStandard> wrapper = new LambdaQueryWrapper<>();
@@ -60,83 +74,6 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
}
@Override
public void importExcelOldSystem(MultipartFile file) {
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
// 获取数据
List<OldSystemImportDTO> list = null;
try {
// 获取当前时间戳(毫秒)
long startTime = System.currentTimeMillis();
list = ExcelImportUtil.importExcel(file.getInputStream(), OldSystemImportDTO.class, params);
// 删除空行
for (int i = 0; i < list.size(); i++) {
OldSystemImportDTO oldSystemImportDTO = list.get(i);
if (oldSystemImportDTO.isEmptyRow()) {
list.remove(i);
i--;
}
}
log.info("获取数据成功,数据条数:{}", list.size());
// 获取当前时间戳(毫秒)
long endTime = System.currentTimeMillis();
// 计算执行时间(毫秒)
long executionTime = endTime - startTime;
log.info("代码执行时间:" + executionTime + " 毫秒");
} catch (Exception e) {
log.error("导入失败;{}", e.getMessage());
}
// 转换数据
List<LawsEnterpriseStandard> esList = new ArrayList<>();
// list判空
if (list == null || list.isEmpty()) {
throw new JeroBootException("导入数据为空");
}
for (OldSystemImportDTO dto : list) {
LawsEnterpriseStandard es = new LawsEnterpriseStandard();
es.setStandardNumber(dto.getBzh());
es.setStandardName(dto.getBzmc());
es.setEnglishName(dto.getBzywmc());
es.setReleaseDate(dto.getFbrq());
es.setImplementationDate(dto.getSsrq());
es.setStandardState(Integer.parseInt(dto.getBzzt()));
es.setSubstituteStandardNumber(dto.getTdbzh());
es.setReplacedByStandardNumber(dto.getBtdbzh());
// 等级分类默认值
es.setGradeClassification("1");
esList.add(es);
}
// 处理数据
this.handleESData(esList);
// 保存数据
// 1. 首先获取所有现有的标准号
List<LawsEnterpriseStandard> existingEntities = esMapper.selectList(new QueryWrapper<>());
// 2. 创建一个Map,用于快速查找是否存在相同的标准号
Map<String, LawsEnterpriseStandard> standardNumberToEntityMap = new HashMap<>();
for (LawsEnterpriseStandard existingEntity : existingEntities) {
standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity);
}
// 3. 遍历待保存或更新的列表,设置ID
List<LawsEnterpriseStandard> toSaveOrUpdate = new ArrayList<>();
for (LawsEnterpriseStandard entity : esList) {
LawsEnterpriseStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber());
if (existingEntity != null) {
// 如果存在,则设置ID以进行更新
entity.setId(existingEntity.getId());
}
toSaveOrUpdate.add(entity);
}
// 4. 最后,执行批量保存或更新
saveOrUpdateBatch(toSaveOrUpdate);
}
private void handleESData(List<LawsEnterpriseStandard> esList) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
// 编号拆分
@@ -167,6 +104,235 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
}
}
@Override
public void importExcelOldSystem(MultipartFile zipFile) {
// 验证文件是否为压缩格式
if (!Objects.requireNonNull(zipFile.getContentType()).contains("zip")) {
throw new JeroBootException("文件格式不正确,请上传zip格式的压缩包。");
}
ImportParams params = new ImportParams();
params.setTitleRows(0);
params.setNeedSave(true);
// 获取数据
List<OldSystemImportDTO> allDatalist = null;
List<OldSystemImportDTO> esDatalist = new ArrayList<>();
List<OldSystemImportDTO> gbDatalist = new ArrayList<>();
List<OldSystemImportDTO> fbDatalist = new ArrayList<>();
// 解压缩文件,查找Excel文件
MultipartFile file = null;
try (ZipInputStream zis = new ZipInputStream(zipFile.getInputStream())) {
ZipEntry zipEntry;
while ((zipEntry = zis.getNextEntry()) != null) {
if (zipEntry.getName().endsWith(".xls") || zipEntry.getName().endsWith(".xlsx")) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(zis, baos);
byte[] excelData = baos.toByteArray();
file = new MockMultipartFile(zipEntry.getName(), zipEntry.getName(), "application/vnd.ms-excel", excelData);
zis.closeEntry();
break; // 一旦找到Excel文件,就可以跳出循环
}
zis.closeEntry();
}
} catch (IOException e) {
throw new JeroBootException("处理压缩文件时发生错误:" + e.getMessage());
}
if (file == null) {
throw new JeroBootException("压缩包中未发现Excel文件。");
}
try {
// 获取当前时间戳(毫秒)
long startTime = System.currentTimeMillis();
allDatalist = ExcelImportUtil.importExcel(file.getInputStream(), OldSystemImportDTO.class, params);
// 删除空行
for (int i = 0; i < allDatalist.size(); i++) {
OldSystemImportDTO oldSystemImportDTO = allDatalist.get(i);
if (oldSystemImportDTO.isEmptyRow()) {
allDatalist.remove(i);
i--;
}
}
// 区分数据
for (OldSystemImportDTO oldSystemImportDTO : allDatalist) {
if (oldSystemImportDTO.getBzfl().startsWith("企业标准")) {
esDatalist.add(oldSystemImportDTO);
} else if (oldSystemImportDTO.getBzfl().startsWith("国家标准")) {
gbDatalist.add(oldSystemImportDTO);
} else {
fbDatalist.add(oldSystemImportDTO);
}
}
log.info("获取数据成功,数据条数:{}", allDatalist.size());
log.info("获取数据成功,企标数据条数:{}", esDatalist.size());
log.info("获取数据成功,国标数据条数:{}", gbDatalist.size());
log.info("获取数据成功,其他数据条数:{}", fbDatalist.size());
// 获取当前时间戳(毫秒)
long endTime = System.currentTimeMillis();
// 计算执行时间(毫秒)
long executionTime = endTime - startTime;
log.info("数据转换执行时间:" + executionTime + " 毫秒");
} catch (Exception e) {
log.error("导入失败;{}", e.getMessage());
}
// 导入企标
// 判断是否需要跳过
if (esDatalist.isEmpty()) {
log.info("企标数据为空,跳过导入");
} else {
this.oldSysESImport(esDatalist);
}
// 导入国标
// 判断是否需要跳过
if (gbDatalist.isEmpty()) {
log.info("国标数据为空,跳过导入");
} else {
this.oldSysGBImport(gbDatalist);
}
}
private void oldSysGBImport(List<OldSystemImportDTO> gbDatalist) {
long startTime = System.currentTimeMillis();
// 转换数据
List<LawsDomesticStandard> gbList = new ArrayList<>();
for (OldSystemImportDTO dto : gbDatalist) {
LawsDomesticStandard gb = new LawsDomesticStandard();
gb.setStandardNumber(dto.getBzh());
String[] parts = dto.getBzh().split("[-\\s]"); // 使用空格或破折号作为分隔符
if (parts.length < 3) {
parts = dto.getBzh().split("[—\\s]"); // 使用空格或破折号作为分隔符
}
// 标准类别
gb.setStandardClass(parts[0]);
// 标准号
gb.setStandardNumberTemp(parts[1]);
// 年代号
gb.setYearNumber(parts[2]);
gb.setStandardName(dto.getBzmc());
gb.setStandardEnglishName(dto.getBzywmc());
gb.setReleaseDate(dto.getFbrq());
gb.setImplementationDate(dto.getSsrq());
String standardState = dto.getBzzt();
gb.setStandardState(standardState.equals("现行有效") ? "8" : "9");
// 代替被代替特殊逻辑
gb.setSubstituteStandardNumber(dto.getTdbzh());
gb.setReplacedByStandardNumber(dto.getBtdbzh());
gbList.add(gb);
}
// 保存数据
// 1. 首先获取所有现有的企标标准号
List<LawsDomesticStandard> existingEntities = domesticStandardService.list();
// 2. 创建一个Map,用于快速查找是否存在相同的标准号
Map<String, LawsDomesticStandard> standardNumberToEntityMap = new HashMap<>();
for (LawsDomesticStandard existingEntity : existingEntities) {
standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity);
}
// 3. 遍历待保存或更新的列表,设置ID
for (LawsDomesticStandard entity : gbList) {
LawsDomesticStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber());
if (existingEntity != null) {
// 如果存在,则先删后增
this.removeById(existingEntity.getId());
// 删除替代
lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1);
}
String tdbzh = entity.getSubstituteStandardNumber();
String btdbzh = entity.getReplacedByStandardNumber();
// 代替标准号
if (StringUtils.isNotBlank(tdbzh)) {
lawsReplacedStandardService.addRelation(btdbzh, tdbzh, 1);
}
// 被代替标准号
if (StringUtils.isNotBlank(btdbzh)) {
List<String> replaceCodeList = Arrays.asList(btdbzh.split(";"));
replaceCodeList.forEach(replaceCode -> {
lawsReplacedStandardService.addRelation(replaceCode, btdbzh, 1);
});
}
entity.setSubstituteStandardNumber(null);
entity.setReplacedByStandardNumber(null);
domesticStandardService.save(entity);
}
log.info("老法规国标覆盖导入完成");
// 获取当前时间戳(毫秒)
long endTime = System.currentTimeMillis();
// 计算执行时间(毫秒)
long executionTime = endTime - startTime;
log.info("代码执行时间:" + executionTime + " 毫秒");
}
private void oldSysESImport(List<OldSystemImportDTO> esDatalist) {
long startTime = System.currentTimeMillis();
// 转换数据
List<LawsEnterpriseStandard> esList = new ArrayList<>();
// 导入企标
for (OldSystemImportDTO dto : esDatalist) {
LawsEnterpriseStandard es = new LawsEnterpriseStandard();
es.setStandardNumber(dto.getBzh());
es.setStandardName(dto.getBzmc());
es.setEnglishName(dto.getBzywmc());
es.setReleaseDate(dto.getFbrq());
es.setImplementationDate(dto.getSsrq());
String standardState = dto.getBzzt();
es.setStandardState(standardState.equals("现行有效") ? 8 : 9);
// 代替被代替特殊逻辑
es.setSubstituteStandardNumber(dto.getTdbzh());
es.setReplacedByStandardNumber(dto.getBtdbzh());
// 等级分类默认值
es.setGradeClassification("1");
esList.add(es);
}
// 处理数据
this.handleESData(esList);
// 保存数据
// 1. 首先获取所有现有的企标标准号
List<LawsEnterpriseStandard> existingEntities = this.list();
// 2. 创建一个Map,用于快速查找是否存在相同的标准号
Map<String, LawsEnterpriseStandard> standardNumberToEntityMap = new HashMap<>();
for (LawsEnterpriseStandard existingEntity : existingEntities) {
standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity);
}
// 3. 遍历待保存或更新的列表,设置ID
for (LawsEnterpriseStandard entity : esList) {
String curStandardNumber = entity.getStandardNumber();
LawsEnterpriseStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber());
if (existingEntity != null) {
// 如果存在,则先删后增
this.removeById(existingEntity.getId());
// 代替
lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1);
}
String tdbzh = entity.getSubstituteStandardNumber();
String btdbzh = entity.getReplacedByStandardNumber();
// 代替标准号
if (StringUtils.isNotBlank(tdbzh)) {
lawsReplacedStandardService.addRelation(tdbzh, curStandardNumber, 1);
}
// 被代替标准号
if (StringUtils.isNotBlank(btdbzh)) {
List<String> replaceCodeList = Arrays.asList(btdbzh.split(";"));
replaceCodeList.forEach(replaceCode -> {
lawsReplacedStandardService.addRelation(curStandardNumber, replaceCode, 1);
});
}
entity.setSubstituteStandardNumber(null);
entity.setReplacedByStandardNumber(null);
save(entity);
}
log.info("老法规企标覆盖导入完成");
// 获取当前时间戳(毫秒)
long endTime = System.currentTimeMillis();
// 计算执行时间(毫秒)
long executionTime = endTime - startTime;
log.info("代码执行时间:" + executionTime + " 毫秒");
}
@Override
public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
// 已经存在的标准
@@ -19,9 +19,10 @@ public enum LawsFieldTypeEnum {
OPTION_SINGLE("下拉单选","10"),
OPTION_MANY("下拉多选","11"),
TREE_BOX("树型结构(多选)","12"),
OPTION_Link("输入框(链接)","13"),
OPTION_Link("输入框(链接)","13"), // 好像没用了
YEAR_OPTION("年份选择","14"),
TREE_BOX_SINGLE("树型结构(单选)","15")
TREE_BOX_SINGLE("树型结构(单选)","15"),
TREE_OPTION("树形弹框选择","16"),
;
String name;