Explorar el Código

组织管理导入导出

hfy hace 3 meses
padre
commit
f4fe6782a0

+ 4 - 0
src/main/java/com/jeesite/modules/config/WebConfig.java

@@ -1,6 +1,7 @@
 package com.jeesite.modules.config;
 
 import com.jeesite.modules.interceptor.SiteClosedInterceptor;
+import com.jeesite.modules.interceptor.EmpUserFormPostInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@@ -10,9 +11,12 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 public class WebConfig implements WebMvcConfigurer {
     @Autowired
     private SiteClosedInterceptor siteClosedInterceptor;
+    @Autowired
+    private EmpUserFormPostInterceptor empUserFormPostInterceptor;
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(siteClosedInterceptor);
+        registry.addInterceptor(empUserFormPostInterceptor);
     }
 }

+ 71 - 0
src/main/java/com/jeesite/modules/interceptor/EmpUserFormPostInterceptor.java

@@ -0,0 +1,71 @@
+package com.jeesite.modules.interceptor;
+
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.modules.mes.entity.MesEmployee;
+import com.jeesite.modules.mes.service.MesEmployeeService;
+import com.jeesite.modules.sys.entity.EmpUser;
+import com.jeesite.modules.sys.entity.EmployeeOffice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class EmpUserFormPostInterceptor implements HandlerInterceptor {
+
+    private static final String EMP_USER_FORM_VIEW = "modules/sys/user/empUserForm";
+
+    @Autowired
+    private MesEmployeeService mesEmployeeService;
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
+            ModelAndView modelAndView) {
+        if (modelAndView == null || !EMP_USER_FORM_VIEW.equals(modelAndView.getViewName())) {
+            return;
+        }
+        Object obj = modelAndView.getModel().get("empUser");
+        if (!(obj instanceof EmpUser)) {
+            return;
+        }
+        EmpUser empUser = (EmpUser) obj;
+        MesEmployee employee = findEmployee(empUser);
+        if (employee == null) {
+            return;
+        }
+        if (empUser.getEmployee() != null && StringUtils.isBlank(empUser.getEmployee().getPostCode())) {
+            empUser.getEmployee().setPostCode(employee.getPostCode());
+        }
+        if (empUser.getEmployee() != null && (empUser.getEmployee().getEmployeeOfficeList() == null
+                || empUser.getEmployee().getEmployeeOfficeList().isEmpty())
+                && StringUtils.isNotBlank(employee.getOfficeCode())) {
+            List<EmployeeOffice> officeList = new ArrayList<>();
+            EmployeeOffice employeeOffice = new EmployeeOffice(employee.getEmpCode(), employee.getOfficeCode());
+            employeeOffice.setOfficeName(employee.getOfficeName());
+            employeeOffice.setPostCode(employee.getPostCode());
+            employeeOffice.setPostName(employee.getPostName());
+            officeList.add(employeeOffice);
+            empUser.getEmployee().setEmployeeOfficeList(officeList);
+        }
+        modelAndView.addObject("employeePostName", employee.getPostName());
+        modelAndView.addObject("empUser", empUser);
+    }
+
+    private MesEmployee findEmployee(EmpUser empUser) {
+        if (empUser.getEmployee() != null && StringUtils.isNotBlank(empUser.getEmployee().getEmpCode())) {
+            MesEmployee employee = mesEmployeeService.get(new MesEmployee(empUser.getEmployee().getEmpCode()));
+            if (employee != null) {
+                return employee;
+            }
+        }
+        if (StringUtils.isNotBlank(empUser.getRefCode())) {
+            return mesEmployeeService.get(new MesEmployee(StringUtils.trim(empUser.getRefCode())));
+        }
+        return null;
+    }
+}

+ 84 - 0
src/main/java/com/jeesite/modules/mes/entity/excel/ExcelPost.java

