第一次提交

master
胡川虎 3 months ago
parent ec5264b4de
commit d5db181526

@ -17,4 +17,85 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-scm-entity</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-generater-base</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-common-all</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-file-controller</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
</dependency>
<!--freemarker-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.27-incubating</version>
</dependency>
<!--spire.doc 操作word文档-->
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>5.2.0</version>
</dependency>
<!--html 转 pdf-->
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.7</version>
</dependency>
<!-- PDF -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<!-- PDF end-->
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-workflow-engine-controller</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-workflow-engine-controller</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-workflow-engine-controller</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-workflow-engine-controller</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,16 @@
package jnpf.mapper;
import jnpf.entity.ParkEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* park
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-07-12
*/
public interface ParkMapper extends BaseMapper<ParkEntity> {
}

@ -0,0 +1,35 @@
package jnpf.service;
import jnpf.model.park.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* park
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-07-12
*/
public interface ParkService extends IService<ParkEntity> {
List<ParkEntity> getList(ParkPagination parkPagination);
List<ParkEntity> getTypeList(ParkPagination parkPagination,String dataType);
ParkEntity getInfo(String id);
void delete(ParkEntity entity);
void create(ParkEntity entity);
boolean update(String id, ParkEntity entity);
//子表方法
//副表数据方法
String checkForm(ParkForm form,int i);
void saveOrUpdate(ParkForm parkForm,String id, boolean isSave) throws Exception;
}

