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;
import java.util.List;
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.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.StockOutInvoiceService;
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.users.UserService;
import com.originspark.drp.util.json.Jackson;
public abstract class AbstractController {
public class BaseController extends HandlerInterceptorAdapter {
@Autowired
protected UserService userService;
@Autowired
protected WareService wareService;
@Autowired
protected VendorService vendorService;
protected WareCategoryService wareCategoryService;
@Autowired
protected ProjectService projectService;
protected VendorService vendorService;
@Autowired
protected StockInInvoiceService stockInInvoiceService;
@Autowired
protected StockOutInvoiceService stockOutInvoiceService;
//一般用于create、update、delete的返回值
protected final static String ok(String message){
private static final ThreadLocal<HttpServletRequest> REQUEST = new ThreadLocal<HttpServletRequest>();
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);
modelMap.put("success", "true");
modelMap.put("message", message);
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);
modelMap.put("success", "true");
modelMap.put("message", message);
modelMap.put("object", object);
return Jackson.toJson(modelMap);
}
//一般用于list分页数据的返回值
// 一般用于list分页数据的返回值
@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);
modelMap.put("success", "true");
modelMap.put("data", items);
modelMap.put("total", total);
return Jackson.toJson(modelMap);
}
//一般用于list不分页的返回值
// 一般用于list不分页的返回值
@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);
modelMap.put("success", "true");
modelMap.put("data", items);
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);
modelMap.put("success", "false");
modelMap.put("message", message);
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;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
@Controller
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public class MainController {
@RequestMapping("index")
public String index(){
return "index";
}
@RequestMapping(value="main",method=RequestMethod.GET)
public String main(){
return "main";
}
@RequestMapping("index")
public String index(){
return "index";
}
@RequestMapping(value="main",method=RequestMethod.GET)
public String main(){
return "main";
}
}
package com.originspark.drp.controllers;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.User;
import com.originspark.drp.util.Blowfish;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.PasswordJson;
@Controller
@RequestMapping("profile")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public class ProfileController extends AbstractController {
public class ProfileController extends BaseController {
@RequestMapping(value="/updatepassword",method = RequestMethod.GET)
@RequestMapping(value="/password/update",method = RequestMethod.GET)
@ResponseBody
public String updatePassword(@RequestParam String data,HttpServletRequest request){
public String updatePassword(@RequestParam String data){
System.out.println(request().getSession());
ObjectMapper mapper = new ObjectMapper();
try {
PasswordJson json = mapper.readValue(data,PasswordJson.class);
PasswordJson json = mapper.readValue(data, PasswordJson.class);
if(!json.getNewpwd().equals(json.getNewpwdagain())){
return failure("修改失败,密码两次输入不一致");
}
AbstractUser user = SessionUtil.getCurrentUser(request);
Blowfish bf=new Blowfish();
if(!json.getPwd().equals(bf.decryptString(user.getPassword()))){
User user = SessionUtil.getCurrentUser(request());
Blowfish bf = new Blowfish();
String pwd = bf.decryptString(user.getPassword());
if(!json.getPwd().equals(pwd)){
return failure("修改失败,请输入正确的原始密码");
}
user.setPassword(json.getNewpwd());
userService.update(user);
} catch (Exception e) {
e.printStackTrace();
return failure("系统出现异常,修改失败");
}
return ok("密码修改成功");
}
}
package com.originspark.drp.controllers.users;
package com.originspark.drp.controllers;
import java.util.ArrayList;
import java.util.List;
......@@ -14,76 +14,72 @@ 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.Leader;
import com.originspark.drp.models.User;
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.IdsJson;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("leader")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class LeaderController extends AbstractController {
@RequestMapping("users")
public class UserController extends BaseController {
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody Leader leader) {
leader.setPassword("123456");
userService.save(leader);
public String create(@RequestBody User user) {
user.setPassword("123456");
userService.save(user);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
AbstractUser leader = userService.findById(AbstractUser.class, id);
User leader = userService.findById(User.class, id);
leader.setStatus(Status.DESTORYED);
userService.update(leader);
return ok("注销成功");
}
@RequestMapping(value= "/deleteBatch",method = RequestMethod.GET)
@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 leader = userService.findById(AbstractUser.class, id);
leader.setStatus(Status.DESTORYED);
userService.update(leader);
}
return ok("注销成功");
}
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()){
User leader = userService.findById(User.class, id);
leader.setStatus(Status.DESTORYED);
userService.update(leader);
}
return ok("注销成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@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) {
return failure("您要更新的领导不存在");
}
existingLeader.setName(leader.getName());
existingLeader.setCode(leader.getCode());
existingLeader.setGender(leader.getGender());
existingLeader.setPhone(leader.getPhone());
existingLeader.setAddress(leader.getAddress());
existingLeader.setEmail(leader.getEmail());
existingLeader.setStatus(leader.getStatus());
existingLeader.setName(user.getName());
existingLeader.setCode(user.getCode());
existingLeader.setGender(user.getGender());
existingLeader.setPhone(user.getPhone());
existingLeader.setAddress(user.getAddress());
existingLeader.setEmail(user.getEmail());
existingLeader.setStatus(user.getStatus());
userService.update(existingLeader);
return ok("更新成功");
}
......@@ -100,10 +96,9 @@ public class LeaderController extends AbstractController {
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);
return ok(data, count);
}
}
......@@ -2,11 +2,9 @@ package com.originspark.drp.controllers.account;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
// import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
......@@ -17,27 +15,25 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.models.User;
import com.originspark.drp.service.account.AccountService;
import com.originspark.drp.util.Blowfish;
@Controller
@RequestMapping("account")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER,RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public class AccountController {
public class AccountController extends BaseController {
@Autowired
private AccountService service;
private Logger logger = Logger.getLogger(AccountController.class);
@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();
Blowfish bf = new Blowfish();
List<AbstractUser> users = service.validate(username, password);
List<User> users = service.validate(username, password);
if (users.size() == 0) {
mav.setViewName("index");
mav.addObject("msg", "该用户不存在!");
......@@ -45,17 +41,11 @@ public class AccountController {
int i;
for (i = 0; i < users.size(); i++) {
if (bf.decryptString(users.get(i).getPassword()).equals(password)) {
AbstractUser user = users.get(i);
//将当前登录用户的信息存入session
User user = users.get(i);
// 将当前登录用户的信息存入session
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");
logger.info("用户 "+user.getName()+" 登录系统,时间:"+new Date());
logger.info("用户 " + user.getName() + " 登录系统,时间:" + new Date());
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;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -14,9 +14,7 @@ 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.controllers.BaseController;
import com.originspark.drp.models.projects.costs.StockInCost;
import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.service.projects.costs.StockInCostService;
......@@ -26,86 +24,84 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockInCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockInCostController extends AbstractController{
@Autowired
private StockInCostService service;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInInvoice invoiceUI = stockInCost.getInvoice();
if(invoiceUI == null){
return failure("所选入库单不能为空");
}
StockInInvoice invoice = stockInInvoiceService.findById(invoiceUI.getId());
if(invoice == null){
return failure("你所选择的入库单不存在,请重新选择");
}
//检查该商品是否已经存在
boolean have = false;
for(StockInCost cost : invoice.getCosts()){
if(cost.getWare().getId() == stockInCost.getWare().getId()){
have = true;
break;
}
}
if(have){
return failure("抱歉,不能重复添加商品");
}
stockInCost.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
service.save(stockInCost);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
StockInCost stockInCost = service.findById(StockInCost.class, id);
service.delete(stockInCost);
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInCost existingStockInCost = service.findById(StockInCost.class, id);
if (existingStockInCost == null) {
return failure("您要更新的商品不存在");
}
existingStockInCost.setUnitPrice(stockInCost.getUnitPrice());
existingStockInCost.setQuantity(stockInCost.getQuantity());
existingStockInCost.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
service.update(existingStockInCost);
return ok("更新成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockInCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters);
return ok(data, count);
}
public class StockInCostController extends BaseController{
@Resource
private StockInCostService service;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInInvoice invoiceUI = stockInCost.getInvoice();
if(invoiceUI == null){
return failure("所选入库单不能为空");
}
StockInInvoice invoice = stockInInvoiceService.findById(invoiceUI.getId());
if(invoice == null){
return failure("你所选择的入库单不存在,请重新选择");
}
//检查该商品是否已经存在
boolean have = false;
for(StockInCost cost : invoice.getCosts()){
if(cost.getWare().getId() == stockInCost.getWare().getId()){
have = true;
break;
}
}
if(have){
return failure("抱歉,不能重复添加商品");
}
stockInCost.setCreatedBy(SessionUtil.getCurrentUserName(request));
service.save(stockInCost);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
StockInCost stockInCost = service.findById(StockInCost.class, id);
service.delete(stockInCost);
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockInCost stockInCost,HttpServletRequest request) {
StockInCost existingStockInCost = service.findById(StockInCost.class, id);
if (existingStockInCost == null) {
return failure("您要更新的商品不存在");
}
existingStockInCost.setUnitPrice(stockInCost.getUnitPrice());
existingStockInCost.setQuantity(stockInCost.getQuantity());
existingStockInCost.setUpdatedBy(SessionUtil.getCurrentUserName(request));
service.update(existingStockInCost);
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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockInCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters);
return ok(data, count);
}
}
......@@ -3,9 +3,9 @@ package com.originspark.drp.controllers.projects.costs;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -14,9 +14,7 @@ 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.controllers.BaseController;
import com.originspark.drp.models.projects.costs.StockOutCost;
import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.service.projects.costs.StockOutCostService;
......@@ -26,17 +24,16 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockOutCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockOutCostController extends AbstractController{
@Autowired
private StockOutCostService service;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutInvoice invoiceUI = stockOutCost.getInvoice();
public class StockOutCostController extends BaseController{
@Resource
private StockOutCostService service;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutInvoice invoiceUI = stockOutCost.getInvoice();
if(invoiceUI == null){
return failure("所选出库单不能为空");
}
......@@ -58,54 +55,53 @@ public class StockOutCostController extends AbstractController{
if(have){
return failure("抱歉,不能重复添加商品");
}
stockOutCost.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
service.save(stockOutCost);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
StockOutCost stockOutCost = service.findById(StockOutCost.class, id);
service.delete(stockOutCost);
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutCost existingStockOutCost = service.findById(StockOutCost.class, id);
if (existingStockOutCost == null) {
return failure("您要更新的商品不存在");
}
existingStockOutCost.setQuantity(stockOutCost.getQuantity());
existingStockOutCost.setUnitPrice(stockOutCost.getUnitPrice());
existingStockOutCost.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
service.update(existingStockOutCost);
return ok("更新成功");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockOutCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters);
return ok(data, count);
}
stockOutCost.setCreatedBy(SessionUtil.getCurrentUserName(request));
service.save(stockOutCost);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
StockOutCost stockOutCost = service.findById(StockOutCost.class, id);
service.delete(stockOutCost);
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockOutCost stockOutCost,HttpServletRequest request) {
StockOutCost existingStockOutCost = service.findById(StockOutCost.class, id);
if (existingStockOutCost == null) {
return failure("您要更新的商品不存在");
}
existingStockOutCost.setQuantity(stockOutCost.getQuantity());
existingStockOutCost.setUnitPrice(stockOutCost.getUnitPrice());
existingStockOutCost.setUpdatedBy(SessionUtil.getCurrentUserName(request));
service.update(existingStockOutCost);
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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockOutCost> data = service.pagedDataSet(start, limit,filters);
Long count = service.pagedDataCount(filters);
return ok(data, count);
}
}
......@@ -18,10 +18,7 @@ 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.controllers.BaseController;
import com.originspark.drp.util.FileUtil;
import com.originspark.drp.util.poi.exporter.MonthendInventoryGenerator;
import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI;
......@@ -29,10 +26,9 @@ import com.originspark.drp.web.models.projects.inventories.Ware;
@Controller
@RequestMapping("project")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class InventoryController extends AbstractController {
public class InventoryController extends BaseController {
@RequestMapping(value = "/{id}/inventories/current", method = RequestMethod.GET)
/*@RequestMapping(value = "/{id}/inventories/current", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String currentInventories(@PathVariable Long id){
......@@ -105,5 +101,5 @@ public class InventoryController extends AbstractController {
throw new RuntimeException("IOError writing file to output stream");
}
}
}
}*/
}
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.util.enums.AuditState;
public class AbstractInvoiceController extends AbstractController {
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);
}
}
}
}
public class AbstractInvoiceController extends BaseController {
}
......@@ -15,11 +15,7 @@ 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.models.projects.Project;
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.enums.AuditState;
import com.originspark.drp.util.json.AuditStateUpdateJson;
......@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockInInvoice")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockInInvoiceController extends AbstractInvoiceController {
private Logger logger = Logger.getLogger(StockInInvoiceController.class);
@RequestMapping(method = RequestMethod.POST)
/*@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockInInvoice invoice,HttpServletRequest request) {
......@@ -85,11 +80,10 @@ public class StockInInvoiceController extends AbstractInvoiceController {
stockInInvoiceService.update(existingInvoice);
return ok("更新成功",existingInvoice.getId());
}
}*/
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@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>();
......@@ -136,9 +130,8 @@ public class StockInInvoiceController extends AbstractInvoiceController {
return ok("删除成功(注释:部分合价不为0的入库单已忽略)");
}
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
/*@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data");
......@@ -176,7 +169,7 @@ public class StockInInvoiceController extends AbstractInvoiceController {
}
return ok("提交成功");
}
}*/
}
......@@ -15,11 +15,7 @@ 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.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.users.AbstractUser;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.AuditStateUpdateJson;
......@@ -29,12 +25,11 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockOutInvoice")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockOutInvoiceController extends AbstractInvoiceController {
private Logger logger = Logger.getLogger(StockOutInvoiceController.class);
@RequestMapping(method = RequestMethod.POST)
/* @RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody StockOutInvoice invoice,HttpServletRequest request) {
......@@ -114,11 +109,10 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
stockOutInvoiceService.update(existingInvoice);
return ok("更新成功", existingInvoice.getId());
}
}*/
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@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>();
......@@ -133,9 +127,8 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
return ok(data, count);
}
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
/*@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data");
......@@ -173,5 +166,5 @@ public class StockOutInvoiceController extends AbstractInvoiceController {
}
return ok("提交成功");
}
}*/
}
......@@ -15,9 +15,7 @@ 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.controllers.BaseController;
import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.IdsJson;
......@@ -26,8 +24,7 @@ import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("vendor")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class VendorController extends AbstractController {
public class VendorController extends BaseController {
private Logger logger = Logger.getLogger(VendorController.class);
......@@ -46,7 +43,7 @@ public class VendorController extends AbstractController {
return failure("该供应商已经存在,不可重复添加");
}
vendor.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
vendor.setCreatedBy(SessionUtil.getCurrentUserName(request));
vendorService.save(vendor);
logger.info(">添加成功:"+vendor.toString());
......@@ -97,18 +94,14 @@ public class VendorController extends AbstractController {
logger.warn(">更新失败:该供应商已经存在,不可重复添加");
return failure("该供应商已经存在,不可重复添加");
}
existingVendor.setName(vendor.getName());
existingVendor.setContactMan(vendor.getContactMan());
existingVendor.setAddress(vendor.getAddress());
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.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
existingVendor.setUpdatedBy(SessionUtil.getCurrentUserName(request));
vendorService.update(existingVendor);
logger.info(">更新成功:"+existingVendor.toString());
......@@ -117,7 +110,6 @@ public class VendorController extends AbstractController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) {
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;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.originspark.drp.authority.AuthRoleGroup;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.controllers.AbstractController;
import com.originspark.drp.controllers.BaseController;
import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.models.resources.Ware;
import com.originspark.drp.util.FileUtil;
......@@ -40,8 +38,7 @@ import com.originspark.drp.util.poi.importer.WareImporter;
@Controller
@RequestMapping("ware")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class WareController extends AbstractController {
public class WareController extends BaseController {
private Logger logger = Logger.getLogger(WareController.class);
......@@ -68,7 +65,7 @@ public class WareController extends AbstractController {
}
//save
ware.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
ware.setCreatedBy(SessionUtil.getCurrentUserName(request));
Ware savedWare = wareService.save(ware);
logger.info(">添加成功:"+savedWare.toString());
......@@ -135,7 +132,7 @@ public class WareController extends AbstractController {
existingWare.setNote(ware.getNote());
existingWare.setVendor(ware.getVendor());
existingWare.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
existingWare.setUpdatedBy(SessionUtil.getCurrentUserName(request));
wareService.update(existingWare);
logger.info(">更新成功:"+existingWare.toString());
......@@ -144,7 +141,6 @@ public class WareController extends AbstractController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String list(@RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter, HttpServletRequest request) {
List<FilterRequest> filters = new ArrayList<FilterRequest>();
......@@ -158,7 +154,7 @@ public class WareController extends AbstractController {
return ok(data, count);
}
// 参考http://www.360doc.com/content/12/1219/17/7471983_255118342.shtml
@RequestMapping(value = "/uploadExcel", method = RequestMethod.POST)
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;
@Transactional
public abstract class BaseDAOSupport<T> implements BaseDAO<T>{
@PersistenceContext
protected EntityManager em;
@PersistenceContext
protected EntityManager em;
public void delete(T entity) {
em.remove(entity);
em.remove(entity);
}
@Transactional(readOnly=true)
public T findById(Class<T> c,Long id) {
return em.find(c, id);
return em.find(c, id);
}
public T save(T entity) {
em.persist(entity);
return entity;
em.persist(entity);
return entity;
}
public T update(T entity) {
return em.merge(entity);
return em.merge(entity);
}
@Transactional(readOnly=true)
......
......@@ -3,96 +3,117 @@ package com.originspark.drp.models;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import com.originspark.drp.util.enums.Status;
import com.sun.istack.internal.NotNull;
@MappedSuperclass
public abstract class AbstractModel {
@Id
@GeneratedValue
private Long id;
/**
* 维护信息:记录创建日期
*/
@Column(name="createOn")
private Date createOn;
/**
* 维护信息:记录创建者
*/
@Column(name="createdByUserName",length=10)
private String createdByUserName;
/**
* 维护信息:记录更新日期
*/
@Column(name="updateOn")
private Date updateOn;
/**
* 维护信息:记录更新者
*/
@Column(name="updatedByUserName",length=10)
private String updatedByUserName;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getCreateOn() {
return createOn;
}
public void setCreateOn(Date createOn) {
this.createOn = createOn;
}
public String getCreatedByUserName() {
return createdByUserName;
}
public void setCreatedByUserName(String createdByUserName) {
this.createdByUserName = createdByUserName;
}
public Date getUpdateOn() {
return updateOn;
}
public void setUpdateOn(Date updateOn) {
this.updateOn = updateOn;
}
public String getUpdatedByUserName() {
return updatedByUserName;
}
public void setUpdatedByUserName(String updatedByUserName) {
this.updatedByUserName = updatedByUserName;
}
@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;
}
@Id
@GeneratedValue
private Long id;
/**
* 维护信息:记录创建日期
*/
@NotNull
@Column(name="createOn")
private Date createOn;
/**
* 维护信息:记录创建者
*/
@Column(name="createdBy",length=10)
private String createdBy;
/**
* 维护信息:记录更新日期
*/
@NotNull
@Column(name="updateOn")
private Date updateOn;
/**
* 维护信息:记录更新者
*/
@Column(name="updatedBy",length=10)
private String updatedBy;
/**
* 状态
*/
@Enumerated(EnumType.STRING)
private Status status;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getCreateOn() {
return createOn;
}
public void setCreateOn(Date createOn) {
this.createOn = createOn;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getUpdateOn() {
return updateOn;
}
public void setUpdateOn(Date updateOn) {
this.updateOn = updateOn;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
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.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.AbstractModel;
import com.originspark.drp.util.Blowfish;
import com.originspark.drp.util.enums.Gender;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.enums.UserType;
@Entity
@Table(name = "users")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class AbstractUser extends AbstractModel{
@Column(name = "type", updatable = false, insertable = false)
private String type;
@Table(name="users")
public class User extends AbstractModel {
@Enumerated(EnumType.STRING)
private UserType type;
/**
* 编号
*/
private String code;
/**
* 姓名
*/
private String name;
/**
* 登录账号
*/
private String username;
/**
* 密码
*/
@JsonIgnore
private String password;
/**
* 联系电话
*/
private String phone;
/**
* 地址
*/
private String address;
/**
* 电子邮件
*/
private String email;
/**
* 性别
*/
@Enumerated(EnumType.STRING)
private Gender gender;
/**
* 状态
*/
@Enumerated(EnumType.STRING)
private Status status;
public static enum COLUMNS {
TYPE,CODE,NAME,PHONE,ADDRESS,EMAIL,GENDER,STATUS
public UserType getType() {
return type;
}
public void setType(UserType type) {
this.type = type;
}
public String getCode() {
......@@ -88,13 +83,21 @@ public class AbstractUser extends AbstractModel{
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
Blowfish bf=new Blowfish();
String pwd=bf.encryptString(password);
Blowfish bf = new Blowfish();
String pwd = bf.encryptString(password);
this.password = pwd;
}
......@@ -129,26 +132,8 @@ public class AbstractUser extends AbstractModel{
public void setGender(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) {
this.status = status;
}
@Override
public String toString() {
return super.toString()+", code="+code+", name="+name+", phone="+phone+", address="+address+", email="+email
+", gender="+gender+", status"+status;
public static enum COLUMNS {
TYPE, CODE, NAME, PHONE, ADDRESS, EMAIL, GENDER, 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;
@MappedSuperclass
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)
private BigDecimal quantity = BigDecimal.ZERO;
/**
* 合价
*/
private BigDecimal total = BigDecimal.ZERO;
public static enum COLUMNS {
INVOICE
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
if(unitPrice == null){
this.unitPrice = BigDecimal.ZERO;
}
this.unitPrice = unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
if(unitPrice == null){
this.unitPrice = BigDecimal.ZERO;
}
this.unitPrice = unitPrice;
}
public BigDecimal getQuantity() {
public BigDecimal getQuantity() {
return quantity;
}
......
......@@ -17,10 +17,10 @@ public class StockInCost extends AbstractCost {
*/
@ManyToOne
private Ware ware;
@ManyToOne
private StockInInvoice invoice;
public Ware getWare() {
return ware;
}
......
......@@ -9,7 +9,6 @@ import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.originspark.drp.models.projects.Project;
import com.originspark.drp.models.resources.Ware;
@Entity
......@@ -19,13 +18,7 @@ public class MonthendInventory {
@Id
@GeneratedValue
private Long id;
/**
* 所属系统
*/
@ManyToOne
private Project system;
/**
* 年月
*/
......@@ -69,14 +62,6 @@ public class MonthendInventory {
public void setId(Long id) {
this.id = id;
}
public Project getSystem() {
return system;
}
public void setSystem(Project system) {
this.system = system;
}
public String getForYearMonth() {
return forYearMonth;
......
......@@ -5,102 +5,67 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
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.Project;
import com.originspark.drp.util.enums.AuditState;
import com.sun.istack.internal.NotNull;
/**
* 单据
*/
@MappedSuperclass
public abstract class AbstractInvoice extends AbstractModel{
private static SimpleDateFormat forYearMonthFormatter = new SimpleDateFormat("yyyy-MM");
/**
* 编号
*/
private String code;
/**
* 所属系统
*/
@ManyToOne
private Project system;
/**
* 日期
*/
@Temporal(TemporalType.DATE)
private Date forDate;
@JsonIgnore
@NotNull
@Column(columnDefinition = "char(7)", nullable = false)
private String forYearMonth;
/**
* 汇总价格
*/
@Column(precision = 15, scale = 2, nullable = false)
private BigDecimal totalPrice = BigDecimal.ZERO;
/**
* 材料员姓名
*/
private String materialKeeperName;
/**
* 库管员姓名
*/
private String wareKeeperName;
/**
* 项目经理姓名
*/
private String projectManagerName;
/**
* 库管审核状态
*/
@Enumerated(EnumType.STRING)
private AuditState wareKeeperAuditState;
/**
* 材料管理员审核状态
* 负责人
*/
@Enumerated(EnumType.STRING)
private AuditState materialKeeperAuditState;
private String manager;
/**
* 项目经理审核状态
* 库管
*/
@Enumerated(EnumType.STRING)
private AuditState projectManagerAuditState;
private String wareKeeper;
/**
* 单据的状态,当项目经理通过之后,就设置为pass=true
* 经手人
*/
private Boolean pass;
private String regulator;
public static enum COLUMNS {
STARTDATE,ENDDATE,CODE,
MINTOTAL,MAXTOTAL,PROJECT,SYSTEM,
WARENAME,RECEIVEMANNAME,
MATERIALKEEPERNAME,WAREKEEPERNAME,PROJECTMANAGERNAME,
MATERIALKEEPERID,WAREKEEPERID,PROJECTMANAGERID,
MATERIALKEEPERAUDITSTATE,WAREKEEPERAUDITSTATE,PROJECTMANAGERAUDITSTATE
REGULATORNAME,WAREKEEPERNAME,MANAGERNAME
}
public String getCode() {
public String getCode() {
return code;
}
......@@ -108,47 +73,39 @@ public abstract class AbstractInvoice extends AbstractModel{
this.code = code;
}
public Project getSystem() {
return system;
public String getManager() {
return manager;
}
public void setSystem(Project system) {
this.system = system;
public void setManager(String manager) {
this.manager = manager;
}
public Date getForDate() {
return forDate;
}
public void setForDate(Date forDate) {
this.forDate = forDate;
if (forDate != null) {
setForYearMonth(forYearMonthFormatter.format(forDate));
}
}
public String getMaterialKeeperName() {
return materialKeeperName;
public String getWareKeeper() {
return wareKeeper;
}
public void setMaterialKeeperName(String materialKeeperName) {
this.materialKeeperName = materialKeeperName;
public void setWareKeeper(String wareKeeper) {
this.wareKeeper = wareKeeper;
}
public String getWareKeeperName() {
return wareKeeperName;
public String getRegulator() {
return regulator;
}
public void setWareKeeperName(String wareKeeperName) {
this.wareKeeperName = wareKeeperName;
public void setRegulator(String regulator) {
this.regulator = regulator;
}
public String getProjectManagerName() {
return projectManagerName;
public Date getForDate() {
return forDate;
}
public void setProjectManagerName(String projectManagerName) {
this.projectManagerName = projectManagerName;
public void setForDate(Date forDate) {
this.forDate = forDate;
if (forDate != null) {
setForYearMonth(forYearMonthFormatter.format(forDate));
}
}
public String getForYearMonth() {
......@@ -160,58 +117,15 @@ public abstract class AbstractInvoice extends AbstractModel{
}
public BigDecimal getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
public AuditState getWareKeeperAuditState() {
return wareKeeperAuditState;
return totalPrice;
}
public void setWareKeeperAuditState(AuditState wareKeeperAuditState) {
this.wareKeeperAuditState = wareKeeperAuditState;
public void setTotalPrice(BigDecimal totalPrice) {
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
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;
@Table(name="invoice_stock_in")
public class StockInInvoice extends AbstractInvoice{
/**
/**
* 商品采购列表
*/
@JsonIgnore
@JsonIgnore
@OneToMany(mappedBy="invoice")
private List<StockInCost> costs;
public List<StockInCost> getCosts() {
return costs;
}
public void setCosts(List<StockInCost> costs) {
this.costs = costs;
}
public int getCostCount(){
return getCosts().size();
}
@Override
public String toString() {
return "StockInInvoice(入库单) => ["+super.toString()+"]";
}
public List<StockInCost> getCosts() {
return costs;
}
public void setCosts(List<StockInCost> costs) {
this.costs = costs;
}
public int getCostCount(){
return getCosts().size();
}
@Override
public String toString() {
return "StockInInvoice(入库单) => ["+super.toString()+"]";
}
}
......@@ -17,25 +17,25 @@ import com.originspark.drp.models.projects.costs.StockOutCost;
@Table(name="invoice_stock_out")
public class StockOutInvoice extends AbstractInvoice{
/**
/**
* 商品列表
*/
@JsonIgnore
@JsonIgnore
@OneToMany(mappedBy="invoice")
private List<StockOutCost> costs;
/**
* 领用人
*/
private String receiveMan;
public List<StockOutCost> getCosts() {
return costs;
}
/**
* 领用人
*/
private String receiveMan;
public void setCosts(List<StockOutCost> costs) {
this.costs = costs;
}
public List<StockOutCost> getCosts() {
return costs;
}
public void setCosts(List<StockOutCost> costs) {
this.costs = costs;
}
public String getReceiveMan() {
return receiveMan;
......@@ -48,7 +48,7 @@ public class StockOutInvoice extends AbstractInvoice{
public int getCostCount(){
return getCosts().size();
}
@Override
public String toString() {
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;
import com.originspark.drp.models.AbstractModel;
/**
* 供应商
* 供应商
*/
@Entity
@Table(name="vendors")
public class Vendor extends AbstractModel{
/**
* 名称
*/
private String name;
/**
* 地址
* 名称
*/
private String address;
private String name;
/**
* 联系电话
*/
private String phone;
/**
* 地址
*/
private String address;
/**
* 联系人
*/
@Column(name="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;
/**
* 商品
*/
@JsonIgnore
@OneToMany(mappedBy="vendor")
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) {
this.address = address;
}
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 static enum COLUMNS {
NAME,ADDRESS,PHONE,CONTACTMAN
}
public String getRegistrationRange() {
return registrationRange;
}
public String getName() {
return name;
}
public void setRegistrationRange(String registrationRange) {
this.registrationRange = registrationRange;
}
public void setName(String name) {
this.name = name;
}
public String getRegistrationBank() {
return registrationBank;
}
public String getAddress() {
return address;
}
public void setRegistrationBank(String registrationBank) {
this.registrationBank = registrationBank;
}
public void setAddress(String address) {
this.address = address;
}
public String getTaxNumber() {
return taxNumber;
}
public String getPhone() {
return phone;
}
public void setTaxNumber(String taxNumber) {
this.taxNumber = taxNumber;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getOrgCodeCertificate() {
return orgCodeCertificate;
}
public String getContactMan() {
return contactMan;
}
public void setOrgCodeCertificate(String orgCodeCertificate) {
this.orgCodeCertificate = orgCodeCertificate;
}
public void setContactMan(String contactMan) {
this.contactMan = contactMan;
}
public String getNote() {
return note;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public void setNote(String note) {
this.note = note;
}
public List<Ware> getWares() {
return wares;
}
public List<Ware> getWares() {
return wares;
}
public void setWares(List<Ware> wares) {
this.wares = wares;
}
public void setWares(List<Ware> wares) {
this.wares = wares;
}
public int getCountOfWares(){
return getWares().size();
}
public int getCountOfWares(){
return getWares().size();
}
}
package com.originspark.drp.models.resources;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -8,6 +9,8 @@ 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.fasterxml.jackson.annotation.JsonProperty;
......@@ -24,7 +27,7 @@ import com.originspark.drp.models.projects.inventories.MonthendInventory;
public class Ware extends AbstractModel {
/**
* 名称
* 品名
*/
private String name;
......@@ -43,6 +46,17 @@ public class Ware extends AbstractModel {
*/
private String unit;
/**
* 生产日期
*/
@Temporal(TemporalType.DATE)
private Date produceOn;
/**
* 保质期
*/
private String storage;
/**
* 备注
*/
......@@ -53,7 +67,7 @@ public class Ware extends AbstractModel {
*/
@ManyToOne
private Vendor vendor;
@JsonIgnore
@OneToMany(mappedBy="ware")
private List<StockInCost> inCosts;
......@@ -61,11 +75,11 @@ public class Ware extends AbstractModel {
@JsonIgnore
@OneToMany(mappedBy="ware")
private List<StockOutCost> outCosts;
@JsonIgnore
@OneToMany(mappedBy="ware")
private List<MonthendInventory> inventories;
public static enum COLUMNS {
NAME, BRAND, MODEL, UNIT, VENDOR
}
......@@ -102,6 +116,22 @@ public class Ware extends AbstractModel {
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() {
return note;
}
......@@ -117,7 +147,7 @@ public class Ware extends AbstractModel {
public void setVendor(Vendor vendor) {
this.vendor = vendor;
}
public List<StockInCost> getInCosts() {
return inCosts;
}
......@@ -133,7 +163,7 @@ public class Ware extends AbstractModel {
public void setOutCosts(List<StockOutCost> outCosts) {
this.outCosts = outCosts;
}
public List<MonthendInventory> getInventories() {
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;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
public class UTF8StringBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
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>();
types.add(mediaType);
((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
}
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
// do nothing
return bean;
}
}
\ No newline at end of file
}
}
\ No newline at end of file
......@@ -2,9 +2,8 @@ package com.originspark.drp.service.account;
import java.util.List;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.User;
public interface AccountService{
public List<AbstractUser> validate(String username,String password);
public List<User> validate(String username,String password);
}
......@@ -13,21 +13,21 @@ import javax.persistence.criteria.Root;
import org.springframework.stereotype.Service;
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;
@Transactional
@Service
@Service("AccountService")
public class AccountServiceBean implements AccountService {
@PersistenceContext
protected EntityManager em;
@Override
public List<AbstractUser> validate(String username, String password) {
public List<User> validate(String username, String password) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<AbstractUser> dataQuery = cb.createQuery(AbstractUser.class);
Root<AbstractUser> user = dataQuery.from(AbstractUser.class);
CriteriaQuery<User> dataQuery = cb.createQuery(User.class);
Root<User> user = dataQuery.from(User.class);
dataQuery.select(user);
List<Predicate> criteria = new ArrayList<Predicate>();
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;
@Transactional
@Service("stockInCostService")
public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implements
StockInCostService {
StockInCostService {
@Override
public List<StockInCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockInCost> dataQuery = cb.createQuery(StockInCost.class);
@Override
public List<StockInCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
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) {
dataQuery.where(cb.and(predicates));
}
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockInCost> stockInCost = countQuery.from(StockInCost.class);
countQuery.select(cb.count(stockInCost));
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockInCost> stockInCost = countQuery.from(StockInCost.class);
countQuery.select(cb.count(stockInCost));
Predicate[] predicates = toPredicates(cb, stockInCost, filters);
Predicate[] predicates = toPredicates(cb, stockInCost, filters);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockInCost> stockInCost,
List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockInCost> stockInCost,
List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
try {
try {
for (FilterRequest filter : filters) {
COLUMNS column = COLUMNS.valueOf(filter.getProperty()
......@@ -83,22 +83,22 @@ public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implemen
ex.printStackTrace();
}
if (criteria.size() == 0) {
return null;
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
if (criteria.size() == 0) {
return null;
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
}
......@@ -21,49 +21,49 @@ import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service("stockOutCostService")
public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implements
StockOutCostService {
StockOutCostService {
@Override
public List<StockOutCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockOutCost> dataQuery = cb.createQuery(StockOutCost.class);
@Override
public List<StockOutCost> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
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) {
dataQuery.where(cb.and(predicates));
}
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutCost> stockOutCost = countQuery.from(StockOutCost.class);
countQuery.select(cb.count(stockOutCost));
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutCost> stockOutCost = countQuery.from(StockOutCost.class);
countQuery.select(cb.count(stockOutCost));
Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockOutCost> stockOutCost,
List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockOutCost> stockOutCost,
List<FilterRequest> filters) {
List<Predicate> criteria = new ArrayList<Predicate>();
try {
try {
for (FilterRequest filter : filters) {
COLUMNS column = COLUMNS.valueOf(filter.getProperty()
......@@ -83,22 +83,22 @@ public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implem
ex.printStackTrace();
}
if (criteria.size() == 0) {
return null;
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
if (criteria.size() == 0) {
return null;
} else {
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
return predicates;
}
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
}
......@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest;
public interface StockInInvoiceService extends BaseDAO<StockInInvoice> {
List<StockInInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
StockInInvoice findById(Long id);
List<StockInInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
StockInInvoice findById(Long id);
}
......@@ -24,7 +24,7 @@ import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service
@Service("stockInInvoiceService")
public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> implements
StockInInvoiceService {
......@@ -141,49 +141,19 @@ public class StockInInvoiceServiceBean extends BaseDAOSupport<StockInInvoice> im
andCriteria.add(cb.lessThanOrEqualTo(stockin.<BigDecimal>get("totalPrice"), maxTotal));
}
break;
case MATERIALKEEPERNAME:
case REGULATORNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("materialKeeperName"), "%" + value + "%"));
andCriteria.add(cb.like(stockin.<String>get("regulator"), "%" + value + "%"));
}
break;
case WAREKEEPERNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("wareKeeperName"), "%" + value + "%"));
andCriteria.add(cb.like(stockin.<String>get("wareKeeper"), "%" + value + "%"));
}
break;
case PROJECTMANAGERNAME:
case MANAGERNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockin.<String>get("projectManagerName"), "%" + 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)));
andCriteria.add(cb.like(stockin.<String>get("manager"), "%" + value + "%"));
}
break;
case WARENAME:
......
......@@ -9,11 +9,11 @@ import com.originspark.drp.util.json.FilterRequest;
public interface StockOutInvoiceService extends BaseDAO<StockOutInvoice> {
List<StockOutInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
StockOutInvoice findById(Long id);
List<StockOutInvoice> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
StockOutInvoice findById(Long id);
}
......@@ -24,26 +24,26 @@ import com.originspark.drp.util.enums.AuditState;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service
@Service("stockOutInvoiceService")
public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice> implements
StockOutInvoiceService {
StockOutInvoiceService {
@Override
public List<StockOutInvoice> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockOutInvoice> dataQuery = cb.createQuery(StockOutInvoice.class);
@Override
public List<StockOutInvoice> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockOutInvoice> dataQuery = cb.createQuery(StockOutInvoice.class);
Root<StockOutInvoice> stockout = dataQuery.from(StockOutInvoice.class);
Root<StockOutInvoice> stockout = dataQuery.from(StockOutInvoice.class);
dataQuery.select(stockout);
StockOutCost[] outCosts = findByWareName(filters);
if(outCosts == null){
return null;
}
dataQuery.select(stockout);
StockOutCost[] outCosts = findByWareName(filters);
if(outCosts == null){
return null;
}
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, outCosts);
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, outCosts);
if (predicates != null) {
Predicate[] andPredicates = predicates.get(0);
......@@ -59,23 +59,23 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
dataQuery.orderBy(cb.desc(stockout.get("forDate")));
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutInvoice> stockout = countQuery.from(StockOutInvoice.class);
countQuery.select(cb.count(stockout));
StockOutCost[] outCosts = findByWareName(filters);
@Override
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
Root<StockOutInvoice> stockout = countQuery.from(StockOutInvoice.class);
countQuery.select(cb.count(stockout));
StockOutCost[] outCosts = findByWareName(filters);
if(outCosts == null){
return 0L;
}
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, findByWareName(filters));
List<Predicate[]> predicates = toPredicates(cb, stockout, filters, findByWareName(filters));
if (predicates != null) {
Predicate[] andPredicates = predicates.get(0);
......@@ -89,10 +89,10 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
}
}
return em.createQuery(countQuery).getSingleResult();
}
public static List<Predicate[]> toPredicates(CriteriaBuilder cb, Root<StockOutInvoice> stockout,
return em.createQuery(countQuery).getSingleResult();
}
public static List<Predicate[]> toPredicates(CriteriaBuilder cb, Root<StockOutInvoice> stockout,
List<FilterRequest> filters, StockOutCost...costs) {
List<Predicate> andCriteria= new ArrayList<Predicate>();
......@@ -141,49 +141,19 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
andCriteria.add(cb.lessThanOrEqualTo(stockout.<BigDecimal>get("totalPrice"), maxTotal));
}
break;
case MATERIALKEEPERNAME:
case REGULATORNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockout.<String>get("materialKeeperName"), "%" + value + "%"));
andCriteria.add(cb.like(stockout.<String>get("regulator"), "%" + value + "%"));
}
break;
case WAREKEEPERNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.like(stockout.<String>get("wareKeeperName"), "%" + 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)));
andCriteria.add(cb.like(stockout.<String>get("wareKeeper"), "%" + value + "%"));
}
break;
case PROJECTMANAGERID:
case MANAGERNAME:
if (value != null && !value.equals("")) {
andCriteria.add(cb.equal(stockout.get("system").get("project").get("projectManager").<Long>get("id"), Long.valueOf(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)));
andCriteria.add(cb.like(stockout.<String>get("manager"), "%" + value + "%"));
}
break;
case RECEIVEMANNAME :
......@@ -217,14 +187,14 @@ public class StockOutInvoiceServiceBean extends BaseDAOSupport<StockOutInvoice>
}
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
@Override
public Map<String, String> validate() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
@Override
public StockOutInvoice findById(Long id) {
......
......@@ -3,18 +3,21 @@ package com.originspark.drp.service.resources;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.util.json.FilterRequest;
@Service
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);
Map<String,String> validate();
Vendor findByName(String name);
Long pagedDataCount(List<FilterRequest> filters);
Map<String,String> validate();
Vendor findByName(String name);
}
......@@ -17,7 +17,7 @@ import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.models.resources.Vendor.COLUMNS;
import com.originspark.drp.util.json.FilterRequest;
@Service
@Service("vendorService")
public class VendorServiceBean extends BaseDAOSupport<Vendor> implements VendorService {
@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;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.resources.Ware;
import com.originspark.drp.util.json.FilterRequest;
@Service
public interface WareService extends BaseDAO<Ware>{
List<Ware> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(Ware ware);
//判断该商品是否已经存在
boolean have(Ware ware);
List<Ware> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate(Ware ware);
//判断该商品是否已经存在
boolean have(Ware ware);
}
......@@ -23,119 +23,119 @@ import com.originspark.drp.models.resources.Ware.COLUMNS;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service
@Service("wareService")
public class WareServiceBean extends BaseDAOSupport<Ware> implements
WareService {
WareService {
@Override
public List<Ware> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Ware> dataQuery = cb.createQuery(Ware.class);
@Override
public List<Ware> pagedDataSet(int start, int limit,
List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
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);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
dataQuery.orderBy(cb.desc(ware.get("id")));
return em.createQuery(dataQuery).setFirstResult(start)
.setMaxResults(limit).getResultList();
}
@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);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(EntityManager em,CriteriaBuilder cb, Root<Ware> ware,
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 NAME:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("name"), "%"+value+"%"));
}
break;
case BRAND:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("brand"), "%"+value+"%"));
}
break;
case MODEL:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("model"), "%"+value+"%"));
}
break;
case UNIT:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("unit"), "%"+value+"%"));
}
break;
case VENDOR:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.get("vendor").<String>get("name"), "%"+value+"%"));
}
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;
}
}
@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("")){
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(EntityManager em,CriteriaBuilder cb, Root<Ware> ware,
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 NAME:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("name"), "%"+value+"%"));
}
break;
case BRAND:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("brand"), "%"+value+"%"));
}
break;
case MODEL:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("model"), "%"+value+"%"));
}
break;
case UNIT:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.<String>get("unit"), "%"+value+"%"));
}
break;
case VENDOR:
if(value != null && !value.equals("")){
criteria.add(cb.like(ware.get("vendor").<String>get("name"), "%"+value+"%"));
}
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;
}
}
@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", "单位不能为空");
}
return validations;
}
return validations;
}
@Override
public boolean have(Ware ware) {
......
......@@ -2,16 +2,20 @@ package com.originspark.drp.service.users;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
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;
public interface UserService extends BaseDAO<AbstractUser>{
List<AbstractUser> pagedDataSet(int start, int limit,List<FilterRequest> filters);
@Service
public interface UserService extends BaseDAO<User>{
List<User> pagedDataSet(int start, int limit,List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
}
......@@ -13,23 +13,23 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.originspark.drp.dao.BaseDAOSupport;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.users.AbstractUser.COLUMNS;
import com.originspark.drp.models.User;
import com.originspark.drp.models.User.COLUMNS;
import com.originspark.drp.util.enums.Gender;
import com.originspark.drp.util.enums.Status;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service
public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements UserService {
@Service("userService")
public class UserServiceBean extends BaseDAOSupport<User> implements UserService {
@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();
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);
......@@ -47,7 +47,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use
public Long pagedDataCount(List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
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));
Predicate[] predicates = toPredicates(cb, user, filters);
......@@ -65,7 +65,7 @@ public class UserServiceBean extends BaseDAOSupport<AbstractUser> implements Use
return null;
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<AbstractUser> user,
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<User> user,
List<FilterRequest> filters) {
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 {
// hash down the password to a 160bit key
MessageDigest digest = null;
try {
String password="fc4e6e4090e9edfe4dcff438d095954d";
String password="fc4e6e4090e9edfe4dcff438d095954d";
digest = MessageDigest.getInstance("SHA1");
digest.update(password.getBytes());
}
catch (Exception e) {
// Log.error(e);
e.printStackTrace();
e.printStackTrace();
}
// setup the encryptor (use a dummy IV)
......
package com.originspark.drp.util;
import javax.servlet.http.HttpServletRequest;
import com.originspark.drp.models.users.AbstractUser;
import com.originspark.drp.models.User;
public class SessionUtil {
//返回当前登陆的用户信息
public static AbstractUser getCurrentUser(HttpServletRequest request){
AbstractUser user=(AbstractUser) request.getSession().getAttribute("user");
public static User getCurrentUser(HttpServletRequest request){
User user=(User) request.getSession().getAttribute("user");
return user;
}
public static String getCurrentUserName(HttpServletRequest request){
return getCurrentUser(request).getName();
}
......
......@@ -5,6 +5,6 @@ package com.originspark.drp.util.enums;
*/
public enum AuditState {
UNAUDITED ,//未审核
APPROVED,//合格通过
UNAPPROVED//不合格退回,当库管或者项目经理选择失败退回后,材料员的审核状态更改为UNAPPROVED
APPROVED,//合格通过
UNAPPROVED//不合格退回,当库管或者项目经理选择失败退回后,材料员的审核状态更改为UNAPPROVED
}
package com.originspark.drp.util.enums;
public enum Gender {
MALE,
FEMALE
MALE,
FEMALE
}
package com.originspark.drp.util.enums;
public enum Status {
ACTIVE, //可用的
INACTIVE, //不可用的
DESTORYED //销毁的
ACTIVE, //可用的
INACTIVE, //不可用的
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;
public class IdsJson {
private long ids[];
private long ids[];
public long[] getIds() {
return ids;
}
public long[] getIds() {
return ids;
}
public void setIds(long[] ids) {
this.ids = ids;
}
public void setIds(long[] 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