Commit 0445dac9 authored by 廖旭伟's avatar 廖旭伟

事项预览次数接口,事项材料本地新增后自动转换图片

parent 8610a603
......@@ -1395,9 +1395,9 @@ msg|String|消息|-
```
## 材料附件
## 材料附件业务
### 查询材料附件列表
### 查询材料附件业务列表
**请求URL:** matter/datum/file/list
......@@ -1405,76 +1405,62 @@ msg|String|消息|-
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询材料附件
**简要描述:** 查询材料附件业务
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
page|Integer|当前页|否|-
size|Integer|每页条数|否|-
datumId|Long|材料id|否|-
fileName|String|附件名称|否|-
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
**请求样例:**
```
{
"datumId":6854,
"fileName":"cmvaf0",
"page":1,
"size":10
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
 per_page|Integer|每页条数|-
 total|Integer|总条数|-
 last_page|Integer|总页数|-
 current_page|Integer|当前页|-
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键,自增长|-
  datumId|Long|材料id|-
  fileName|String|附件名称|-
  fileUrl|String|附件下载地址|-
  filetype|Integer|附件类型 (1.示例样表,2.空白表格)|-
  source|Integer|附件来源 (0.政务网,1.自定义)|-
  createTime|Date|创建时间|-
  createUserId|Long|创建用户|-
  updateTime|Date|修改时间|-
  materialName|String|材料名|-
dict|object|字典对象|-
 filetype|object|字典属性对象,详见附录|-
 source|object|字典属性对象,详见附录|-
  id|Long|主键,自增长
  datumId|Long|材料id
  matterCode|String|事项编码
  materialName|String|材料名
  fileName|String|附件名称
  fileUrl|String|附件下载地址
  localFileUrl|String|本地文件地址
  filetype|String|附件类型 (1.示例样表,2.空白表格)
  source|Integer|附件来源 (0.政务网,1.自定义)
  previewUrl|String|预览地址
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
dict|object|字典对象
 filetype|object|字典属性对象,详见附录
 source|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code":1,
"data":{
"per_page":10,
"total":0,
"data":[],
"last_page":0,
"current_page":1
},
"query":{
"modelCode":"phxt1",
"modelName":"排号系统"
}
}
```
### 查看材料附件
### 查看材料附件业务
**请求URL:** matter/datum/file/info
......@@ -1482,64 +1468,65 @@ dict|object|字典对象|-
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看材料附件,返回实例详细信息
**简要描述:** 查看材料附件业务,返回实例详细信息
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|Long|主键,唯一|是|-
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/matter/datum/file/info?id=549
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
 id|Long|主键,自增长|-
 datumId|Long|材料id|-
 fileName|String|附件名称|-
 fileUrl|String|附件下载地址|-
 filetype|Integer|附件类型 (1.示例样表,2.空白表格)|-
 source|Integer|附件来源 (0.政务网,1.自定义)|-
 createTime|Date|创建时间|-
 createUserId|Long|创建用户|-
 updateTime|Date|修改时间|-
 materialName|String|材料名|-
dict|object|字典对象|-
 filetype|object|字典属性对象,详见附录|-
 source|object|字典属性对象,详见附录|-
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|主键,自增长
 datumId|Long|材料id
 matterCode|String|事项编码
 materialName|String|材料名
 fileName|String|附件名称
 fileUrl|String|附件下载地址
 localFileUrl|String|本地文件地址
 filetype|String|附件类型 (1.示例样表,2.空白表格)
 source|Integer|附件来源 (0.政务网,1.自定义)
 previewUrl|String|预览地址
 createTime|Date|创建时间
 createUserId|Long|创建用户
 updateTime|Date|修改时间
dict|object|字典对象
 filetype|object|字典属性对象,详见附录
 source|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":6421,
"datumId":8129,
"fileName":"323vu4",
"fileUrl":"r2k16i",
"filetype":1122,
"source":7522,
"createTime":"2022-01-20",
"createUserId":6432,
"updateTime":"2022-01-20",
"materialName":"lyfq8o"
"id":4972,
"datumId":3957,
"matterCode":"w0ryy3",
"materialName":"gzy378",
"fileName":"a4qm62",
"fileUrl":"oi9arv",
"localFileUrl":"9i1ywr",
"filetype":"s6yq9s",
"source":6932,
"previewUrl":"5edgl2",
"createTime":"2023-03-11",
"createUserId":1829,
"updateTime":"2023-03-11"
}
}
```
### 保存更新材料附件
### 保存更新材料附件业务
**请求URL:** matter/datum/file/save
......@@ -1547,100 +1534,91 @@ dict|object|字典对象|-
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新材料附件:id为空时为新增保存,否则为更新提交
**简要描述:** 保存或更新材料附件业务:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
datumId|Long|材料id|是|-
fileName|String|附件名称|是|-
fileUrl|String|附件下载地址|是|-
filetype|Integer|附件类型 (1.示例样表,2.空白表格)|是|-
source|Integer|附件来源 (0.政务网,1.自定义)|是|-
materialName|String|材料名|是|-
参数名称|类型|必填|描述
:---|:---|:---|:-------
datumId|Long|是|材料id
matterCode|String|否|事项编码
materialName|String|是|材料名
fileName|String|否|附件名称
fileUrl|String|否|附件下载地址
localFileUrl|String|否|本地文件地址
filetype|String|否|附件类型 (1.示例样表,2.空白表格)
source|Integer|否|附件来源 (0.政务网,1.自定义)
previewUrl|String|否|预览地址
**请求样例:**
```
{
"datumId":3896,
"fileName":"ekgiva",
"fileUrl":"rzkwum",
"filetype":3934,
"source":2574,
"materialName":"ifpw37"
"datumId":727,
"matterCode":"lfm863",
"materialName":"hvalmk",
"fileName":"mlx8ju",
"fileUrl":"6h90f2",
"localFileUrl":"ra09bn",
"filetype":"y744tf",
"source":1383,
"previewUrl":"l61fbb",
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
 id|Long|保存后主键id|-
 entity|object|保存更新实体|对象
  id|Long|主键,自增长|-
  datumId|Long|材料id|-
  fileName|String|附件名称|-
  fileUrl|String|附件下载地址|-
  filetype|Integer|附件类型 (1.示例样表,2.空白表格)|-
  source|Integer|附件来源 (0.政务网,1.自定义)|-
  createTime|Date|创建时间|-
  createUserId|Long|创建用户|-
  updateTime|Date|修改时间|-
  materialName|String|材料名|-
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|保存后主键id
 entity|object|保存更新实体
  id|Long|主键,自增长
  datumId|Long|材料id
  matterCode|String|事项编码
  materialName|String|材料名
  fileName|String|附件名称
  fileUrl|String|附件下载地址
  localFileUrl|String|本地文件地址
  filetype|String|附件类型 (1.示例样表,2.空白表格)
  source|Integer|附件来源 (0.政务网,1.自定义)
  previewUrl|String|预览地址
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{
"__mortals_form_state__":"ADD",
"id":4,
"entity":{
"createTime":1642486776780,
"id":4,
"modelCode":"phxt1",
"modelName":"排号系统4",
"updateTime":1642486776780
}
"data":{}
}
}
```
### 删除材料附件
### 删除材料附件业务
**请求URL:** matter/datum/file/delete
**请求方式:** POST
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除材料附件
**简要描述:** 删除材料附件业务
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|String|字符串,多个逗号分隔|是|-
参数名称|类型|必填|描述
:---|:---|:---|:------
id|String|是|数组
**请求样例:**
```
http://localhost:8080/matter/datum/file/delete?id=1'
http://localhost:8080/matter/datum/file/delete?id=1&id=2'
```
**响应参数:**
参数名称 |参数类型|备注|其它
......@@ -1649,13 +1627,10 @@ code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
......
package com.mortals.xhx.module.matter.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.RandomUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.xhx.common.utils.HttpDownloadUtil;
import com.mortals.xhx.common.utils.WordUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.matter.dao.MatterDatumFileDao;
......@@ -6,6 +12,8 @@ import com.mortals.xhx.module.matter.model.MatterDatumFileEntity;
import com.mortals.xhx.module.matter.service.MatterDatumFileService;
import javax.naming.Context;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
......@@ -19,10 +27,63 @@ import java.util.Map;
@Service("matterDatumFileService")
public class MatterDatumFileServiceImpl extends AbstractCRUDServiceImpl<MatterDatumFileDao, MatterDatumFileEntity, Long> implements MatterDatumFileService {
@Value("${upload.path}")
private String filePath;
public static String word[] = {"doc", "dot", "wps", "wpt", "docx", "dotx", "docm", "dotm"};
public static String imgs[] = {"jpg", "png", "jpeg", "gif"};
public static String pdf[] = {"pdf"};
@Override
public void deleteFileByDatumId(Long datumId, Context context) {
Map<String, Object> condition = new HashMap<>();
condition.put("datumId", datumId);
this.dao.delete(condition);
}
@Override
protected void saveBefore(MatterDatumFileEntity entity, com.mortals.framework.model.Context context) throws AppException {
this.validData(entity, context);
String rootPath = this.filePath.endsWith("/") ? this.filePath : this.filePath + "/";
String prePath = "file/preview/";
String savePath = entity.getLocalFileUrl();
String newName = genPreviewPath(rootPath, prePath, savePath);
entity.setPreviewUrl(prePath+newName);
}
private String genPreviewPath(String rootPath, String prePath, String tempPath) {
//生成样表预览图片
String samplePath = rootPath + tempPath;
String filePath = rootPath + prePath;
File pathDir = new File(filePath);
if (!pathDir.exists()) {
pathDir.mkdirs();
}
String newName = RandomUtil.randomNumbers(12) + ".jpg";
String filePathAll = filePath + newName;
//判断文件类型是否为doc pdf jpg png 等
String extName = FileUtil.getSuffix(samplePath);
if (this.isExsitArry(extName, word)) {
WordUtil.convertWordToJPEG(samplePath, filePathAll);
} else if (this.isExsitArry(extName, pdf)) {
WordUtil.pdfToImages(samplePath, filePathAll);
} else if (this.isExsitArry(extName, imgs)) {
try {
com.mortals.framework.util.FileUtil.copyFile(samplePath, filePathAll);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
return newName;
}
public boolean isExsitArry(String chex, String arry[]) {
for (String ex : arry) {
if (chex.equalsIgnoreCase(ex)) {
return true;
}
}
return false;
}
}
\ No newline at end of file
......@@ -11,4 +11,14 @@ import java.util.List;
*/
public class SiteMatterVo extends BaseEntityLong {
/** 材料数量 */
private Integer datumCount;
public Integer getDatumCount() {
return datumCount;
}
public void setDatumCount(Integer datumCount) {
this.datumCount = datumCount;
}
}
\ No newline at end of file
......@@ -11,4 +11,9 @@ import com.mortals.xhx.module.site.model.SiteMatterEntity;
*/
public interface SiteMatterService extends ICRUDService<SiteMatterEntity,Long>{
/**
* 增加浏览次数
* @param id
*/
void addViewsCount(Long id);
}
\ No newline at end of file
package com.mortals.xhx.module.site.service.impl;
import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import com.mortals.xhx.module.matter.model.MatterDatumFileEntity;
import com.mortals.xhx.module.matter.model.MatterDatumFileQuery;
import com.mortals.xhx.module.matter.model.MatterDatumQuery;
import com.mortals.xhx.module.matter.service.MatterDatumService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
......@@ -6,6 +14,11 @@ import com.mortals.framework.model.Context;
import com.mortals.xhx.module.site.dao.SiteMatterDao;
import com.mortals.xhx.module.site.model.SiteMatterEntity;
import com.mortals.xhx.module.site.service.SiteMatterService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* SiteMatterService
* 站点事项 service实现
......@@ -15,5 +28,42 @@ import com.mortals.xhx.module.site.service.SiteMatterService;
*/
@Service("siteMatterService")
public class SiteMatterServiceImpl extends AbstractCRUDServiceImpl<SiteMatterDao, SiteMatterEntity, Long> implements SiteMatterService {
@Autowired
private MatterDatumService matterDatumService;
@Override
protected void findAfter(SiteMatterEntity params, PageInfo pageInfo, Context context, List<SiteMatterEntity> list) throws AppException {
list.stream().peek(item->{
List<MatterDatumEntity> matterDatumFileEntities = matterDatumService.find(new MatterDatumQuery().matterId(item.getMatterId()));
if(CollectionUtils.isNotEmpty(matterDatumFileEntities)) {
item.setDatumCount(matterDatumFileEntities.size());
}else {
item.setDatumCount(0);
}
}).count();
super.findAfter(params, context, list);
}
@Override
protected void findAfter(SiteMatterEntity params, Context context, List<SiteMatterEntity> list) throws AppException {
list.stream().peek(item->{
List<MatterDatumEntity> matterDatumFileEntities = matterDatumService.find(new MatterDatumQuery().matterId(item.getMatterId()));
if(CollectionUtils.isNotEmpty(matterDatumFileEntities)) {
item.setDatumCount(matterDatumFileEntities.size());
}else {
item.setDatumCount(0);
}
}).count();
super.findAfter(params, context, list);
}
@Override
public void addViewsCount(Long id) {
Map<String,Object> data = new HashMap<>();
data.put("viewsCountIncrement",1);
Map<String,Object> condition = new HashMap<>();
condition.put("id",id);
dao.update(data,condition);
}
}
\ No newline at end of file
package com.mortals.xhx.module.site.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.site.model.SiteMatterEntity;
import com.mortals.xhx.module.site.model.SiteMatterQuery;
import com.mortals.xhx.module.site.service.SiteMatterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
*
......@@ -34,5 +37,17 @@ public class SiteMatterController extends BaseCRUDJsonBodyMappingController<Site
super.init(model, context);
}
@Override
protected void doListBefore(SiteMatterEntity query, Map<String, Object> model, Context context) throws AppException {
Map<String,String> orderMap = new HashMap<>();
orderMap.put("viewsCount","DESC");
query.setOrderCols(orderMap);
super.doListBefore(query,model,context);
}
@Override
protected int viewAfter(Long id, Map<String, Object> model, SiteMatterEntity entity, Context context) throws AppException {
this.service.addViewsCount(id);
return 1;
}
}
\ No newline at end of file
......@@ -36,14 +36,17 @@
<resultMap type="MatterDatumFileEntity" id="MatterDatumFileEntity-Map">
<result property="id" column="id" />
<result property="datumId" column="datumId" />
<result property="matterCode" column="matterCode" />
<result property="materialName" column="materialName" />
<result property="fileName" column="fileName" />
<result property="fileUrl" column="fileUrl" />
<result property="localFileUrl" column="localFileUrl" />
<result property="filetype" column="filetype" />
<result property="source" column="source" />
<result property="previewUrl" column="previewUrl" />
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="updateTime" column="updateTime" />
<result property="materialName" column="materialName" />
</resultMap>
......@@ -133,7 +136,7 @@
<!-- 子表所有列 -->
<sql id="_columns_sub">
<trim suffixOverrides="," suffix="">
b.id,b.datumId,b.fileName,b.fileUrl,b.filetype,b.source,b.createTime,b.createUserId,b.updateTime,b.materialName,
b.id,b.datumId,b.matterCode,b.materialName,b.fileName,b.fileUrl,b.filetype,b.source,b.localFileUrl,b.previewUrl,b.createTime,b.createUserId,b.updateTime,b.materialName,
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment