From 2844ce89ba541686f7dbc28f19626e8200b067ed Mon Sep 17 00:00:00 2001 From: hansha Date: Thu, 20 Jun 2024 09:17:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A1=A3=E6=A1=88=E5=AE=A4?= =?UTF-8?q?=E5=AF=86=E9=9B=86=E6=9F=9C=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=89=80=E9=9C=80=E6=A0=91=E7=8A=B6=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/da/common/core/domain/TreeSelect.java | 20 ++ .../common/core/domain/entity/DaCabinet.java | 112 +++++++ .../controller/DaCabinetController.java | 108 +++++++ .../com/da/dangan/mapper/DaCabinetMapper.java | 63 ++++ .../da/dangan/service/IDaCabinetService.java | 76 +++++ .../service/impl/DaCabinetServiceImpl.java | 186 +++++++++++ .../da/dangan/util/CallThirdInterface.java | 61 ++-- .../mapper/dangan/DaCabinetMapper.xml | 91 ++++++ dangan-ui/src/api/dangan/cabinet.js | 44 +++ dangan-ui/src/views/dangan/cabinet/index.vue | 288 ++++++++++++++++++ 10 files changed, 1017 insertions(+), 32 deletions(-) create mode 100644 dangan-common/src/main/java/com/da/common/core/domain/entity/DaCabinet.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/controller/DaCabinetController.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/mapper/DaCabinetMapper.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/service/IDaCabinetService.java create mode 100644 dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCabinetServiceImpl.java create mode 100644 dangan-dangan/src/main/resources/mapper/dangan/DaCabinetMapper.xml create mode 100644 dangan-ui/src/api/dangan/cabinet.js create mode 100644 dangan-ui/src/views/dangan/cabinet/index.vue diff --git a/dangan-common/src/main/java/com/da/common/core/domain/TreeSelect.java b/dangan-common/src/main/java/com/da/common/core/domain/TreeSelect.java index 91f3456..6980565 100644 --- a/dangan-common/src/main/java/com/da/common/core/domain/TreeSelect.java +++ b/dangan-common/src/main/java/com/da/common/core/domain/TreeSelect.java @@ -1,5 +1,6 @@ package com.da.common.core.domain; +import com.da.common.core.domain.entity.DaCabinet; import com.da.common.core.domain.entity.DaCatalog; import com.da.common.core.domain.entity.SysDept; import com.da.common.core.domain.entity.SysMenu; @@ -27,6 +28,9 @@ public class TreeSelect implements Serializable /** 业务类型 */ private String ywType; + /** 业务类型 */ + private String content; + /** 子节点 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; @@ -58,6 +62,22 @@ public class TreeSelect implements Serializable this.children = catalog.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } + public TreeSelect(DaCabinet cabinet) + { + this.id = cabinet.getId(); + this.label = cabinet.getPosName(); + this.content=cabinet.getContent(); + this.children = cabinet.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + public String getYwType() { return ywType; } diff --git a/dangan-common/src/main/java/com/da/common/core/domain/entity/DaCabinet.java b/dangan-common/src/main/java/com/da/common/core/domain/entity/DaCabinet.java new file mode 100644 index 0000000..2a1c757 --- /dev/null +++ b/dangan-common/src/main/java/com/da/common/core/domain/entity/DaCabinet.java @@ -0,0 +1,112 @@ +package com.da.common.core.domain.entity; + +import com.da.common.annotation.Excel; +import com.da.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.ArrayList; +import java.util.List; + +/** + * 档案柜对象 da_cabinet + * + * @author hs + * @date 2024-06-20 + */ +public class DaCabinet extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 位置名称 */ + @Excel(name = "位置名称") + private String posName; + + /** 父目录ID */ + @Excel(name = "父目录ID") + private Long pid; + + /** 祖级列表 */ + @Excel(name = "祖级列表") + private String ancestors; + + /** 内容 */ + @Excel(name = "内容") + private String content; + + /** 子目录 */ + private List children = new ArrayList(); + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setPosName(String posName) + { + this.posName = posName; + } + + public String getPosName() + { + return posName; + } + public void setPid(Long pid) + { + this.pid = pid; + } + + public Long getPid() + { + return pid; + } + public void setAncestors(String ancestors) + { + this.ancestors = ancestors; + } + + public String getAncestors() + { + return ancestors; + } + public void setContent(String content) + { + this.content = content; + } + + public String getContent() + { + return content; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("posName", getPosName()) + .append("pid", getPid()) + .append("ancestors", getAncestors()) + .append("content", getContent()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/controller/DaCabinetController.java b/dangan-dangan/src/main/java/com/da/dangan/controller/DaCabinetController.java new file mode 100644 index 0000000..f9a440f --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/controller/DaCabinetController.java @@ -0,0 +1,108 @@ +package com.da.dangan.controller; + +import com.da.common.annotation.Log; +import com.da.common.core.controller.BaseController; +import com.da.common.core.domain.AjaxResult; +import com.da.common.core.domain.entity.DaCabinet; +import com.da.common.core.page.TableDataInfo; +import com.da.common.enums.BusinessType; +import com.da.common.utils.poi.ExcelUtil; +import com.da.dangan.service.IDaCabinetService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 档案柜Controller + * + * @author hs + * @date 2024-06-20 + */ +@RestController +@RequestMapping("/dangan/cabinet") +public class DaCabinetController extends BaseController +{ + @Autowired + private IDaCabinetService daCabinetService; + + /** + * 查询档案柜列表 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:list')") + @GetMapping("/list") + public TableDataInfo list(DaCabinet daCabinet) + { + startPage(); + List list = daCabinetService.selectDaCabinetList(daCabinet); + return getDataTable(list); + } + + /** + * 获取目录下拉树列表 + */ + @GetMapping("/treeselect") + public AjaxResult treeselect(DaCabinet daCabinet) + { + List list = daCabinetService.selectDaCabinetList(daCabinet); + return success(daCabinetService.buildCatalogTreeSelect(list)); + } + + /** + * 导出档案柜列表 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:export')") + @Log(title = "档案柜", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DaCabinet daCabinet) + { + List list = daCabinetService.selectDaCabinetList(daCabinet); + ExcelUtil util = new ExcelUtil(DaCabinet.class); + util.exportExcel(response, list, "档案柜数据"); + } + + /** + * 获取档案柜详细信息 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(daCabinetService.selectDaCabinetById(id)); + } + + /** + * 新增档案柜 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:add')") + @Log(title = "档案柜", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DaCabinet daCabinet) + { + return toAjax(daCabinetService.insertDaCabinet(daCabinet)); + } + + /** + * 修改档案柜 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:edit')") + @Log(title = "档案柜", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DaCabinet daCabinet) + { + return toAjax(daCabinetService.updateDaCabinet(daCabinet)); + } + + /** + * 删除档案柜 + */ + @PreAuthorize("@ss.hasPermi('dangan:cabinet:remove')") + @Log(title = "档案柜", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(daCabinetService.deleteDaCabinetByIds(ids)); + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/mapper/DaCabinetMapper.java b/dangan-dangan/src/main/java/com/da/dangan/mapper/DaCabinetMapper.java new file mode 100644 index 0000000..853787c --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/mapper/DaCabinetMapper.java @@ -0,0 +1,63 @@ +package com.da.dangan.mapper; + +import com.da.common.core.domain.entity.DaCabinet; + +import java.util.List; + + +/** + * 档案柜Mapper接口 + * + * @author hs + * @date 2024-06-20 + */ +public interface DaCabinetMapper +{ + /** + * 查询档案柜 + * + * @param id 档案柜主键 + * @return 档案柜 + */ + public DaCabinet selectDaCabinetById(Long id); + + /** + * 查询档案柜列表 + * + * @param daCabinet 档案柜 + * @return 档案柜集合 + */ + public List selectDaCabinetList(DaCabinet daCabinet); + + /** + * 新增档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + public int insertDaCabinet(DaCabinet daCabinet); + + /** + * 修改档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + public int updateDaCabinet(DaCabinet daCabinet); + + /** + * 删除档案柜 + * + * @param id 档案柜主键 + * @return 结果 + */ + public int deleteDaCabinetById(Long id); + + /** + * 批量删除档案柜 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDaCabinetByIds(Long[] ids); +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/IDaCabinetService.java b/dangan-dangan/src/main/java/com/da/dangan/service/IDaCabinetService.java new file mode 100644 index 0000000..d46bfc1 --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/service/IDaCabinetService.java @@ -0,0 +1,76 @@ +package com.da.dangan.service; + +import com.da.common.core.domain.TreeSelect; +import com.da.common.core.domain.entity.DaCabinet; + +import java.util.List; + +/** + * 档案柜Service接口 + * + * @author hs + * @date 2024-06-20 + */ +public interface IDaCabinetService +{ + /** + * 查询档案柜 + * + * @param id 档案柜主键 + * @return 档案柜 + */ + public DaCabinet selectDaCabinetById(Long id); + + /** + * 查询档案柜列表 + * + * @param daCabinet 档案柜 + * @return 档案柜集合 + */ + public List selectDaCabinetList(DaCabinet daCabinet); + + /** + * 新增档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + public int insertDaCabinet(DaCabinet daCabinet); + + /** + * 修改档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + public int updateDaCabinet(DaCabinet daCabinet); + + /** + * 批量删除档案柜 + * + * @param ids 需要删除的档案柜主键集合 + * @return 结果 + */ + public int deleteDaCabinetByIds(Long[] ids); + + /** + * 删除档案柜信息 + * + * @param id 档案柜主键 + * @return 结果 + */ + public int deleteDaCabinetById(Long id); + /** + * 构建前端所需要树结构 + * @param list 列表 + * @return 树结构列表 + */ + List buildCatalogTreeSelect(List list); + /** + * 构建前端所需要树结构 + * + * @param cabinets 位置名称列表 + * @return 树结构列表 + */ + public List buildCatalogTree(List cabinets); +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCabinetServiceImpl.java b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCabinetServiceImpl.java new file mode 100644 index 0000000..b1e8e6a --- /dev/null +++ b/dangan-dangan/src/main/java/com/da/dangan/service/impl/DaCabinetServiceImpl.java @@ -0,0 +1,186 @@ +package com.da.dangan.service.impl; + +import com.da.common.core.domain.TreeSelect; +import com.da.common.core.domain.entity.DaCabinet; +import com.da.common.utils.DateUtils; +import com.da.dangan.mapper.DaCabinetMapper; +import com.da.dangan.service.IDaCabinetService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 档案柜Service业务层处理 + * + * @author hs + * @date 2024-06-20 + */ +@Service +public class DaCabinetServiceImpl implements IDaCabinetService +{ + @Autowired + private DaCabinetMapper daCabinetMapper; + + /** + * 查询档案柜 + * + * @param id 档案柜主键 + * @return 档案柜 + */ + @Override + public DaCabinet selectDaCabinetById(Long id) + { + return daCabinetMapper.selectDaCabinetById(id); + } + + /** + * 查询档案柜列表 + * + * @param daCabinet 档案柜 + * @return 档案柜 + */ + @Override + public List selectDaCabinetList(DaCabinet daCabinet) + { + return daCabinetMapper.selectDaCabinetList(daCabinet); + } + + /** + * 新增档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + @Override + public int insertDaCabinet(DaCabinet daCabinet) + { + daCabinet.setCreateTime(DateUtils.getNowDate()); + if(daCabinet.getPid()==0){ //代表添加的是主目录 + daCabinet.setAncestors(daCabinet.getPid().toString()); + }else{ + DaCabinet info = daCabinetMapper.selectDaCabinetById(daCabinet.getPid()); + daCabinet.setAncestors(info.getAncestors() + "," + daCabinet.getPid()); + } + return daCabinetMapper.insertDaCabinet(daCabinet); + } + + /** + * 修改档案柜 + * + * @param daCabinet 档案柜 + * @return 结果 + */ + @Override + public int updateDaCabinet(DaCabinet daCabinet) + { + daCabinet.setUpdateTime(DateUtils.getNowDate()); + return daCabinetMapper.updateDaCabinet(daCabinet); + } + + /** + * 批量删除档案柜 + * + * @param ids 需要删除的档案柜主键 + * @return 结果 + */ + @Override + public int deleteDaCabinetByIds(Long[] ids) + { + return daCabinetMapper.deleteDaCabinetByIds(ids); + } + + /** + * 删除档案柜信息 + * + * @param id 档案柜主键 + * @return 结果 + */ + @Override + public int deleteDaCabinetById(Long id) + { + return daCabinetMapper.deleteDaCabinetById(id); + } + + @Override + public List buildCatalogTreeSelect(List daCabinets) { + List daCabinetTrees = buildCatalogTree(daCabinets); + return daCabinetTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + /** + * 构建前端所需要树结构 + * + * @param cabinets 位置名称列表 + * @return 树结构列表 + */ + @Override + public List buildCatalogTree(List cabinets) + { + List returnList = new ArrayList<>(); + List tempList = cabinets.stream().map(DaCabinet::getId).collect(Collectors.toList()); + for (Iterator iterator = cabinets.iterator(); iterator.hasNext();) + { + DaCabinet catalog = iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(catalog.getPid())) + { + recursionFn(cabinets, catalog); + returnList.add(catalog); + } + } + if (returnList.isEmpty()) + { + returnList = cabinets; + } + return returnList; + } + + /** + * 递归列表 + * + * @param list 分类表 + * @param t 子节点 + */ + private void recursionFn(List list, DaCabinet t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (DaCabinet tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, DaCabinet t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + DaCabinet n = (DaCabinet) it.next(); + if (n.getPid().longValue() == t.getId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, DaCabinet t) + { + return getChildList(list, t).size() > 0; + } +} diff --git a/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java b/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java index 62a4b00..fdcb8a7 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java +++ b/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java @@ -2,14 +2,16 @@ package com.da.dangan.util; import cn.hutool.core.util.CharsetUtil; import cn.hutool.http.*; -import com.da.common.utils.SecurityUtils; import java.io.File; +import java.lang.reflect.Field; import java.net.HttpCookie; import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.da.common.utils.SecurityUtils.getLoginUser; + /** * 调用第三方接口,传文件,获取识别结果 */ @@ -62,7 +64,7 @@ public class CallThirdInterface { httpRequest.form("files[]",files.toArray(new File[files.size()])); httpRequest.form("picIds",picIds); httpRequest.form("fileType",fileType); - httpRequest.form("username", SecurityUtils.getLoginUser().getUser().getUserName()); //添加一个参数做标识 username + httpRequest.form("username", getLoginUser().getUsername()); //添加一个参数做标识 username //httpRequest.form("singeOrDouble",); //httpRequest.form("picIds",ids.toArray(new Long[ids.size()])); @@ -106,34 +108,29 @@ public class CallThirdInterface { } System.out.println(values); } - /*public static String callThirdInterface2(){ - List files = new ArrayList<>(); - File file1 = new File("图片物理路径"); - File file2 = new File("图片物理路径"); - files.add(file1); - files.add(file2); - - String fileType="option1"; - - String url="http://123.57.142.195:443/upload_api"; - - List picIds = new ArrayList<>(); - picIds.add(1L); - picIds.add(5L); - - HttpRequest httpRequest = new HttpRequest(url); - httpRequest.setMethod(Method.POST); - httpRequest.charset(CharsetUtil.CHARSET_UTF_8); - httpRequest.form("files[]",files.toArray(new File[files.size()])); - httpRequest.form("fileType",fileType); - httpRequest.form("picIds",picIds.toArray(new File[picIds.size()])); - HttpResponse execute = httpRequest.execute(); - boolean ok = execute.isOk(); - System.out.println(ok); - List cookies = execute.getCookies(); - cookies.forEach(System.out::println); - String body = execute.body(); - System.out.println(body); - return body; - }*/ + + /** + *java判断一个对象中非null字段属性值都等于某个字符串 + * @param obj + * @param comparison + * @return + * @throws IllegalAccessException + */ + public static boolean allFieldsEqualTo(Object obj, String comparison) throws IllegalAccessException { + if (obj == null) { + return false; + } + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); // 使私有字段也可以访问 + Object fieldValue = field.get(obj); + if (fieldValue == null||field.getName().equals("serialVersionUID")) { + continue; // 忽略null字段 + } + if (!fieldValue.equals(comparison)) { + return false; // 一旦发现不等于comparison的字段,返回false + } + } + return true; // 所有字段都等于comparison + } } diff --git a/dangan-dangan/src/main/resources/mapper/dangan/DaCabinetMapper.xml b/dangan-dangan/src/main/resources/mapper/dangan/DaCabinetMapper.xml new file mode 100644 index 0000000..65cd1d6 --- /dev/null +++ b/dangan-dangan/src/main/resources/mapper/dangan/DaCabinetMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + select id, pos_name, pid, ancestors, content, remark, create_by, create_time, update_by, update_time from da_cabinet + + + + + + + + insert into da_cabinet + + pos_name, + pid, + ancestors, + content, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{posName}, + #{pid}, + #{ancestors}, + #{content}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update da_cabinet + + pos_name = #{posName}, + pid = #{pid}, + ancestors = #{ancestors}, + content = #{content}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from da_cabinet where id = #{id} + + + + delete from da_cabinet where id in + + #{id} + + + \ No newline at end of file diff --git a/dangan-ui/src/api/dangan/cabinet.js b/dangan-ui/src/api/dangan/cabinet.js new file mode 100644 index 0000000..40cb7ef --- /dev/null +++ b/dangan-ui/src/api/dangan/cabinet.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询档案柜列表 +export function listCabinet(query) { + return request({ + url: '/dangan/cabinet/list', + method: 'get', + params: query + }) +} + +// 查询档案柜详细 +export function getCabinet(id) { + return request({ + url: '/dangan/cabinet/' + id, + method: 'get' + }) +} + +// 新增档案柜 +export function addCabinet(data) { + return request({ + url: '/dangan/cabinet', + method: 'post', + data: data + }) +} + +// 修改档案柜 +export function updateCabinet(data) { + return request({ + url: '/dangan/cabinet', + method: 'put', + data: data + }) +} + +// 删除档案柜 +export function delCabinet(id) { + return request({ + url: '/dangan/cabinet/' + id, + method: 'delete' + }) +} diff --git a/dangan-ui/src/views/dangan/cabinet/index.vue b/dangan-ui/src/views/dangan/cabinet/index.vue new file mode 100644 index 0000000..a863885 --- /dev/null +++ b/dangan-ui/src/views/dangan/cabinet/index.vue @@ -0,0 +1,288 @@ + + +