wangys 6 vuotta sitten
vanhempi
commit
460adf85d6

+ 20 - 4
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/entity/Manage.java

@@ -13,6 +13,7 @@ import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Manage
@@ -27,7 +28,7 @@ import java.util.List;
 public class Manage implements Serializable {
 
     @Id
-    private String id;
+    private Long id;
 
     @Column(name = "dept_id")
     private Long deptId;
@@ -53,11 +54,11 @@ public class Manage implements Serializable {
     @Enumerated(EnumType.ORDINAL)
     private BaseStatusEnum status;
 
-    @Column(name = "cost_type")
-    private String costType;
+    @Column(name = "cost_type_id")
+    private Long costTypeId;
 
     @Enumerated(EnumType.ORDINAL)
-    private CompanyTypeEnum company_type;
+    private CompanyTypeEnum companyType;
 
     @Column(name = "remark")
     private String remark;
@@ -79,4 +80,19 @@ public class Manage implements Serializable {
 
     @Transient
     private List<String> costTypes;
+
+    @Transient
+    private Department department;
+
+    @Transient
+    private Project project;
+
+    @Transient
+    private Product product;
+
+    @Transient
+    private CostType costType;
+
+    @Transient
+    private Object company;
 }

+ 0 - 11
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/entity/Product.java

@@ -25,12 +25,6 @@ public class Product implements Serializable {
     @Id
     private Long id;
 
-    @Column(name = "dept_id")
-    private Long deptId;
-
-    @Column(name = "project_id")
-    private Long projectId;
-
     @Column(name = "code")
     private String code;
 
@@ -49,9 +43,4 @@ public class Product implements Serializable {
     @Column(name = "gmt_modified")
     private Date gmtModified;
 
-    @Transient
-    private Department department;
-
-    @Transient
-    private Project project;
 }

+ 0 - 6
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/entity/Project.java

@@ -28,9 +28,6 @@ public class Project implements Serializable {
     @Column(name = "code")
     private String code;
 
-    @Column(name = "dept_id")
-    private Long deptId;
-
     @Column(name = "name")
     private String name;
 
@@ -49,7 +46,4 @@ public class Project implements Serializable {
     @Column(name = "gmt_modified")
     private Date gmtModified;
 
-    @Transient
-    private Department department;
-
 }

+ 2 - 0
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/service/ManageService.java

@@ -10,4 +10,6 @@ public interface ManageService {
     ApiResult save(Manage manage);
 
     ApiResult update(Manage manage);
+
+    ApiResult getById(Long manageId);
 }

+ 140 - 9
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/service/impl/ManageServiceImpl.java

@@ -1,7 +1,9 @@
 package cn.efunbox.manage.base.service.impl;
 
-import cn.efunbox.manage.base.entity.Manage;
-import cn.efunbox.manage.base.repository.ManageRepository;
+import cn.efunbox.manage.base.entity.*;
+import cn.efunbox.manage.base.enums.CompanyTypeEnum;
+import cn.efunbox.manage.base.enums.ManageTypeEnum;
+import cn.efunbox.manage.base.repository.*;
 import cn.efunbox.manage.base.service.ManageService;
 import cn.efunbox.manage.common.result.ApiCode;
 import cn.efunbox.manage.common.result.ApiResult;
@@ -9,14 +11,15 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.Mapping;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+
+import static cn.efunbox.manage.base.enums.CompanyTypeEnum.COMPANY;
 
 /**
  * ManageSreviceImpl
@@ -28,6 +31,21 @@ public class ManageServiceImpl implements ManageService {
     @Autowired
     ManageRepository manageRepository;
 
+    @Autowired
+    DepartmentRepository departmentRepository;
+
+    @Autowired
+    ProjectRepository projectRepository;
+
+    @Autowired
+    ProductRepository productRepository;
+
+    @Autowired
+    CompanyRepository companyRepository;
+
+    @Autowired
+    CostTypeRepository costTypeRepository;
+
     @Override
     public ApiResult list(Manage manage) {
         Specification querySpecifi = new Specification<Manage>() {
@@ -47,7 +65,7 @@ public class ManageServiceImpl implements ManageService {
                 if(Objects.nonNull(manage.getType())){
                     predicates.add(criteriaBuilder.equal(root.get("type"), manage.getType()));
                 }
-                if(!StringUtils.equals("0", manage.getCostType()) && StringUtils.isNotBlank(manage.getCostType())){
+                if(0 == manage.getCostTypeId() && Objects.nonNull(manage.getCostType())){
                     predicates.add(criteriaBuilder.equal(root.get("costType"), manage.getCostType()));
                 }
                 if(Objects.nonNull(manage.getIncomeStatus())){
@@ -68,14 +86,99 @@ public class ManageServiceImpl implements ManageService {
             }
         };
         List<Manage> manages = manageRepository.findAll(querySpecifi);
-        if(Objects.nonNull(manages)){
-            return ApiResult.ok(manages);
+        if(Objects.isNull(manages)){
+            return ApiResult.error(ApiCode.UNKNOWN_ERROR);
+
         }
-        return ApiResult.error(ApiCode.UNKNOWN_ERROR);
+        List<Long> deptIds = new ArrayList<>();
+        List<Long> projectIds = new ArrayList<>();
+        List<Long> productIds = new ArrayList<>();
+        List<Long> companyIds = new ArrayList<>();
+        List<Long> costTypeIds = new ArrayList<>();
+        manages.stream().forEach(m -> {
+            deptIds.add(m.getDeptId());
+            projectIds.add(m.getProjectId());
+            if(Objects.equals(m.getType(), ManageTypeEnum.COST)){
+                switch (m.getCompanyType()){
+                    case COMPANY:
+                        companyIds.add(m.getCompanyId());
+                        break;
+                    case PROJECT:
+                        projectIds.add(m.getCompanyId());
+                        break;
+                    case DEPARTMENT:
+                        deptIds.add(m.getCompanyId());
+                        break;
+                    default:
+                        break;
+                }
+            }else {
+                productIds.add(m.getProductId());
+            }
+            if(Objects.nonNull(m.getCostTypeId())){
+                costTypeIds.add(m.getCostTypeId());
+            }
+        });
+        //部门
+        List<Department> departments = departmentRepository.findByIds(deptIds);
+        Map<Long, Department> departmentMap = new HashMap<>();
+        departments.stream().forEach(department -> {
+            departmentMap.put(department.getId(), department);
+        });
+        //项目
+        List<Project> projects = projectRepository.findByIds(projectIds);
+        Map<Long, Project> projectMap = new HashMap<>();
+        projects.stream().forEach(project -> {
+            projectMap.put(project.getId(), project);
+        });
+        //产品
+        List<Product> products = productRepository.findByIds(productIds);
+        Map<Long, Product> producMap = new HashMap<>();
+        products.stream().forEach(product -> {
+            producMap.put(product.getId(), product);
+        });
+        //支出发起人
+        List<Company> companies = companyRepository.findByIds(companyIds);
+        Map<Long, Company> companyMap = new HashMap<>();
+        companies.stream().forEach(company -> {
+            companyMap.put(company.getId(), company);
+        });
+        //成本类型
+        List<CostType> costTypes = costTypeRepository.findByIds(costTypeIds);
+        Map<Long, CostType> costTypeMap = new HashMap<>();
+        costTypes.stream().forEach(costType -> {
+            costTypeMap.put(costType.getId(), costType);
+        });
+
+        manages.stream().forEach(m -> {
+            m.setDepartment(departmentMap.get(m.getDeptId()));
+            m.setProject(projectMap.get(m.getProjectId()));
+            m.setProduct(producMap.get(m.getProductId()));
+            if(Objects.nonNull(m.getCostTypeId())){
+                m.setCostType(costTypeMap.get(m.getCostTypeId()));
+            }
+            switch (m.getCompanyType()){
+                case COMPANY:
+                    m.setCompany(companyMap.get(m.getCompanyId()));
+                    break;
+                case PROJECT:
+                    m.setCompany(companyMap.get(m.getProjectId()));
+                    break;
+                case DEPARTMENT:
+                    m.setCompany(companyMap.get(m.getDeptId()));
+                    break;
+                default:
+                    break;
+            }
+        });
+        return ApiResult.ok(manages);
     }
 
     @Override
     public ApiResult save(Manage manage) {
+        if(Objects.isNull(manage)){
+            return ApiResult.error(ApiCode.PARAMETER_ERROR);
+        }
         manage = manageRepository.save(manage);
         if(Objects.nonNull(manage)){
             return ApiResult.ok(manage);
@@ -85,10 +188,38 @@ public class ManageServiceImpl implements ManageService {
 
     @Override
     public ApiResult update(Manage manage) {
+        if(Objects.isNull(manage)){
+            return ApiResult.error(ApiCode.PARAMETER_ERROR);
+        }
         manage = manageRepository.update(manage);
         if(Objects.nonNull(manage)){
             return ApiResult.ok(manage);
         }
         return ApiResult.error(ApiCode.UNKNOWN_ERROR);
     }
+
+    @Override
+    public ApiResult getById(Long manageId) {
+        if(Objects.isNull(manageId)){
+            return ApiResult.error(ApiCode.PARAMETER_ERROR);
+        }
+        Manage manage = manageRepository.find(manageId);
+        manage.setDepartment(departmentRepository.find(manage.getDeptId()));
+        manage.setProject(projectRepository.find(manage.getProjectId()));
+        manage.setProduct(productRepository.find(manage.getProductId()));
+        switch (manage.getCompanyType()){
+            case COMPANY:
+                manage.setCompany(companyRepository.find(manage.getCompanyId()));
+                break;
+            case PROJECT:
+                manage.setCompany(projectRepository.find(manage.getCompanyId()));
+                break;
+            case DEPARTMENT:
+                manage.setCompany(departmentRepository.find(manage.getDeptId()));
+                break;
+            default:
+                break;
+        }
+        return ApiResult.error(ApiCode.UNKNOWN_ERROR);
+    }
 }

+ 1 - 25
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/service/impl/ProductServiceImpl.java

@@ -33,31 +33,7 @@ public class ProductServiceImpl implements ProductService {
 
     @Override
     public ApiResult list(Product product) {
-        List<Product> products = productRepository.findByStatusOrderBySortDesc(BaseStatusEnum.NORMAL);
-        List<Long> deptIds = new ArrayList<>();
-        List<Long> projectIds = new ArrayList<>();
-        products.stream().forEach(p -> {
-            deptIds.add(p.getDeptId());
-            projectIds.add(p.getProjectId());
-        });
-        List<Project> projects =  projectRepository.findByIds(projectIds);
-        List<Department> departments = departmentRepository.findByIds(deptIds);
-
-        Map<Long, Project> projectMap = new HashMap<>();
-        Map<Long, Department> departmentMap = new HashMap<>();
-
-        projects.stream().forEach(p -> {
-            projectMap.put(p.getId(), p);
-        });
-        departments.stream().forEach(p -> {
-            departmentMap.put(p.getId(), p);
-        });
-
-        products.stream().forEach(p -> {
-            p.setProject(projectMap.get(p.getProjectId()));
-            p.setDepartment(departmentMap.get(p.getDeptId()));
-        });
-
+        List<Product> products = productRepository.find(product);
         if(Objects.nonNull(products)){
             return ApiResult.ok(products);
         }

+ 0 - 14
efunbox-base/efunbox-base-api/src/main/java/cn/efunbox/manage/base/service/impl/ProjectServiceImpl.java

@@ -29,20 +29,6 @@ public class ProjectServiceImpl implements ProjectService {
     @Override
     public ApiResult list(Project project) {
         List<Project> projects = projectRepository.find(project);
-        List<Long> deptIds = new ArrayList<>();
-        projects.stream().forEach(p -> {
-            deptIds.add(p.getDeptId());
-        });
-        List<Department> departments = departmentRepository.findByIds(deptIds);
-        Map<Long, Department> departmentMap = new HashMap<>();
-        departments.stream().forEach(department -> {
-            departmentMap.put(department.getId(), department);
-        });
-
-        projects.stream().forEach(p ->{
-            p.setDepartment(departmentMap.get(p.getDeptId()));
-        });
-
         if(Objects.nonNull(projects)){
             return ApiResult.ok(projects);
         }

+ 6 - 3
efunbox-base/efunbox-base-web/src/main/java/cn/efunbox/manage/base/controller/ManageController.java

@@ -6,9 +6,7 @@ import cn.efunbox.manage.base.service.DepartmentService;
 import cn.efunbox.manage.base.service.ManageService;
 import cn.efunbox.manage.common.result.ApiResult;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -37,4 +35,9 @@ public class ManageController {
         manage.setDeptIds(deptIds);
         return manageService.list(manage);
     }
+
+    @PostMapping
+    public ApiResult save(@RequestBody Manage manage){
+        return manageService.save(manage);
+    }
 }