@ -0,0 +1,289 @@
package jnpf.service.impl;
import jnpf.entity.*;
import jnpf.mapper.ParkMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.park.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jnpf.database.model.superQuery.SuperJsonModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
* park
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-07-12
*/
@Service
public class ParkServiceImpl extends ServiceImpl<ParkMapper, ParkEntity> implements ParkService{
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Override
public List<ParkEntity> getList(ParkPagination parkPagination){
return getTypeList(parkPagination,parkPagination.getDataType());
}
/** 列表查询 */
@Override
public List<ParkEntity> getTypeList(ParkPagination parkPagination,String dataType){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
List<List<String>> intersectionList =new ArrayList<>();
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String columnData = !isPc ? ParkConstant.getAppColumnData() : ParkConstant.getColumnData();
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData, ColumnDataModel.class);
String ruleJson = !isPc ? JsonUtil.getObjectToString(columnDataModel.getRuleListApp()) : JsonUtil.getObjectToString(columnDataModel.getRuleList());
int total=0;
int parkNum =0;
QueryWrapper<ParkEntity> parkQueryWrapper=new QueryWrapper<>();
List<String> allSuperIDlist = new ArrayList<>();
String superOp ="";
if (ObjectUtil.isNotEmpty(parkPagination.getSuperQueryJson())){
List<String> allSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
String queryJson = parkPagination.getSuperQueryJson();
SuperJsonModel superJsonModel = JsonUtil.getJsonToBean(queryJson, SuperJsonModel.class);
int superNum = 0;
QueryWrapper<ParkEntity> parkSuperWrapper = new QueryWrapper<>();
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper,ParkEntity.class,queryJson,"0"));
int parkNum1 = parkSuperWrapper.getExpression().getNormal().size();
if (parkNum1>0){
List<String> parkList =this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
allSuperList.addAll(parkList);
intersectionSuperList.add(parkList);
superNum++;
}
superOp = superNum > 0 ? superJsonModel.getMatchLogic() : "";
//and or
if(superOp.equalsIgnoreCase("and")){
allSuperIDlist = generaterSwapUtil.getIntersection(intersectionSuperList);
}else{
allSuperIDlist = allSuperList;
}
}
List<String> allRuleIDlist = new ArrayList<>();
String ruleOp ="";
if (ObjectUtil.isNotEmpty(ruleJson)){
List<String> allRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
SuperJsonModel ruleJsonModel = JsonUtil.getJsonToBean(ruleJson, SuperJsonModel.class);
int ruleNum = 0;
QueryWrapper<ParkEntity> parkSuperWrapper = new QueryWrapper<>();
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper,ParkEntity.class,ruleJson,"0"));
int parkNum1 = parkSuperWrapper.getExpression().getNormal().size();
if (parkNum1>0){
List<String> parkList =this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
allRuleList.addAll(parkList);
intersectionRuleList.add(parkList);
ruleNum++;
}
ruleOp = ruleNum > 0 ? ruleJsonModel.getMatchLogic() : "";
//and or
if(ruleOp.equalsIgnoreCase("and")){
allRuleIDlist = generaterSwapUtil.getIntersection(intersectionRuleList);
}else{
allRuleIDlist = allRuleList;
}
}
boolean pcPermission = false;
boolean appPermission = false;
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object parkObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper,ParkEntity.class,parkPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(parkObj)){
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>)parkObj;
if( parkQueryWrapper.getExpression().getNormal().size()>0){
parkNum++;
}
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object parkObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper,ParkEntity.class,parkPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(parkObj)){
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>)parkObj;
if( parkQueryWrapper.getExpression().getNormal().size()>0){
parkNum++;
}
}
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(parkPagination.getParkName())){
parkNum++;
String value = parkPagination.getParkName() instanceof List ?
JsonUtil.getObjectToString(parkPagination.getParkName()) :
String.valueOf(parkPagination.getParkName());
parkQueryWrapper.lambda().like(ParkEntity::getParkName,value);
}
}
List<String> intersection = generaterSwapUtil.getIntersection(intersectionList);
if (total>0){
if (intersection.size()==0){
intersection.add("jnpfNullList");
}
parkQueryWrapper.lambda().in(ParkEntity::getId, intersection);
}
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)){
if (allSuperIDlist.size()==0){
allSuperIDlist.add("jnpfNullList");
}
List<String> finalAllSuperIDlist = allSuperIDlist;
parkQueryWrapper.lambda().and(t->t.in(ParkEntity::getId, finalAllSuperIDlist));
}
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)){
if (allRuleIDlist.size()==0){
allRuleIDlist.add("jnpfNullList");
}
List<String> finalAllRuleIDlist = allRuleIDlist;
parkQueryWrapper.lambda().and(t->t.in(ParkEntity::getId, finalAllRuleIDlist));
}
//假删除标志
parkQueryWrapper.lambda().isNull(ParkEntity::getDeleteMark);
//排序
if(StringUtil.isEmpty(parkPagination.getSidx())){
parkQueryWrapper.lambda().orderByDesc(ParkEntity::getId);
}else{
try {
String sidx = parkPagination.getSidx();
String[] strs= sidx.split("_name");
ParkEntity parkEntity = new ParkEntity();
Field declaredField = parkEntity.getClass().getDeclaredField(strs[0]);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
parkQueryWrapper="asc".equals(parkPagination.getSort().toLowerCase())?parkQueryWrapper.orderByAsc(value):parkQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if("0".equals(dataType)){
if((total>0 && AllIdList.size()>0) || total==0){
Page<ParkEntity> page=new Page<>(parkPagination.getCurrentPage(), parkPagination.getPageSize());
IPage<ParkEntity> userIPage=this.page(page, parkQueryWrapper);
return parkPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
List<ParkEntity> list = new ArrayList();
return parkPagination.setData(list, list.size());
}
}else{
return this.list(parkQueryWrapper);
}
}
@Override
public ParkEntity getInfo(String id){
QueryWrapper<ParkEntity> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(ParkEntity::getId,id);
return this.getOne(queryWrapper);
}
@Override
public void create(ParkEntity entity){
this.save(entity);
}
@Override
public boolean update(String id, ParkEntity entity){
return this.updateById(entity);
}
@Override
public void delete(ParkEntity entity){
if(entity!=null){
this.removeById(entity.getId());
}
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
@Override
public String checkForm(ParkForm form,int i) {
boolean isUp =StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id="";
String countRecover = "";
if (isUp){
id = form.getId();
}
//主表字段验证
if(StringUtil.isEmpty(form.getParkNumber())){
return "园区编码不能为空";
}
if(StringUtil.isNotEmpty(form.getParkNumber())){
form.setParkNumber(form.getParkNumber().trim());
QueryWrapper<ParkEntity> parkNumberWrapper=new QueryWrapper<>();
parkNumberWrapper.lambda().eq(ParkEntity::getParkNumber,form.getParkNumber());
//假删除标志
parkNumberWrapper.lambda().isNull(ParkEntity::getDeleteMark);
if (isUp){
parkNumberWrapper.lambda().ne(ParkEntity::getId, id);
}
if((int) this.count(parkNumberWrapper)>0){
countRecover = "园区编码不能重复";
}
}
if(StringUtil.isEmpty(form.getParkName())){
return "园区名称不能为空";
}
return countRecover;
}
/**
* ()
* @param id
* @param parkForm
* @return
*/
@Override
@Transactional
public void saveOrUpdate(ParkForm parkForm,String id, boolean isSave) throws Exception{
UserInfo userInfo=userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
parkForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(ParkConstant.getFormData(),parkForm),ParkForm.class);
ParkEntity entity = JsonUtil.getJsonToBean(parkForm, ParkEntity.class);
if(isSave){
String mainId = RandomUtil.uuId() ;
entity.setId(mainId);
entity.setVersion(0);
}else{
}
this.saveOrUpdate(entity);
}
}

