diff --git a/src/main/java/cn/palmte/work/controller/backend/DepartmentController.java b/src/main/java/cn/palmte/work/controller/backend/DepartmentController.java new file mode 100644 index 0000000..15fa9e4 --- /dev/null +++ b/src/main/java/cn/palmte/work/controller/backend/DepartmentController.java @@ -0,0 +1,122 @@ +package cn.palmte.work.controller.backend; + +import cn.palmte.work.bean.ResponseMsg; +import cn.palmte.work.model.Dept; +import cn.palmte.work.model.ProcurementType; +import cn.palmte.work.model.Project; +import cn.palmte.work.service.DeptService; +import cn.palmte.work.service.ProcurementTypeService; +import cn.palmte.work.utils.Utils; +import cn.palmte.work.utils.excel.ExportUtils; +import org.activiti.engine.task.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import top.jfunc.common.db.bean.Page; +import top.jfunc.common.utils.CollectionUtil; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +@Controller +@RequestMapping("/department") +public class DepartmentController extends BaseController{ + + @Autowired + private DeptService deptService; + + /** + * 列表查询 + * @param keywords + * @param pageNumber + * @param pageSize + * @param model + * @return + */ + @RequestMapping("/list") + public String list(@RequestParam(value = "keywords",required = false) String keywords, + @RequestParam(value = PAGE_NUMBER, defaultValue = DEFAULT_PAGE_NUMBER) int pageNumber, + @RequestParam(value = PAGE_SIZE, defaultValue = DEFAULT_PAGE_SIZE) int pageSize, + Map model) { + model.put("keywords",keywords); + ConcurrentHashMap searchInfo = getSearchInfo(keywords,model); + Page page = deptService.list(searchInfo, pageNumber, pageSize); + List list = page.getList(); + if(CollectionUtil.isNotEmpty(list)){ + + int offset = (pageNumber - 1) * pageSize; + for (int i = 0 , size = list.size(); i < size; i++) { + list.get(i).setTempId(i+1 + offset); + } + } + model.put("pager", page); + return "/admin/department_list"; + } + + /** + * 跳转新增页面 + * @param model + * @return + */ + @GetMapping(value = "/add") + public String add( Map model){ + Dept department = new Dept(); + model.put("deptId",-1); + model.put("department",department); + return "/admin/department_input"; + } + + /** + * 保存 + * @param deptId + * @param dept + * @param model + * @return + */ + @PostMapping(value = "/save") + public String save(@RequestParam("deptId") int deptId, + Dept dept, Map model){ + + deptService.saveOtUpdate(deptId,dept); + return "redirect:/department/list"; + } + + /** + * 启用 禁用 + */ + @RequestMapping("/enableOrDisable") + @ResponseBody + public ResponseMsg enableOrDisable(@RequestParam("id") int id, + @RequestParam("status") int status, RedirectAttributes attr) { + boolean isSuccess = false; + try { + isSuccess = deptService.enableOrDisable(status, id); + } catch (Exception e) { + e.getMessage(); + } + if (isSuccess) { + return ResponseMsg.buildSuccessMsg("操作成功"); + } else { + return ResponseMsg.buildSuccessMsg("操作失败"); + } + } + + /** + * 导出 + */ + @RequestMapping("/export") + public void export(@RequestParam(value = "keywords",required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException { + Map searchInfo = getSearchInfo(keywords); + downloadHeader(httpServletResponse , Utils.generateExcelName("部门表"), "application/octet-stream"); + String[] headers = {"部门名称","创建人","创建时间"}; + String[] exportColumns = {"name","createdBy","createdTime"}; + ExportUtils.exportToExcel(headers, exportColumns, 1, 10000, + httpServletResponse.getOutputStream(), (pN, pS) -> deptService.list(searchInfo, pN, pS).getList()); + } +} diff --git a/src/main/java/cn/palmte/work/model/Dept.java b/src/main/java/cn/palmte/work/model/Dept.java index c29c98a..4e06d1e 100644 --- a/src/main/java/cn/palmte/work/model/Dept.java +++ b/src/main/java/cn/palmte/work/model/Dept.java @@ -3,6 +3,7 @@ package cn.palmte.work.model; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; +import java.util.Date; /** * 部门 @@ -22,6 +23,21 @@ public class Dept { private String name; + private int enabled; + + @Column(name = "created_by") + private String createdBy; + + /** + * 创建时间 + */ + @Column(name = "created_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createdTime; + + @Transient + private int tempId; + public Integer getId() { return id; } @@ -37,4 +53,36 @@ public class Dept { public void setName(String name) { this.name = name; } + + public int getEnabled() { + return enabled; + } + + public void setEnabled(int enabled) { + this.enabled = enabled; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public Date getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + public int getTempId() { + return tempId; + } + + public void setTempId(int tempId) { + this.tempId = tempId; + } } \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/service/DeptService.java b/src/main/java/cn/palmte/work/service/DeptService.java index 35961a3..990508f 100644 --- a/src/main/java/cn/palmte/work/service/DeptService.java +++ b/src/main/java/cn/palmte/work/service/DeptService.java @@ -3,10 +3,18 @@ package cn.palmte.work.service; import cn.palmte.work.model.Admin; import cn.palmte.work.model.Dept; import cn.palmte.work.model.DeptRepository; +import cn.palmte.work.model.ProcurementType; +import cn.palmte.work.utils.InterfaceUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import top.jfunc.common.db.QueryHelper; +import top.jfunc.common.db.bean.Page; +import top.jfunc.common.db.utils.Pagination; +import top.jfunc.common.utils.CollectionUtil; +import java.util.Date; import java.util.List; +import java.util.Map; /** * @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257 @@ -16,6 +24,9 @@ public class DeptService { @Autowired private DeptRepository deptRepository; + @Autowired + private Pagination pagination; + public List findAll(){ return deptRepository.findAll(); } @@ -24,4 +35,43 @@ public class DeptService { return deptRepository.findOne(admin.getDeptId()); } + public Page list(Map searchInfo, int pageNumber, int pageSize){ + QueryHelper queryHelper = new QueryHelper("SELECT *","dept"); + queryHelper.addCondition(searchInfo.containsKey("name"), "name like ?", "%" + + searchInfo.get("name") + "%"); + queryHelper.addCondition(searchInfo.containsKey("enabled") && !"-1".equals(searchInfo.get("enabled")), + "enabled=" + searchInfo.get("enabled")); + queryHelper.addCondition(searchInfo.containsKey("startTime"), "created_time >= ?", searchInfo.get("startTime") + " 00:00:00"); + queryHelper.addCondition(searchInfo.containsKey("endTime"), "created_time <= ?", searchInfo.get("endTime") + " 23:59:59"); + queryHelper.addOrderProperty("created_time", false); + Page paginate = pagination.paginate(queryHelper.getSql(), Dept.class, pageNumber, pageSize); + return paginate; + } + + public Dept findOne(int id) { + return deptRepository.findOne(id); + } + + public void saveOtUpdate(int deptId, Dept dept) { + Dept obj = deptRepository.findOne(deptId); + if(null == obj){ + obj = new Dept(); + obj.setName(dept.getName()); + obj.setEnabled(dept.getEnabled()); + obj.setCreatedBy(InterfaceUtil.getAdmin().getRealName()); + obj.setCreatedTime(new Date()); + }else { + obj.setName(dept.getName()); + obj.setEnabled(dept.getEnabled()); + } + deptRepository.saveAndFlush(obj); + } + + public boolean enableOrDisable(int status, int id) { + Dept one = deptRepository.findOne(id); + one.setEnabled(status); + Dept dept = deptRepository.saveAndFlush(one); + + return null != dept; + } } diff --git a/src/main/resources/templates/admin/department_input.ftl b/src/main/resources/templates/admin/department_input.ftl new file mode 100644 index 0000000..35f877a --- /dev/null +++ b/src/main/resources/templates/admin/department_input.ftl @@ -0,0 +1,84 @@ +<#assign base=request.contextPath /> +<#import "../common/defaultLayout.ftl" as defaultLayout> +<@defaultLayout.layout> + + +
+
+
+
配置管理 / + 部门配置 +
+
+ +
+ +
+ +
+
+
+
+ *部门名称
+
+ +
+
+
+ +
+
启用/禁用
+ +
+ checked + /> + +
+ +
+
+
+ +
+
+
+ + +
+ + +
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/admin/department_list.ftl b/src/main/resources/templates/admin/department_list.ftl new file mode 100644 index 0000000..3461623 --- /dev/null +++ b/src/main/resources/templates/admin/department_list.ftl @@ -0,0 +1,219 @@ +<#assign base=request.contextPath /> +<#import "../common/defaultLayout.ftl" as defaultLayout> +<@defaultLayout.layout> + +
+
+ +
配置管理 / + 部门配置 +
+
+
+
+
+ + + + + + + + + + + + + + + + +
部门名称 +
+ +
+
启用状态 +
+ +
+
创建时间 +
+
+
+ + +
+
+
+ + +
+
+
+
+
+ + <@shiro.hasPermission name="DEPARTMENT_EXPORT"> + + +
+
+
+
+
+
+ <@shiro.hasPermission name="DEPARTMENT_ADD"> + + +
+
+
+
+
+
+ + + + + + + + + + + + <#if (pager.list)?exists && (pager.list?size>0)> + <#list pager.list as list> + + + + + + + + + + +
序号部门名称创建人创建时间操作
${list.tempId!}${list.name!}${list.createdBy!}<#if list.createdTime??>${list.createdTime?datetime} +
+
+ checked + /> +
+
+
+
+
+ + <#if (pager.list)?exists && (pager.list?size>0) > +
+ <#include "../common/order_list_pager.ftl"> +
+ <#else> +
+

没有找到任何记录!

+
+ +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + +