Commit b5928951 authored by reedmi's avatar reedmi

稳定项目结构

parent 1c97167c
package com.originspark.drp.authority;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* @author ReedMi
* 1.类上标记AuthRoleType.*,则表明该类的所有方法都可以被访问
* 2.方法上标记AuthRoleType.*,则表明该方法可以被访问
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthRoleGroup {
public RoleEnum[] type();
}
package com.originspark.drp.authority;
public enum RoleEnum {
LEADER,//超级管理员
MATERIALKEEPER,//材料员
WAREKEEPER,//库管员
PROJECTMANAGER//项目经理
}
...@@ -4,77 +4,115 @@ import java.util.HashMap; ...@@ -4,77 +4,115 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.originspark.drp.service.projects.ProjectService;
import com.originspark.drp.service.projects.invoices.StockInInvoiceService; import com.originspark.drp.service.projects.invoices.StockInInvoiceService;
import com.originspark.drp.service.projects.invoices.StockOutInvoiceService; import com.originspark.drp.service.projects.invoices.StockOutInvoiceService;
import com.originspark.drp.service.resources.VendorService; import com.originspark.drp.service.resources.VendorService;
import com.originspark.drp.service.resources.WareCategoryService;
import com.originspark.drp.service.resources.WareService; import com.originspark.drp.service.resources.WareService;
import com.originspark.drp.service.users.UserService; import com.originspark.drp.service.users.UserService;
import com.originspark.drp.util.json.Jackson; import com.originspark.drp.util.json.Jackson;
public abstract class AbstractController { public class BaseController extends HandlerInterceptorAdapter {
@Autowired @Autowired
protected UserService userService; protected UserService userService;
@Autowired @Autowired
protected WareService wareService; protected WareService wareService;
@Autowired @Autowired
protected VendorService vendorService; protected WareCategoryService wareCategoryService;
@Autowired @Autowired
protected ProjectService projectService; protected VendorService vendorService;
@Autowired @Autowired
protected StockInInvoiceService stockInInvoiceService; protected StockInInvoiceService stockInInvoiceService;
@Autowired @Autowired
protected StockOutInvoiceService stockOutInvoiceService; protected StockOutInvoiceService stockOutInvoiceService;
//一般用于create、update、delete的返回值 private static final ThreadLocal<HttpServletRequest> REQUEST = new ThreadLocal<HttpServletRequest>();
protected final static String ok(String message){
private static final ThreadLocal<HttpServletResponse> RESPONSE = new ThreadLocal<HttpServletResponse>();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
REQUEST.set(request);
RESPONSE.set(response);
return super.preHandle(request, response, handler);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
REQUEST.remove();
RESPONSE.remove();
if (ex != null) {
response.sendError(500);
}
super.afterCompletion(request, response, handler, ex);
}
public HttpServletRequest request() {
return REQUEST.get();
}
public HttpServletResponse response() {
return RESPONSE.get();
}
public HttpSession session() {
return request().getSession();
}
// 一般用于create、update、delete的返回值
protected final static String ok(String message) {
Map<String, Object> modelMap = new HashMap<String, Object>(2); Map<String, Object> modelMap = new HashMap<String, Object>(2);
modelMap.put("success", "true"); modelMap.put("success", "true");
modelMap.put("message", message); modelMap.put("message", message);
return Jackson.toJson(modelMap); return Jackson.toJson(modelMap);
} }
protected final static String ok(String message,Object object){ protected final static String ok(String message, Object object) {
Map<String, Object> modelMap = new HashMap<String, Object>(3); Map<String, Object> modelMap = new HashMap<String, Object>(3);
modelMap.put("success", "true"); modelMap.put("success", "true");
modelMap.put("message", message); modelMap.put("message", message);
modelMap.put("object", object); modelMap.put("object", object);
return Jackson.toJson(modelMap); return Jackson.toJson(modelMap);
} }
//一般用于list分页数据的返回值 // 一般用于list分页数据的返回值
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
protected final static String ok(List items, Long total){ protected final static String ok(List items, Long total) {
Map<String, Object> modelMap = new HashMap<String, Object>(3); Map<String, Object> modelMap = new HashMap<String, Object>(3);
modelMap.put("success", "true"); modelMap.put("success", "true");
modelMap.put("data", items); modelMap.put("data", items);
modelMap.put("total", total); modelMap.put("total", total);
return Jackson.toJson(modelMap); return Jackson.toJson(modelMap);
} }
//一般用于list不分页的返回值 // 一般用于list不分页的返回值
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
protected final static String ok(List items){ protected final static String ok(List items) {
Map<String, Object> modelMap = new HashMap<String, Object>(2); Map<String, Object> modelMap = new HashMap<String, Object>(2);
modelMap.put("success", "true"); modelMap.put("success", "true");
modelMap.put("data", items); modelMap.put("data", items);
return Jackson.toJson(modelMap); return Jackson.toJson(modelMap);
} }
//失败信息的处理 // 失败信息的处理
protected final static String failure(String message){ protected final static String failure(String message) {
Map<String, Object> modelMap = new HashMap<String, Object>(2); Map<String, Object> modelMap = new HashMap<String, Object>(2);
modelMap.put("success", "false"); modelMap.put("success", "false");
modelMap.put("message", message); modelMap.put("message", message);
return Jackson.toJson(modelMap); return Jackson.toJson(modelMap);
} }
} }
package com.originspark.drp.controllers;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class InitSystemServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("------------------------系统正在初始化...-----------------------------");
// final String controllerPackageName = "com.originspark.drp.controllers";
// Map<RoleEnum,Set<String>> auths = AuthUtil.initAuth(controllerPackageName);
// System.out.println(auths);
// this.getServletContext().setAttribute("auths", auths);
System.out.println("------------------------系统初始化成功-----------------------------");
}
}
...@@ -4,20 +4,16 @@ import org.springframework.stereotype.Controller; ...@@ -4,20 +4,16 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
@Controller @Controller
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public class MainController { public class MainController {
@RequestMapping("index") @RequestMapping("index")
public String index(){ public String index(){
return "index"; return "index";
} }
@RequestMapping(value="main",method=RequestMethod.GET) @RequestMapping(value="main",method=RequestMethod.GET)
public String main(){ public String main(){
return "main"; return "main";
} }
} }
package com.originspark.drp.controllers; package com.originspark.drp.controllers;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.models.User;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.util.Blowfish; import com.originspark.drp.util.Blowfish;
import com.originspark.drp.util.SessionUtil; import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.PasswordJson; import com.originspark.drp.util.json.PasswordJson;
@Controller @Controller
@RequestMapping("profile") @RequestMapping("profile")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER}) public class ProfileController extends BaseController {
public class ProfileController extends AbstractController {
@RequestMapping(value="/updatepassword",method = RequestMethod.GET) @RequestMapping(value="/password/update",method = RequestMethod.GET)
@ResponseBody @ResponseBody
public String updatePassword(@RequestParam String data,HttpServletRequest request){ public String updatePassword(@RequestParam String data){
System.out.println(request().getSession());
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
try { try {
PasswordJson json = mapper.readValue(data,PasswordJson.class); PasswordJson json = mapper.readValue(data, PasswordJson.class);
if(!json.getNewpwd().equals(json.getNewpwdagain())){ if(!json.getNewpwd().equals(json.getNewpwdagain())){
return failure("修改失败,密码两次输入不一致"); return failure("修改失败,密码两次输入不一致");
} }
AbstractUser user = SessionUtil.getCurrentUser(request); User user = SessionUtil.getCurrentUser(request());
Blowfish bf=new Blowfish();
if(!json.getPwd().equals(bf.decryptString(user.getPassword()))){ Blowfish bf = new Blowfish();
String pwd = bf.decryptString(user.getPassword());
if(!json.getPwd().equals(pwd)){
return failure("修改失败,请输入正确的原始密码"); return failure("修改失败,请输入正确的原始密码");
} }
user.setPassword(json.getNewpwd()); user.setPassword(json.getNewpwd());
userService.update(user); userService.update(user);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return failure("系统出现异常,修改失败"); return failure("系统出现异常,修改失败");
} }
return ok("密码修改成功"); return ok("密码修改成功");
} }
} }
package com.originspark.drp.controllers.users; package com.originspark.drp.controllers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -14,76 +14,72 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -14,76 +14,72 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum; import com.originspark.drp.models.User;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.Leader;
import com.originspark.drp.util.enums.Status; import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.JsonUtils; import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("leader") @RequestMapping("users")
@AuthRoleGroup(type={RoleEnum.LEADER}) public class UserController extends BaseController {
public class LeaderController extends AbstractController {
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
@ResponseBody @ResponseBody
public String create(@RequestBody Leader leader) { public String create(@RequestBody User user) {
leader.setPassword("123456"); user.setPassword("123456");
userService.save(leader); userService.save(user);
return ok("创建成功"); return ok("创建成功");
} }
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody @ResponseBody
public String delete(@PathVariable Long id) { public String delete(@PathVariable Long id) {
AbstractUser leader = userService.findById(AbstractUser.class, id); User leader = userService.findById(User.class, id);
leader.setStatus(Status.DESTORYED); leader.setStatus(Status.DESTORYED);
userService.update(leader); userService.update(leader);
return ok("注销成功"); return ok("注销成功");
} }
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@ResponseBody @ResponseBody
public String deleteBatch(HttpServletRequest request){ public String deleteBatch(HttpServletRequest request){
String data = request.getParameter("data"); String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
IdsJson json=null; IdsJson json=null;
try { try {
json = mapper.readValue(data, IdsJson.class); json = mapper.readValue(data, IdsJson.class);
} catch (Exception e) { } catch (Exception e) {
return failure("提交数据有误"); return failure("提交数据有误");
} }
if(json == null){ if(json == null){
return failure("没有需要审核的数据"); return failure("没有需要审核的数据");
} }
for(long id:json.getIds()){ for(long id:json.getIds()){
AbstractUser leader = userService.findById(AbstractUser.class, id); User leader = userService.findById(User.class, id);
leader.setStatus(Status.DESTORYED); leader.setStatus(Status.DESTORYED);
userService.update(leader); userService.update(leader);
} }
return ok("注销成功"); return ok("注销成功");
} }
@RequestMapping(value = "/{id}", method = RequestMethod.PUT) @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody @ResponseBody
public String update(@PathVariable Long id, @RequestBody Leader leader) { public String update(@PathVariable Long id, @RequestBody User user) {
AbstractUser existingLeader = userService.findById(AbstractUser.class, id); User existingLeader = userService.findById(User.class, id);
if (existingLeader == null) { if (existingLeader == null) {
return failure("您要更新的领导不存在"); return failure("您要更新的领导不存在");
} }
existingLeader.setName(leader.getName()); existingLeader.setName(user.getName());
existingLeader.setCode(leader.getCode()); existingLeader.setCode(user.getCode());
existingLeader.setGender(leader.getGender()); existingLeader.setGender(user.getGender());
existingLeader.setPhone(leader.getPhone()); existingLeader.setPhone(user.getPhone());
existingLeader.setAddress(leader.getAddress()); existingLeader.setAddress(user.getAddress());
existingLeader.setEmail(leader.getEmail()); existingLeader.setEmail(user.getEmail());
existingLeader.setStatus(leader.getStatus()); existingLeader.setStatus(user.getStatus());
userService.update(existingLeader); userService.update(existingLeader);
return ok("更新成功"); return ok("更新成功");
} }
...@@ -100,10 +96,9 @@ public class LeaderController extends AbstractController { ...@@ -100,10 +96,9 @@ public class LeaderController extends AbstractController {
filters.addAll(JsonUtils.getListFromJsonArray(filter)); filters.addAll(JsonUtils.getListFromJsonArray(filter));
} }
List<AbstractUser> data = userService.pagedDataSet(start, limit,filters); List<User> data = userService.pagedDataSet(start, limit,filters);
Long count = userService.pagedDataCount(filters); Long count = userService.pagedDataCount(filters);
return ok(data, count); return ok(data, count);
} }
} }
...@@ -2,11 +2,9 @@ package com.originspark.drp.controllers.account; ...@@ -2,11 +2,9 @@ package com.originspark.drp.controllers.account;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession; // import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
...@@ -17,27 +15,25 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -17,27 +15,25 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.RoleEnum; import com.originspark.drp.models.User;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.service.account.AccountService; import com.originspark.drp.service.account.AccountService;
import com.originspark.drp.util.Blowfish; import com.originspark.drp.util.Blowfish;
@Controller @Controller
@RequestMapping("account") @RequestMapping("account")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER}) public class AccountController extends BaseController {
public class AccountController {
@Autowired @Autowired
private AccountService service; private AccountService service;
private Logger logger = Logger.getLogger(AccountController.class); private Logger logger = Logger.getLogger(AccountController.class);
@RequestMapping(value = "login", method = RequestMethod.POST) @RequestMapping(value = "login", method = RequestMethod.POST)
public ModelAndView login(@RequestParam("username") String username, @RequestParam("password") String password,HttpSession session) { public ModelAndView login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) {
ModelAndView mav = new ModelAndView(); ModelAndView mav = new ModelAndView();
Blowfish bf = new Blowfish(); Blowfish bf = new Blowfish();
List<AbstractUser> users = service.validate(username, password); List<User> users = service.validate(username, password);
if (users.size() == 0) { if (users.size() == 0) {
mav.setViewName("index"); mav.setViewName("index");
mav.addObject("msg", "该用户不存在!"); mav.addObject("msg", "该用户不存在!");
...@@ -45,17 +41,11 @@ public class AccountController { ...@@ -45,17 +41,11 @@ public class AccountController {
int i; int i;
for (i = 0; i < users.size(); i++) { for (i = 0; i < users.size(); i++) {
if (bf.decryptString(users.get(i).getPassword()).equals(password)) { if (bf.decryptString(users.get(i).getPassword()).equals(password)) {
AbstractUser user = users.get(i); User user = users.get(i);
//将当前登录用户的信息存入session // 将当前登录用户的信息存入session
session.setAttribute("user", user); session.setAttribute("user", user);
//将该用户对应的权限信息存入session
Map<RoleEnum,Set<String>> auths = (Map<RoleEnum,Set<String>>)session.getServletContext().getAttribute("auths");
RoleEnum role = RoleEnum.valueOf(RoleEnum.class, user.getType().toUpperCase());
session.setAttribute("actions", auths.get(role));
mav.setViewName("redirect:/main"); mav.setViewName("redirect:/main");
logger.info("用户 " + user.getName() + " 登录系统,时间:" + new Date());
logger.info("用户 "+user.getName()+" 登录系统,时间:"+new Date());
return mav; return mav;
} }
} }
......
package com.originspark.drp.controllers.account;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.originspark.drp.models.users.AbstractUser;
public class AuthInterceptor extends HandlerInterceptorAdapter {
@SuppressWarnings("unchecked")
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
HandlerMethod hm = null;
try {
hm = (HandlerMethod)handler;
} catch (Exception e) {
response.sendRedirect(request.getContextPath()+"/index");
return false;
}
String mn = hm.getMethod().getName();
if(mn.equals("index") || mn.equals("login")){
return true;
}
AbstractUser user = (AbstractUser)session.getAttribute("user");
if(user == null) {
response.sendRedirect(request.getContextPath()+"/index");
return false;
} else {
Set<String> actions = (Set<String>)session.getAttribute("actions");
String name = hm.getBean().getClass().getName()+"."+hm.getMethod().getName();
if(!actions.contains(name)){
response.sendRedirect(request.getContextPath()+"/index");
return false;
}
}
return true;
}
}
package com.originspark.drp.controllers.account;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.extjs.menu.controllers.ExtMenuController;
@Controller
@RequestMapping("menu")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public class MainMenuController extends AbstractController{
@RequestMapping(value="/login",method = RequestMethod.GET)
@ResponseBody
public String createMenusByUserType(HttpServletRequest request){
String userType = SessionUtil.getCurrentUser(request).getType();
return ok(ExtMenuController.getMenusByUserType(userType));
}
}
package com.originspark.drp.controllers.projects;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.MaterialKeeper;
import com.originspark.drp.models.users.ProjectManager;
import com.originspark.drp.models.users.WareKeeper;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.mapper.projects.ProjectMapper;
import com.originspark.drp.web.models.projects.ProjectUI;
@Controller
@RequestMapping("project")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class ProjectController extends AbstractController {
private Logger logger = Logger.getLogger(ProjectController.class);
private ProjectMapper mapper = new ProjectMapper();
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody ProjectUI data,HttpServletRequest request) {
/**
* TODO 表单数据验证
*/
Project system = mapper.toPersistenceBean(data);
if(system == null){
return failure("创建失败");
}
//如果添加的是系统,则不添加项目经理,库管和材管
if(data.getParentId() != null){
Project project = projectService.getReferance(Project.class, data.getParentId());
if(project == null){
return failure("所属项目不能为空!");
}
system.setProject(project);
projectService.save(system);
return ok("创建成功");
}else{
if(data.getProjectManager() != null){
ProjectManager projectManager = (ProjectManager) userService.findById(AbstractUser.class, data.getProjectManager());
if(projectManager == null){
return failure("项目经理不能为空!");
}
system.setProjectManager(projectManager);;
}
if(data.getWareKeeper() != null){
WareKeeper wareKeeper = (WareKeeper) userService.findById(AbstractUser.class, data.getWareKeeper());
if(wareKeeper == null){
return failure("库管员不能为空不能为空!");
}
system.setWareKeeper(wareKeeper);;
}
if(data.getMaterialKeeper() != null){
MaterialKeeper materialKeeper = (MaterialKeeper) userService.findById(AbstractUser.class, data.getMaterialKeeper());
if(materialKeeper == null){
return failure("材料员不能为空!");
}
system.setMaterialKeeper(materialKeeper);;
}
system.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
projectService.save(system);
return ok("添加成功");
}
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
Project project = projectService.findById(Project.class, id);
if(!project.getSystems().isEmpty()){
return failure("请先删除该项目下属的系统!");
}
if(!project.getInInvoices().isEmpty()){
return failure("请先删除该系统下属的入库单!");
}
if(!project.getOutInvoices().isEmpty()){
return failure("请先删除该系统下属的出库单!");
}
projectService.delete(project);
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody ProjectUI data,HttpServletRequest request) {
Project existingProject = projectService.findById(Project.class, id);
if (existingProject == null) {
return failure("您要修改的项目不存在");
}
if(data.getId() != id){
return failure("数据错误,修改失败");
}
//修改的是system
if(data.getParentId() != null){
Project project = projectService.getReferance(Project.class, data.getParentId());
if(project == null){
return failure("所属项目不能为空!");
}
existingProject.setProject(project);
}else{
if(data.getProjectManager() != null){
ProjectManager projectManager = (ProjectManager) userService.findById(AbstractUser.class, data.getProjectManager());
if(projectManager == null){
return failure("项目经理不能为空!");
}
existingProject.setProjectManager(projectManager);;
}
if(data.getWareKeeper() != null){
WareKeeper wareKeeper = (WareKeeper) userService.findById(AbstractUser.class, data.getWareKeeper());
if(wareKeeper == null){
return failure("库管员不能为空不能为空!");
}
existingProject.setWareKeeper(wareKeeper);;
}
if(data.getMaterialKeeper() != null){
MaterialKeeper materialKeeper = (MaterialKeeper) userService.findById(AbstractUser.class, data.getMaterialKeeper());
if(materialKeeper == null){
return failure("材料员不能为空!");
}
existingProject.setMaterialKeeper(materialKeeper);;
}
}
existingProject.setName(data.getName());
existingProject.setCode(data.getCode());
existingProject.setCity(data.getCity());
existingProject.setStartDate(data.getStartDate());
existingProject.setEndDate(data.getEndDate());
existingProject.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
projectService.update(existingProject);
return ok("修改成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String list(@RequestParam(required = false) String userType,@RequestParam(required = false)String userId) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
if(userType != null && userId != null){
FilterRequest filter = new FilterRequest(userType,userId);
filters.add(filter);
}
List<Project> data = projectService.treeViewData(filters);
return ok(data);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String view(@PathVariable Long id){
Project project = projectService.findById(Project.class, id);
return ok(project.getSystems());
}
}
...@@ -3,9 +3,9 @@ package com.originspark.drp.controllers.projects.costs; ...@@ -3,9 +3,9 @@ package com.originspark.drp.controllers.projects.costs;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -14,9 +14,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -14,9 +14,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.projects.costs.StockInCost; import com.originspark.drp.models.projects.costs.StockInCost;
import com.originspark.drp.models.projects.invoices.StockInInvoice; import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.service.projects.costs.StockInCostService; import com.originspark.drp.service.projects.costs.StockInCostService;
...@@ -26,86 +24,84 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -26,86 +24,84 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("stockInCost") @RequestMapping("stockInCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER}) public class StockInCostController extends BaseController{
public class StockInCostController extends AbstractController{
@Resource
@Autowired private StockInCostService service;
private StockInCostService service;
@RequestMapping(method = RequestMethod.POST)
@RequestMapping(method = RequestMethod.POST) @ResponseBody
@ResponseBody public String create(@RequestBody StockInCost stockInCost,HttpServletRequest request) {
public String create(@RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInInvoice invoiceUI = stockInCost.getInvoice();
StockInInvoice invoiceUI = stockInCost.getInvoice(); if(invoiceUI == null){
if(invoiceUI == null){ return failure("所选入库单不能为空");
return failure("所选入库单不能为空"); }
}
StockInInvoice invoice = stockInInvoiceService.findById(invoiceUI.getId());
StockInInvoice invoice = stockInInvoiceService.findById(invoiceUI.getId()); if(invoice == null){
if(invoice == null){ return failure("你所选择的入库单不存在,请重新选择");
return failure("你所选择的入库单不存在,请重新选择"); }
}
//检查该商品是否已经存在
//检查该商品是否已经存在 boolean have = false;
boolean have = false; for(StockInCost cost : invoice.getCosts()){
for(StockInCost cost : invoice.getCosts()){ if(cost.getWare().getId() == stockInCost.getWare().getId()){
if(cost.getWare().getId() == stockInCost.getWare().getId()){ have = true;
have = true; break;
break; }
} }
}
if(have){
if(have){ return failure("抱歉,不能重复添加商品");
return failure("抱歉,不能重复添加商品"); }
}
stockInCost.setCreatedBy(SessionUtil.getCurrentUserName(request));
stockInCost.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
service.save(stockInCost);
service.save(stockInCost); return ok("创建成功");
return ok("创建成功"); }
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ResponseBody
@ResponseBody public String delete(@PathVariable Long id) {
public String delete(@PathVariable Long id) { StockInCost stockInCost = service.findById(StockInCost.class, id);
StockInCost stockInCost = service.findById(StockInCost.class, id); service.delete(stockInCost);
service.delete(stockInCost); return ok("删除成功");
return ok("删除成功"); }
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@RequestMapping(value = "/{id}", method = RequestMethod.PUT) @ResponseBody
@ResponseBody public String update(@PathVariable Long id, @RequestBody StockInCost stockInCost,HttpServletRequest request) {
public String update(@PathVariable Long id, @RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInCost existingStockInCost = service.findById(StockInCost.class, id);
StockInCost existingStockInCost = service.findById(StockInCost.class, id); if (existingStockInCost == null) {
if (existingStockInCost == null) { return failure("您要更新的商品不存在");
return failure("您要更新的商品不存在"); }
}
existingStockInCost.setUnitPrice(stockInCost.getUnitPrice());
existingStockInCost.setUnitPrice(stockInCost.getUnitPrice()); existingStockInCost.setQuantity(stockInCost.getQuantity());
existingStockInCost.setQuantity(stockInCost.getQuantity());
existingStockInCost.setUpdatedBy(SessionUtil.getCurrentUserName(request));
existingStockInCost.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
service.update(existingStockInCost);
service.update(existingStockInCost); return ok("更新成功");
return ok("更新成功"); }
}
@RequestMapping(method = RequestMethod.GET)
@RequestMapping(method = RequestMethod.GET) @ResponseBody
@ResponseBody public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) { List<FilterRequest> filters = new ArrayList<FilterRequest>();
List<FilterRequest> filters = new ArrayList<FilterRequest>(); if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
if (filter != null) { }
filters.addAll(JsonUtils.getListFromJsonArray(filter));
} List<StockInCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters);
List<StockInCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters); return ok(data, count);
}
return ok(data, count);
}
} }
...@@ -3,9 +3,9 @@ package com.originspark.drp.controllers.projects.costs; ...@@ -3,9 +3,9 @@ package com.originspark.drp.controllers.projects.costs;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -14,9 +14,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -14,9 +14,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.projects.costs.StockOutCost; import com.originspark.drp.models.projects.costs.StockOutCost;
import com.originspark.drp.models.projects.invoices.StockOutInvoice; import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.service.projects.costs.StockOutCostService; import com.originspark.drp.service.projects.costs.StockOutCostService;
...@@ -26,17 +24,16 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -26,17 +24,16 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("stockOutCost") @RequestMapping("stockOutCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER}) public class StockOutCostController extends BaseController{
public class StockOutCostController extends AbstractController{
@Resource
@Autowired private StockOutCostService service;
private StockOutCostService service;
@RequestMapping(method = RequestMethod.POST)
@RequestMapping(method = RequestMethod.POST) @ResponseBody
@ResponseBody public String create(@RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
public String create(@RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutInvoice invoiceUI = stockOutCost.getInvoice();
StockOutInvoice invoiceUI = stockOutCost.getInvoice();
if(invoiceUI == null){ if(invoiceUI == null){
return failure("所选出库单不能为空"); return failure("所选出库单不能为空");
} }
...@@ -58,54 +55,53 @@ public class StockOutCostController extends AbstractController{ ...@@ -58,54 +55,53 @@ public class StockOutCostController extends AbstractController{
if(have){ if(have){
return failure("抱歉,不能重复添加商品"); return failure("抱歉,不能重复添加商品");
} }
stockOutCost.setCreatedByUserName(SessionUtil.getCurrentUserName(request)); stockOutCost.setCreatedBy(SessionUtil.getCurrentUserName(request));
service.save(stockOutCost); service.save(stockOutCost);
return ok("创建成功"); return ok("创建成功");
} }
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody @ResponseBody
public String delete(@PathVariable Long id) { public String delete(@PathVariable Long id) {
StockOutCost stockOutCost = service.findById(StockOutCost.class, id); StockOutCost stockOutCost = service.findById(StockOutCost.class, id);
service.delete(stockOutCost); service.delete(stockOutCost);
return ok("删除成功"); return ok("删除成功");
} }
@RequestMapping(value = "/{id}", method = RequestMethod.PUT) @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody @ResponseBody
public String update(@PathVariable Long id, @RequestBody StockOutCost stockOutCost,HttpServletRequest request) { public String update(@PathVariable Long id, @RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutCost existingStockOutCost = service.findById(StockOutCost.class, id); StockOutCost existingStockOutCost = service.findById(StockOutCost.class, id);
if (existingStockOutCost == null) { if (existingStockOutCost == null) {
return failure("您要更新的商品不存在"); return failure("您要更新的商品不存在");
} }
existingStockOutCost.setQuantity(stockOutCost.getQuantity()); existingStockOutCost.setQuantity(stockOutCost.getQuantity());
existingStockOutCost.setUnitPrice(stockOutCost.getUnitPrice()); existingStockOutCost.setUnitPrice(stockOutCost.getUnitPrice());
existingStockOutCost.setUpdatedByUserName(SessionUtil.getCurrentUserName(request)); existingStockOutCost.setUpdatedBy(SessionUtil.getCurrentUserName(request));
service.update(existingStockOutCost); service.update(existingStockOutCost);
return ok("更新成功"); return ok("更新成功");
} }
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER}) public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
List<FilterRequest> filters = new ArrayList<FilterRequest>();
if (filter != null) {
if (filter != null) { filters.addAll(JsonUtils.getListFromJsonArray(filter));
filters.addAll(JsonUtils.getListFromJsonArray(filter)); }
}
List<StockOutCost> data = service.pagedDataSet(start, limit,filters);
List<StockOutCost> data = service.pagedDataSet(start, limit,filters); Long count = service.pagedDataCount(filters);
Long count = service.pagedDataCount(filters);
return ok(data, count);
return ok(data, count); }
}
} }
...@@ -18,10 +18,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -18,10 +18,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.util.FileUtil; import com.originspark.drp.util.FileUtil;
import com.originspark.drp.util.poi.exporter.MonthendInventoryGenerator; import com.originspark.drp.util.poi.exporter.MonthendInventoryGenerator;
import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI; import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI;
...@@ -29,10 +26,9 @@ import com.originspark.drp.web.models.projects.inventories.Ware; ...@@ -29,10 +26,9 @@ import com.originspark.drp.web.models.projects.inventories.Ware;
@Controller @Controller
@RequestMapping("project") @RequestMapping("project")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER}) public class InventoryController extends BaseController {
public class InventoryController extends AbstractController {
@RequestMapping(value = "/{id}/inventories/current", method = RequestMethod.GET) /*@RequestMapping(value = "/{id}/inventories/current", method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER}) @AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String currentInventories(@PathVariable Long id){ public String currentInventories(@PathVariable Long id){
...@@ -105,5 +101,5 @@ public class InventoryController extends AbstractController { ...@@ -105,5 +101,5 @@ public class InventoryController extends AbstractController {
throw new RuntimeException("IOError writing file to output stream"); throw new RuntimeException("IOError writing file to output stream");
} }
} }
} }*/
} }
package com.originspark.drp.controllers.projects.invoices; package com.originspark.drp.controllers.projects.invoices;
import com.originspark.drp.controllers.AbstractController; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.models.projects.invoices.AbstractInvoice; import com.originspark.drp.models.projects.invoices.AbstractInvoice;
import com.originspark.drp.util.enums.AuditState; import com.originspark.drp.util.enums.AuditState;
public class AbstractInvoiceController extends AbstractController { public class AbstractInvoiceController extends BaseController {
protected void updateState(AbstractInvoice invoice,String userType,AuditState state) {
if(invoice.getPass() == true){
return;
}
if (userType.equals("MaterialKeeper")) {
invoice.setMaterialKeeperAuditState(state);
invoice.setWareKeeperAuditState(AuditState.UNAUDITED);
invoice.setProjectManagerAuditState(AuditState.UNAUDITED);
} else if (userType.equals("WareKeeper")) {
if (invoice.getMaterialKeeperAuditState() == AuditState.APPROVED) {
invoice.setWareKeeperAuditState(state);
if(state == AuditState.UNAPPROVED){
invoice.setMaterialKeeperAuditState(state);
}
}
}else if (userType.equals("ProjectManager")) {
if (invoice.getMaterialKeeperAuditState() == AuditState.APPROVED &&
invoice.getWareKeeperAuditState() == AuditState.APPROVED) {
invoice.setProjectManagerAuditState(state);
if(state == AuditState.UNAPPROVED){
invoice.setMaterialKeeperAuditState(state);
}else{
invoice.setPass(true);
}
}
}
}
} }
...@@ -15,11 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -15,11 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.projects.invoices.StockInInvoice; import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.util.SessionUtil; import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.enums.AuditState; import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.AuditStateUpdateJson; import com.originspark.drp.util.json.AuditStateUpdateJson;
...@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("stockInInvoice") @RequestMapping("stockInInvoice")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockInInvoiceController extends AbstractInvoiceController { public class StockInInvoiceController extends AbstractInvoiceController {
private Logger logger = Logger.getLogger(StockInInvoiceController.class); private Logger logger = Logger.getLogger(StockInInvoiceController.class);
@RequestMapping(method = RequestMethod.POST) /*@RequestMapping(method = RequestMethod.POST)
@ResponseBody @ResponseBody
public String create(@RequestBody StockInInvoice invoice,HttpServletRequest request) { public String create(@RequestBody StockInInvoice invoice,HttpServletRequest request) {
...@@ -85,11 +80,10 @@ public class StockInInvoiceController extends AbstractInvoiceController { ...@@ -85,11 +80,10 @@ public class StockInInvoiceController extends AbstractInvoiceController {
stockInInvoiceService.update(existingInvoice); stockInInvoiceService.update(existingInvoice);
return ok("更新成功",existingInvoice.getId()); return ok("更新成功",existingInvoice.getId());
} }*/
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) { public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>(); List<FilterRequest> filters = new ArrayList<FilterRequest>();
...@@ -136,9 +130,8 @@ public class StockInInvoiceController extends AbstractInvoiceController { ...@@ -136,9 +130,8 @@ public class StockInInvoiceController extends AbstractInvoiceController {
return ok("删除成功(注释:部分合价不为0的入库单已忽略)"); return ok("删除成功(注释:部分合价不为0的入库单已忽略)");
} }
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET) /*@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) { public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data"); String data = request.getParameter("data");
...@@ -176,7 +169,7 @@ public class StockInInvoiceController extends AbstractInvoiceController { ...@@ -176,7 +169,7 @@ public class StockInInvoiceController extends AbstractInvoiceController {
} }
return ok("提交成功"); return ok("提交成功");
} }*/
} }
...@@ -15,11 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -15,11 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.projects.invoices.StockOutInvoice; import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.util.SessionUtil; import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.enums.AuditState; import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.AuditStateUpdateJson; import com.originspark.drp.util.json.AuditStateUpdateJson;
...@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("stockOutInvoice") @RequestMapping("stockOutInvoice")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockOutInvoiceController extends AbstractInvoiceController { public class StockOutInvoiceController extends AbstractInvoiceController {
private Logger logger = Logger.getLogger(StockOutInvoiceController.class); private Logger logger = Logger.getLogger(StockOutInvoiceController.class);
@RequestMapping(method = RequestMethod.POST) /* @RequestMapping(method = RequestMethod.POST)
@ResponseBody @ResponseBody
public String create(@RequestBody StockOutInvoice invoice,HttpServletRequest request) { public String create(@RequestBody StockOutInvoice invoice,HttpServletRequest request) {
...@@ -114,11 +109,10 @@ public class StockOutInvoiceController extends AbstractInvoiceController { ...@@ -114,11 +109,10 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
stockOutInvoiceService.update(existingInvoice); stockOutInvoiceService.update(existingInvoice);
return ok("更新成功", existingInvoice.getId()); return ok("更新成功", existingInvoice.getId());
} }*/
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) { public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>(); List<FilterRequest> filters = new ArrayList<FilterRequest>();
...@@ -133,9 +127,8 @@ public class StockOutInvoiceController extends AbstractInvoiceController { ...@@ -133,9 +127,8 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
return ok(data, count); return ok(data, count);
} }
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET) /*@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) { public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data"); String data = request.getParameter("data");
...@@ -173,5 +166,5 @@ public class StockOutInvoiceController extends AbstractInvoiceController { ...@@ -173,5 +166,5 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
} }
return ok("提交成功"); return ok("提交成功");
} }*/
} }
...@@ -15,9 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -15,9 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.resources.Vendor; import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.util.SessionUtil; import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.IdsJson; import com.originspark.drp.util.json.IdsJson;
...@@ -26,8 +24,7 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -26,8 +24,7 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller @Controller
@RequestMapping("vendor") @RequestMapping("vendor")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER}) public class VendorController extends BaseController {
public class VendorController extends AbstractController {
private Logger logger = Logger.getLogger(VendorController.class); private Logger logger = Logger.getLogger(VendorController.class);
...@@ -46,7 +43,7 @@ public class VendorController extends AbstractController { ...@@ -46,7 +43,7 @@ public class VendorController extends AbstractController {
return failure("该供应商已经存在,不可重复添加"); return failure("该供应商已经存在,不可重复添加");
} }
vendor.setCreatedByUserName(SessionUtil.getCurrentUserName(request)); vendor.setCreatedBy(SessionUtil.getCurrentUserName(request));
vendorService.save(vendor); vendorService.save(vendor);
logger.info(">添加成功:"+vendor.toString()); logger.info(">添加成功:"+vendor.toString());
...@@ -97,18 +94,14 @@ public class VendorController extends AbstractController { ...@@ -97,18 +94,14 @@ public class VendorController extends AbstractController {
logger.warn(">更新失败:该供应商已经存在,不可重复添加"); logger.warn(">更新失败:该供应商已经存在,不可重复添加");
return failure("该供应商已经存在,不可重复添加"); return failure("该供应商已经存在,不可重复添加");
} }
existingVendor.setName(vendor.getName()); existingVendor.setName(vendor.getName());
existingVendor.setContactMan(vendor.getContactMan()); existingVendor.setContactMan(vendor.getContactMan());
existingVendor.setAddress(vendor.getAddress()); existingVendor.setAddress(vendor.getAddress());
existingVendor.setPhone(vendor.getPhone()); existingVendor.setPhone(vendor.getPhone());
existingVendor.setRegistrationNumber(vendor.getRegistrationNumber());
existingVendor.setRegistrationRange(vendor.getRegistrationRange());
existingVendor.setTaxNumber(vendor.getTaxNumber());
existingVendor.setOrgCodeCertificate(vendor.getOrgCodeCertificate());
existingVendor.setNote(vendor.getNote()); existingVendor.setNote(vendor.getNote());
existingVendor.setUpdatedByUserName(SessionUtil.getCurrentUserName(request)); existingVendor.setUpdatedBy(SessionUtil.getCurrentUserName(request));
vendorService.update(existingVendor); vendorService.update(existingVendor);
logger.info(">更新成功:"+existingVendor.toString()); logger.info(">更新成功:"+existingVendor.toString());
...@@ -117,7 +110,6 @@ public class VendorController extends AbstractController { ...@@ -117,7 +110,6 @@ public class VendorController extends AbstractController {
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) { public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>(); List<FilterRequest> filters = new ArrayList<FilterRequest>();
......
package com.originspark.drp.controllers.resources;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.models.User;
import com.originspark.drp.models.resources.WareCategory;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.web.models.resources.WareCategoryForm;
@Controller
@RequestMapping("wares/categories")
public class WareCategoryController extends BaseController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String list() {
List<WareCategory> data = wareCategoryService.treeViewData();
return ok(data);
}
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody WareCategoryForm categoryForm) {
if(StringUtils.isEmpty(categoryForm.getName())) {
return failure("分类名称不能为空");
}
WareCategory category = new WareCategory();
category.setName(categoryForm.getName());
category.setCode(categoryForm.getCode());
wareCategoryService.save(category);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody WareCategoryForm form) {
WareCategory existingCategory = wareCategoryService.findById(WareCategory.class, id);
if (existingCategory == null) {
return failure("您要更新的分类不存在");
}
existingCategory.setName(form.getName());
existingCategory.setCode(form.getCode());
wareCategoryService.update(existingCategory);
return ok("更新成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
WareCategory existingCategory = wareCategoryService.findById(WareCategory.class, id);
if (existingCategory == null) {
return failure("您要删除的分类不存在");
}
existingCategory.setStatus(Status.DESTORYED);
wareCategoryService.update(existingCategory);
return ok("删除成功");
}
}
...@@ -25,9 +25,7 @@ import org.springframework.web.bind.annotation.ResponseBody; ...@@ -25,9 +25,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.AuthRoleGroup; import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.resources.Vendor; import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.models.resources.Ware; import com.originspark.drp.models.resources.Ware;
import com.originspark.drp.util.FileUtil; import com.originspark.drp.util.FileUtil;
...@@ -40,8 +38,7 @@ import com.originspark.drp.util.poi.importer.WareImporter; ...@@ -40,8 +38,7 @@ import com.originspark.drp.util.poi.importer.WareImporter;
@Controller @Controller
@RequestMapping("ware") @RequestMapping("ware")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER}) public class WareController extends BaseController {
public class WareController extends AbstractController {
private Logger logger = Logger.getLogger(WareController.class); private Logger logger = Logger.getLogger(WareController.class);
...@@ -68,7 +65,7 @@ public class WareController extends AbstractController { ...@@ -68,7 +65,7 @@ public class WareController extends AbstractController {
} }
//save //save
ware.setCreatedByUserName(SessionUtil.getCurrentUserName(request)); ware.setCreatedBy(SessionUtil.getCurrentUserName(request));
Ware savedWare = wareService.save(ware); Ware savedWare = wareService.save(ware);
logger.info(">添加成功:"+savedWare.toString()); logger.info(">添加成功:"+savedWare.toString());
...@@ -135,7 +132,7 @@ public class WareController extends AbstractController { ...@@ -135,7 +132,7 @@ public class WareController extends AbstractController {
existingWare.setNote(ware.getNote()); existingWare.setNote(ware.getNote());
existingWare.setVendor(ware.getVendor()); existingWare.setVendor(ware.getVendor());
existingWare.setUpdatedByUserName(SessionUtil.getCurrentUserName(request)); existingWare.setUpdatedBy(SessionUtil.getCurrentUserName(request));
wareService.update(existingWare); wareService.update(existingWare);
logger.info(">更新成功:"+existingWare.toString()); logger.info(">更新成功:"+existingWare.toString());
...@@ -144,7 +141,6 @@ public class WareController extends AbstractController { ...@@ -144,7 +141,6 @@ public class WareController extends AbstractController {
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
@AuthRoleGroup(type={RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter, HttpServletRequest request) { public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter, HttpServletRequest request) {
List<FilterRequest> filters = new ArrayList<FilterRequest>(); List<FilterRequest> filters = new ArrayList<FilterRequest>();
...@@ -158,7 +154,7 @@ public class WareController extends AbstractController { ...@@ -158,7 +154,7 @@ public class WareController extends AbstractController {
return ok(data, count); return ok(data, count);
} }
// 参考http://www.360doc.com/content/12/1219/17/7471983_255118342.shtml // 参考http://www.360doc.com/content/12/1219/17/7471983_255118342.shtml
@RequestMapping(value = "/uploadExcel", method = RequestMethod.POST) @RequestMapping(value = "/uploadExcel", method = RequestMethod.POST)
public void uploadExcel(@RequestParam("attach") MultipartFile attach, HttpServletRequest request, HttpServletResponse response) throws IOException { public void uploadExcel(@RequestParam("attach") MultipartFile attach, HttpServletRequest request, HttpServletResponse response) throws IOException {
......
package com.originspark.drp.controllers.users;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.MaterialKeeper;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("materialKeeper")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class MaterialKeeperController extends AbstractController {
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody MaterialKeeper materialKeeper) {
materialKeeper.setPassword("123456");
userService.save(materialKeeper);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
MaterialKeeper materialKeeper = (MaterialKeeper)userService.findById(AbstractUser.class, id);
materialKeeper.setStatus(Status.DESTORYED);
userService.update(materialKeeper);
return ok("注销成功");
}
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@ResponseBody
public String deleteBatch(HttpServletRequest request){
String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
IdsJson json=null;
try {
json = mapper.readValue(data, IdsJson.class);
} catch (Exception e) {
return failure("提交数据有误");
}
if(json == null){
return failure("没有需要审核的数据");
}
for(long id:json.getIds()){
MaterialKeeper materialKeeper = (MaterialKeeper)userService.findById(AbstractUser.class, id);
materialKeeper.setStatus(Status.DESTORYED);
userService.update(materialKeeper);
}
return ok("注销成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody MaterialKeeper materialKeeper) {
MaterialKeeper existingMaterialKeeper = (MaterialKeeper)userService.findById(AbstractUser.class, id);
if (existingMaterialKeeper == null) {
return failure("您要更新的领导不存在");
}
existingMaterialKeeper.setName(materialKeeper.getName());
existingMaterialKeeper.setCode(materialKeeper.getCode());
existingMaterialKeeper.setGender(materialKeeper.getGender());
existingMaterialKeeper.setPhone(materialKeeper.getPhone());
existingMaterialKeeper.setAddress(materialKeeper.getAddress());
existingMaterialKeeper.setEmail(materialKeeper.getEmail());
existingMaterialKeeper.setStatus(materialKeeper.getStatus());
userService.update(existingMaterialKeeper);
return ok("更新成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
filters.add(new FilterRequest("type", "MaterialKeeper"));
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<AbstractUser> data = userService.pagedDataSet(start, limit,filters);
Long count = userService.pagedDataCount(filters);
return ok(data, count);
}
}
package com.originspark.drp.controllers.users;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.ProjectManager;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("projectManager")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class ProjectManagerController extends AbstractController{
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody ProjectManager projectManager) {
projectManager.setPassword("123456");
userService.save(projectManager);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
AbstractUser projectManager = userService.findById(AbstractUser.class, id);
projectManager.setStatus(Status.DESTORYED);
userService.update(projectManager);
return ok("注销成功");
}
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@ResponseBody
public String deleteBatch(HttpServletRequest request){
String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
IdsJson json=null;
try {
json = mapper.readValue(data, IdsJson.class);
} catch (Exception e) {
return failure("提交数据有误");
}
if(json == null){
return failure("没有需要审核的数据");
}
for(long id:json.getIds()){
AbstractUser projectManager = userService.findById(AbstractUser.class, id);
projectManager.setStatus(Status.DESTORYED);
userService.update(projectManager);
}
return ok("注销成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody ProjectManager projectManager) {
ProjectManager existingProjectManager = (ProjectManager)userService.findById(AbstractUser.class, id);
if (existingProjectManager == null) {
return failure("您要更新的项目经理不存在");
}
existingProjectManager.setName(projectManager.getName());
existingProjectManager.setCode(projectManager.getCode());
existingProjectManager.setGender(projectManager.getGender());
existingProjectManager.setPhone(projectManager.getPhone());
existingProjectManager.setAddress(projectManager.getAddress());
existingProjectManager.setEmail(projectManager.getEmail());
existingProjectManager.setStatus(projectManager.getStatus());
userService.update(existingProjectManager);
return ok("更新成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
filters.add(new FilterRequest("type", "ProjectManager"));
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<AbstractUser> data = userService.pagedDataSet(start, limit,filters);
Long count = userService.pagedDataCount(filters);
return ok(data, count);
}
}
package com.originspark.drp.controllers.users;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.WareKeeper;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("wareKeeper")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class WareKeeperController extends AbstractController{
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody WareKeeper wareKeeper) {
wareKeeper.setPassword("123456");
userService.save(wareKeeper);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
AbstractUser wareKeeper = userService.findById(AbstractUser.class, id);
wareKeeper.setStatus(Status.DESTORYED);
userService.update(wareKeeper);
return ok("注销成功");
}
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@ResponseBody
public String deleteBatch(HttpServletRequest request){
String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
IdsJson json=null;
try {
json = mapper.readValue(data, IdsJson.class);
} catch (Exception e) {
return failure("提交数据有误");
}
if(json == null){
return failure("没有需要审核的数据");
}
for(long id:json.getIds()){
AbstractUser wareKeeper = userService.findById(AbstractUser.class, id);
wareKeeper.setStatus(Status.DESTORYED);
userService.update(wareKeeper);
}
return ok("注销成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody WareKeeper wareKeeper) {
WareKeeper existingWareKeeper = (WareKeeper)userService.findById(AbstractUser.class, id);
if (existingWareKeeper == null) {
return failure("您要更新的库管不存在");
}
existingWareKeeper.setName(wareKeeper.getName());
existingWareKeeper.setCode(wareKeeper.getCode());
existingWareKeeper.setGender(wareKeeper.getGender());
existingWareKeeper.setPhone(wareKeeper.getPhone());
existingWareKeeper.setAddress(wareKeeper.getAddress());
existingWareKeeper.setEmail(wareKeeper.getEmail());
existingWareKeeper.setStatus(wareKeeper.getStatus());
userService.update(existingWareKeeper);
return ok("更新成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String list(@RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
filters.add(new FilterRequest("type", "WareKeeper"));
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<AbstractUser> data = userService.pagedDataSet(start, limit,filters);
Long count = userService.pagedDataCount(filters);
return ok(data, count);
}
@RequestMapping(value = "/{id}/projects", method = RequestMethod.GET)
@ResponseBody
public String listProjects(@PathVariable Long id){
WareKeeper wareKeeper = (WareKeeper)userService.findById(AbstractUser.class, id);
return ok(wareKeeper.getProjects());
}
}
...@@ -9,25 +9,25 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -9,25 +9,25 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public abstract class BaseDAOSupport<T> implements BaseDAO<T>{ public abstract class BaseDAOSupport<T> implements BaseDAO<T>{
@PersistenceContext @PersistenceContext
protected EntityManager em; protected EntityManager em;
public void delete(T entity) { public void delete(T entity) {
em.remove(entity); em.remove(entity);
} }
@Transactional(readOnly=true) @Transactional(readOnly=true)
public T findById(Class<T> c,Long id) { public T findById(Class<T> c,Long id) {
return em.find(c, id); return em.find(c, id);
} }
public T save(T entity) { public T save(T entity) {
em.persist(entity); em.persist(entity);
return entity; return entity;
} }
public T update(T entity) { public T update(T entity) {
return em.merge(entity); return em.merge(entity);
} }
@Transactional(readOnly=true) @Transactional(readOnly=true)
......
...@@ -3,96 +3,117 @@ package com.originspark.drp.models; ...@@ -3,96 +3,117 @@ package com.originspark.drp.models;
import java.util.Date; import java.util.Date;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.MappedSuperclass; import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist; import javax.persistence.PrePersist;
import javax.persistence.PreUpdate; import javax.persistence.PreUpdate;
import com.originspark.drp.util.enums.Status;
import com.sun.istack.internal.NotNull;
@MappedSuperclass @MappedSuperclass
public abstract class AbstractModel { public abstract class AbstractModel {
@Id @Id
@GeneratedValue @GeneratedValue
private Long id; private Long id;
/** /**
* 维护信息:记录创建日期 * 维护信息:记录创建日期
*/ */
@Column(name="createOn") @NotNull
private Date createOn; @Column(name="createOn")
private Date createOn;
/**
* 维护信息:记录创建者 /**
*/ * 维护信息:记录创建者
@Column(name="createdByUserName",length=10) */
private String createdByUserName; @Column(name="createdBy",length=10)
private String createdBy;
/**
* 维护信息:记录更新日期 /**
*/ * 维护信息:记录更新日期
@Column(name="updateOn") */
private Date updateOn; @NotNull
@Column(name="updateOn")
/** private Date updateOn;
* 维护信息:记录更新者
*/ /**
@Column(name="updatedByUserName",length=10) * 维护信息:记录更新者
private String updatedByUserName; */
@Column(name="updatedBy",length=10)
public Long getId() { private String updatedBy;
return id;
} /**
* 状态
public void setId(Long id) { */
this.id = id; @Enumerated(EnumType.STRING)
} private Status status;
public Date getCreateOn() { public Long getId() {
return createOn; return id;
} }
public void setCreateOn(Date createOn) { public void setId(Long id) {
this.createOn = createOn; this.id = id;
} }
public String getCreatedByUserName() { public Date getCreateOn() {
return createdByUserName; return createOn;
} }
public void setCreatedByUserName(String createdByUserName) { public void setCreateOn(Date createOn) {
this.createdByUserName = createdByUserName; this.createOn = createOn;
} }
public Date getUpdateOn() { public String getCreatedBy() {
return updateOn; return createdBy;
} }
public void setUpdateOn(Date updateOn) { public void setCreatedBy(String createdBy) {
this.updateOn = updateOn; this.createdBy = createdBy;
} }
public String getUpdatedByUserName() { public Date getUpdateOn() {
return updatedByUserName; return updateOn;
} }
public void setUpdatedByUserName(String updatedByUserName) { public void setUpdateOn(Date updateOn) {
this.updatedByUserName = updatedByUserName; this.updateOn = updateOn;
} }
@PrePersist public String getUpdatedBy() {
private void prePersist() { return updatedBy;
createOn = new Date(); }
updateOn = createOn;
} public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
@PreUpdate }
private void preUpdate(){
updateOn = new Date(); public Status getStatus() {
} return status;
}
@Override
public String toString() { public void setStatus(Status status) {
return "id="+id+", updateOn="+updateOn; this.status = status;
} }
@PrePersist
private void prePersist() {
createOn = new Date();
updateOn = createOn;
}
@PreUpdate
private void preUpdate(){
updateOn = new Date();
}
@Override
public String toString() {
return "id="+id+", updateOn="+updateOn;
}
} }
\ No newline at end of file
package com.originspark.drp.models.users; package com.originspark.drp.models;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table; import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.AbstractModel;
import com.originspark.drp.util.Blowfish; import com.originspark.drp.util.Blowfish;
import com.originspark.drp.util.enums.Gender; import com.originspark.drp.util.enums.Gender;
import com.originspark.drp.util.enums.Status; import com.originspark.drp.util.enums.UserType;
@Entity @Entity
@Table(name = "users") @Table(name="users")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class User extends AbstractModel {
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class AbstractUser extends AbstractModel{ @Enumerated(EnumType.STRING)
private UserType type;
@Column(name = "type", updatable = false, insertable = false)
private String type;
/** /**
* 编号 * 编号
*/ */
private String code; private String code;
/** /**
* 姓名 * 姓名
*/ */
private String name; private String name;
/**
* 登录账号
*/
private String username;
/** /**
* 密码 * 密码
*/ */
@JsonIgnore @JsonIgnore
private String password; private String password;
/** /**
* 联系电话 * 联系电话
*/ */
private String phone; private String phone;
/** /**
* 地址 * 地址
*/ */
private String address; private String address;
/** /**
* 电子邮件 * 电子邮件
*/ */
private String email; private String email;
/** /**
* 性别 * 性别
*/ */
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private Gender gender; private Gender gender;
/** public UserType getType() {
* 状态 return type;
*/ }
@Enumerated(EnumType.STRING)
private Status status; public void setType(UserType type) {
this.type = type;
public static enum COLUMNS {
TYPE,CODE,NAME,PHONE,ADDRESS,EMAIL,GENDER,STATUS
} }
public String getCode() { public String getCode() {
...@@ -88,13 +83,21 @@ public class AbstractUser extends AbstractModel{ ...@@ -88,13 +83,21 @@ public class AbstractUser extends AbstractModel{
this.name = name; this.name = name;
} }
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() { public String getPassword() {
return password; return password;
} }
public void setPassword(String password) { public void setPassword(String password) {
Blowfish bf=new Blowfish(); Blowfish bf = new Blowfish();
String pwd=bf.encryptString(password); String pwd = bf.encryptString(password);
this.password = pwd; this.password = pwd;
} }
...@@ -129,26 +132,8 @@ public class AbstractUser extends AbstractModel{ ...@@ -129,26 +132,8 @@ public class AbstractUser extends AbstractModel{
public void setGender(Gender gender) { public void setGender(Gender gender) {
this.gender = gender; this.gender = gender;
} }
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) { public static enum COLUMNS {
this.status = status; TYPE, CODE, NAME, PHONE, ADDRESS, EMAIL, GENDER, STATUS
}
@Override
public String toString() {
return super.toString()+", code="+code+", name="+name+", phone="+phone+", address="+address+", email="+email
+", gender="+gender+", status"+status;
} }
} }
package com.originspark.drp.models.projects;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.AbstractModel;
import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.models.users.MaterialKeeper;
import com.originspark.drp.models.users.ProjectManager;
import com.originspark.drp.models.users.WareKeeper;
@Entity
@Table(name = "projects")
public class Project extends AbstractModel {
/**
* 项目名称
*/
private String name;
/**
* 项目编号
*/
private String code;
/**
* 项目所在城市
*/
private String city;
/**
* 开工时间
*/
@Temporal(TemporalType.DATE)
@Column(name = "startDate")
private Date startDate;
/**
* 竣工时间
*/
@Temporal(TemporalType.DATE)
@Column(name = "endDate")
private Date endDate;
@JsonIgnore
@ManyToOne
private Project project;
@JsonIgnore
@OneToMany(mappedBy = "project")
private List<Project> systems;
@ManyToOne
private ProjectManager projectManager;
@ManyToOne
private WareKeeper wareKeeper;
@ManyToOne
private MaterialKeeper materialKeeper;
@JsonIgnore
@OneToMany(mappedBy = "system")
private List<StockInInvoice> inInvoices;
@JsonIgnore
@OneToMany(mappedBy = "system")
private List<StockOutInvoice> outInvoices;
public static enum COLUMNS {
PROJECTMANAGER, WAREKEEPER, MATERIALKEEPER,LEADER
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
public List<Project> getSystems() {
return systems;
}
public void setSystems(List<Project> systems) {
this.systems = systems;
}
public ProjectManager getProjectManager() {
return projectManager;
}
public void setProjectManager(ProjectManager projectManager) {
this.projectManager = projectManager;
}
public WareKeeper getWareKeeper() {
return wareKeeper;
}
public void setWareKeeper(WareKeeper wareKeeper) {
this.wareKeeper = wareKeeper;
}
public MaterialKeeper getMaterialKeeper() {
return materialKeeper;
}
public void setMaterialKeeper(MaterialKeeper materialKeeper) {
this.materialKeeper = materialKeeper;
}
public List<StockInInvoice> getInInvoices() {
return inInvoices;
}
public void setInInvoices(List<StockInInvoice> inInvoices) {
this.inInvoices = inInvoices;
}
public List<StockOutInvoice> getOutInvoices() {
return outInvoices;
}
public void setOutInvoices(List<StockOutInvoice> outInvoices) {
this.outInvoices = outInvoices;
}
@Override
public String toString() {
return "Project(项目) => [" + super.toString() + ", code=" + code + ", name=" + name + ", materialKeeper.id=" + materialKeeper.getId()
+ ", wareKeeper.id=" + wareKeeper.getId() + ", projectManager.id=" + projectManager.getId() + "]";
}
public String getMaterialKeeperName(){
if(getProject() == null){
return null;
}
return getProject().getMaterialKeeper().getName();
}
public String getWareKeeperName(){
if(getProject() == null){
return null;
}
return getProject().getWareKeeper().getName();
}
public String getProjectManagerName(){
if(getProject() == null){
return null;
}
return getProject().getProjectManager().getName();
}
// json util getters
public boolean getLeaf() {
if (getProject() == null) {
return false;
}
return true;
}
public boolean getLoaded() {
if (getSystems().isEmpty()) {
return true;
}
return false;
}
public String getProjectName() {
Project project = getProject();
if (project == null) {
return null;
}
return project.getName();
}
}
...@@ -12,7 +12,7 @@ import com.originspark.drp.models.AbstractModel; ...@@ -12,7 +12,7 @@ import com.originspark.drp.models.AbstractModel;
@MappedSuperclass @MappedSuperclass
public abstract class AbstractCost extends AbstractModel{ public abstract class AbstractCost extends AbstractModel{
/** /**
* 单价 * 单价
*/ */
...@@ -24,28 +24,28 @@ public abstract class AbstractCost extends AbstractModel{ ...@@ -24,28 +24,28 @@ public abstract class AbstractCost extends AbstractModel{
*/ */
@Column(name="quantity", precision = 10, scale = 0, nullable = false) @Column(name="quantity", precision = 10, scale = 0, nullable = false)
private BigDecimal quantity = BigDecimal.ZERO; private BigDecimal quantity = BigDecimal.ZERO;
/** /**
* 合价 * 合价
*/ */
private BigDecimal total = BigDecimal.ZERO; private BigDecimal total = BigDecimal.ZERO;
public static enum COLUMNS { public static enum COLUMNS {
INVOICE INVOICE
} }
public BigDecimal getUnitPrice() { public BigDecimal getUnitPrice() {
return unitPrice; return unitPrice;
} }
public void setUnitPrice(BigDecimal unitPrice) { public void setUnitPrice(BigDecimal unitPrice) {
if(unitPrice == null){ if(unitPrice == null){
this.unitPrice = BigDecimal.ZERO; this.unitPrice = BigDecimal.ZERO;
} }
this.unitPrice = unitPrice; this.unitPrice = unitPrice;
} }
public BigDecimal getQuantity() { public BigDecimal getQuantity() {
return quantity; return quantity;
} }
......
...@@ -17,10 +17,10 @@ public class StockInCost extends AbstractCost { ...@@ -17,10 +17,10 @@ public class StockInCost extends AbstractCost {
*/ */
@ManyToOne @ManyToOne
private Ware ware; private Ware ware;
@ManyToOne @ManyToOne
private StockInInvoice invoice; private StockInInvoice invoice;
public Ware getWare() { public Ware getWare() {
return ware; return ware;
} }
......
...@@ -9,7 +9,6 @@ import javax.persistence.Id; ...@@ -9,7 +9,6 @@ import javax.persistence.Id;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.resources.Ware; import com.originspark.drp.models.resources.Ware;
@Entity @Entity
...@@ -19,13 +18,7 @@ public class MonthendInventory { ...@@ -19,13 +18,7 @@ public class MonthendInventory {
@Id @Id
@GeneratedValue @GeneratedValue
private Long id; private Long id;
/**
* 所属系统
*/
@ManyToOne
private Project system;
/** /**
* 年月 * 年月
*/ */
...@@ -69,14 +62,6 @@ public class MonthendInventory { ...@@ -69,14 +62,6 @@ public class MonthendInventory {
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;
} }
public Project getSystem() {
return system;
}
public void setSystem(Project system) {
this.system = system;
}
public String getForYearMonth() { public String getForYearMonth() {
return forYearMonth; return forYearMonth;
......
...@@ -5,102 +5,67 @@ import java.text.SimpleDateFormat; ...@@ -5,102 +5,67 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass; import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.AbstractModel; import com.originspark.drp.models.AbstractModel;
import com.originspark.drp.models.projects.Project; import com.sun.istack.internal.NotNull;
import com.originspark.drp.util.enums.AuditState;
/** /**
* 单据 * 单据
*/ */
@MappedSuperclass @MappedSuperclass
public abstract class AbstractInvoice extends AbstractModel{ public abstract class AbstractInvoice extends AbstractModel{
private static SimpleDateFormat forYearMonthFormatter = new SimpleDateFormat("yyyy-MM"); private static SimpleDateFormat forYearMonthFormatter = new SimpleDateFormat("yyyy-MM");
/** /**
* 编号 * 编号
*/ */
private String code; private String code;
/**
* 所属系统
*/
@ManyToOne
private Project system;
/** /**
* 日期 * 日期
*/ */
@Temporal(TemporalType.DATE) @Temporal(TemporalType.DATE)
private Date forDate; private Date forDate;
@JsonIgnore @JsonIgnore
@NotNull
@Column(columnDefinition = "char(7)", nullable = false) @Column(columnDefinition = "char(7)", nullable = false)
private String forYearMonth; private String forYearMonth;
/** /**
* 汇总价格 * 汇总价格
*/ */
@Column(precision = 15, scale = 2, nullable = false) @Column(precision = 15, scale = 2, nullable = false)
private BigDecimal totalPrice = BigDecimal.ZERO; private BigDecimal totalPrice = BigDecimal.ZERO;
/**
* 材料员姓名
*/
private String materialKeeperName;
/**
* 库管员姓名
*/
private String wareKeeperName;
/**
* 项目经理姓名
*/
private String projectManagerName;
/**
* 库管审核状态
*/
@Enumerated(EnumType.STRING)
private AuditState wareKeeperAuditState;
/** /**
* 材料管理员审核状态 * 负责人
*/ */
@Enumerated(EnumType.STRING) private String manager;
private AuditState materialKeeperAuditState;
/** /**
* 项目经理审核状态 * 库管
*/ */
@Enumerated(EnumType.STRING) private String wareKeeper;
private AuditState projectManagerAuditState;
/** /**
* 单据的状态,当项目经理通过之后,就设置为pass=true * 经手人
*/ */
private Boolean pass; private String regulator;
public static enum COLUMNS { public static enum COLUMNS {
STARTDATE,ENDDATE,CODE, STARTDATE,ENDDATE,CODE,
MINTOTAL,MAXTOTAL,PROJECT,SYSTEM, MINTOTAL,MAXTOTAL,PROJECT,SYSTEM,
WARENAME,RECEIVEMANNAME, WARENAME,RECEIVEMANNAME,
MATERIALKEEPERNAME,WAREKEEPERNAME,PROJECTMANAGERNAME, REGULATORNAME,WAREKEEPERNAME,MANAGERNAME
MATERIALKEEPERID,WAREKEEPERID,PROJECTMANAGERID,
MATERIALKEEPERAUDITSTATE,WAREKEEPERAUDITSTATE,PROJECTMANAGERAUDITSTATE
} }
public String getCode() { public String getCode() {
return code; return code;
} }
...@@ -108,47 +73,39 @@ public abstract class AbstractInvoice extends AbstractModel{ ...@@ -108,47 +73,39 @@ public abstract class AbstractInvoice extends AbstractModel{
this.code = code; this.code = code;
} }
public Project getSystem() { public String getManager() {
return system; return manager;
} }
public void setSystem(Project system) { public void setManager(String manager) {
this.system = system; this.manager = manager;
} }
public Date getForDate() { public String getWareKeeper() {
return forDate; return wareKeeper;
}
public void setForDate(Date forDate) {
this.forDate = forDate;
if (forDate != null) {
setForYearMonth(forYearMonthFormatter.format(forDate));
}
}
public String getMaterialKeeperName() {
return materialKeeperName;
} }
public void setMaterialKeeperName(String materialKeeperName) { public void setWareKeeper(String wareKeeper) {
this.materialKeeperName = materialKeeperName; this.wareKeeper = wareKeeper;
} }
public String getWareKeeperName() { public String getRegulator() {
return wareKeeperName; return regulator;
} }
public void setWareKeeperName(String wareKeeperName) { public void setRegulator(String regulator) {
this.wareKeeperName = wareKeeperName; this.regulator = regulator;
} }
public String getProjectManagerName() { public Date getForDate() {
return projectManagerName; return forDate;
} }
public void setProjectManagerName(String projectManagerName) { public void setForDate(Date forDate) {
this.projectManagerName = projectManagerName; this.forDate = forDate;
if (forDate != null) {
setForYearMonth(forYearMonthFormatter.format(forDate));
}
} }
public String getForYearMonth() { public String getForYearMonth() {
...@@ -160,58 +117,15 @@ public abstract class AbstractInvoice extends AbstractModel{ ...@@ -160,58 +117,15 @@ public abstract class AbstractInvoice extends AbstractModel{
} }
public BigDecimal getTotalPrice() { public BigDecimal getTotalPrice() {
return totalPrice; return totalPrice;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
public AuditState getWareKeeperAuditState() {
return wareKeeperAuditState;
} }
public void setWareKeeperAuditState(AuditState wareKeeperAuditState) { public void setTotalPrice(BigDecimal totalPrice) {
this.wareKeeperAuditState = wareKeeperAuditState; this.totalPrice = totalPrice;
} }
public AuditState getMaterialKeeperAuditState() {
return materialKeeperAuditState;
}
public void setMaterialKeeperAuditState(AuditState materialKeeperAuditState) {
this.materialKeeperAuditState = materialKeeperAuditState;
}
public AuditState getProjectManagerAuditState() {
return projectManagerAuditState;
}
public void setProjectManagerAuditState(AuditState projectManagerAuditState) {
this.projectManagerAuditState = projectManagerAuditState;
}
public Boolean getPass() {
return pass;
}
public void setPass(Boolean pass) {
if(pass == null){
this.pass = false;
}else{
this.pass = pass;
}
}
@PrePersist
private void prePersist() {
setWareKeeperAuditState(AuditState.UNAUDITED);
setMaterialKeeperAuditState(AuditState.UNAUDITED);
setProjectManagerAuditState(AuditState.UNAUDITED);
}
@Override @Override
public String toString() { public String toString() {
return super.toString()+", code="+code+", forDate="+forDate+", totalPrice="+totalPrice+", system.name="+system.getName(); return super.toString()+", code="+code+", forDate="+forDate+", totalPrice="+totalPrice;
} }
} }
\ No newline at end of file
...@@ -17,27 +17,27 @@ import com.originspark.drp.models.projects.costs.StockInCost; ...@@ -17,27 +17,27 @@ import com.originspark.drp.models.projects.costs.StockInCost;
@Table(name="invoice_stock_in") @Table(name="invoice_stock_in")
public class StockInInvoice extends AbstractInvoice{ public class StockInInvoice extends AbstractInvoice{
/** /**
* 商品采购列表 * 商品采购列表
*/ */
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="invoice") @OneToMany(mappedBy="invoice")
private List<StockInCost> costs; private List<StockInCost> costs;
public List<StockInCost> getCosts() { public List<StockInCost> getCosts() {
return costs; return costs;
} }
public void setCosts(List<StockInCost> costs) { public void setCosts(List<StockInCost> costs) {
this.costs = costs; this.costs = costs;
} }
public int getCostCount(){ public int getCostCount(){
return getCosts().size(); return getCosts().size();
} }
@Override @Override
public String toString() { public String toString() {
return "StockInInvoice(入库单) => ["+super.toString()+"]"; return "StockInInvoice(入库单) => ["+super.toString()+"]";
} }
} }
...@@ -17,25 +17,25 @@ import com.originspark.drp.models.projects.costs.StockOutCost; ...@@ -17,25 +17,25 @@ import com.originspark.drp.models.projects.costs.StockOutCost;
@Table(name="invoice_stock_out") @Table(name="invoice_stock_out")
public class StockOutInvoice extends AbstractInvoice{ public class StockOutInvoice extends AbstractInvoice{
/** /**
* 商品列表 * 商品列表
*/ */
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="invoice") @OneToMany(mappedBy="invoice")
private List<StockOutCost> costs; private List<StockOutCost> costs;
/**
* 领用人
*/
private String receiveMan;
public List<StockOutCost> getCosts() { /**
return costs; * 领用人
} */
private String receiveMan;
public void setCosts(List<StockOutCost> costs) { public List<StockOutCost> getCosts() {
this.costs = costs; return costs;
} }
public void setCosts(List<StockOutCost> costs) {
this.costs = costs;
}
public String getReceiveMan() { public String getReceiveMan() {
return receiveMan; return receiveMan;
...@@ -48,7 +48,7 @@ public class StockOutInvoice extends AbstractInvoice{ ...@@ -48,7 +48,7 @@ public class StockOutInvoice extends AbstractInvoice{
public int getCostCount(){ public int getCostCount(){
return getCosts().size(); return getCosts().size();
} }
@Override @Override
public String toString() { public String toString() {
return "StockInInvoice(出库单) => ["+super.toString()+", receiveMan="+receiveMan+"]"; return "StockInInvoice(出库单) => ["+super.toString()+", receiveMan="+receiveMan+"]";
......
package com.originspark.drp.models.resources;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.originspark.drp.models.AbstractModel;
/**
* 销售商
*/
@Entity
@Table(name="traders")
public class Trader extends AbstractModel {
/**
* 名称
*/
private String name;
/**
* 联系电话
*/
private String phone;
/**
* 地址
*/
private String address;
/**
* 联系人
*/
@Column(name="contactMan")
private String contactMan;
/**
* 备注
*/
private String note;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getContactMan() {
return contactMan;
}
public void setContactMan(String contactMan) {
this.contactMan = contactMan;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}
...@@ -12,168 +12,98 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -12,168 +12,98 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.AbstractModel; import com.originspark.drp.models.AbstractModel;
/** /**
* 供应商 * 供应商
*/ */
@Entity @Entity
@Table(name="vendors") @Table(name="vendors")
public class Vendor extends AbstractModel{ public class Vendor extends AbstractModel{
/**
* 名称
*/
private String name;
/** /**
* 地址 * 名称
*/ */
private String address; private String name;
/** /**
* 联系电话 * 联系电话
*/ */
private String phone; private String phone;
/**
* 地址
*/
private String address;
/** /**
* 联系人 * 联系人
*/ */
@Column(name="contactMan") @Column(name="contactMan")
private String contactMan; private String contactMan;
/**
* 营业执照:注册编号
*/
@Column(name="registrationNumber")
private String registrationNumber;
/**
* 营业执照:承包范围
*/
@Column(name="registrationRange")
private String registrationRange;
/**
* 营业执照:开户行
*/
@Column(name="registrationBank")
private String registrationBank;
/**
* 营业执照:税号
*/
@Column(name="taxNumber")
private String taxNumber;
/**
* 营业执照:组织机构代码证
*/
@Column(name="orgCodeCertificate")
private String orgCodeCertificate;
/** /**
* 备注 * 备注
*/ */
private String note; private String note;
/** /**
* 商品 * 商品
*/ */
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="vendor") @OneToMany(mappedBy="vendor")
private List<Ware> wares; private List<Ware> wares;
public static enum COLUMNS {
NAME,ADDRESS,PHONE,CONTACTMAN
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) { public static enum COLUMNS {
this.address = address; NAME,ADDRESS,PHONE,CONTACTMAN
} }
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getContactMan() {
return contactMan;
}
public void setContactMan(String contactMan) {
this.contactMan = contactMan;
}
public String getRegistrationNumber() {
return registrationNumber;
}
public void setRegistrationNumber(String registrationNumber) {
this.registrationNumber = registrationNumber;
}
public String getRegistrationRange() { public String getName() {
return registrationRange; return name;
} }
public void setRegistrationRange(String registrationRange) { public void setName(String name) {
this.registrationRange = registrationRange; this.name = name;
} }
public String getRegistrationBank() { public String getAddress() {
return registrationBank; return address;
} }
public void setRegistrationBank(String registrationBank) { public void setAddress(String address) {
this.registrationBank = registrationBank; this.address = address;
} }
public String getTaxNumber() { public String getPhone() {
return taxNumber; return phone;
} }
public void setTaxNumber(String taxNumber) { public void setPhone(String phone) {
this.taxNumber = taxNumber; this.phone = phone;
} }
public String getOrgCodeCertificate() { public String getContactMan() {
return orgCodeCertificate; return contactMan;
} }
public void setOrgCodeCertificate(String orgCodeCertificate) { public void setContactMan(String contactMan) {
this.orgCodeCertificate = orgCodeCertificate; this.contactMan = contactMan;
} }
public String getNote() { public String getNote() {
return note; return note;
} }
public void setNote(String note) { public void setNote(String note) {
this.note = note; this.note = note;
} }
public List<Ware> getWares() { public List<Ware> getWares() {
return wares; return wares;
} }
public void setWares(List<Ware> wares) { public void setWares(List<Ware> wares) {
this.wares = wares; this.wares = wares;
} }
public int getCountOfWares(){ public int getCountOfWares(){
return getWares().size(); return getWares().size();
} }
} }
package com.originspark.drp.models.resources; package com.originspark.drp.models.resources;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -8,6 +9,8 @@ import javax.persistence.Entity; ...@@ -8,6 +9,8 @@ import javax.persistence.Entity;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
...@@ -24,7 +27,7 @@ import com.originspark.drp.models.projects.inventories.MonthendInventory; ...@@ -24,7 +27,7 @@ import com.originspark.drp.models.projects.inventories.MonthendInventory;
public class Ware extends AbstractModel { public class Ware extends AbstractModel {
/** /**
* 名称 * 品名
*/ */
private String name; private String name;
...@@ -43,6 +46,17 @@ public class Ware extends AbstractModel { ...@@ -43,6 +46,17 @@ public class Ware extends AbstractModel {
*/ */
private String unit; private String unit;
/**
* 生产日期
*/
@Temporal(TemporalType.DATE)
private Date produceOn;
/**
* 保质期
*/
private String storage;
/** /**
* 备注 * 备注
*/ */
...@@ -53,7 +67,7 @@ public class Ware extends AbstractModel { ...@@ -53,7 +67,7 @@ public class Ware extends AbstractModel {
*/ */
@ManyToOne @ManyToOne
private Vendor vendor; private Vendor vendor;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="ware") @OneToMany(mappedBy="ware")
private List<StockInCost> inCosts; private List<StockInCost> inCosts;
...@@ -61,11 +75,11 @@ public class Ware extends AbstractModel { ...@@ -61,11 +75,11 @@ public class Ware extends AbstractModel {
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="ware") @OneToMany(mappedBy="ware")
private List<StockOutCost> outCosts; private List<StockOutCost> outCosts;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy="ware") @OneToMany(mappedBy="ware")
private List<MonthendInventory> inventories; private List<MonthendInventory> inventories;
public static enum COLUMNS { public static enum COLUMNS {
NAME, BRAND, MODEL, UNIT, VENDOR NAME, BRAND, MODEL, UNIT, VENDOR
} }
...@@ -102,6 +116,22 @@ public class Ware extends AbstractModel { ...@@ -102,6 +116,22 @@ public class Ware extends AbstractModel {
this.unit = unit; this.unit = unit;
} }
public Date getProduceOn() {
return produceOn;
}
public void setProduceOn(Date produceOn) {
this.produceOn = produceOn;
}
public String getStorage() {
return storage;
}
public void setStorage(String storage) {
this.storage = storage;
}
public String getNote() { public String getNote() {
return note; return note;
} }
...@@ -117,7 +147,7 @@ public class Ware extends AbstractModel { ...@@ -117,7 +147,7 @@ public class Ware extends AbstractModel {
public void setVendor(Vendor vendor) { public void setVendor(Vendor vendor) {
this.vendor = vendor; this.vendor = vendor;
} }
public List<StockInCost> getInCosts() { public List<StockInCost> getInCosts() {
return inCosts; return inCosts;
} }
...@@ -133,7 +163,7 @@ public class Ware extends AbstractModel { ...@@ -133,7 +163,7 @@ public class Ware extends AbstractModel {
public void setOutCosts(List<StockOutCost> outCosts) { public void setOutCosts(List<StockOutCost> outCosts) {
this.outCosts = outCosts; this.outCosts = outCosts;
} }
public List<MonthendInventory> getInventories() { public List<MonthendInventory> getInventories() {
return inventories; return inventories;
} }
......
package com.originspark.drp.models.resources;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.originspark.drp.models.AbstractModel;
/**
* 商品类别
* @author ReedMi
*/
@Entity
@Table(name = "ware_categories")
public class WareCategory extends AbstractModel {
private String name;
private String code;
@ManyToOne
private WareCategory parent;
@OneToMany(mappedBy = "parent")
private List<WareCategory> chidren;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public WareCategory getParent() {
return parent;
}
public void setParent(WareCategory parent) {
this.parent = parent;
}
public List<WareCategory> getChidren() {
return chidren;
}
public void setChidren(List<WareCategory> chidren) {
this.chidren = chidren;
}
public boolean getLoaded() {
if (getChidren().isEmpty()) {
return true;
}
return false;
}
}
package com.originspark.drp.models.users;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
/**
* 领导,即系统管理员
*/
@Entity
@Inheritance
@DiscriminatorValue("Leader")
public class Leader extends AbstractUser{
@Override
public String toString() {
return "Leader(系统管理员) => ["+super.toString()+"]";
}
}
package com.originspark.drp.models.users;
import java.util.List;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.OneToMany;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.projects.Project;
/**
* 材料员
*/
@Entity
@Inheritance
@DiscriminatorValue("MaterialKeeper")
public class MaterialKeeper extends AbstractUser{
@JsonIgnore
@OneToMany(mappedBy="materialKeeper")
private List<Project> projects;
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
@Override
public String toString() {
return "MaterialKeeper(材料员) => ["+super.toString()+"]";
}
}
package com.originspark.drp.models.users;
import java.util.List;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.OneToMany;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.projects.Project;
/**
* 项目经理
*/
@Entity
@Inheritance
@DiscriminatorValue("ProjectManager")
public class ProjectManager extends AbstractUser{
@JsonIgnore
@OneToMany(mappedBy="projectManager")
private List<Project> projects;
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
@Override
public String toString() {
return "ProjectManager(项目经理) => ["+super.toString()+"]";
}
}
package com.originspark.drp.models.users;
import java.util.List;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.OneToMany;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.projects.Project;
/**
* 仓库管理员
*/
@Entity
@Inheritance
@DiscriminatorValue("WareKeeper")
public class WareKeeper extends AbstractUser {
@JsonIgnore
@OneToMany(mappedBy="wareKeeper")
private List<Project> projects;
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
@Override
public String toString() {
return "WareKeeper(库管员) => ["+super.toString()+"]";
}
}
...@@ -2,31 +2,29 @@ package com.originspark.drp.processor; ...@@ -2,31 +2,29 @@ package com.originspark.drp.processor;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter;
public class UTF8StringBeanPostProcessor implements BeanPostProcessor { public class UTF8StringBeanPostProcessor implements BeanPostProcessor {
@Override @Override
public Object postProcessAfterInitialization(Object bean, String beanName) public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException { throws BeansException {
if(bean instanceof StringHttpMessageConverter){ if(bean instanceof StringHttpMessageConverter){
MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8")); MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8"));
List<MediaType> types = new ArrayList<MediaType>(); List<MediaType> types = new ArrayList<MediaType>();
types.add(mediaType); types.add(mediaType);
((StringHttpMessageConverter) bean).setSupportedMediaTypes(types); ((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
} }
return bean; return bean;
} }
@Override @Override
public Object postProcessBeforeInitialization(Object bean, String beanName) public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException { throws BeansException {
// do nothing // do nothing
return bean; return bean;
} }
}
} \ No newline at end of file
\ No newline at end of file
...@@ -2,9 +2,8 @@ package com.originspark.drp.service.account; ...@@ -2,9 +2,8 @@ package com.originspark.drp.service.account;
import java.util.List; import java.util.List;
import com.originspark.drp.models.users.AbstractUser; import com.originspark.drp.models.User;
public interface AccountService{ public interface AccountService{
public List<User> validate(String username,String password);
public List<AbstractUser> validate(String username,String password);
} }
...@@ -13,21 +13,21 @@ import javax.persistence.criteria.Root; ...@@ -13,21 +13,21 @@ import javax.persistence.criteria.Root;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.originspark.drp.models.users.AbstractUser; import com.originspark.drp.models.User;
import com.originspark.drp.util.enums.Status; import com.originspark.drp.util.enums.Status;
@Transactional @Transactional
@Service @Service("AccountService")
public class AccountServiceBean implements AccountService { public class AccountServiceBean implements AccountService {
@PersistenceContext @PersistenceContext
protected EntityManager em; protected EntityManager em;
@Override @Override
public List<AbstractUser> validate(String username, String password) { public List<User> validate(String username, String password) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<AbstractUser> dataQuery = cb.createQuery(AbstractUser.class); CriteriaQuery<User> dataQuery = cb.createQuery(User.class);
Root<AbstractUser> user = dataQuery.from(AbstractUser.class); Root<User> user = dataQuery.from(User.class);
dataQuery.select(user); dataQuery.select(user);
List<Predicate> criteria = new ArrayList<Predicate>(); List<Predicate> criteria = new ArrayList<Predicate>();
criteria.add(cb.equal(user.get("name"), username)); criteria.add(cb.equal(user.get("name"), username));
......
package com.originspark.drp.service.projects;
import java.util.List;
import java.util.Map;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI;
import com.originspark.drp.web.models.projects.inventories.Ware;
public interface ProjectService extends BaseDAO<Project>{
List<Project> treeViewData(List<FilterRequest> filters);
Map<String, String> validate();
Project findById(Long id);
List<CurrentInventoryUI> getCurrentInventories(Long systemId);
List<Ware> getMonthEndInventories(Long systemId,String formonth);
}
package com.originspark.drp.service.projects;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.originspark.drp.dao.BaseDAOSupport;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.projects.Project.COLUMNS;
import com.originspark.drp.util.StringUtil;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI;
import com.originspark.drp.web.models.projects.inventories.Ware;
@Transactional
@Service
public class ProjectServiceBean extends BaseDAOSupport<Project> implements ProjectService {
@Override
public Map<String, String> validate() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Project> treeViewData(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Project> dataQuery = cb.createQuery(Project.class);
Root<Project> project = dataQuery.from(Project.class);
dataQuery.select(project);
Predicate[] predicates = toPredicates(cb, project, filters);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}else{
dataQuery.where(cb.isNull(project.get("project")));
}
return em.createQuery(dataQuery).getResultList();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<Project> project,
List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
try {
for (FilterRequest filter : filters) {
COLUMNS column = COLUMNS.valueOf(filter.getProperty()
.toUpperCase());
String value = filter.getValue();
switch (column) {
case PROJECTMANAGER:
if (value != null && !value.equals("")) {
criteria.add(cb.equal(project.get("projectManager").<Long>get("id"),Long.parseLong(value)));
}
break;
case WAREKEEPER:
if (value != null && !value.equals("")) {
criteria.add(cb.equal(project.get("wareKeeper").<Long>get("id"),Long.parseLong(value)));
}
break;
case MATERIALKEEPER:
if (value != null && !value.equals("")) {
criteria.add(cb.equal(project.get("materialKeeper").<Long>get("id"),Long.parseLong(value)));
}
break;
case LEADER:
break;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
if (criteria.size() == 0) {
return null;
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
public Project getReferance(Long id){
return getReferance(Project.class, id);
}
@Override
public Project findById(Long id){
return findById(Project.class, id);
}
@SuppressWarnings("unchecked")
@Override
public List<CurrentInventoryUI> getCurrentInventories(Long systemId) {
String sql = "SELECT w.name,w.brand,w.model,w.unit,"
+ " cin.incount,cin.outcount"
+ " FROM wares as w,view_currentinventory cin"
+ " WHERE w.id = cin.ware AND cin.system = ?";
Query query = em.createNativeQuery(sql);
query.setParameter(1, systemId);
List<Object[]> res = query.getResultList();
List<CurrentInventoryUI> currentInventories = new ArrayList<CurrentInventoryUI>();
Object[] objAry;
for (int i = 0, length = res.size(); i < length; i++) {
CurrentInventoryUI inventory = new CurrentInventoryUI();
objAry = res.get(i);
inventory.setWareName(objAry[0]+"");
inventory.setWareBrand(objAry[1]+"");
inventory.setWareModel(objAry[2]+"");
inventory.setWareUnit(objAry[3]+"");
inventory.setCurrentStockIn(objAry[4]==null?BigDecimal.ZERO:(BigDecimal)objAry[4]);
inventory.setCurrentStockOut(objAry[5]==null?BigDecimal.ZERO:(BigDecimal)objAry[5]);
currentInventories.add(inventory);
}
return currentInventories;
}
@SuppressWarnings("unchecked")
public List<Ware> getMonthEndInventories(Long systemId,String formonth){
String sql = "SELECT w.name,w.brand,w.model,w.unit,t1.incount-IFNULL(t1.outcount,0) as lastMonthLeft,t2.incount,t2.outcount"
+ " FROM wares w,"
+ " (SELECT * FROM view_monthendinventory WHERE formonth= ?) as t1"
+ " RIGHT JOIN"
+ " (SELECT * FROM view_monthendinventory WHERE formonth= ?) as t2"
+ " ON t1.system=t2.system AND t1.ware=t2.ware"
+ " WHERE w.id = t2.ware and t2.system = ?";
Query query = em.createNativeQuery(sql);
query.setParameter(1, StringUtil.getPreMonth(formonth));
query.setParameter(2, formonth);
query.setParameter(3, systemId);
List<Object[]> res = query.getResultList();
List<Ware> monthEndInventories = new ArrayList<Ware>();
Object[] objAry;
for (int i = 0, length = res.size(); i < length; i++) {
Ware inventory = new Ware();
objAry = res.get(i);
inventory.setWareName(objAry[0]+"");
inventory.setWareBrand(objAry[1]+"");
inventory.setWareModel(objAry[2]+"");
inventory.setWareUnit(objAry[3]+"");
inventory.setLastMonthLeft(objAry[4]==null?BigDecimal.ZERO:(BigDecimal)objAry[4]);
inventory.setMonthIn(objAry[5]==null?BigDecimal.ZERO:(BigDecimal)objAry[5]);
inventory.setMonthOut(objAry[6]==null?BigDecimal.ZERO:(BigDecimal)objAry[6]);
monthEndInventories.add(inventory);
}
return monthEndInventories;
}
}
...@@ -21,49 +21,49 @@ import com.originspark.drp.util.json.FilterRequest; ...@@ -21,49 +21,49 @@ import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service("stockInCostService") @Service("stockInCostService")
public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implements public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implements
StockInCostService { StockInCostService {
@Override @Override
public List<StockInCost> pagedDataSet(int start, int limit, public List<StockInCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) { List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockInCost> dataQuery = cb.createQuery(StockInCost.class); CriteriaQuery<StockInCost> dataQuery = cb.createQuery(StockInCost.class);
Root<StockInCost> stockInCost = dataQuery.from(StockInCost.class); Root<StockInCost> stockInCost = dataQuery.from(StockInCost.class);
dataQuery.select(stockInCost); dataQuery.select(stockInCost);
Predicate[] predicates = toPredicates(cb, stockInCost, filters); Predicate[] predicates = toPredicates(cb, stockInCost, filters);
if (predicates != null) { if (predicates != null) {
dataQuery.where(cb.and(predicates)); dataQuery.where(cb.and(predicates));
} }
return em.createQuery(dataQuery).setFirstResult(start) return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList(); .setMaxResults(limit).getResultList();
} }
@Override @Override
public Long pagedDataCount(List<FilterRequest> filters) { public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class); CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockInCost> stockInCost = countQuery.from(StockInCost.class); Root<StockInCost> stockInCost = countQuery.from(StockInCost.class);
countQuery.select(cb.count(stockInCost)); countQuery.select(cb.count(stockInCost));
Predicate[] predicates = toPredicates(cb, stockInCost, filters); Predicate[] predicates = toPredicates(cb, stockInCost, filters);
if (predicates != null) { if (predicates != null) {
countQuery.where(cb.and(predicates)); countQuery.where(cb.and(predicates));
} }
return em.createQuery(countQuery).getSingleResult(); return em.createQuery(countQuery).getSingleResult();
} }
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockInCost> stockInCost, public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockInCost> stockInCost,
List<FilterRequest> filters) { List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>(); List<Predicate> criteria = new ArrayList<Predicate>();
try { try {
for (FilterRequest filter : filters) { for (FilterRequest filter : filters) {
COLUMNS column = COLUMNS.valueOf(filter.getProperty() COLUMNS column = COLUMNS.valueOf(filter.getProperty()
...@@ -83,22 +83,22 @@ public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implemen ...@@ -83,22 +83,22 @@ public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implemen
ex.printStackTrace(); ex.printStackTrace();
} }
if (criteria.size() == 0) { if (criteria.size() == 0) {
return null; return null;
} else { } else {
Predicate[] predicates = new Predicate[criteria.size()]; Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates); predicates = criteria.toArray(predicates);
return predicates; return predicates;
} }
} }
@Override @Override
public Map<String, String> validate() { public Map<String, String> validate() {
// TODO // TODO
/** /**
* 对ware的数据进行验证 * 对ware的数据进行验证
*/ */
return null; return null;
} }
} }
...@@ -21,49 +21,49 @@ import com.originspark.drp.util.json.FilterRequest; ...@@ -21,49 +21,49 @@ import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service("stockOutCostService") @Service("stockOutCostService")
public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implements public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implements
StockOutCostService { StockOutCostService {
@Override @Override
public List<StockOutCost> pagedDataSet(int start, int limit, public List<StockOutCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) { List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockOutCost> dataQuery = cb.createQuery(StockOutCost.class); CriteriaQuery<StockOutCost> dataQuery = cb.createQuery(StockOutCost.class);
Root<StockOutCost> stockOutCost = dataQuery.from(StockOutCost.class); Root<StockOutCost> stockOutCost = dataQuery.from(StockOutCost.class);
dataQuery.select(stockOutCost); dataQuery.select(stockOutCost);
Predicate[] predicates = toPredicates(cb, stockOutCost, filters); Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
if (predicates != null) { if (predicates != null) {
dataQuery.where(cb.and(predicates)); dataQuery.where(cb.and(predicates));
} }
return em.createQuery(dataQuery).setFirstResult(start) return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList(); .setMaxResults(limit).getResultList();
} }
@Override @Override
public Long pagedDataCount(List<FilterRequest> filters) { public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class); CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutCost> stockOutCost = countQuery.from(StockOutCost.class); Root<StockOutCost> stockOutCost = countQuery.from(StockOutCost.class);
countQuery.select(cb.count(stockOutCost)); countQuery.select(cb.count(stockOutCost));
Predicate[] predicates = toPredicates(cb, stockOutCost, filters); Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
if (predicates != null) { if (predicates != null) {
countQuery.where(cb.and(predicates)); countQuery.where(cb.and(predicates));
} }
return em.createQuery(countQuery).getSingleResult(); return em.createQuery(countQuery).getSingleResult();
} }
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockOutCost> stockOutCost, public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockOutCost> stockOutCost,
List<FilterRequest> filters) { List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>(); List<Predicate> criteria = new ArrayList<Predicate>();
try { try {
for (FilterRequest filter : filters) { for (FilterRequest filter : filters) {
COLUMNS column = COLUMNS.valueOf(filter.getProperty() COLUMNS column = COLUMNS.valueOf(filter.getProperty()
...@@ -83,22 +83,22 @@ public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implem ...@@ -83,22 +83,22 @@ public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implem
ex.printStackTrace(); ex.printStackTrace();
} }
if (criteria.size() == 0) { if (criteria.size() == 0) {
return null; return null;
} else { } else {
Predicate[] predicates = new Predicate[criteria.size()]; Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates); predicates = criteria.toArray(predicates);
return predicates; return predicates;
} }
} }
@Override @Override
public Map<String, String> validate() { public Map<String, String> validate() {
// TODO // TODO
/** /**
* 对ware的数据进行验证 * 对ware的数据进行验证
*/ */
return null; return null;
} }
} }
...@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest; ...@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest;
public interface StockInInvoiceService extends BaseDAO<StockInInvoice> { public interface StockInInvoiceService extends BaseDAO<StockInInvoice> {
List<StockInInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters); List<StockInInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters); Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(); Map<String, String> validate();
StockInInvoice findById(Long id); StockInInvoice findById(Long id);
} }
...@@ -24,7 +24,7 @@ import com.originspark.drp.util.enums.AuditState; ...@@ -24,7 +24,7 @@ import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service @Service("stockInInvoiceService")
public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> implements public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> implements
StockInInvoiceService { StockInInvoiceService {
...@@ -141,49 +141,19 @@ public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> im ...@@ -141,49 +141,19 @@ public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> im
andCriteria.add(cb.lessThanOrEqualTo(stockin.<BigDecimal>get("totalPrice"), maxTotal)); andCriteria.add(cb.lessThanOrEqualTo(stockin.<BigDecimal>get("totalPrice"), maxTotal));
} }
break; break;
case MATERIALKEEPERNAME: case REGULATORNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("materialKeeperName"), "%" + value + "%")); andCriteria.add(cb.like(stockin.<String>get("regulator"), "%" + value + "%"));
} }
break; break;
case WAREKEEPERNAME: case WAREKEEPERNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("wareKeeperName"), "%" + value + "%")); andCriteria.add(cb.like(stockin.<String>get("wareKeeper"), "%" + value + "%"));
} }
break; break;
case PROJECTMANAGERNAME: case MANAGERNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("projectManagerName"), "%" + value + "%")); andCriteria.add(cb.like(stockin.<String>get("manager"), "%" + value + "%"));
}
break;
case MATERIALKEEPERID:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("system").get("project").get("materialKeeper").<Long>get("id"), Long.valueOf(value)));
}
break;
case WAREKEEPERID:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("system").get("project").get("wareKeeper").<Long>get("id"), Long.valueOf(value)));
}
break;
case PROJECTMANAGERID:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("system").get("project").get("projectManager").<Long>get("id"), Long.valueOf(value)));
}
break;
case MATERIALKEEPERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("materialKeeperAuditState"),AuditState.valueOf(value)));
}
break;
case WAREKEEPERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("wareKeeperAuditState"),AuditState.valueOf(value)));
}
break;
case PROJECTMANAGERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockin.get("projectManagerAuditState"),AuditState.valueOf(value)));
} }
break; break;
case WARENAME: case WARENAME:
......
...@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest; ...@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest;
public interface StockOutInvoiceService extends BaseDAO<StockOutInvoice> { public interface StockOutInvoiceService extends BaseDAO<StockOutInvoice> {
List<StockOutInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters); List<StockOutInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters); Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(); Map<String, String> validate();
StockOutInvoice findById(Long id); StockOutInvoice findById(Long id);
} }
...@@ -24,26 +24,26 @@ import com.originspark.drp.util.enums.AuditState; ...@@ -24,26 +24,26 @@ import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service @Service("stockOutInvoiceService")
public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> implements public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> implements
StockOutInvoiceService { StockOutInvoiceService {
@Override @Override
public List<StockOutInvoice> pagedDataSet(int start, int limit, public List<StockOutInvoice> pagedDataSet(int start, int limit,
List<FilterRequest> filters) { List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockOutInvoice> dataQuery = cb.createQuery(StockOutInvoice.class); CriteriaQuery<StockOutInvoice> dataQuery = cb.createQuery(StockOutInvoice.class);
Root<StockOutInvoice> stockout = dataQuery.from(StockOutInvoice.class); Root<StockOutInvoice> stockout = dataQuery.from(StockOutInvoice.class);
dataQuery.select(stockout); dataQuery.select(stockout);
StockOutCost[] outCosts = findByWareName(filters); StockOutCost[] outCosts = findByWareName(filters);
if(outCosts == null){ if(outCosts == null){
return null; return null;
} }
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, outCosts); List<Predicate[]> predicates = toPredicates(cb, stockout, filters, outCosts);
if (predicates != null) { if (predicates != null) {
Predicate[] andPredicates = predicates.get(0); Predicate[] andPredicates = predicates.get(0);
...@@ -59,23 +59,23 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> ...@@ -59,23 +59,23 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
dataQuery.orderBy(cb.desc(stockout.get("forDate"))); dataQuery.orderBy(cb.desc(stockout.get("forDate")));
return em.createQuery(dataQuery).setFirstResult(start) return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList(); .setMaxResults(limit).getResultList();
} }
@Override @Override
public Long pagedDataCount(List<FilterRequest> filters) { public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class); CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutInvoice> stockout = countQuery.from(StockOutInvoice.class); Root<StockOutInvoice> stockout = countQuery.from(StockOutInvoice.class);
countQuery.select(cb.count(stockout)); countQuery.select(cb.count(stockout));
StockOutCost[] outCosts = findByWareName(filters); StockOutCost[] outCosts = findByWareName(filters);
if(outCosts == null){ if(outCosts == null){
return 0L; return 0L;
} }
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, findByWareName(filters)); List<Predicate[]> predicates = toPredicates(cb, stockout, filters, findByWareName(filters));
if (predicates != null) { if (predicates != null) {
Predicate[] andPredicates = predicates.get(0); Predicate[] andPredicates = predicates.get(0);
...@@ -89,10 +89,10 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> ...@@ -89,10 +89,10 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
} }
} }
return em.createQuery(countQuery).getSingleResult(); return em.createQuery(countQuery).getSingleResult();
} }
public static List<Predicate[]> toPredicates(CriteriaBuilder cb, Root<StockOutInvoice> stockout, public static List<Predicate[]> toPredicates(CriteriaBuilder cb, Root<StockOutInvoice> stockout,
List<FilterRequest> filters, StockOutCost...costs) { List<FilterRequest> filters, StockOutCost...costs) {
List<Predicate> andCriteria= new ArrayList<Predicate>(); List<Predicate> andCriteria= new ArrayList<Predicate>();
...@@ -141,49 +141,19 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> ...@@ -141,49 +141,19 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
andCriteria.add(cb.lessThanOrEqualTo(stockout.<BigDecimal>get("totalPrice"), maxTotal)); andCriteria.add(cb.lessThanOrEqualTo(stockout.<BigDecimal>get("totalPrice"), maxTotal));
} }
break; break;
case MATERIALKEEPERNAME: case REGULATORNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockout.<String>get("materialKeeperName"), "%" + value + "%")); andCriteria.add(cb.like(stockout.<String>get("regulator"), "%" + value + "%"));
} }
break; break;
case WAREKEEPERNAME: case WAREKEEPERNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockout.<String>get("wareKeeperName"), "%" + value + "%")); andCriteria.add(cb.like(stockout.<String>get("wareKeeper"), "%" + value + "%"));
}
break;
case PROJECTMANAGERNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockout.<String>get("projectManagerName"), "%" + value + "%"));
}
break;
case MATERIALKEEPERID:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("system").get("project").get("materialKeeper").<Long>get("id"), Long.valueOf(value)));
}
break;
case WAREKEEPERID:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("system").get("project").get("wareKeeper").<Long>get("id"), Long.valueOf(value)));
} }
break; break;
case PROJECTMANAGERID: case MANAGERNAME:
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("system").get("project").get("projectManager").<Long>get("id"), Long.valueOf(value))); andCriteria.add(cb.like(stockout.<String>get("manager"), "%" + value + "%"));
}
break;
case MATERIALKEEPERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("materialKeeperAuditState"),AuditState.valueOf(value)));
}
break;
case WAREKEEPERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("wareKeeperAuditState"),AuditState.valueOf(value)));
}
break;
case PROJECTMANAGERAUDITSTATE:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("projectManagerAuditState"),AuditState.valueOf(value)));
} }
break; break;
case RECEIVEMANNAME : case RECEIVEMANNAME :
...@@ -217,14 +187,14 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> ...@@ -217,14 +187,14 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
} }
} }
@Override @Override
public Map<String, String> validate() { public Map<String, String> validate() {
// TODO // TODO
/** /**
* 对ware的数据进行验证 * 对ware的数据进行验证
*/ */
return null; return null;
} }
@Override @Override
public StockOutInvoice findById(Long id) { public StockOutInvoice findById(Long id) {
......
...@@ -3,18 +3,21 @@ package com.originspark.drp.service.resources; ...@@ -3,18 +3,21 @@ package com.originspark.drp.service.resources;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO; import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.resources.Vendor; import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Service
public interface VendorService extends BaseDAO<Vendor>{ public interface VendorService extends BaseDAO<Vendor>{
List<Vendor> pagedDataSet(int start, int limit, List<FilterRequest> filters); List<Vendor> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters); Long pagedDataCount(List<FilterRequest> filters);
Map<String,String> validate(); Map<String,String> validate();
Vendor findByName(String name); Vendor findByName(String name);
} }
...@@ -17,7 +17,7 @@ import com.originspark.drp.models.resources.Vendor; ...@@ -17,7 +17,7 @@ import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.models.resources.Vendor.COLUMNS; import com.originspark.drp.models.resources.Vendor.COLUMNS;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Service @Service("vendorService")
public class VendorServiceBean extends BaseDAOSupport<Vendor> implements VendorService { public class VendorServiceBean extends BaseDAOSupport<Vendor> implements VendorService {
@Override @Override
......
package com.originspark.drp.service.resources;
import java.util.List;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.resources.WareCategory;
@Service
public interface WareCategoryService extends BaseDAO<WareCategory>{
List<WareCategory> treeViewData();
}
package com.originspark.drp.service.resources;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.originspark.drp.dao.BaseDAOSupport;
import com.originspark.drp.models.resources.WareCategory;
@Transactional
@Service("wareCategoryService")
public class WareCategoryServiceBean extends BaseDAOSupport<WareCategory> implements
WareCategoryService {
@Override
public List<WareCategory> treeViewData() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<WareCategory> dataQuery = cb.createQuery(WareCategory.class);
Root<WareCategory> category = dataQuery.from(WareCategory.class);
dataQuery.select(category);
dataQuery.where(cb.isNull(category.get("parent")));
return em.createQuery(dataQuery).getResultList();
}
}
...@@ -4,19 +4,22 @@ package com.originspark.drp.service.resources; ...@@ -4,19 +4,22 @@ package com.originspark.drp.service.resources;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO; import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.resources.Ware; import com.originspark.drp.models.resources.Ware;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Service
public interface WareService extends BaseDAO<Ware>{ public interface WareService extends BaseDAO<Ware>{
List<Ware> pagedDataSet(int start, int limit, List<FilterRequest> filters); List<Ware> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters); Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(Ware ware); Map<String, String> validate(Ware ware);
//判断该商品是否已经存在 //判断该商品是否已经存在
boolean have(Ware ware); boolean have(Ware ware);
} }
...@@ -23,119 +23,119 @@ import com.originspark.drp.models.resources.Ware.COLUMNS; ...@@ -23,119 +23,119 @@ import com.originspark.drp.models.resources.Ware.COLUMNS;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service @Service("wareService")
public class WareServiceBean extends BaseDAOSupport<Ware> implements public class WareServiceBean extends BaseDAOSupport<Ware> implements
WareService { WareService {
@Override @Override
public List<Ware> pagedDataSet(int start, int limit, public List<Ware> pagedDataSet(int start, int limit,
List<FilterRequest> filters) { List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Ware> dataQuery = cb.createQuery(Ware.class); CriteriaQuery<Ware> dataQuery = cb.createQuery(Ware.class);
Root<Ware> ware = dataQuery.from(Ware.class);
dataQuery.select(ware);
Predicate[] predicates = toPredicates(em,cb, ware, filters);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
dataQuery.orderBy(cb.desc(ware.get("id")));
Root<Ware> ware = dataQuery.from(Ware.class); return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
dataQuery.select(ware); @Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<Ware> ware = countQuery.from(Ware.class);
countQuery.select(cb.count(ware));
Predicate[] predicates = toPredicates(em,cb, ware, filters); Predicate[] predicates = toPredicates(em,cb, ware, filters);
if (predicates != null) { if (predicates != null) {
dataQuery.where(cb.and(predicates)); countQuery.where(cb.and(predicates));
} }
dataQuery.orderBy(cb.desc(ware.get("id"))); return em.createQuery(countQuery).getSingleResult();
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList(); public static Predicate[] toPredicates(EntityManager em,CriteriaBuilder cb, Root<Ware> ware,
} List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
@Override
public Long pagedDataCount(List<FilterRequest> filters) { try {
CriteriaBuilder cb = em.getCriteriaBuilder(); for (FilterRequest filter : filters) {
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<Ware> ware = countQuery.from(Ware.class); COLUMNS column = COLUMNS.valueOf(filter.getProperty()
countQuery.select(cb.count(ware)); .toUpperCase());
Predicate[] predicates = toPredicates(em,cb, ware, filters); String value = filter.getValue();
if (predicates != null) { switch (column) {
countQuery.where(cb.and(predicates)); case NAME:
} if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("name"), "%"+value+"%"));
return em.createQuery(countQuery).getSingleResult(); }
} break;
case BRAND:
public static Predicate[] toPredicates(EntityManager em,CriteriaBuilder cb, Root<Ware> ware, if(value != null && !value.equals("")){
List<FilterRequest> filters) { criteria.add(cb.like(ware.<String>get("brand"), "%"+value+"%"));
List<Predicate> criteria = new ArrayList<Predicate>(); }
break;
try { case MODEL:
for (FilterRequest filter : filters) { if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("model"), "%"+value+"%"));
COLUMNS column = COLUMNS.valueOf(filter.getProperty() }
.toUpperCase()); break;
case UNIT:
String value = filter.getValue(); if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("unit"), "%"+value+"%"));
switch (column) { }
case NAME: break;
if(value != null && !value.equals("")){ case VENDOR:
criteria.add(cb.like(ware.<String>get("name"), "%"+value+"%")); if(value != null && !value.equals("")){
} criteria.add(cb.like(ware.get("vendor").<String>get("name"), "%"+value+"%"));
break; }
case BRAND: break;
if(value != null && !value.equals("")){ }
criteria.add(cb.like(ware.<String>get("brand"), "%"+value+"%"));
} }
break; } catch (Exception ex) {
case MODEL: ex.printStackTrace();
if(value != null && !value.equals("")){ }
criteria.add(cb.like(ware.<String>get("model"), "%"+value+"%"));
} if (criteria.size() == 0) {
break; return null;
case UNIT: } else {
if(value != null && !value.equals("")){ Predicate[] predicates = new Predicate[criteria.size()];
criteria.add(cb.like(ware.<String>get("unit"), "%"+value+"%")); predicates = criteria.toArray(predicates);
} return predicates;
break; }
case VENDOR: }
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.get("vendor").<String>get("name"), "%"+value+"%")); @Override
} public Map<String, String> validate(Ware ware) {
break;
} Map<String, String> validations = new HashMap<String,String>();
} String name = ware.getName();
} catch (Exception ex) { if(name == null || name.trim().equals("")){
ex.printStackTrace(); validations.put("name", "名称不能为空");
} }
if (criteria.size() == 0) { String unit = ware.getUnit();
return null; if(unit == null || unit.trim().equals("")){
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
@Override
public Map<String, String> validate(Ware ware) {
Map<String, String> validations = new HashMap<String,String>();
String name = ware.getName();
if(name == null || name.trim().equals("")){
validations.put("name", "名称不能为空");
}
String unit = ware.getUnit();
if(unit == null || unit.trim().equals("")){
validations.put("unit", "单位不能为空"); validations.put("unit", "单位不能为空");
} }
return validations; return validations;
} }
@Override @Override
public boolean have(Ware ware) { public boolean have(Ware ware) {
......
...@@ -2,16 +2,20 @@ package com.originspark.drp.service.users; ...@@ -2,16 +2,20 @@ package com.originspark.drp.service.users;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO; import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.users.AbstractUser; import com.originspark.drp.models.User;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
public interface UserService extends BaseDAO<AbstractUser>{ @Service
public interface UserService extends BaseDAO<User>{
List<AbstractUser> pagedDataSet(int start, int limit,List<FilterRequest> filters);
List<User> pagedDataSet(int start, int limit,List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters); Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(); Map<String, String> validate();
} }
...@@ -13,23 +13,23 @@ import org.springframework.stereotype.Service; ...@@ -13,23 +13,23 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.originspark.drp.dao.BaseDAOSupport; import com.originspark.drp.dao.BaseDAOSupport;
import com.originspark.drp.models.users.AbstractUser; import com.originspark.drp.models.User;
import com.originspark.drp.models.users.AbstractUser.COLUMNS; import com.originspark.drp.models.User.COLUMNS;
import com.originspark.drp.util.enums.Gender; import com.originspark.drp.util.enums.Gender;
import com.originspark.drp.util.enums.Status; import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.FilterRequest; import com.originspark.drp.util.json.FilterRequest;
@Transactional @Transactional
@Service @Service("userService")
public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements UserService { public class UserServiceBean extends BaseDAOSupport<User> implements UserService {
@Override @Override
public List<AbstractUser> pagedDataSet(int start, int limit,List<FilterRequest> filters) { public List<User> pagedDataSet(int start, int limit,List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<AbstractUser> dataQuery = cb.createQuery(AbstractUser.class); CriteriaQuery<User> dataQuery = cb.createQuery(User.class);
Root<AbstractUser> user = dataQuery.from(AbstractUser.class); Root<User> user = dataQuery.from(User.class);
dataQuery.select(user); dataQuery.select(user);
...@@ -47,7 +47,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use ...@@ -47,7 +47,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use
public Long pagedDataCount(List<FilterRequest> filters) { public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class); CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<AbstractUser> user = countQuery.from(AbstractUser.class); Root<User> user = countQuery.from(User.class);
countQuery.select(cb.count(user)); countQuery.select(cb.count(user));
Predicate[] predicates = toPredicates(cb, user, filters); Predicate[] predicates = toPredicates(cb, user, filters);
...@@ -65,7 +65,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use ...@@ -65,7 +65,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use
return null; return null;
} }
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<AbstractUser> user, public static Predicate[] toPredicates(CriteriaBuilder cb, Root<User> user,
List<FilterRequest> filters) { List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>(); List<Predicate> criteria = new ArrayList<Predicate>();
......
package com.originspark.drp.util;
import java.io.File;
import java.io.FilenameFilter;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
public class AuthUtil {
private static Set<String> classNames = new HashSet<String>();
@SuppressWarnings({"rawtypes", "unchecked"})
public static Map<RoleEnum,Set<String>> initAuth(final String packageName) {
//初始化获取所有的controller.class
getClassNamesByPackage(packageName);
try {
Map<RoleEnum,Set<String>> auths = new HashMap<RoleEnum, Set<String>>();
for(String className : classNames){
Class clazz = Class.forName(className);
//先检查类是否被标记了annotation=AuthRoleGroup
if(clazz.isAnnotationPresent(AuthRoleGroup.class)){
AuthRoleGroup roleGroup = (AuthRoleGroup) clazz.getAnnotation(AuthRoleGroup.class);
RoleEnum[] types = roleGroup.type();
for(RoleEnum role : types){
Set<String> actions = auths.get(role);
if(actions==null) {
actions = new HashSet<String>();
auths.put(role, actions);
}
//检查该类的每个方法
Method[] methods = clazz.getDeclaredMethods();
for(Method method : methods){
actions.add(className+"."+method.getName());
//判断该方法上是否有额外的权限限制说明
if(method.isAnnotationPresent(AuthRoleGroup.class)){
AuthRoleGroup roleGroup2 = method.getAnnotation(AuthRoleGroup.class);
RoleEnum[] types2 = roleGroup2.type();
for(RoleEnum role2 : types2){
Set<String> actions2 = auths.get(role2);
if(actions2 == null) {
actions2 = new HashSet<String>();
auths.put(role2, actions2);
}
actions2.add(className+"."+method.getName());
}
}
}
}
}
}
return auths;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据所给的包名遍历获取下属的所有class
* @param packageName
*/
private static void getClassNamesByPackage(final String packageName) {
String packageRealName = packageName.replace(".", "/");
String packagePath = AuthUtil.class.getClassLoader().getResource(packageRealName).getPath();
File file = new File(packagePath);
file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".class")){
String className = name.substring(0,name.lastIndexOf(".class"));
classNames.add(packageName + "." + className);
return true;
}else{
getClassNamesByPackage(packageName+"."+name);
return false;
}
}
});
}
}
...@@ -37,13 +37,13 @@ public class Blowfish { ...@@ -37,13 +37,13 @@ public class Blowfish {
// hash down the password to a 160bit key // hash down the password to a 160bit key
MessageDigest digest = null; MessageDigest digest = null;
try { try {
String password="fc4e6e4090e9edfe4dcff438d095954d"; String password="fc4e6e4090e9edfe4dcff438d095954d";
digest = MessageDigest.getInstance("SHA1"); digest = MessageDigest.getInstance("SHA1");
digest.update(password.getBytes()); digest.update(password.getBytes());
} }
catch (Exception e) { catch (Exception e) {
// Log.error(e); // Log.error(e);
e.printStackTrace(); e.printStackTrace();
} }
// setup the encryptor (use a dummy IV) // setup the encryptor (use a dummy IV)
......
package com.originspark.drp.util; package com.originspark.drp.util;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.originspark.drp.models.users.AbstractUser; import com.originspark.drp.models.User;
public class SessionUtil { public class SessionUtil {
//返回当前登陆的用户信息 //返回当前登陆的用户信息
public static AbstractUser getCurrentUser(HttpServletRequest request){ public static User getCurrentUser(HttpServletRequest request){
AbstractUser user=(AbstractUser) request.getSession().getAttribute("user"); User user=(User) request.getSession().getAttribute("user");
return user; return user;
} }
public static String getCurrentUserName(HttpServletRequest request){ public static String getCurrentUserName(HttpServletRequest request){
return getCurrentUser(request).getName(); return getCurrentUser(request).getName();
} }
......
...@@ -5,6 +5,6 @@ package com.originspark.drp.util.enums; ...@@ -5,6 +5,6 @@ package com.originspark.drp.util.enums;
*/ */
public enum AuditState { public enum AuditState {
UNAUDITED ,//未审核 UNAUDITED ,//未审核
APPROVED,//合格通过 APPROVED,//合格通过
UNAPPROVED//不合格退回,当库管或者项目经理选择失败退回后,材料员的审核状态更改为UNAPPROVED UNAPPROVED//不合格退回,当库管或者项目经理选择失败退回后,材料员的审核状态更改为UNAPPROVED
} }
package com.originspark.drp.util.enums; package com.originspark.drp.util.enums;
public enum Gender { public enum Gender {
MALE, MALE,
FEMALE FEMALE
} }
package com.originspark.drp.util.enums; package com.originspark.drp.util.enums;
public enum Status { public enum Status {
ACTIVE, //可用的 ACTIVE, //可用的
INACTIVE, //不可用的 INACTIVE, //不可用的
DESTORYED //销毁的 DESTORYED //销毁的
} }
package com.originspark.drp.util.enums;
public enum UserType {
MANAGER,// 负责人
WAREKEEPER,// 库管员
REGULATOR// 经手人
}
package com.originspark.drp.util.extjs.menu.controllers;
import java.util.ArrayList;
import java.util.List;
import com.originspark.drp.util.extjs.menu.models.Children;
import com.originspark.drp.util.extjs.menu.models.Item;
import com.originspark.drp.util.extjs.menu.models.SubItems;
import com.originspark.drp.util.extjs.menu.models.TreeRoot;
public class ExtMenuController {
// 实时库存
static final Children menu_current_inventory = new Children(fontBlod("实时库存"), "menu_current_inventory");
// 月末盘点
static final Children menu_monthend_inventory = new Children(fontBlod("月末盘点"), "menu_monthend_inventory");
// 入库
static final Children menu_stockin = new Children(fontBlod("入库单管理"), "menu_stockin");
// 出库
static final Children menu_stockout = new Children(fontBlod("出库单管理"), "menu_stockout");
// 项目
static final Children menu_project = new Children(fontBlod("项目管理"), "menu_project");
// 材料员
static final Children menu_materialkeeper = new Children(fontBlod("材料员"), "menu_materialkeeper");
// 库管员
static final Children menu_warekeeper = new Children(fontBlod("库管员"), "menu_warekeeper");
// 项目经理
static final Children menu_projectmanager = new Children(fontBlod("项目经理"), "menu_projectmanager");
// 领导
static final Children menu_leader = new Children(fontBlod("系统管理员"), "menu_leader");
// 商品
static final Children menu_ware = new Children(fontBlod("商品"), "menu_ware");
// 供应商
static final Children menu_vendor = new Children(fontBlod("供应商"), "menu_vendor");
// 修改密码
static final Children menu_update_password = new Children(fontBlod("修改密码"), "menu_update_password");
public static List<Item> getMenusByUserType(String type) {
if (type.equals("Leader")) {
return createLeaderMenus();
} else if (type.equals("ProjectManager")) {
return createProjectManagerMenus();
} else if (type.equals("WareKeeper")) {
return createWareKeeperMenus();
} else if (type.equals("MaterialKeeper")) {
return createMaterialKeeperMenus();
} else {
return null;
}
}
private static List<Item> createMaterialKeeperMenus() {
return createProjectManagerMenus();
}
private static List<Item> createWareKeeperMenus() {
List<Item> items = new ArrayList<Item>();
items.add(buildInventories(menu_current_inventory));
items.add(buildDefaultInvoices());
items.add(buildDefaultDetails());
return items;
}
private static List<Item> createProjectManagerMenus() {
List<Item> items = new ArrayList<Item>();
items.add(buildDefaultInventories());
items.add(buildDefaultInvoices());
items.add(buildSystems(menu_ware,menu_vendor));
items.add(buildDefaultDetails());
return items;
}
private static List<Item> createLeaderMenus() {
List<Item> items = new ArrayList<Item>();
items.add(buildDefaultInventories());
items.add(buildDefaultInvoices());
items.add(buildDefaultSystems());
items.add(buildDefaultDetails());
return items;
}
// =====库存查看
private static Item buildDefaultInventories() {
return buildInventories(menu_current_inventory,menu_monthend_inventory);
}
private static Item buildInventories(Children... children) {
TreeRoot root_inventories = new TreeRoot(children);
SubItems items_inventories = new SubItems(root_inventories);
Item item_inventories = new Item(fontBlod("库存查看"), new SubItems[] {
items_inventories
});
return item_inventories;
}
// =====出入库管理
private static Item buildDefaultInvoices(){
return buildInvoices(menu_stockin,menu_stockout);
}
private static Item buildInvoices(Children... children) {
TreeRoot root_invoices = new TreeRoot(children);
SubItems items_invoices = new SubItems(root_invoices);
Item item_invoices = new Item(fontBlod("出入库管理"), new SubItems[] {
items_invoices
});
return item_invoices;
}
//=====系统管理
private static Item buildDefaultSystems(){
return buildSystems(menu_project,buildDefaultUsers(),buildDefaultWares());
}
private static Item buildSystems(Children... children) {
TreeRoot root_system = new TreeRoot(children);
SubItems items_system = new SubItems(root_system);
Item item_system = new Item(fontBlod("系统管理"), new SubItems[]{items_system});
return item_system;
}
private static Children buildDefaultUsers() {
return buildUsers(menu_materialkeeper,menu_warekeeper,menu_projectmanager,menu_leader);
}
private static Children buildUsers(Children... children) {
return new Children(fontBlod("用户管理"), children);
}
private static final Children buildDefaultWares(Children... children) {
return buildWares(menu_ware,menu_vendor);
}
private static final Children buildWares(Children... children) {
return new Children(fontBlod("商品管理"), children);
}
//=====个人信息设置
private static Item buildDetails(Children... children) {
TreeRoot root_detail = new TreeRoot(children);
SubItems items_detail = new SubItems(root_detail);
Item item_detail = new Item(fontBlod("个人信息设置"), new SubItems[]{items_detail});
return item_detail;
}
private static Item buildDefaultDetails(){
return buildDetails(menu_update_password);
}
private static String fontBlod(String text) {
return "<span style='font-weight:bold'>" + text + "</span>";
}
}
...@@ -2,14 +2,14 @@ package com.originspark.drp.util.json; ...@@ -2,14 +2,14 @@ package com.originspark.drp.util.json;
public class IdsJson { public class IdsJson {
private long ids[]; private long ids[];
public long[] getIds() { public long[] getIds() {
return ids; return ids;
} }
public void setIds(long[] ids) { public void setIds(long[] ids) {
this.ids = ids; this.ids = ids;
} }
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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