Commit fedcc25d authored by reedmi's avatar reedmi

drp init

parents

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

/bin/
/target/
.classpath
.project
.settings
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.originspark.drp</groupId>
<artifactId>drp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>drp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<!-- spring mvc -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.13.RELEASE</version>
</dependency>
<!-- jpa -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.4.Final</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate3</artifactId>
<version>2.2.3</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.10</version>
</dependency>
<!-- commons -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.9</version>
</dependency>
</dependencies>
<build>
<finalName>drp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
">
<context:property-placeholder
ignore-unresolvable="true"
local-override="true"
location="classpath*:/jdbc.properties,classpath*:/application.local.properties"/>
<util:properties id="APP_PROPERTIES" location="classpath:jdbc.properties" local-override="true"/>
<!-- 数据源配置, 使用DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value=""/>
<!-- Connection Pooling Info -->
<property name="maxActive" value="${dbcp.maxActive}"/>
<property name="maxIdle" value="${dbcp.maxIdle}"/>
<property name="defaultAutoCommit" value="false"/>
<!-- 连接Idle一个小时后超时 -->
<property name="timeBetweenEvictionRunsMillis" value="3600000"/>
<property name="minEvictableIdleTimeMillis" value="3600000"/>
</bean>
<!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
<context:component-scan base-package="com.originspark.drp">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- Jpa Entity Manager 配置 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
<property name="packagesToScan" value="com.originspark.drp.models.*"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="net.sf.ehcache.configurationResourceName">ehcache/ehcache-hibernate-local.xml</prop>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
</props>
</property>
</bean>
<bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
<!-- Jpa 事务配置 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
</beans>
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//项目经理
}
package com.originspark.drp.controllers;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
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.WareService;
import com.originspark.drp.service.users.UserService;
import com.originspark.drp.util.json.Jackson;
public abstract class AbstractController {
@Resource
protected UserService userService;
@Resource
protected WareService wareService;
@Resource
protected VendorService vendorService;
@Resource
protected ProjectService projectService;
@Resource
protected StockInInvoiceService stockInInvoiceService;
@Resource
protected StockOutInvoiceService stockOutInvoiceService;
//一般用于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){
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分页数据的返回值
@SuppressWarnings("rawtypes")
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不分页的返回值
@SuppressWarnings("rawtypes")
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){
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 java.util.Map;
import java.util.Set;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import com.originspark.drp.authority.RoleEnum;
import com.originspark.drp.util.AuthUtil;
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("------------------------系统初始化成功-----------------------------");
}
}
package com.originspark.drp.controllers;
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";
}
}
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.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 {
@RequestMapping(value="/updatepassword",method = RequestMethod.GET)
@ResponseBody
public String updatePassword(@RequestParam String data,HttpServletRequest request){
ObjectMapper mapper = new ObjectMapper();
try {
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()))){
return failure("修改失败,请输入正确的原始密码");
}
user.setPassword(json.getNewpwd());
userService.update(user);
} catch (Exception e) {
e.printStackTrace();
return failure("系统出现异常,修改失败");
}
return ok("密码修改成功");
}
}
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 org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
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.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.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 {
@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) {
ModelAndView mav = new ModelAndView();
Blowfish bf = new Blowfish();
List<AbstractUser> users = service.validate(username, password);
if (users.size() == 0) {
mav.setViewName("index");
mav.addObject("msg", "该用户不存在!");
} else {
int i;
for (i = 0; i < users.size(); i++) {
if (bf.decryptString(users.get(i).getPassword()).equals(password)) {
AbstractUser 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());
return mav;
}
}
if (i == users.size()) {
mav.setViewName("index");
mav.addObject("msg", "密码错误!");
}
}
return mav;
}
@RequestMapping(value = "logout")
public String logout(HttpServletRequest request) {
request.getSession().invalidate();
return "redirect:/index";
}
}
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());
}
}
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.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.costs.StockInCost;
import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.service.projects.costs.StockInCostService;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockInCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockInCostController extends AbstractController{
@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.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);
}
}
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.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.costs.StockOutCost;
import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.service.projects.costs.StockOutCostService;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("stockOutCost")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class StockOutCostController extends AbstractController{
@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("所选出库单不能为空");
}
StockOutInvoice invoice = stockOutInvoiceService.findById(invoiceUI.getId());
if(invoice == null){
return failure("你所选择的入库单不存在,请重新选择");
}
//检查该商品是否已经存在
boolean have = false;
for(StockOutCost cost : invoice.getCosts()){
if(cost.getWare().getId() == stockOutCost.getWare().getId()){
have = true;
break;
}
}
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);
}
}
package com.originspark.drp.controllers.projects.inventories;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
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.util.FileUtil;
import com.originspark.drp.util.poi.exporter.MonthendInventoryGenerator;
import com.originspark.drp.web.models.projects.inventories.CurrentInventoryUI;
import com.originspark.drp.web.models.projects.inventories.Ware;
@Controller
@RequestMapping("project")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class InventoryController extends AbstractController {
@RequestMapping(value = "/{id}/inventories/current", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String currentInventories(@PathVariable Long id){
Project project = projectService.findById(id);
if(project == null){
return failure("你所查询的项目不存在");
}
List<CurrentInventoryUI> inventories = new ArrayList<CurrentInventoryUI>();
//如果是项目
if(project.getProject() == null){
for(Project system : project.getSystems()){
inventories.addAll(projectService.getCurrentInventories(system.getId()));
}
return ok(inventories);
}
inventories.addAll(projectService.getCurrentInventories(id));
return ok(inventories);
}
@ResponseBody
@RequestMapping(value = "/{id}/inventories/monthend", method = RequestMethod.GET)
@AuthRoleGroup(type={RoleEnum.PROJECTMANAGER,RoleEnum.LEADER})
public String menthendInventories(@PathVariable Long id,@RequestParam String formonth){
Project project = projectService.findById(id);
if(project == null){
return failure("你所查询的项目不存在");
}
List<Ware> inventories = new ArrayList<Ware>();
//如果是项目
if(project.getProject() == null){
for(Project system : project.getSystems()){
inventories.addAll(projectService.getMonthEndInventories(system.getId(),formonth));
}
return ok(inventories);
}
inventories.addAll(projectService.getMonthEndInventories(id,formonth));
return ok(inventories);
}
@RequestMapping(value = "/{id}/inventories/monthend/export", method = RequestMethod.GET)
public void exportMonthendInventory(@PathVariable Long id,@RequestParam String formonth,HttpServletRequest request, HttpServletResponse response){
Project system = projectService.findById(id);
List<Ware> inventories = projectService.getMonthEndInventories(system.getId(),formonth);
//因为使用createTempFile(),所以会生成默认的名称后缀,所以加下划线分割
String fileName = formonth +"_";
File file = MonthendInventoryGenerator.generate(fileName, inventories, FileUtil.getResourcesPath(request));
if (file != null) {
try {
response.setContentType("application/x-excel;charset=UTF-8");
response.setHeader("content-Disposition", "attachment;filename=" + file.getName());// "attachment;filename=test.xls"
InputStream is = new FileInputStream(file);
IOUtils.copyLarge(is, response.getOutputStream());
} catch (IOException ex) {
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.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);
}
}
}
}
}
package com.originspark.drp.controllers.projects.invoices;
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.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;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
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)
@ResponseBody
public String create(@RequestBody StockInInvoice invoice,HttpServletRequest request) {
Project systemUI = invoice.getSystem();
if(systemUI == null){
return failure("所选系统不能为空");
}
Project system = projectService.findById(systemUI.getId());
if(system==null){
return failure("你所选择的系统不存在,请重新选择");
}
invoice.setMaterialKeeperName(system.getMaterialKeeperName());
invoice.setWareKeeperName(system.getWareKeeperName());
invoice.setProjectManagerName(system.getProjectManagerName());
String currentUserName = SessionUtil.getCurrentUserName(request);
invoice.setCreatedByUserName(currentUserName);
StockInInvoice savedInvoice = stockInInvoiceService.save(invoice);
logger.info(">添加成功:"+savedInvoice.toString());
return ok("系统确认成功",savedInvoice.getId());
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockInInvoice invoice,HttpServletRequest request) {
StockInInvoice existingInvoice = stockInInvoiceService.findById(StockInInvoice.class, id);
if (existingInvoice == null) {
return failure("您要更新的入库单不存在");
}
Project systemUI = invoice.getSystem();
if(systemUI != null){
if(systemUI.getId() != null){
Project system = projectService.findById(systemUI.getId());
existingInvoice.setSystem(system);
}
}
existingInvoice.setForDate(invoice.getForDate());
existingInvoice.setCode(invoice.getCode());
existingInvoice.setTotalPrice(invoice.getTotalPrice());
existingInvoice.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockInInvoice> data = stockInInvoiceService.pagedDataSet(start, limit, filters);
Long count = stockInInvoiceService.pagedDataCount(filters);
return ok(data, count);
}
@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()) {
if(id==null){
continue;
}
StockInInvoice invoice = stockInInvoiceService.findById(StockInInvoice.class, id);
if(invoice != null && invoice.getCosts().isEmpty()){
stockInInvoiceService.delete(invoice);
logger.info(">删除成功:"+invoice.toString());
}
}
return ok("删除成功(注释:部分合价不为0的入库单已忽略)");
}
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
AuditStateUpdateJson json = null;
try {
json = mapper.readValue(data, AuditStateUpdateJson.class);
} catch (Exception e) {
return failure("提交数据有误");
}
if (json == null) {
return failure("没有需要审核的数据");
}
// 对当前登录用户的验证
AbstractUser user = SessionUtil.getCurrentUser(request);
Long userId = json.getUserId();
String userType = json.getUserType();
if (user.getId() != userId || !user.getType().equals(userType)) {
return failure("操作失败,无审核权限");
}
AuditState state = json.getState();
for (Long id : json.getInvoiceIds()) {
if(id == null){
continue;
}
StockInInvoice inInvoice = stockInInvoiceService.findById(StockInInvoice.class, id);
updateState(inInvoice, userType, state);
stockInInvoiceService.update(inInvoice);
}
return ok("提交成功");
}
}
package com.originspark.drp.controllers.projects.invoices;
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.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;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
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)
@ResponseBody
public String create(@RequestBody StockOutInvoice invoice,HttpServletRequest request) {
Project systemUI = invoice.getSystem();
if (systemUI == null) {
return failure("所选系统不能为空");
}
Project system = projectService.findById(systemUI.getId());
if (system == null) {
return failure("你所选择的系统不存在,请重新选择");
}
invoice.setMaterialKeeperName(system.getMaterialKeeperName());
invoice.setWareKeeperName(system.getWareKeeperName());
invoice.setProjectManagerName(system.getProjectManagerName());
String currentUserName = SessionUtil.getCurrentUserName(request);
invoice.setCreatedByUserName(currentUserName);
StockOutInvoice savedInvoice = stockOutInvoiceService.save(invoice);
return ok("系统确认成功", savedInvoice.getId());
}
@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()) {
if(id == null){
continue;
}
StockOutInvoice invoice = stockOutInvoiceService.findById(StockOutInvoice.class, id);
if (invoice != null && invoice.getCosts().isEmpty()) {
stockOutInvoiceService.delete(invoice);
logger.info(">删除成功:" + invoice.toString());
}
}
return ok("删除成功(注释:部分合价不为0的入库单已忽略)");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody StockOutInvoice invoice,HttpServletRequest request) {
StockOutInvoice existingInvoice = stockOutInvoiceService.findById(StockOutInvoice.class, id);
if (existingInvoice == null) {
return failure("您要更新的入库单不存在");
}
Project systemUI = invoice.getSystem();
if (systemUI != null) {
if (systemUI.getId() != null) {
Project system = projectService.findById(systemUI.getId());
existingInvoice.setSystem(system);
}
}
existingInvoice.setForDate(invoice.getForDate());
existingInvoice.setCode(invoice.getCode());
existingInvoice.setTotalPrice(invoice.getTotalPrice());
existingInvoice.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<StockOutInvoice> data = stockOutInvoiceService.pagedDataSet(start, limit, filters);
Long count = stockOutInvoiceService.pagedDataCount(filters);
return ok(data, count);
}
@RequestMapping(value = "/updateAuditState", method = RequestMethod.GET)
@ResponseBody
@AuthRoleGroup(type={RoleEnum.WAREKEEPER,RoleEnum.PROJECTMANAGER})
public String updateAuditStateByUser(HttpServletRequest request) {
String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
AuditStateUpdateJson json = null;
try {
json = mapper.readValue(data, AuditStateUpdateJson.class);
} catch (Exception e) {
return failure("提交数据有误");
}
if (json == null) {
return failure("没有需要审核的数据");
}
// 对当前登录用户的验证
AbstractUser user = SessionUtil.getCurrentUser(request);
Long userId = json.getUserId();
String userType = json.getUserType();
if (user.getId() != userId || !user.getType().equals(userType)) {
return failure("操作失败,无审核权限");
}
AuditState state = json.getState();
for (Long id : json.getInvoiceIds()) {
if(id == null){
continue;
}
StockOutInvoice outInvoice = stockOutInvoiceService.findById(StockOutInvoice.class, id);
updateState(outInvoice, userType, state);
stockOutInvoiceService.update(outInvoice);
}
return ok("提交成功");
}
}
package com.originspark.drp.controllers.resources;
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.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.resources.Vendor;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.JsonUtils;
@Controller
@RequestMapping("vendor")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class VendorController extends AbstractController {
private Logger logger = Logger.getLogger(VendorController.class);
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody Vendor vendor,HttpServletRequest request) {
String name = vendor.getName();
if (name == null || name.trim().equals("")) {
logger.warn(">添加失败:商品名称不能为空");
return failure("供应商名称不能为空");
}
if (vendorService.findByName(name) != null) {
logger.warn(">添加失败:该供应商已经存在,不可重复添加");
return failure("该供应商已经存在,不可重复添加");
}
vendor.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
vendorService.save(vendor);
logger.info(">添加成功:"+vendor.toString());
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()) {
Vendor vendor = vendorService.findById(Vendor.class, id);
if (vendor != null && vendor.getWares().isEmpty()) {
vendorService.delete(vendor);
logger.info(">删除成功:"+vendor.toString());
}
}
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody Vendor vendor,HttpServletRequest request) {
Vendor existingVendor = vendorService.findById(Vendor.class, id);
if (existingVendor == null) {
return failure("您要更新的供应商不存在");
}
String name = vendor.getName();
if (name == null || name.trim().equals("")) {
logger.warn(">更新失败:商品名称不能为空");
return failure("供应商名称不能为空");
}
if (vendorService.findByName(name) != null) {
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));
vendorService.update(existingVendor);
logger.info(">更新成功:"+existingVendor.toString());
return ok("更新成功");
}
@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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<Vendor> data = vendorService.pagedDataSet(start, limit, filters);
Long count = vendorService.pagedDataCount(filters);
return ok(data, count);
}
}
package com.originspark.drp.controllers.resources;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
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 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.models.resources.Vendor;
import com.originspark.drp.models.resources.Ware;
import com.originspark.drp.util.FileUtil;
import com.originspark.drp.util.SessionUtil;
import com.originspark.drp.util.json.FilterRequest;
import com.originspark.drp.util.json.IdsJson;
import com.originspark.drp.util.json.JsonUtils;
import com.originspark.drp.util.poi.exporter.WareGenerator;
import com.originspark.drp.util.poi.importer.WareImporter;
@Controller
@RequestMapping("ware")
@AuthRoleGroup(type={RoleEnum.MATERIALKEEPER})
public class WareController extends AbstractController {
private Logger logger = Logger.getLogger(WareController.class);
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody Ware ware,HttpServletRequest request) {
//validation
String name = ware.getName();
if(name == null || name.trim().equals("")){
logger.warn(">添加失败:商品名称不能为空");
return failure("商品名称不能为空");
}
String unit = ware.getUnit();
if(unit == null || unit.trim().equals("")){
logger.warn(">添加失败:商品单位不能为空");
return failure("商品单位不能为空");
}
if(wareService.have(ware)){
logger.warn(">添加失败:该商品已存在,不能重复添加");
return failure("该商品已存在,不能重复添加");
}
//save
ware.setCreatedByUserName(SessionUtil.getCurrentUserName(request));
Ware savedWare = wareService.save(ware);
logger.info(">添加成功:"+savedWare.toString());
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()) {
Ware ware = wareService.findById(Ware.class, id);
if(ware != null && ware.getInCosts().isEmpty() && ware.getOutCosts().isEmpty() && ware.getInventories().isEmpty()){
wareService.delete(ware);
logger.info(">删除成功:"+ware.toString());
}
}
return ok("删除成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Long id, @RequestBody Ware ware,HttpServletRequest request) {
Ware existingWare = wareService.findById(Ware.class, id);
//validation
if (existingWare == null) {
return failure("您要更新的商品不存在");
}
String name = ware.getName();
if(name == null || name.trim().equals("")){
logger.warn(">更新失败:商品名称不能为空");
return failure("商品名称不能为空");
}
String unit = ware.getUnit();
if(unit == null || unit.trim().equals("")){
logger.warn(">更新失败:商品单位不能为空");
return failure("商品单位不能为空");
}
if(wareService.have(ware)){
logger.warn(">更新失败:该商品已存在,不能重复添加");
return failure("该商品已存在,不能重复添加");
}
existingWare.setName(ware.getName());
existingWare.setBrand(ware.getBrand());
existingWare.setModel(ware.getModel());
existingWare.setUnit(ware.getUnit());
existingWare.setNote(ware.getNote());
existingWare.setVendor(ware.getVendor());
existingWare.setUpdatedByUserName(SessionUtil.getCurrentUserName(request));
wareService.update(existingWare);
logger.info(">更新成功:"+existingWare.toString());
return ok("更新成功");
}
@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>();
if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter));
}
List<Ware> data = wareService.pagedDataSet(start, limit, filters);
Long count = wareService.pagedDataCount(filters);
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 {
// 保存文件
String realpath = FileUtil.getUploadPath(request);
File file = new File(realpath + "/" + attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
Map<String, Object> result = new HashMap<String, Object>(0);
response.setContentType("text/html;charset=UTF-8");
ObjectMapper mapper = new ObjectMapper();
// 导入数据
try {
List<Ware> wares = WareImporter.importExcel(file);
for (Ware ware : wares) {
// 先判断供应商
Vendor vendor = ware.getVendor();
if (vendor != null) {
String name = vendor.getName();
Vendor foundVendor = vendorService.findByName(name);
if (foundVendor != null) {
ware.setVendor(foundVendor);
} else {
vendorService.save(vendor);
ware.setVendor(vendor);
}
}
if (wareService.have(ware)) {
continue;
}
wareService.save(ware);
}
} catch (Exception e) {
e.printStackTrace();
result.put("success", false);
mapper.writeValue(response.getOutputStream(), result);
return;
}
// 返回信息
result.put("success", true);
mapper.writeValue(response.getOutputStream(), result);
}
@RequestMapping(value = "/export", method = RequestMethod.GET)
public void exportExcel(@RequestParam(required=true) String ids,HttpServletRequest request, HttpServletResponse response){
String wareIds[] = ids.split(",");
List<Ware> wares = new ArrayList<Ware>();
for (String wareId : wareIds) {
Long id = Long.valueOf(wareId);
Ware ware = wareService.findById(Ware.class, id);
wares.add(ware);
}
String fileName = "ware_";
File file = WareGenerator.generate(fileName, wares, FileUtil.getResourcesPath(request));
if (file != null) {
try {
response.setContentType("application/x-excel;charset=UTF-8");
response.setHeader("content-Disposition", "attachment;filename=" + file.getName());// "attachment;filename=test.xls"
InputStream is = new FileInputStream(file);
IOUtils.copyLarge(is, response.getOutputStream());
} catch (IOException ex) {
logger.error("商品导出错误");
}
}
}
}
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.Leader;
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("leader")
@AuthRoleGroup(type={RoleEnum.LEADER})
public class LeaderController extends AbstractController {
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String create(@RequestBody Leader leader) {
leader.setPassword("123456");
userService.save(leader);
return ok("创建成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Long id) {
AbstractUser leader = userService.findById(AbstractUser.class, id);
leader.setStatus(Status.DESTORYED);
userService.update(leader);
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 leader = userService.findById(AbstractUser.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) {
AbstractUser existingLeader = userService.findById(AbstractUser.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());
userService.update(existingLeader);
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", "Leader"));
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.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());
}
}
package com.originspark.drp.dao;
public interface BaseDAO<T> {
T findById(Class<T> c,Long id);
T getReferance(Class<T> c,Long id);
T save(T entity);
T update(T entity);
void delete(T entity);
}
package com.originspark.drp.dao;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public abstract class BaseDAOSupport<T> implements BaseDAO<T>{
@PersistenceContext
protected EntityManager em;
public void delete(T entity) {
em.remove(entity);
}
@Transactional(readOnly=true)
public T findById(Class<T> c,Long id) {
return em.find(c, id);
}
public T save(T entity) {
em.persist(entity);
return entity;
}
public T update(T entity) {
return em.merge(entity);
}
@Transactional(readOnly=true)
public T getReferance(Class<T> c,Long id){
return em.getReference(c, id);
}
}
#sql.type=h2
#jdbc h2
#jdbc.driver=org.h2.Driver
#jdbc.url=jdbc:h2:file:~/wms;AUTO_SERVER=TRUE
#jdbc.username=sa
#jdbc.password=
#hibernate.dialect=org.hibernate.dialect.H2Dialect
sql.type=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/drp?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
#hibernate settings
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
#dbcp settings
dbcp.initialSize=5
dbcp.maxActive=20
dbcp.maxIdle=10
# Output pattern : date [thread] priority category - message
log4j.rootLogger=DEBUG,Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
#Project defalult level
log4j.logger.me.kafeitu.demo=DEBUG
#spring default level
log4j.logger.org.springframework=INFO
#hibernate default level
log4j.logger.org.hibernate=ERROR
#apache
log4j.logger.org.apache=ERROR
log4j.logger.net.sf.ehcache=ERROR
package com.originspark.drp.models;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import com.sun.istack.internal.NotNull;
@MappedSuperclass
public abstract class AbstractModel {
@Id
@GeneratedValue
private Long id;
/**
* 维护信息:记录创建日期
*/
@NotNull
@Column(name="createOn")
private Date createOn;
/**
* 维护信息:记录创建者
*/
@Column(name="createdByUserName",length=10)
private String createdByUserName;
/**
* 维护信息:记录更新日期
*/
@NotNull
@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;
}
}
\ No newline at end of file
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();
}
}
package com.originspark.drp.models.projects.costs;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import com.originspark.drp.models.AbstractModel;
@MappedSuperclass
public abstract class AbstractCost extends AbstractModel{
/**
* 单价
*/
@Column(name="unitPrice", precision = 10, scale = 3, nullable = true)
private BigDecimal unitPrice = BigDecimal.ZERO;
/**
* 数量
*/
@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;
}
public void setUnitPrice(BigDecimal unitPrice) {
if(unitPrice == null){
this.unitPrice = BigDecimal.ZERO;
}
this.unitPrice = unitPrice;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
@Override
public String toString() {
return super.toString()+", unitPrice="+unitPrice+", quantity="+quantity;
}
@PrePersist
public void prePersist(){
if(getUnitPrice() == null || getQuantity() == null){
setTotal(BigDecimal.ZERO);
}
setTotal(getUnitPrice().multiply(getQuantity()));
}
@PreUpdate
public void PreUpdate(){
if(getUnitPrice() == null || getQuantity() == null){
setTotal(BigDecimal.ZERO);
}
setTotal(getUnitPrice().multiply(getQuantity()));
}
}
package com.originspark.drp.models.projects.costs;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.originspark.drp.models.projects.invoices.StockInInvoice;
import com.originspark.drp.models.resources.Ware;
@Entity
@Table(name="cost_stock_in")
public class StockInCost extends AbstractCost {
/**
* 货品
*/
@ManyToOne
private Ware ware;
@ManyToOne
private StockInInvoice invoice;
public Ware getWare() {
return ware;
}
public void setWare(Ware ware) {
this.ware = ware;
}
public StockInInvoice getInvoice() {
return invoice;
}
public void setInvoice(StockInInvoice invoice) {
this.invoice = invoice;
}
@Override
public String toString() {
return "StockInCost(入库量) => ["+super.toString()+", ware.id="+ware.getId()+", invoice.id="+invoice.getId()+"]";
}
}
package com.originspark.drp.models.projects.costs;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.originspark.drp.models.projects.invoices.StockOutInvoice;
import com.originspark.drp.models.resources.Ware;
@Entity
@Table(name="cost_stock_out")
public class StockOutCost extends AbstractCost {
/**
* 货品
*/
@ManyToOne
private Ware ware;
@ManyToOne
private StockOutInvoice invoice;
public Ware getWare() {
return ware;
}
public void setWare(Ware ware) {
this.ware = ware;
}
public StockOutInvoice getInvoice() {
return invoice;
}
public void setInvoice(StockOutInvoice invoice) {
this.invoice = invoice;
}
@Override
public String toString() {
return "StockInCost(出库量) => ["+super.toString()+", invoice.id="+invoice.getId()+"]";
}
}
package com.originspark.drp.models.projects.inventories;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
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
@Table(name="inventories_monthend")
public class MonthendInventory {
@Id
@GeneratedValue
private Long id;
/**
* 所属系统
*/
@ManyToOne
private Project system;
/**
* 年月
*/
@Column(columnDefinition = "char(7)", nullable = false)
private String forYearMonth;
/**
* 商品
*/
@ManyToOne
private Ware ware;
/**
* 上月结存
*/
@Column(name="lastMonthLeft", precision = 10, scale = 0, nullable = false)
private BigDecimal lastMonthLeft;
/**
* 本月入库数量
*/
@Column(name="monthIn", precision = 10, scale = 0, nullable = false)
private BigDecimal monthIn;
/**
* 本月出库数量
*/
@Column(name="monthOut", precision = 10, scale = 0, nullable = false)
private BigDecimal monthOut;
/**
* 本月结存数量
*/
@Column(name="monthLeft", precision = 10, scale = 0, nullable = false)
private BigDecimal monthLeft;
public Long getId() {
return id;
}
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;
}
public void setForYearMonth(String forYearMonth) {
this.forYearMonth = forYearMonth;
}
public Ware getWare() {
return ware;
}
public void setWare(Ware ware) {
this.ware = ware;
}
public BigDecimal getMonthIn() {
return monthIn;
}
public void setMonthIn(BigDecimal monthIn) {
this.monthIn = monthIn;
}
public BigDecimal getMonthOut() {
return monthOut;
}
public void setMonthOut(BigDecimal monthOut) {
this.monthOut = monthOut;
}
public BigDecimal getMonthLeft() {
return lastMonthLeft.add(monthIn).subtract(monthOut);
}
public void setMonthLeft(BigDecimal monthLeft) {
this.monthLeft = monthLeft;
}
public BigDecimal getLastMonthLeft() {
return lastMonthLeft;
}
public void setLastMonthLeft(BigDecimal lastMonthLeft) {
this.lastMonthLeft = lastMonthLeft;
}
}
package com.originspark.drp.models.projects.invoices;
import java.math.BigDecimal;
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;
/**
* 所属系统
*/
@NotNull
@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;
/**
* 项目经理审核状态
*/
@Enumerated(EnumType.STRING)
private AuditState projectManagerAuditState;
/**
* 单据的状态,当项目经理通过之后,就设置为pass=true
*/
private Boolean pass;
public static enum COLUMNS {
STARTDATE,ENDDATE,CODE,
MINTOTAL,MAXTOTAL,PROJECT,SYSTEM,
WARENAME,RECEIVEMANNAME,
MATERIALKEEPERNAME,WAREKEEPERNAME,PROJECTMANAGERNAME,
MATERIALKEEPERID,WAREKEEPERID,PROJECTMANAGERID,
MATERIALKEEPERAUDITSTATE,WAREKEEPERAUDITSTATE,PROJECTMANAGERAUDITSTATE
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Project getSystem() {
return system;
}
public void setSystem(Project system) {
this.system = system;
}
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 void setMaterialKeeperName(String materialKeeperName) {
this.materialKeeperName = materialKeeperName;
}
public String getWareKeeperName() {
return wareKeeperName;
}
public void setWareKeeperName(String wareKeeperName) {
this.wareKeeperName = wareKeeperName;
}
public String getProjectManagerName() {
return projectManagerName;
}
public void setProjectManagerName(String projectManagerName) {
this.projectManagerName = projectManagerName;
}
public String getForYearMonth() {
return forYearMonth;
}
public void setForYearMonth(String forYearMonth) {
this.forYearMonth = forYearMonth;
}
public BigDecimal getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
public AuditState getWareKeeperAuditState() {
return wareKeeperAuditState;
}
public void setWareKeeperAuditState(AuditState wareKeeperAuditState) {
this.wareKeeperAuditState = wareKeeperAuditState;
}
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();
}
}
\ No newline at end of file
package com.originspark.drp.models.projects.invoices;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.projects.costs.StockInCost;
/**
* 入库单
*/
@Entity
@Table(name="invoice_stock_in")
public class StockInInvoice extends AbstractInvoice{
/**
* 商品采购列表
*/
@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()+"]";
}
}
package com.originspark.drp.models.projects.invoices;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.originspark.drp.models.projects.costs.StockOutCost;
/**
* 出库单
*/
@Entity
@Table(name="invoice_stock_out")
public class StockOutInvoice extends AbstractInvoice{
/**
* 商品列表
*/
@JsonIgnore
@OneToMany(mappedBy="invoice")
private List<StockOutCost> costs;
/**
* 领用人
*/
private String receiveMan;
public List<StockOutCost> getCosts() {
return costs;
}
public void setCosts(List<StockOutCost> costs) {
this.costs = costs;
}
public String getReceiveMan() {
return receiveMan;
}
public void setReceiveMan(String receiveMan) {
this.receiveMan = receiveMan;
}
public int getCostCount(){
return getCosts().size();
}
@Override
public String toString() {
return "StockInInvoice(出库单) => ["+super.toString()+", receiveMan="+receiveMan+"]";
}
}
package com.originspark.drp.models.resources;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
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 phone;
/**
* 联系人
*/
@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 String getRegistrationRange() {
return registrationRange;
}
public void setRegistrationRange(String registrationRange) {
this.registrationRange = registrationRange;
}
public String getRegistrationBank() {
return registrationBank;
}
public void setRegistrationBank(String registrationBank) {
this.registrationBank = registrationBank;
}
public String getTaxNumber() {
return taxNumber;
}
public void setTaxNumber(String taxNumber) {
this.taxNumber = taxNumber;
}
public String getOrgCodeCertificate() {
return orgCodeCertificate;
}
public void setOrgCodeCertificate(String orgCodeCertificate) {
this.orgCodeCertificate = orgCodeCertificate;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public List<Ware> getWares() {
return wares;
}
public void setWares(List<Ware> wares) {
this.wares = wares;
}
public int getCountOfWares(){
return getWares().size();
}
}
package com.originspark.drp.models.resources;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.originspark.drp.models.AbstractModel;
import com.originspark.drp.models.projects.costs.StockInCost;
import com.originspark.drp.models.projects.costs.StockOutCost;
import com.originspark.drp.models.projects.inventories.MonthendInventory;
import com.sun.istack.internal.NotNull;
/**
* 产品
*/
@Entity
@Table(name = "wares")
public class Ware extends AbstractModel {
/**
* 名称
*/
@NotNull
private String name;
/**
* 品牌
*/
private String brand;
/**
* 规格
*/
private String model;
/**
* 单位
*/
@NotNull
private String unit;
/**
* 备注
*/
private String note;
/**
* 供应商
*/
@NotNull
@ManyToOne
private Vendor vendor;
@JsonIgnore
@OneToMany(mappedBy="ware")
private List<StockInCost> inCosts;
@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
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Vendor getVendor() {
return vendor;
}
public void setVendor(Vendor vendor) {
this.vendor = vendor;
}
public List<StockInCost> getInCosts() {
return inCosts;
}
public void setInCosts(List<StockInCost> inCosts) {
this.inCosts = inCosts;
}
public List<StockOutCost> getOutCosts() {
return outCosts;
}
public void setOutCosts(List<StockOutCost> outCosts) {
this.outCosts = outCosts;
}
public List<MonthendInventory> getInventories() {
return inventories;
}
public void setInventories(List<MonthendInventory> inventories) {
this.inventories = inventories;
}
@Override
public String toString() {
return "Ware(商品) => [" + super.toString() + ", name=" + name + ", brand=" + brand + ", model=" + model + ", unit=" + unit + "]";
}
@JsonProperty("vendor")
public Map<String, Object> getVendorUI() {
Map<String, Object> vendorUI = new HashMap<String, Object>();
Vendor vendor = getVendor();
if (vendor != null) {
vendorUI.put("id", vendor.getId());
vendorUI.put("name", vendor.getName());
}
return vendorUI;
}
public int getCountOfInCosts(){
return getInCosts().size();
}
public int getCountOfOutCosts(){
return getOutCosts().size();
}
public int getCountOfInventories(){
return getInventories().size();
}
}
package com.originspark.drp.models.users;
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;
@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;
/**
* 编号
*/
private String code;
/**
* 姓名
*/
private String name;
/**
* 密码
*/
@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 String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
Blowfish bf=new Blowfish();
String pwd=bf.encryptString(password);
this.password = pwd;
}
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Gender getGender() {
return gender;
}
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;
}
}
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()+"]";
}
}
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"));
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
package com.originspark.drp.service.account;
import java.util.List;
import com.originspark.drp.models.users.AbstractUser;
public interface AccountService{
public List<AbstractUser> validate(String username,String password);
}
package com.originspark.drp.service.account;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
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.models.users.AbstractUser;
import com.originspark.drp.util.enums.Status;
@Transactional
@Service("AccountService")
public class AccountServiceBean implements AccountService {
@PersistenceContext
protected EntityManager em;
@Override
public List<AbstractUser> validate(String username, String password) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<AbstractUser> dataQuery = cb.createQuery(AbstractUser.class);
Root<AbstractUser> user = dataQuery.from(AbstractUser.class);
dataQuery.select(user);
List<Predicate> criteria = new ArrayList<Predicate>();
criteria.add(cb.equal(user.get("name"), username));
criteria.add(cb.equal(user.get("status"), Status.ACTIVE));
Predicate[] predicates = new Predicate[criteria.size()];
predicates = criteria.toArray(predicates);
dataQuery.where(cb.and(predicates));
return em.createQuery(dataQuery).getResultList();
}
}
package com.originspark.drp.service.projects;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
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;
@Service
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("projectService")
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;
}
}
package com.originspark.drp.service.projects.costs;
import java.util.List;
import java.util.Map;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.projects.costs.StockInCost;
import com.originspark.drp.util.json.FilterRequest;
public interface StockInCostService extends BaseDAO<StockInCost> {
List<StockInCost> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
}
package com.originspark.drp.service.projects.costs;
/**@author yestin*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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.costs.StockInCost;
import com.originspark.drp.models.projects.costs.AbstractCost.COLUMNS;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service("stockInCostService")
public class StockInCostServiceBean extends BaseDAOSupport<StockInCost> implements
StockInCostService {
@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);
dataQuery.select(stockInCost);
Predicate[] predicates = toPredicates(cb, stockInCost, filters);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
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));
Predicate[] predicates = toPredicates(cb, stockInCost, filters);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockInCost> stockInCost,
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 INVOICE:
if(value != null && !value.equals("")){
criteria.add(cb.equal(stockInCost.get("invoice").<Long>get("id"),Long.parseLong(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() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
}
package com.originspark.drp.service.projects.costs;
import java.util.List;
import java.util.Map;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.projects.costs.StockOutCost;
import com.originspark.drp.util.json.FilterRequest;
public interface StockOutCostService extends BaseDAO<StockOutCost> {
List<StockOutCost> pagedDataSet(int start, int limit, List<FilterRequest> filters);
Long pagedDataCount(List<FilterRequest> filters);
Map<String, String> validate();
}
package com.originspark.drp.service.projects.costs;
/**@author yestin*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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.costs.StockOutCost;
import com.originspark.drp.models.projects.costs.AbstractCost.COLUMNS;
import com.originspark.drp.util.json.FilterRequest;
@Transactional
@Service("stockOutCostService")
public class StockOutCostServiceBean extends BaseDAOSupport<StockOutCost> implements
StockOutCostService {
@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);
dataQuery.select(stockOutCost);
Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
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));
Predicate[] predicates = toPredicates(cb, stockOutCost, filters);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<StockOutCost> stockOutCost,
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 INVOICE:
if(value != null && !value.equals("")){
criteria.add(cb.equal(stockOutCost.get("invoice").<Long>get("id"),Long.parseLong(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() {
// TODO
/**
* 对ware的数据进行验证
*/
return null;
}
}
package com.originspark.drp.service.projects.invoices;
import java.util.List;
import java.util.Map;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.projects.invoices.StockInInvoice;
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);
}
package com.originspark.drp.service.projects.invoices;
import java.util.List;
import java.util.Map;
import com.originspark.drp.dao.BaseDAO;
import com.originspark.drp.models.projects.invoices.StockOutInvoice;
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);
}
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);
Long pagedDataCount(List<FilterRequest> filters);
Map<String,String> validate();
Vendor findByName(String name);
}
package com.originspark.drp.service.resources;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.persistence.TypedQuery;
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 com.originspark.drp.dao.BaseDAOSupport;
import com.originspark.drp.models.resources.Vendor;
import com.originspark.drp.models.resources.Vendor.COLUMNS;
import com.originspark.drp.util.json.FilterRequest;
@Service("vendorService")
public class VendorServiceBean extends BaseDAOSupport<Vendor> implements VendorService {
@Override
public List<Vendor> pagedDataSet(int start, int limit, List<FilterRequest> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Vendor> dataQuery = cb.createQuery(Vendor.class);
Root<Vendor> vendor = dataQuery.from(Vendor.class);
dataQuery.select(vendor);
Predicate[] predicates = toPredicates(cb, vendor, filters);
if (predicates != null) {
dataQuery.where(cb.and(predicates));
}
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<Vendor> vendor = countQuery.from(Vendor.class);
countQuery.select(cb.count(vendor));
Predicate[] predicates = toPredicates(cb, vendor, filters);
if (predicates != null) {
countQuery.where(cb.and(predicates));
}
return em.createQuery(countQuery).getSingleResult();
}
public static Predicate[] toPredicates(CriteriaBuilder cb, Root<Vendor> vendor, 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(vendor.<String>get("name"), "%" + value + "%"));
}
break;
case ADDRESS:
if (value != null && !value.equals("")) {
criteria.add(cb.like(vendor.<String>get("address"), "%" + value + "%"));
}
break;
case PHONE:
if (value != null && !value.equals("")) {
criteria.add(cb.like(vendor.<String>get("phone"), "%" + value + "%"));
}
break;
case CONTACTMAN:
if (value != null && !value.equals("")) {
criteria.add(cb.like(vendor.<String>get("contactMan"), "%" + 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() {
// TODO Auto-generated method stub
return null;
}
@Override
public Vendor findByName(String name) {
String jpql = "from Vendor where name = :name";
TypedQuery<Vendor> query = em.createQuery(jpql, Vendor.class)
.setParameter("name", name);
List<Vendor> vendors = query.getResultList();
if (vendors.isEmpty()) {
return null;
}
return vendors.get(0);
}
}
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);
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
package com.originspark.drp.util.enums;
public enum Gender {
MALE,
FEMALE
}
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.
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.
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.
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.
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.
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