@ -16,5 +16,34 @@
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-scm-biz</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-common-all</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-file-entity</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-file-entity</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-file-biz</artifactId>
<version>3.5.0-RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,507 @@
package jnpf.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.exception.DataException;
import jnpf.permission.entity.UserEntity;
import jnpf.service.*;
import jnpf.entity.*;
import jnpf.util.*;
import jnpf.model.park.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.*;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.engine.entity.FlowTaskEntity;
import jnpf.exception.WorkFlowException;
import org.springframework.web.multipart.MultipartFile;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import jnpf.onlinedev.model.ExcelImFieldModel;
import jnpf.onlinedev.model.OnlineImport.ImportDataModel;
import jnpf.onlinedev.model.OnlineImport.ImportFormCheckUniqueModel;
import jnpf.onlinedev.model.OnlineImport.ExcelImportModel;
import jnpf.onlinedev.model.OnlineImport.VisualImportModel;
import cn.xuyanwu.spring.file.storage.FileInfo;
import lombok.Cleanup;
import jnpf.model.visualJson.config.HeaderModel;
import jnpf.base.model.ColumnDataModel;
import jnpf.base.util.VisualUtils;
import org.springframework.transaction.annotation.Transactional;
/**
* park
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Slf4j
@RestController
@Tag(name = "park" , description = "scm")
@RequestMapping("/api/scm/Park")
public class ParkController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private ParkService parkService;
@Autowired
private ConfigValueUtil configValueUtil;
/**
*
*
* @param parkPagination
* @return
*/
@Operation(summary = "获取列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody ParkPagination parkPagination)throws IOException{
List<ParkEntity> list= parkService.getList(parkPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (ParkEntity entity : list) {
Map<String, Object> parkMap=JsonUtil.entityToMap(entity);
parkMap.put("id", parkMap.get("id"));
//副表数据
//子表数据
realList.add(parkMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, ParkConstant.getFormData(), ParkConstant.getColumnData(), parkPagination.getModuleId(),false);
//返回对象
PageListVO vo = new PageListVO();
vo.setList(realList);
PaginationVO page = JsonUtil.getJsonToBean(parkPagination, PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
* @param parkForm
* @return
*/
@PostMapping()
@Operation(summary = "创建")
public ActionResult create(@RequestBody @Valid ParkForm parkForm) {
String b = parkService.checkForm(parkForm,0);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
try{
parkService.saveOrUpdate(parkForm, null ,true);
}catch(Exception e){
return ActionResult.fail("新增数据失败");
}
return ActionResult.success("创建成功");
}
/**
* Excel
*
* @return
*/
@Operation(summary = "导出Excel")
@PostMapping("/Actions/Export")
public ActionResult Export(@RequestBody ParkPagination parkPagination) throws IOException {
if (StringUtil.isEmpty(parkPagination.getSelectKey())){
return ActionResult.fail("请选择导出字段");
}
List<ParkEntity> list= parkService.getList(parkPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (ParkEntity entity : list) {
Map<String, Object> parkMap=JsonUtil.entityToMap(entity);
parkMap.put("id", parkMap.get("id"));
//副表数据
//子表数据
realList.add(parkMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, ParkConstant.getFormData(), ParkConstant.getColumnData(), parkPagination.getModuleId(),false);
String[]keys=!StringUtil.isEmpty(parkPagination.getSelectKey())?parkPagination.getSelectKey():new String[0];
UserInfo userInfo=userProvider.get();
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),realList,keys,userInfo);
return ActionResult.success(vo);
}
/**
*
*/
public DownloadVO creatModelExcel(String path,List<Map<String, Object>>list,String[]keys,UserInfo userInfo){
DownloadVO vo=DownloadVO.builder().build();
List<ExcelExportEntity> entitys=new ArrayList<>();
if(keys.length>0){
for(String key:keys){
switch(key){
case "parkNumber" :
entitys.add(new ExcelExportEntity("园区编码" ,"parkNumber"));
break;
case "parkName" :
entitys.add(new ExcelExportEntity("园区名称" ,"parkName"));
break;
case "parkDescribe" :
entitys.add(new ExcelExportEntity("园区描述" ,"parkDescribe"));
break;
case "remark" :
entitys.add(new ExcelExportEntity("备注" ,"remark"));
break;
default:
break;
}
}
}
ExportParams exportParams = new ExportParams(null, "表单信息");
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//去除空数据
List<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> map : list) {
int i = 0;
for (String key : keys) {
//子表
if (key.toLowerCase().startsWith("tablefield")) {
String tableField = key.substring(0, key.indexOf("-" ));
String field = key.substring(key.indexOf("-" ) + 1);
Object o = map.get(tableField);
if (o != null) {
List<Map<String, Object>> childList = (List<Map<String, Object>>) o;
for (Map<String, Object> childMap : childList) {
if (childMap.get(field) != null) {
i++;
}
}
}
} else {
Object o = map.get(key);
if (o != null) {
i++;
}
}
}
if (i > 0) {
dataList.add(map);
}
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(ParkConstant.getColumnData(), ColumnDataModel.class);
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList);
dataList = VisualUtils.complexHeaderDataHandel(dataList, complexHeaderList);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, dataList);
}
String fileName = "表单信息" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
} catch (Exception e) {
log.error("信息导出Excel错误:{}", e.getMessage());
e.printStackTrace();
}
return vo;
}
@Operation(summary = "上传文件")
@PostMapping("/Uploader")
public ActionResult<Object> Uploader() {
List<MultipartFile> list = UpUtil.getFileAll();
MultipartFile file = list.get(0);
if (file.getOriginalFilename().endsWith(".xlsx") || file.getOriginalFilename().endsWith(".xls")) {
String filePath = XSSEscape.escape(configValueUtil.getTemporaryFilePath());
String fileName = XSSEscape.escape(RandomUtil.uuId() + "." + UpUtil.getFileType(file));
//上传文件
FileInfo fileInfo = FileUploadUtils.uploadFile(file, filePath, fileName);
DownloadVO vo = DownloadVO.builder().build();
vo.setName(fileInfo.getFilename());
return ActionResult.success(vo);
} else {
return ActionResult.fail("选择文件不符合导入");
}
}
/**
*
*
* @return
*/
@Operation(summary = "模板下载")
@GetMapping("/TemplateDownload")
public ActionResult<DownloadVO> TemplateDownload(){
DownloadVO vo = DownloadVO.builder().build();
UserInfo userInfo = userProvider.get();
Map<String, Object> dataMap = new HashMap<>();
//主表对象
List<ExcelExportEntity> entitys = new ArrayList<>();
//以下添加字段
entitys.add(new ExcelExportEntity("园区编码" ,"parkNumber"));
entitys.add(new ExcelExportEntity("园区名称" ,"parkName"));
List<Map<String, Object>> list = new ArrayList<>();
list.add(dataMap);
ExportParams exportParams = new ExportParams(null, "园区管理模板");
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(ParkConstant.getColumnData(), ColumnDataModel.class);
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList);
list = VisualUtils.complexHeaderDataHandel(list, complexHeaderList);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
}
String fileName = "园区管理模板" + DateUtil.dateNow("yyyyMMddHHmmss") + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
} catch (Exception e) {
log.error("模板信息导出Excel错误:{}", e.getMessage());
e.printStackTrace();
}
return ActionResult.success(vo);
}
/**
*
*
* @return
*/
@Operation(summary = "导入预览" )
@GetMapping("/ImportPreview")
public ActionResult<Map<String, Object>> ImportPreview(String fileName) throws Exception {
Map<String, Object> headAndDataMap = new HashMap<>(2);
String filePath = FileUploadUtils.getLocalBasePath() + configValueUtil.getTemporaryFilePath();
FileUploadUtils.downLocal(configValueUtil.getTemporaryFilePath(), filePath, fileName);
File temporary = new File(XSSEscape.escapePath(filePath + fileName));
int headerRowIndex = 1;
ImportParams params = new ImportParams();
params.setTitleRows(0);
params.setHeadRows(headerRowIndex);
params.setNeedVerify(true);
try {
List<ParkExcelVO> excelDataList = ExcelImportUtil.importExcel(temporary, ParkExcelVO.class, params);
// 导入字段
List<ExcelImFieldModel> columns = new ArrayList<>();
columns.add(new ExcelImFieldModel("parkNumber","园区编码"));
columns.add(new ExcelImFieldModel("parkName","园区名称"));
headAndDataMap.put("dataRow" , JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(excelDataList)));
headAndDataMap.put("headerRow" , JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(columns)));
} catch (Exception e){
e.printStackTrace();
return ActionResult.fail("表头名称不可更改,表头行不能删除");
}
return ActionResult.success(headAndDataMap);
}
/**
*
*
* @return
*/
@Operation(summary = "导入数据" )
@PostMapping("/ImportData")
public ActionResult<ExcelImportModel> ImportData(@RequestBody VisualImportModel visualImportModel) throws Exception {
List<Map<String, Object>> listData=new ArrayList<>();
for(Map<String, Object> map : visualImportModel.getList()){
listData.add(map);
}
ImportFormCheckUniqueModel uniqueModel = new ImportFormCheckUniqueModel();
uniqueModel.setDbLinkId(ParkConstant.DBLINKID);
uniqueModel.setUpdate(Objects.equals("1", "2"));
ExcelImportModel excelImportModel = generaterSwapUtil.importData(ParkConstant.getFormData(),listData,uniqueModel,
ParkConstant.TABLEFIELDKEY,ParkConstant.getTableList());
List<ImportDataModel> importDataModel = uniqueModel.getImportDataModel();
for (ImportDataModel model : importDataModel) {
String id = model.getId();
Map<String, Object> result = model.getResultData();
if(StringUtil.isNotEmpty(id)){
update(id, JsonUtil.getJsonToBean(result,ParkForm.class), true);
}else {
create( JsonUtil.getJsonToBean(result,ParkForm.class));
}
}
return ActionResult.success(excelImportModel);
}
/**
*
*
* @return
*/
@Operation(summary = "导出异常报告")
@PostMapping("/ImportExceptionData")
public ActionResult<DownloadVO> ImportExceptionData(@RequestBody VisualImportModel visualImportModel) {
DownloadVO vo=DownloadVO.builder().build();
List<ParkExcelErrorVO> parkVOList = JsonUtil.getJsonToList(visualImportModel.getList(), ParkExcelErrorVO.class);
UserInfo userInfo = userProvider.get();
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
ExportParams exportParams = new ExportParams(null, "错误报告");
exportParams.setType(ExcelType.XSSF);
workbook = ExcelExportUtil.exportExcel(exportParams,
ParkExcelErrorVO.class, parkVOList);
String fileName = "错误报告" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
} catch (Exception e) {
e.printStackTrace();
}
return ActionResult.success(vo);
}
/**
*
* @param ids
* @return
*/
@DeleteMapping("/batchRemove")
@Transactional
@Operation(summary = "批量删除")
public ActionResult batchRemove(@RequestBody String ids){
List<String> idList = JsonUtil.getJsonToList(ids, String.class);
int i =0;
for (String allId : idList){
this.delete(allId);
i++;
}
if (i == 0 ){
return ActionResult.fail("删除失败");
}
return ActionResult.success("删除成功");
}
/**
*
* @param id
* @param parkForm
* @return
*/
@PutMapping("/{id}")
@Operation(summary = "更新")
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid ParkForm parkForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
parkForm.setId(id);
if (!isImport) {
String b = parkService.checkForm(parkForm,1);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
}
ParkEntity entity= parkService.getInfo(id);
if(entity!=null){
try{
parkService.saveOrUpdate(parkForm,id,false);
}catch(Exception e){
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("更新成功");
}else{
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
*
* @param id
* @return
*/
@Operation(summary = "删除")
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id){
ParkEntity entity= parkService.getInfo(id);
if(entity!=null){
//假删除
entity.setDeleteMark(1);
parkService.update(id,entity);
}
return ActionResult.success("删除成功");
}
/**
* ()
* 使-
* @param id
* @return
*/
@Operation(summary = "表单信息(详情页)")
@GetMapping("/detail/{id}")
public ActionResult detailInfo(@PathVariable("id") String id){
ParkEntity entity= parkService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> parkMap=JsonUtil.entityToMap(entity);
parkMap.put("id", parkMap.get("id"));
//副表数据
//子表数据
parkMap = generaterSwapUtil.swapDataDetail(parkMap,ParkConstant.getFormData(),"581462239718932549",false);
return ActionResult.success(parkMap);
}
/**
* ()
* 使-
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/{id}")
public ActionResult info(@PathVariable("id") String id){
ParkEntity entity= parkService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> parkMap=JsonUtil.entityToMap(entity);
parkMap.put("id", parkMap.get("id"));
//副表数据
//子表数据
parkMap = generaterSwapUtil.swapDataForm(parkMap,ParkConstant.getFormData(),ParkConstant.TABLEFIELDKEY,ParkConstant.TABLERENAMES);
return ActionResult.success(parkMap);
}
}

@ -17,4 +17,11 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-common-all</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

@ -0,0 +1,55 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
/**
*
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Data
@TableName("yq_park")
public class ParkEntity {
@TableId(value ="ID" )
private String id;
@TableField(value = "PARK_NUMBER" , updateStrategy = FieldStrategy.IGNORED)
private String parkNumber;
@TableField(value = "PARK_NAME" , updateStrategy = FieldStrategy.IGNORED)
private String parkName;
@TableField(value = "PARK_DESCRIBE" , updateStrategy = FieldStrategy.IGNORED)
private String parkDescribe;
@TableField("SORT")
private Long sort;
@TableField(value = "REMARK" , updateStrategy = FieldStrategy.IGNORED)
private String remark;
@TableField("F_CREATOR_TIME")
private Date creatorTime;
@TableField("F_CREATOR_USER_ID")
private String creatorUserId;
@TableField("F_LAST_MODIFY_TIME")
private Date lastModifyTime;
@TableField("F_LAST_MODIFY_USER_ID")
private String lastModifyUserId;
@TableField("F_DELETE_TIME")
private Date deleteTime;
@TableField("F_DELETE_USER_ID")
private String deleteUserId;
@TableField("F_DELETE_MARK")
private Integer deleteMark;
@TableField("F_TENANT_ID")
private String tenantId;
@TableField("COMPANY_ID")
private String companyId;
@TableField("DEPARTMENT_ID")
private String departmentId;
@TableField("ORGANIZE_JSON_ID")
private String organizeJsonId;
@TableField("F_VERSION")
private Integer version;
@TableField("F_FLOW_ID")
private String flowId;
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,22 @@
package jnpf.model.park;
import lombok.Data;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.fastjson.annotation.JSONField;
/**
*
* park
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Data
public class ParkExcelErrorVO extends ParkExcelVO{
@Excel(name = "异常原因",orderNum = "999")
@JSONField(name = "errorsInfo")
private String errorsInfo;
}

@ -0,0 +1,36 @@
package jnpf.model.park;
import lombok.Data;
import java.sql.Time;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.alibaba.fastjson.annotation.JSONField;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import java.math.BigDecimal;
import java.util.List;
/**
*
* park
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Data
public class ParkExcelVO{
/** 园区编码 **/
@JSONField(name = "parkNumber")
@Excel(name = "园区编码",orderNum = "1", isImportField = "true" )
private String parkNumber;
/** 园区名称 **/
@JSONField(name = "parkName")
@Excel(name = "园区名称",orderNum = "1", isImportField = "true" )
private String parkName;
}

@ -0,0 +1,35 @@
package jnpf.model.park;
import lombok.Data;
import java.util.List;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* park
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Data
public class ParkForm {
/** 主键 */
private String id;
/** 乐观锁 **/
@JsonProperty("version")
private Integer version;
/** 园区编码 **/
@JsonProperty("parkNumber")
private String parkNumber;
/** 园区名称 **/
@JsonProperty("parkName")
private String parkName;
/** 园区描述 **/
@JsonProperty("parkDescribe")
private String parkDescribe;
/** 备注 **/
@JsonProperty("remark")
private String remark;
}

@ -0,0 +1,33 @@
package jnpf.model.park;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import jnpf.base.Pagination;
import java.util.List;
/**
*
* park
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-12
*/
@Data
public class ParkPagination extends Pagination {
/** 查询key */
private String[] selectKey;
/** json */
private String json;
/** 数据类型 0-当前页1-全部数据 */
private String dataType;
/** 高级查询 */
private String superQueryJson;
/** 功能id */
private String moduleId;
/** 菜单id */
private String menuId;
/** 园区名称 */
@JsonProperty("parkName")
private Object parkName;
}
Loading…
Cancel
Save