diff --git a/erp_web/pages/manage/organization.html b/erp_web/pages/manage/organization.html
new file mode 100644
index 00000000..4d39e0fe
--- /dev/null
+++ b/erp_web/pages/manage/organization.html
@@ -0,0 +1,310 @@
+
+
+
+ 机构管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/erp_web/pages/manage/organization_forselect.html b/erp_web/pages/manage/organization_forselect.html
new file mode 100644
index 00000000..0d889a92
--- /dev/null
+++ b/erp_web/pages/manage/organization_forselect.html
@@ -0,0 +1,45 @@
+
+
+
+ 机构选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sql/jsh_erp.sql b/sql/jsh_erp.sql
index 97e28403..823b5684 100644
--- a/sql/jsh_erp.sql
+++ b/sql/jsh_erp.sql
@@ -1253,3 +1253,59 @@ where Id = 5;
-- ----------------------------
alter table jsh_depot add principal bigint(20) DEFAULT null COMMENT '负责人';
+-- ----------------------------
+-- 时间:2019年3月6日
+-- version:1.0.5
+-- 此次更新
+-- 1、添加机构表
+-- 2、添加机构用户关系表
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+-- ----------------------------
+-- 添加机构表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_organization`;
+CREATE TABLE `jsh_organization` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `org_no` varchar(20) DEFAULT NULL COMMENT '机构编号',
+ `org_full_name` varchar(500) DEFAULT NULL COMMENT '机构全称',
+ `org_abr` varchar(20) DEFAULT NULL COMMENT '机构简称',
+ `org_tpcd` varchar(9) DEFAULT NULL COMMENT '机构类型',
+ `org_stcd` char(1) DEFAULT NULL COMMENT '机构状态,1未营业、2正常营业、3暂停营业、4终止营业、5已除名',
+ `org_parent_no` varchar(20) DEFAULT NULL COMMENT '机构父节点编号',
+ `sort` varchar(20) DEFAULT NULL COMMENT '机构显示顺序',
+ remark VARCHAR(500) DEFAULT null COMMENT '备注',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+ `org_create_time` datetime DEFAULT NULL COMMENT '机构创建时间',
+ `org_stop_time` datetime DEFAULT NULL COMMENT '机构停运时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='机构表';
+-- ----------------------------
+-- 添加机构用户关系表
+-- ----------------------------
+DROP TABLE IF EXISTS `jsh_orga_user_rel`;
+CREATE TABLE `jsh_orga_user_rel` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `orga_id` bigint(20) NOT NULL COMMENT '机构id',
+ `user_id` bigint(20) NOT NULL COMMENT '用户id',
+ `user_blng_orga_dspl_seq` varchar(20) DEFAULT NULL COMMENT '用户在所属机构中显示顺序',
+ `delete_flag` char(1) DEFAULT 0 COMMENT '删除标记,0未删除,1删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='机构用户关系表';
+-- ----------------------------
+-- 添加机构管理菜单
+-- ----------------------------
+INSERT INTO `jsh_functions`(`Number`, `Name`, `PNumber`, `URL`, `State`, `Sort`, `Enabled`, `Type`, `PushBtn`) VALUES ('000108', '机构管理', '0001', '../manage/organization.html', b'1', '0139', b'1', '电脑版', '');
+-- ----------------------------
+-- 添加根机构
+-- ----------------------------
+INSERT INTO `jsh_organization`(`org_no`, `org_full_name`, `org_abr`, `org_tpcd`, `org_stcd`, `org_parent_no`, `sort`, `remark`, `create_time`, `creator`, `update_time`, `updater`, `org_create_time`, `org_stop_time`) VALUES ('01', '根机构', '根机构', NULL, '2', '-1', '1', '根机构,初始化存在', NULL, NULL, NULL, NULL, NULL, NULL);
+
+
diff --git a/sql/华夏ERP数据库设计汇总.xlsx b/sql/华夏ERP数据库设计汇总.xlsx
index 2a7b3f93..18855f4b 100644
Binary files a/sql/华夏ERP数据库设计汇总.xlsx and b/sql/华夏ERP数据库设计汇总.xlsx differ
diff --git a/src/main/java/com/jsh/erp/constants/BusinessConstants.java b/src/main/java/com/jsh/erp/constants/BusinessConstants.java
index 26b3f775..7df6d12f 100644
--- a/src/main/java/com/jsh/erp/constants/BusinessConstants.java
+++ b/src/main/java/com/jsh/erp/constants/BusinessConstants.java
@@ -3,8 +3,8 @@ package com.jsh.erp.constants;
/**
* @ClassName:BusinessConstants
* @Description 业务字典类
- * @Author linshengming
- * @Date 2018-9-15 17:58
+ * @Author qiankunpingtai
+ * @Date 2019-3-6 17:58
* @Version 1.0
**/
public class BusinessConstants {
@@ -85,6 +85,21 @@ public class BusinessConstants {
public static final String MATERIAL_CATEGORY_STATUS_DEFAULT = "0";
public static final String MATERIAL_CATEGORY_STATUS_ENABLE = "1";
public static final String MATERIAL_CATEGORY_STATUS_DELETE = "2";
+ /**
+ * 机构状态
+ * 1未营业、2正常营业、3暂停营业、4终止营业,5已除名
+ * */
+ public static final String ORGANIZATION_STCD_NOT_OPEN = "1";
+ public static final String ORGANIZATION_STCD_OPEN = "2";
+ public static final String ORGANIZATION_STCD_BUSINESS_SUSPENDED = "3";
+ public static final String ORGANIZATION_STCD_BUSINESS_TERMINATED = "4";
+ public static final String ORGANIZATION_STCD_REMOVED = "5";
+ /**
+ * 根机构编号
+ * 根机构编号默认为01
+ * */
+ public static final String ORGANIZATION_ROOT_NO = "01";
+
diff --git a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java
index 3eec3aef..4f538bd2 100644
--- a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java
+++ b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java
@@ -75,6 +75,28 @@ public class ExceptionConstants {
//商品类别编号已存在
public static final int MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE = 7500003;
public static final String MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG = "商品类别编号已存在";
+ /**
+ * 机构
+ * type = 110
+ * */
+ //添加机构信息失败
+ public static final int ORGANIZATION_ADD_FAILED_CODE = 11000000;
+ public static final String ORGANIZATION_ADD_FAILED_MSG = "添加机构信息失败";
+ //删除机构信息失败
+ public static final int ORGANIZATION_DELETE_FAILED_CODE = 11000001;
+ public static final String ORGANIZATION_DELETE_FAILED_MSG = "删除机构信息失败";
+ //修改机构信息失败
+ public static final int ORGANIZATION_EDIT_FAILED_CODE = 11000002;
+ public static final String ORGANIZATION_EDIT_FAILED_MSG = "修改机构信息失败";
+ //机构编号已存在
+ public static final int ORGANIZATION_NO_ALREADY_EXISTS_CODE = 11000003;
+ public static final String ORGANIZATION_NO_ALREADY_EXISTS_MSG = "机构编号已存在";
+ //根机构不允许删除
+ public static final int ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_CODE = 11000004;
+ public static final String ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_MSG = "根机构不允许删除";
+ //根机构不允许修改
+ public static final int ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_CODE = 11000005;
+ public static final String ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_MSG = "根机构不允许修改";
/**
* 标准正常返回/操作成功返回
diff --git a/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
index 6f31a606..6ec8daa4 100644
--- a/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
+++ b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
@@ -137,8 +137,8 @@ public class MaterialCategoryController {
MaterialCategory mc= JSON.parseObject(beanJson, MaterialCategory.class);
int i= materialCategoryService.editMaterialCategory(mc);
if(i<1){
- throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_ADD_FAILED_CODE,
- ExceptionConstants.MATERIAL_CATEGORY_ADD_FAILED_MSG);
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_EDIT_FAILED_CODE,
+ ExceptionConstants.MATERIAL_CATEGORY_EDIT_FAILED_MSG);
}
return result;
}
diff --git a/src/main/java/com/jsh/erp/controller/OrganizationController.java b/src/main/java/com/jsh/erp/controller/OrganizationController.java
new file mode 100644
index 00000000..fb1864df
--- /dev/null
+++ b/src/main/java/com/jsh/erp/controller/OrganizationController.java
@@ -0,0 +1,159 @@
+package com.jsh.erp.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.ExceptionConstants;
+import com.jsh.erp.datasource.entities.MaterialCategory;
+import com.jsh.erp.datasource.entities.Organization;
+import com.jsh.erp.datasource.vo.TreeNode;
+import com.jsh.erp.exception.BusinessRunTimeException;
+import com.jsh.erp.service.materialCategory.MaterialCategoryService;
+import com.jsh.erp.service.organization.OrganizationService;
+import com.jsh.erp.utils.BaseResponseInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * create by: cjl
+ * description:
+ *
+ * create time: 2019/3/6 10:54
+ */
+@RestController
+@RequestMapping(value = "/organization")
+public class OrganizationController {
+ private Logger logger = LoggerFactory.getLogger(OrganizationController.class);
+
+ @Resource
+ private OrganizationService organizationService;
+ /**
+ * 根据id来查询机构信息
+ * @param id
+ * @param request
+ * @return
+ */
+ @RequestMapping(value = "/findById")
+ public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) throws Exception {
+ BaseResponseInfo res = new BaseResponseInfo();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ List dataList = organizationService.findById(id);
+ JSONObject outer = new JSONObject();
+ if (null != dataList) {
+ for (Organization org : dataList) {
+ outer.put("id", org.getId());
+ outer.put("orgFullName", org.getOrgFullName());
+ outer.put("orgAbr", org.getOrgAbr());
+ outer.put("orgParentNo", org.getOrgParentNo());
+ List dataParentList = organizationService.findByOrgNo(org.getOrgNo());
+ if(dataParentList!=null&&dataParentList.size()>0){
+ //父级机构名称显示简称
+ outer.put("orgParentName", dataParentList.get(0).getOrgAbr());
+ }
+ outer.put("orgTpcd", org.getOrgTpcd());
+ outer.put("orgStcd", org.getOrgStcd());
+ outer.put("orgNo", org.getOrgNo());
+ outer.put("sort", org.getSort());
+ outer.put("orgCreateTime", sdf.format(org.getOrgCreateTime()));
+ outer.put("orgStopTime", sdf.format(org.getOrgStopTime()));
+ outer.put("remark", org.getRemark());
+ }
+ }
+ res.code = 200;
+ res.data = outer;
+ } catch(Exception e){
+ e.printStackTrace();
+ res.code = 500;
+ res.data = "获取数据失败";
+ }
+ return res;
+ }
+
+ /**
+ * create by: cjl
+ * description:
+ * 获取机构树数据
+ * create time: 2019/2/19 11:49
+ * @Param:
+ * @return com.alibaba.fastjson.JSONArray
+ */
+ @RequestMapping(value = "/getOrganizationTree")
+ public JSONArray getOrganizationTree() throws Exception{
+ JSONArray arr=new JSONArray();
+ List organizationTree= organizationService.getOrganizationTree();
+ if(organizationTree!=null&&organizationTree.size()>0){
+ for(TreeNode node:organizationTree){
+ String str=JSON.toJSONString(node);
+ JSONObject obj=JSON.parseObject(str);
+ arr.add(obj) ;
+ }
+ }
+ return arr;
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 新增机构信息
+ * create time: 2019/2/19 17:17
+ * @Param: beanJson
+ * @return java.lang.Object
+ */
+ @RequestMapping(value = "/addOrganization")
+ public Object addOrganization(@RequestParam("info") String beanJson) throws Exception {
+ JSONObject result = ExceptionConstants.standardSuccess();
+ Organization org= JSON.parseObject(beanJson, Organization.class);
+ int i= organizationService.addOrganization(org);
+ if(i<1){
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_ADD_FAILED_CODE,
+ ExceptionConstants.ORGANIZATION_ADD_FAILED_MSG);
+ }
+ return result;
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 修改机构信息
+ * create time: 2019/2/20 9:30
+ * @Param: beanJson
+ * @return java.lang.Object
+ */
+ @RequestMapping(value = "/editOrganization")
+ public Object editOrganization(@RequestParam("info") String beanJson) throws Exception {
+ JSONObject result = ExceptionConstants.standardSuccess();
+ Organization org= JSON.parseObject(beanJson, Organization.class);
+ int i= organizationService.editOrganization(org);
+ if(i<1){
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_EDIT_FAILED_CODE,
+ ExceptionConstants.ORGANIZATION_EDIT_FAILED_MSG);
+ }
+ return result;
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 批量删除机构信息
+ * create time: 2019/2/19 17:26
+ * @Param: ids
+ * @return java.lang.Object
+ */
+ @RequestMapping(value = "/batchDeleteOrganization")
+ public Object batchDeleteOrganization(@RequestParam("ids") String ids) throws Exception {
+ JSONObject result = ExceptionConstants.standardSuccess();
+ int i= organizationService.batchDeleteOrganizationByIds(ids);
+ if(i<1){
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_DELETE_FAILED_CODE,
+ ExceptionConstants.ORGANIZATION_DELETE_FAILED_MSG);
+ }
+ return result;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/datasource/mappers/OrganizationMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/OrganizationMapperEx.java
new file mode 100644
index 00000000..bec06a91
--- /dev/null
+++ b/src/main/java/com/jsh/erp/datasource/mappers/OrganizationMapperEx.java
@@ -0,0 +1,29 @@
+package com.jsh.erp.datasource.mappers;
+
+import com.jsh.erp.datasource.entities.MaterialCategory;
+import com.jsh.erp.datasource.entities.Organization;
+import com.jsh.erp.datasource.vo.TreeNode;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/3/6 15:51
+ */
+public interface OrganizationMapperEx {
+
+
+ List getNodeTree();
+ List getNextNodeTree(@Param("id") Long id);
+
+ int addOrganization(Organization org);
+
+ int batchDeleteOrganizationByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]);
+
+ int editOrganization(Organization org);
+ List getOrganizationRootByIds(@Param("ids") String ids[]);
+}
diff --git a/src/main/java/com/jsh/erp/service/organization/OrganizationComponent.java b/src/main/java/com/jsh/erp/service/organization/OrganizationComponent.java
new file mode 100644
index 00000000..c7ff227a
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/organization/OrganizationComponent.java
@@ -0,0 +1,66 @@
+package com.jsh.erp.service.organization;
+
+import com.jsh.erp.service.ICommonQuery;
+import com.jsh.erp.utils.Constants;
+import com.jsh.erp.utils.QueryUtils;
+import com.jsh.erp.utils.StringUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/3/6 15:09
+ */
+@Service(value = "organization_component")
+@OrganizationResource
+public class OrganizationComponent implements ICommonQuery {
+ @Resource
+ private OrganizationService organizationService;
+ @Override
+ public Object selectOne(String condition) {
+ return null;
+ }
+
+ @Override
+ public List> select(Map parameterMap) {
+ return getOrganizationList(parameterMap);
+ }
+ private List> getOrganizationList(Map map) {
+ return null;
+ }
+ @Override
+ public Long counts(Map parameterMap) {
+ return null;
+ }
+
+ @Override
+ public int insert(String beanJson, HttpServletRequest request) {
+ return organizationService.insertOrganization(beanJson,request);
+ }
+
+ @Override
+ public int update(String beanJson, Long id) {
+ return organizationService.updateOrganization(beanJson,id);
+ }
+
+ @Override
+ public int delete(Long id) {
+ return organizationService.deleteOrganization(id);
+ }
+
+ @Override
+ public int batchDelete(String ids) {
+ return organizationService.batchDeleteOrganization(ids);
+ }
+
+ @Override
+ public int checkIsNameExist(Long id, String name) {
+ return 0;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/service/organization/OrganizationResource.java b/src/main/java/com/jsh/erp/service/organization/OrganizationResource.java
new file mode 100644
index 00000000..e299cc0b
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/organization/OrganizationResource.java
@@ -0,0 +1,18 @@
+package com.jsh.erp.service.organization;
+
+import com.jsh.erp.service.ResourceInfo;
+
+import java.lang.annotation.*;
+
+/**
+ * Description
+ * 机构
+ * @Author: cjl
+ * @Date: 2019/3/6 15:10
+ */
+@ResourceInfo(value = "organization", type = 110)
+@Inherited
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OrganizationResource {
+}
diff --git a/src/main/java/com/jsh/erp/service/organization/OrganizationService.java b/src/main/java/com/jsh/erp/service/organization/OrganizationService.java
new file mode 100644
index 00000000..256898c9
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/organization/OrganizationService.java
@@ -0,0 +1,188 @@
+package com.jsh.erp.service.organization;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.BusinessConstants;
+import com.jsh.erp.constants.ExceptionConstants;
+import com.jsh.erp.datasource.entities.Organization;
+import com.jsh.erp.datasource.entities.OrganizationExample;
+import com.jsh.erp.datasource.entities.User;
+import com.jsh.erp.datasource.mappers.OrganizationMapper;
+import com.jsh.erp.datasource.mappers.OrganizationMapperEx;
+import com.jsh.erp.datasource.vo.TreeNode;
+import com.jsh.erp.exception.BusinessRunTimeException;
+import com.jsh.erp.service.user.UserService;
+import com.jsh.erp.utils.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/3/6 15:10
+ */
+@Service
+public class OrganizationService {
+ private Logger logger = LoggerFactory.getLogger(OrganizationService.class);
+
+ @Resource
+ private OrganizationMapper organizationMapper;
+ @Resource
+ private OrganizationMapperEx organizationMapperEx;
+ @Resource
+ private UserService userService;
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int insertOrganization(String beanJson, HttpServletRequest request) {
+ Organization organization = JSONObject.parseObject(beanJson, Organization.class);
+ return organizationMapper.insertSelective(organization);
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int updateOrganization(String beanJson, Long id) {
+ Organization organization = JSONObject.parseObject(beanJson, Organization.class);
+ organization.setId(id);
+ return organizationMapper.updateByPrimaryKeySelective(organization);
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int deleteOrganization(Long id) {
+ return organizationMapper.deleteByPrimaryKey(id);
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchDeleteOrganization(String ids) {
+ List idList = StringUtil.strToLongList(ids);
+ OrganizationExample example = new OrganizationExample();
+ example.createCriteria().andIdIn(idList);
+ return organizationMapper.deleteByExample(example);
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int addOrganization(Organization org) throws Exception{
+ //新增时间
+ Date date=new Date();
+ User userInfo=userService.getCurrentUser();
+ org.setCreateTime(date);
+ //新增人
+ org.setCreator(userInfo==null?null:userInfo.getId());
+ //修改时间
+ org.setUpdateTime(date);
+ //修改人
+ org.setUpdater(userInfo==null?null:userInfo.getId());
+ /**
+ *添加的时候检测机构编号是否已存在
+ * */
+ if(StringUtil.isNotEmpty(org.getOrgNo())){
+ checkOrgNoIsExists(org.getOrgNo(),null);
+ }
+ /**
+ * 未指定父级机构的时候默认放在根机构下
+ * */
+ if(StringUtil.isEmpty(org.getOrgParentNo())){
+ org.setOrgParentNo(BusinessConstants.ORGANIZATION_ROOT_NO);
+ }
+ return organizationMapperEx.addOrganization(org);
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int editOrganization(Organization org)throws Exception {
+ //修改时间
+ org.setUpdateTime(new Date());
+ User userInfo=userService.getCurrentUser();
+ //修改人
+ org.setUpdater(userInfo==null?null:userInfo.getId());
+ /**
+ * 修改的时候检测机构编号是否已存在
+ * */
+ if(StringUtil.isNotEmpty(org.getOrgNo())){
+ checkOrgNoIsExists(org.getOrgNo(),org.getId());
+ }
+ /**
+ * 未指定父级机构的时候默认放在根机构下
+ * */
+ if(StringUtil.isEmpty(org.getOrgParentNo())){
+ org.setOrgParentNo(BusinessConstants.ORGANIZATION_ROOT_NO);
+ }
+ /**
+ * 添加一个限制,根机构不允许修改
+ * */
+ if(BusinessConstants.ORGANIZATION_ROOT_NO.equals(org.getOrgNo())){
+ logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}]",
+ ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_CODE,ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_MSG,org.getOrgNo());
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_CODE,
+ ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_MSG);
+ }
+ return organizationMapperEx.editOrganization(org);
+ }
+
+ public List getOrganizationTree()throws Exception {
+ return organizationMapperEx.getNodeTree();
+ }
+
+ public List findById(Long id) throws Exception{
+ OrganizationExample example = new OrganizationExample();
+ example.createCriteria().andIdEqualTo(id);
+ return organizationMapper.selectByExample(example);
+ }
+
+ public List findByOrgNo(String orgNo)throws Exception {
+ OrganizationExample example = new OrganizationExample();
+ example.createCriteria().andOrgNoEqualTo(orgNo).andOrgStcdNotEqualTo(BusinessConstants.ORGANIZATION_STCD_REMOVED);
+ return organizationMapper.selectByExample(example);
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 检查机构编号是否已经存在
+ * create time: 2019/3/7 10:01
+ * @Param: orgNo
+ * @return void
+ */
+ public void checkOrgNoIsExists(String orgNo,Long id)throws Exception {
+ List orgList=findByOrgNo(orgNo);
+ if(orgList!=null&&orgList.size()>0){
+ if(orgList.size()>1){
+ logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}]",
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo);
+ //获取的数据条数大于1,机构编号已存在
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG);
+ }
+ if(id!=null){
+ if(!orgList.get(0).getId().equals(id)){
+ //数据条数等于1,但是和编辑的数据的id不相同
+ logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}],id[{}]",
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo,id);
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG);
+ }
+ }else{
+ logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}]",
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo);
+ //数据条数等于1,但此时是新增
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,
+ ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG);
+ }
+ }
+
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchDeleteOrganizationByIds(String ids) throws Exception{
+ User userInfo=userService.getCurrentUser();
+ String [] idArray=ids.split(",");
+ /**
+ * 添加一个限制,根机构不允许删除
+ * */
+ List orgRootList=organizationMapperEx.getOrganizationRootByIds(idArray);
+ if(orgRootList!=null&&orgRootList.size()>0){
+ logger.error("异常码[{}],异常提示[{}],参数,ids[{}]",
+ ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_CODE,ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_MSG,ids);
+ throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_CODE,
+ ExceptionConstants.ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_MSG);
+ }
+
+ return organizationMapperEx.batchDeleteOrganizationByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray);
+ }
+}
diff --git a/src/main/resources/mapper_xml/OrganizationMapperEx.xml b/src/main/resources/mapper_xml/OrganizationMapperEx.xml
new file mode 100644
index 00000000..8eef8c55
--- /dev/null
+++ b/src/main/resources/mapper_xml/OrganizationMapperEx.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, org_abr,org_no
+
+
+
+
+
+
+ insert into jsh_organization
+ (org_no, org_full_name,
+ org_abr, org_tpcd, org_stcd,
+ org_parent_no, sort, remark,
+ create_time, creator, update_time,
+ updater, org_create_time, org_stop_time)
+ values
+ (#{orgNo,jdbcType=VARCHAR}, #{orgFullName,jdbcType=VARCHAR},
+ #{orgAbr,jdbcType=VARCHAR}, #{orgTpcd,jdbcType=VARCHAR}, #{orgStcd,jdbcType=CHAR},
+ #{orgParentNo,jdbcType=VARCHAR}, #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
+ #{createTime,jdbcType=TIMESTAMP}, #{creator,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP},
+ #{updater,jdbcType=BIGINT}, #{orgCreateTime,jdbcType=TIMESTAMP}, #{orgStopTime,jdbcType=TIMESTAMP}
+ )
+
+
+ update jsh_organization
+ set update_Time=#{updateTime},updater=#{updater},org_stcd='5'
+ where id in (
+
+ #{id}
+
+ )
+
+
+ update jsh_organization
+ set update_time=#{updateTime},updater=#{updater},
+ org_no = #{orgNo},org_full_name = #{orgFullName},
+ org_abr = #{orgAbr},org_tpcd = #{orgTpcd},
+ org_stcd = #{orgStcd},org_parent_no = #{orgParentNo},
+ sort = #{sort},remark = #{remark},
+ org_create_time = #{orgCreateTime},org_stop_time = #{orgStopTime}
+ where id =#{id}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/generatorConfig.xml b/src/test/resources/generatorConfig.xml
index d267bdb4..78241a6a 100644
--- a/src/test/resources/generatorConfig.xml
+++ b/src/test/resources/generatorConfig.xml
@@ -48,7 +48,7 @@
-->
-
+
+
+