@@ -0,0 +1,84 @@
+package com.jeesite.modules.mes.entity.excel;
+
+import com.jeesite.common.utils.excel.annotation.ExcelField;
+import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
+import com.jeesite.common.utils.excel.annotation.ExcelFields;
+
+public class ExcelPost {
+
+	private String postCode;
+	private String viewCode;
+	private String postName;
+	private String postType;
+	private Integer postSort;
+	private String status;
+	private String remarks;
+
+	@ExcelFields({
+		@ExcelField(title="\u5c97\u4f4d\u7f16\u7801", attrName="postCode", align=Align.CENTER, sort=10),
+		@ExcelField(title="\u5c97\u4f4d\u4ee3\u7801", attrName="viewCode", align=Align.CENTER, sort=20),
+		@ExcelField(title="\u5c97\u4f4d\u540d\u79f0", attrName="postName", align=Align.CENTER, sort=30),
+		@ExcelField(title="\u5c97\u4f4d\u5206\u7c7b", attrName="postType", dictType="sys_post_type", align=Align.CENTER, sort=40),
+		@ExcelField(title="\u6392\u5e8f\u53f7", attrName="postSort", align=Align.CENTER, sort=50),
+		@ExcelField(title="\u72b6\u6001", attrName="status", dictType="sys_status", align=Align.CENTER, sort=60),
+		@ExcelField(title="\u5907\u6ce8\u4fe1\u606f", attrName="remarks", align=Align.LEFT, sort=70)
+	})
+	public ExcelPost() {
+	}
+
+	public String getPostCode() {
+		return postCode;
+	}
+
+	public void setPostCode(String postCode) {
+		this.postCode = postCode;
+	}
+
+	public String getViewCode() {
+		return viewCode;
+	}
+
+	public void setViewCode(String viewCode) {
+		this.viewCode = viewCode;
+	}
+
+	public String getPostName() {
+		return postName;
+	}
+
+	public void setPostName(String postName) {
+		this.postName = postName;
+	}
+
+	public String getPostType() {
+		return postType;
+	}
+
+	public void setPostType(String postType) {
+		this.postType = postType;
+	}
+
+	public Integer getPostSort() {
+		return postSort;
+	}
+
+	public void setPostSort(Integer postSort) {
+		this.postSort = postSort;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getRemarks() {
+		return remarks;
+	}
+
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+}

+ 85 - 8
src/main/java/com/jeesite/modules/mes/web/EmpUserCustomController.java

@@ -14,6 +14,7 @@ import com.jeesite.modules.mes.entity.MesEmployee;
 import com.jeesite.modules.mes.service.MesEmployeeService;
 import com.jeesite.modules.sys.entity.EmpUser;
 import com.jeesite.modules.sys.entity.*;
+import com.jeesite.modules.sys.service.EmployeeService;
 import com.jeesite.modules.sys.service.EmpUserService;
 import com.jeesite.modules.sys.service.UserService;
 import com.jeesite.modules.sys.web.user.EmpUserController;
@@ -47,6 +48,9 @@ public class EmpUserCustomController extends BaseController {
     @Autowired
     private MesEmployeeService mesEmployeeService;
 
+    @Autowired
+    private EmployeeService employeeService;
+
     @ModelAttribute
     public EmpUser get(String userCode, boolean isNewRecord) {
         return empUserService.get(userCode, isNewRecord);
@@ -175,10 +179,16 @@ public class EmpUserCustomController extends BaseController {
     }
 
     @RequestMapping(value = "exportData")
-    public void exportData(EmpUser empUser, Boolean ctrlPermi, String ctrlPermiFilter, HttpServletResponse response) {
-        empUser.getEmployee().getOffice().setIsQueryChildren(true);
-        empUser.getEmployee().getCompany().setIsQueryChildren(true);
-        if (ctrlPermi == null || ctrlPermi || Global.isStrictMode()) {
+    public void exportData(EmpUser empUser, String ctrlPermi, String ctrlPermiFilter, HttpServletResponse response) {
+        if (empUser.getEmployee() != null) {
+            if (empUser.getEmployee().getOffice() != null) {
+                empUser.getEmployee().getOffice().setIsQueryChildren(true);
+            }
+            if (empUser.getEmployee().getCompany() != null) {
+                empUser.getEmployee().getCompany().setIsQueryChildren(true);
+            }
+        }
+        if (StringUtils.isBlank(ctrlPermi) || !"0".equals(ctrlPermi) || Global.isStrictMode()) {
             empUserService.addDataScopeFilter(empUser, ctrlPermiFilter);
         }
         List<ExcelEmpUserEmployee> list = ListUtils.newArrayList();
@@ -224,7 +234,7 @@ public class EmpUserCustomController extends BaseController {
             for (ExcelEmpUserEmployee item : list) {
                 try {
                     EmpUser empUser = buildImportUser(item, updateSupport);
-                    empUserService.save(empUser);
+                    userService.save(empUser);
                     if (StringUtils.isNotBlank(item.getUserRoleString())) {
                         userService.saveAuth(empUser);
                     }
@@ -331,9 +341,56 @@ public class EmpUserCustomController extends BaseController {
         employee.setRemarks(item.getRemarks());
         employee.setStatus(MesEmployee.STATUS_NORMAL);
         mesEmployeeService.save(employee);
+        saveEmployeePostList(employee, item.getPostCode());
+        syncUserEmployeePost(employee, item.getPostCode(), item.getPostName());
         return employee;
     }
 
+    private void saveEmployeePostList(MesEmployee employee, String postCodes) {
+        if (employee == null || StringUtils.isBlank(employee.getEmpCode()) || StringUtils.isBlank(postCodes)) {
+            return;
+        }
+        Employee sysEmployee = employeeService.get(new Employee(employee.getEmpCode()));
+        if (sysEmployee == null) {
+            return;
+        }
+        sysEmployee.setPostCode(StringUtils.trim(postCodes));
+        sysEmployee.setEmployeePostList(buildEmployeePostList(postCodes));
+        sysEmployee.setIsNewRecord(false);
+        employeeService.save(sysEmployee);
+    }
+
+    private void syncUserEmployeePost(MesEmployee employee, String postCode, String postName) {
+        if (employee == null) {
+            return;
+        }
+        User query = new User();
+        query.setUserType("employee");
+        query.setRefCode(employee.getEmpCode());
+        User boundUser = userService.getByUserTypeAndRefCode(query);
+        if (boundUser == null) {
+            return;
+        }
+        Employee sysEmployee = employeeService.get(new Employee(boundUser.getUserCode()));
+        if (sysEmployee == null) {
+            return;
+        }
+        if (StringUtils.isNotBlank(postCode)) {
+            sysEmployee.setPostCode(StringUtils.trim(postCode));
+        }
+        employeeService.save(sysEmployee);
+    }
+
+    private List<EmployeePost> buildEmployeePostList(String postCodes) {
+        List<EmployeePost> employeePostList = ListUtils.newArrayList();
+        for (String postCode : StringUtils.split(StringUtils.trim(postCodes), ",")) {
+            if (StringUtils.isNotBlank(postCode)) {
+                employeePostList.add(new EmployeePost(null, StringUtils.trim(postCode)));
+            }
+        }
+        return employeePostList;
+    }
+
     private ExcelEmpUserEmployee toExcel(EmpUser user) {
         ExcelEmpUserEmployee excel = new ExcelEmpUserEmployee();
         excel.setLoginCode(user.getLoginCode());
@@ -380,6 +437,9 @@ public class EmpUserCustomController extends BaseController {
 
     private MesEmployee findSelectedEmployee(EmpUser empUser) {
         if (empUser.getEmployee() == null) {
+            if (StringUtils.isNotBlank(empUser.getRefCode())) {
+                return mesEmployeeService.get(new MesEmployee(StringUtils.trim(empUser.getRefCode())));
+            }
             return null;
         }
         if (StringUtils.isNotBlank(empUser.getEmployee().getEmpCode())) {
@@ -405,11 +465,28 @@ public class EmpUserCustomController extends BaseController {
         if (employee == null) {
             return;
         }
-        if (empUser != null && empUser.getEmployee() != null
-                && StringUtils.isBlank(empUser.getEmployee().getPostCode())) {
-            empUser.getEmployee().setPostCode(employee.getPostCode());
+        if (empUser != null) {
+            if (empUser.getEmployee() == null) {
+                empUser.setEmployee(new Employee(employee.getEmpCode()));
+            }
+            if (StringUtils.isBlank(empUser.getEmployee().getEmpCode())) {
+                empUser.getEmployee().setEmpCode(employee.getEmpCode());
+            }
+            if (StringUtils.isBlank(empUser.getEmployee().getEmpNo())) {
+                empUser.getEmployee().setEmpNo(employee.getEmpNo());
+            }
+            if (StringUtils.isBlank(empUser.getEmployee().getEmpName())) {
+                empUser.getEmployee().setEmpName(employee.getEmpName());
+            }
+            if (StringUtils.isBlank(empUser.getEmployee().getEmpNameEn())) {
+                empUser.getEmployee().setEmpNameEn(employee.getEmpNameEn());
+            }
+            if (StringUtils.isBlank(empUser.getEmployee().getPostCode())) {
+                empUser.getEmployee().setPostCode(employee.getPostCode());
+            }
         }
         model.addAttribute("employeePostName", employee.getPostName());
+        model.addAttribute("empUser", empUser);
     }
 
     private String checkSelectedEmployee(EmpUser empUser, MesEmployee employee) {

+ 14 - 15
src/main/java/com/jeesite/modules/mes/web/MesBatchSnController.java

@@ -1,18 +1,14 @@
 package com.jeesite.modules.mes.web;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.jeesite.common.collect.ListUtils;
 import com.jeesite.common.collect.MapUtils;
+import com.jeesite.common.config.Global;
+import com.jeesite.common.entity.Page;
 import com.jeesite.common.mybatis.mapper.query.QueryType;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.MesBatchSn;
 import com.jeesite.modules.mes.entity.MesProduct;
 import com.jeesite.modules.mes.resp.CommonResp;
+import com.jeesite.modules.mes.service.MesBatchSnService;
 import com.jeesite.modules.mes.service.MesProductService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,11 +22,13 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import com.jeesite.common.config.Global;
-import com.jeesite.common.entity.Page;
-import com.jeesite.common.web.BaseController;
-import com.jeesite.modules.mes.entity.MesBatchSn;
-import com.jeesite.modules.mes.service.MesBatchSnService;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 批次码记录表Controller
@@ -109,6 +107,7 @@ public class MesBatchSnController extends BaseController {
 		return renderResult(Global.TRUE, text("保存批次码记录表成功!"));
 	}
 
+	//扫码后调用看是否有未绑定完的批次码,有的话直接获取
 	@PostMapping(value = "getBatchSn")
 	@ResponseBody
 	public CommonResp getBatchSn(HttpServletRequest request) {
@@ -137,7 +136,7 @@ public class MesBatchSnController extends BaseController {
 		resp.setResult(Global.TRUE);
 		return resp;
 	}
-
+//当扫完码后没有生成则可以创建批次码
 	@PostMapping(value = "createBatchSn")
 	@ResponseBody
 	public CommonResp createBatchSn(HttpServletRequest request) {

+ 168 - 0
src/main/java/com/jeesite/modules/mes/web/PostImportExportController.java

@@ -0,0 +1,168 @@
+package com.jeesite.modules.mes.web;
+
+import com.jeesite.common.collect.ListUtils;
+import com.jeesite.common.config.Global;
+import com.jeesite.common.lang.DateUtils;
+import com.jeesite.common.lang.StringUtils;
+import com.jeesite.common.service.ServiceException;
+import com.jeesite.common.utils.excel.ExcelExport;
+import com.jeesite.common.utils.excel.ExcelImport;
+import com.jeesite.common.utils.excel.annotation.ExcelField.Type;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.mes.entity.excel.ExcelPost;
+import com.jeesite.modules.sys.entity.Post;
+import com.jeesite.modules.sys.service.PostService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Controller
+@RequestMapping(value = "${adminPath}/sys/post")
+public class PostImportExportController extends BaseController {
+
+	@Autowired
+	private PostService postService;
+
+	@RequiresPermissions("sys:post:view")
+	@RequestMapping(value = "exportData")
+	public void exportData(Post post, HttpServletResponse response) {
+		List<ExcelPost> list = ListUtils.newArrayList();
+		for (Post item : postService.findList(post)) {
+			list.add(toExcelPost(item));
+		}
+		String fileName = "\u5c97\u4f4d\u6570\u636e" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+		try (ExcelExport ee = new ExcelExport("\u5c97\u4f4d\u6570\u636e", ExcelPost.class)) {
+			ee.setDataList(list).write(response, fileName);
+		}
+	}
+
+	@RequiresPermissions("sys:post:view")
+	@RequestMapping(value = "importTemplate")
+	public void importTemplate(HttpServletResponse response) {
+		List<ExcelPost> list = ListUtils.newArrayList(new ExcelPost());
+		String fileName = "\u5c97\u4f4d\u6570\u636e\u6a21\u677f.xlsx";
+		try (ExcelExport ee = new ExcelExport("\u5c97\u4f4d\u6570\u636e", ExcelPost.class, Type.IMPORT)) {
+			ee.setDataList(list).write(response, fileName);
+		}
+	}
+
+	@ResponseBody
+	@RequiresPermissions("sys:post:edit")
+	@PostMapping(value = "importData")
+	public String importData(MultipartFile file, String updateSupport) {
+		try {
+			String message = importPostData(file, "1".equals(updateSupport));
+			return renderResult(Global.TRUE, "posfull:" + message);
+		} catch (Exception ex) {
+			return renderResult(Global.FALSE, "posfull:" + ex.getMessage());
+		}
+	}
+
+	private String importPostData(MultipartFile file, boolean updateSupport) {
+		if (file == null) {
+			throw new ServiceException("\u8bf7\u9009\u62e9\u5bfc\u5165\u7684\u5c97\u4f4d\u6570\u636e\u6587\u4ef6\uff01");
+		}
+		int successNum = 0;
+		int failureNum = 0;
+		StringBuilder successMsg = new StringBuilder();
+		StringBuilder failureMsg = new StringBuilder();
+		try (ExcelImport ei = new ExcelImport(file, 2, 0)) {
+			List<ExcelPost> list = ei.getDataList(ExcelPost.class);
+			for (ExcelPost item : list) {
+				try {
+					Post post = toPost(item);
+					saveImportPost(post, updateSupport);
+					successNum++;
+					successMsg.append("<br/>").append(successNum).append("\u3001\u5c97\u4f4d ")
+							.append(StringUtils.defaultString(post.getPostName(), post.getPostCode()))
+							.append(" \u5bfc\u5165\u6210\u529f");
+				} catch (Exception e) {
+					failureNum++;
+					String msg = "<br/>" + failureNum + "\u3001\u5c97\u4f4d "
+							+ StringUtils.defaultString(item.getPostName(), item.getPostCode())
+							+ " \u5bfc\u5165\u5931\u8d25\uff1a" + e.getMessage();
+					failureMsg.append(msg);
+					logger.error(msg, e);
+				}
+			}
+		} catch (Exception e) {
+			logger.error(e.getMessage(), e);
+			throw new ServiceException(e.getMessage());
+		}
+		if (failureNum > 0) {
+			failureMsg.insert(0, "\u5f88\u62b1\u6b49\uff0c\u5bfc\u5165\u5931\u8d25\uff01\u5171 " + failureNum + " \u6761\u5c97\u4f4d\u6570\u636e\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u9519\u8bef\u5982\u4e0b\uff1a");
+			throw new ServiceException(failureMsg.toString());
+		}
+		successMsg.insert(0, "\u606d\u559c\u60a8\uff0c\u5c97\u4f4d\u6570\u636e\u5df2\u5168\u90e8\u5bfc\u5165\u6210\u529f\uff01\u5171 " + successNum + " \u6761\uff0c\u6570\u636e\u5982\u4e0b\uff1a");
+		return successMsg.toString();
+	}
+
+	private void saveImportPost(Post post, boolean updateSupport) {
+		post.setPostCode(StringUtils.trim(post.getPostCode()));
+		post.setViewCode(StringUtils.trim(post.getViewCode()));
+		post.setPostName(StringUtils.trim(post.getPostName()));
+		if (StringUtils.isBlank(post.getPostCode()) && StringUtils.isBlank(post.getViewCode())) {
+			throw new ServiceException("\u5c97\u4f4d\u7f16\u7801\u4e0d\u80fd\u4e3a\u7a7a");
+		}
+		if (StringUtils.isBlank(post.getPostCode())) {
+			post.setPostCode(post.getViewCode());
+		}
+		if (StringUtils.isBlank(post.getViewCode())) {
+			post.setViewCode(post.getPostCode());
+		}
+		if (StringUtils.isBlank(post.getPostName())) {
+			throw new ServiceException("\u5c97\u4f4d\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a");
+		}
+		Post exists = postService.get(new Post(post.getPostCode()));
+		if (exists != null && !updateSupport) {
+			throw new ServiceException("\u5c97\u4f4d\u7f16\u7801\u5df2\u5b58\u5728");
+		}
+		if (exists != null) {
+			post.setId(exists.getId());
+			post.setPostCode(exists.getPostCode());
+			post.setIsNewRecord(false);
+		} else {
+			post.setId(post.getPostCode());
+			post.setIsNewRecord(true);
+		}
+		if (StringUtils.isBlank(post.getStatus())) {
+			post.setStatus(Post.STATUS_NORMAL);
+		}
+		postService.save(post);
+		Post saved = postService.get(new Post(post.getPostCode()));
+		if (saved == null) {
+			throw new ServiceException("\u5c97\u4f4d\u6570\u636e\u672a\u5199\u5165\u6570\u636e\u5e93");
+		}
+	}
+
+	private ExcelPost toExcelPost(Post post) {
+		ExcelPost excelPost = new ExcelPost();
+		excelPost.setPostCode(post.getPostCode());
+		excelPost.setViewCode(post.getViewCode());
+		excelPost.setPostName(post.getPostName());
+		excelPost.setPostType(post.getPostType());
+		excelPost.setPostSort(post.getPostSort());
+		excelPost.setStatus(post.getStatus());
+		excelPost.setRemarks(post.getRemarks());
+		return excelPost;
+	}
+
+	private Post toPost(ExcelPost excelPost) {
+		Post post = new Post();
+		post.setPostCode(excelPost.getPostCode());
+		post.setViewCode(excelPost.getViewCode());
+		post.setPostName(excelPost.getPostName());
+		post.setPostType(excelPost.getPostType());
+		post.setPostSort(excelPost.getPostSort());
+		post.setStatus(excelPost.getStatus());
+		post.setRemarks(excelPost.getRemarks());
+		return post;
+	}
+}

+ 150 - 0
src/main/resources/views/modules/sys/postList.html

@@ -0,0 +1,150 @@
+<% layout('/layouts/default.html', {title: '岗位管理', libs: ['dataGrid']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header">
+			<div class="box-title">
+				<i class="fa icon-trophy"></i> ${text('岗位管理')}
+			</div>
+			<div class="box-tools pull-right">
+				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
+				<a href="#" class="btn btn-default" id="btnExport"><i class="glyphicon glyphicon-export"></i> ${text('导出')}</a>
+				<% if(hasPermi('sys:post:edit')){ %>
+					<a href="#" class="btn btn-default" id="btnImport"><i class="glyphicon glyphicon-import"></i> ${text('导入')}</a>
+					<a href="${ctx}/sys/post/form" class="btn btn-default btnTool" title="${text('新增岗位')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
+				<% } %>
+				<a href="#" class="btn btn-default" id="btnSetting" title="${text('设置')}"><i class="fa fa-navicon"></i></a>
+			</div>
+		</div>
+		<div class="box-body">
+			<#form:form id="searchForm" model="${post}" action="${ctx}/sys/post/listData" method="post" class="form-inline hide"
+					data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
+				<div class="form-group">
+					<label class="control-label">${text('岗位名称')}:</label>
+					<div class="control-inline">
+						<#form:input path="postName_like" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('岗位代码')}:</label>
+					<div class="control-inline">
+						<#form:input path="viewCode" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('岗位分类')}:</label>
+					<div class="control-inline width-90">
+						<#form:select path="postType" dictType="sys_post_type" blankOption="true" class="form-control"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="control-label">${text('状态')}:</label>
+					<div class="control-inline width-60">
+						<#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
+					<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
+				</div>
+			</#form:form>
+			<table id="dataGrid"></table>
+			<div id="dataGridPage"></div>
+		</div>
+	</div>
+</div>
+<% } %>
+<script>
+// 初始化DataGrid对象
+$('#dataGrid').dataGrid({
+	searchForm: $("#searchForm"),
+	columnModel: [
+		{header:'${text("岗位名称")}', name:'postName', index:'a.post_name', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
+			return '<a href="${ctx}/sys/post/form?postCode='+row.postCode+'" class="btnList" data-title="${text("编辑岗位")}">'+(val||row.id)+'</a>';
+		}},
+		{header:'${text("岗位代码")}', name:'viewCode', index:'a.view_code', width:200, align:"center"},
+		{header:'${text("排序号")}', name:'postSort', index:'a.post_sort', width:80, align:"center"},
+		{header:'${text("岗位分类")}', name:'postType', index:'a.post_type', width:100, align:"center", formatter: function(val, obj, row, act){
+			return js.getDictLabel(${@DictUtils.getDictListJson('sys_post_type')}, val, '未知', true);
+		}},
+		{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
+		{header:'${text("备注信息")}', name:'remarks', index:'a.remarks', width:200, align:"left"},
+		{header:'${text("状态")}', name:'status', index:'a.status', width:80, align:"center", formatter: function(val, obj, row, act){
+			return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
+		}},
+		{header:'${text("操作")}', name:'actions', width:130, formatter: function(val, obj, row, act){
+			var actions = [];
+			//<% if(hasPermi('sys:post:edit')){ %>
+				actions.push('<a href="${ctx}/sys/post/form?postCode='+row.postCode+'" class="btnList" title="${text("编辑岗位")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+				if (row.status == Global.STATUS_NORMAL){
+					actions.push('<a href="${ctx}/sys/post/disable?postCode='+row.postCode+'" class="btnList" title="${text("停用岗位")}" data-confirm="${text("确认要停用该岗位吗?")}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
+				} else if (row.status == Global.STATUS_DISABLE){
+					actions.push('<a href="${ctx}/sys/post/enable?postCode='+row.postCode+'" class="btnList" title="${text("启用岗位")}" data-confirm="${text("确认要启用该岗位吗?")}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
+				}
+				actions.push('<a href="${ctx}/sys/post/delete?postCode='+row.postCode+'" class="btnList" title="${text("删除岗位")}" data-confirm="${text("确认要删除该岗位吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+			//<% } %>
+			return actions.join('');
+		}}
+	],
+	// 加载成功后执行事件
+	ajaxSuccess: function(data){
+
+	}
+});
+$('#btnExport').click(function(){
+	js.ajaxSubmitForm($('#searchForm'), {
+		url:'${ctx}/sys/post/exportData',
+		downloadFile:true
+	});
+});
+$('#btnImport').click(function(){
+	js.layer.open({
+		type: 1,
+		area: ['400px'],
+		title: '${text("导入岗位数据")}',
+		resize: false,
+		scrollbar: true,
+		content: js.template('importTpl'),
+		success: function(layero, index){
+			layero.find('input[type="checkbox"]').iCheck();
+		},
+		btn: ['<i class="fa fa-check"></i> ${text("导入")}',
+			'<i class="fa fa-remove"></i> ${text("关闭")}'],
+		btn1: function(index, layero){
+			var form = {
+				inputForm: layero.find('#inputForm'),
+				file: layero.find('#file').val()
+			};
+		    if (form.file == '' || (!js.endWith(form.file, '.xls') && !js.endWith(form.file, '.xlsx'))){
+		    	js.showMessage("${text('文件不正确,请选择后缀为“xls”或“xlsx”的文件。')}", null, 'warning');
+		        return false;
+		    }
+			js.ajaxSubmitForm(form.inputForm, function(data){
+				js.showMessage(data.message);
+				if(data.result == Global.TRUE){
+					js.layer.closeAll();
+				}
+				page();
+			}, "json");
+			return true;
+		}
+	});
+});
+</script>
+<script id="importTpl" type="text/template">//<!--
+<form id="inputForm" action="${ctx}/sys/post/importData" method="post" enctype="multipart/form-data"
+	class="form-horizontal mt20 mb10" style="overflow:auto;max-height:200px;">
+	<div class="row">
+		<div class="col-xs-12 col-xs-offset-1">
+			<input type="file" id="file" name="file" class="form-file"/>
+			<div class="mt10 pt5">
+				<#form:checkbox name="updateSupport" label="${text('是否更新已经存在的岗位数据')}" class="form-control"
+					title="${text('如果岗位编码已经存在,更新这条数据。')}"/> &nbsp;
+				<a href="${ctx}/sys/post/importTemplate" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> ${text('下载模板')}</a>
+			</div>
+			<font color="red" class="pull-left mt10">
+				${text('提示:仅允许导入“xls”或“xlsx”格式文件!')}
+			</font>
+		</div>
+	</div>
+</form>
+//--></script>

+ 1 - 1
src/main/resources/views/modules/sys/user/postList.html

@@ -89,4 +89,4 @@ $('#dataGrid').dataGrid({
 		
 	}
 });
-</script>
+</script>