diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ChangeOrganzationController.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ChangeOrganzationController.java index 08ed5f2..a887b7d 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ChangeOrganzationController.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ChangeOrganzationController.java @@ -1,9 +1,12 @@ package com.weaver.seconddev.jcl.organization.controller; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.gson.Gson; import com.weaver.common.authority.annotation.WeaPermission; -import com.weaver.emonitor.bean.WeaResult; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.common.component.table.AbstractWeaTable; import com.weaver.seconddev.jcl.common.web.BaseCommonController; import com.weaver.seconddev.jcl.organization.entity.Department; import com.weaver.seconddev.jcl.organization.entity.Employee; @@ -35,11 +38,11 @@ public class ChangeOrganzationController extends BaseCommonController { @WeaPermission(publicPermission = true) @Produces(MediaType.APPLICATION_JSON) @PostMapping("/addOrganaztionDepartment") - public Map addOrganaztionDepartment(@RequestBody Department department){ + public WeaResult> addOrganaztionDepartment(@RequestBody Department department){ Map actionMap = new HashMap<>(); organaztionService.addOrganaztionDepartment(department,this.getCurrentUser()); - return actionMap; + return WeaResult.success(actionMap); } /** * 删除员工部门 @@ -48,11 +51,11 @@ public class ChangeOrganzationController extends BaseCommonController { @WeaPermission(publicPermission = true) @Produces(MediaType.APPLICATION_JSON) @PostMapping("/delOrganaztionDepartment") - public Map delOrganaztionDepartment(@RequestBody Department department){ + public WeaResult> delOrganaztionDepartment(@RequestBody Department department){ Map actionMap = new HashMap<>(); organaztionService.delOrganaztionDepartment(department,this.getCurrentUser()); - return actionMap; + return WeaResult.success(actionMap); } /** * 修改员工部门 @@ -61,11 +64,75 @@ public class ChangeOrganzationController extends BaseCommonController { @WeaPermission(publicPermission = true) @Produces(MediaType.APPLICATION_JSON) @PostMapping("/updateOrganaztionDepartment") - public Map updateOrganaztionDepartment(@RequestBody Department department){ + public WeaResult> updateOrganaztionDepartment(@RequestBody Department department){ Map actionMap = new HashMap<>(); organaztionService.updateOrganaztionDepartment(department,this.getCurrentUser()); - return actionMap; + return WeaResult.success(actionMap); + } + /** + * 合并员工部门 + * @return + */ + @WeaPermission(publicPermission = true) + @Produces(MediaType.APPLICATION_JSON) + @PostMapping("/mergeOrganaztionDepartment") + public WeaResult> mergeOrganaztionDepartment(@RequestBody Department department){ + Map actionMap = new HashMap<>(); + organaztionService.mergeOrganaztionDepartment(department,this.getCurrentUser()); + + return WeaResult.success(actionMap); + } + /** + * 拆分员工部门 + * @return + */ + @WeaPermission(publicPermission = true) + @Produces(MediaType.APPLICATION_JSON) + @PostMapping("/splitOrganaztionDepartment") + public WeaResult> splitOrganaztionDepartment(@RequestParam Map params){ + + try { + organaztionService.splitOrganzationDepartment(params,this.getCurrentUser()); + }catch (Exception e){ + + return WeaResult.fail(e.getMessage(),e); + } + + return WeaResult.success(Maps.newHashMap()); + } + /** + * 获得部门信息 + * @return + */ + @WeaPermission(publicPermission = true) + @Produces(MediaType.APPLICATION_JSON) + @PostMapping("/getDepartmentCodeById") + public WeaResult>> getDepartmentCodeById(@RequestParam("id") String id){ + List> actionMap = Lists.newArrayList(); + try { + actionMap = organaztionService.getDepartmentCodeById(id); + }catch (Exception e){ + + return WeaResult.fail(e.getMessage(),e); + } + + return WeaResult.success(actionMap); + } + + /** + * 组织列表查询 + * @return + */ + @WeaPermission(publicPermission = true) + @PostMapping("/queryOrganzationTableData") + @ResponseBody + public WeaResult queryOrganzationTableData(@RequestParam Map params){ + Gson gson = new Gson(); + log.error("*********queryTableData********"); + log.error(gson.toJson(params)); + AbstractWeaTable weaTable = organaztionService.queryOrganzationTableData(this.getCurrentUser(),params); + return WeaResult.success(weaTable); } } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Department.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Department.java index 4b3badd..b5f068c 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Department.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Department.java @@ -5,6 +5,9 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; +import java.util.Map; + @Data @Builder @NoArgsConstructor @@ -75,6 +78,4 @@ public class Department { private String sscb; - - } \ No newline at end of file diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/OrganaztionService.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/OrganaztionService.java index 3d13388..3a28a75 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/OrganaztionService.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/OrganaztionService.java @@ -1,8 +1,10 @@ package com.weaver.seconddev.jcl.organization.service; +import com.weaver.common.component.table.AbstractWeaTable; import com.weaver.seconddev.jcl.organization.entity.Department; import com.weaver.teams.domain.user.SimpleEmployee; +import java.util.List; import java.util.Map; public interface OrganaztionService { @@ -14,4 +16,11 @@ public interface OrganaztionService { void updateOrganaztionDepartment(Department department, SimpleEmployee employee); void mergeOrganaztionDepartment(Department department, SimpleEmployee employee); + + void splitOrganzationDepartment(Map param,SimpleEmployee employee); + + List> getDepartmentCodeById(String id); + + AbstractWeaTable queryOrganzationTableData(SimpleEmployee simpleEmployee, Map params); + } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java index 2d8af94..417b9ac 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java @@ -807,7 +807,6 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic if (endindex > total){ endindex = total; } - startindex = endindex-pageSize; if (startindex < 0){ startindex = 0; } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/OrganaztionSeviceImpl.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/OrganaztionSeviceImpl.java index e77da26..c47e54d 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/OrganaztionSeviceImpl.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/OrganaztionSeviceImpl.java @@ -1,16 +1,23 @@ package com.weaver.seconddev.jcl.organization.service.impl; import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.weaver.common.component.table.AbstractWeaTable; +import com.weaver.common.component.table.WeaTable; import com.weaver.common.form.service.IdGeneratorService; import com.weaver.ebuilder.form.client.entity.data.EBDataReqDetailDto; import com.weaver.seconddev.jcl.common.service.CommonService; +import com.weaver.seconddev.jcl.common.service.impl.CommonServiceImpl; import com.weaver.seconddev.jcl.organization.entity.Department; +import com.weaver.seconddev.jcl.organization.exception.EmployeeJclRunTimeException; import com.weaver.seconddev.jcl.organization.service.OrganaztionService; import com.weaver.seconddev.jcl.organization.util.CommonUtils; import com.weaver.seconddev.jcl.organization.util.DatabaseUtils; import com.weaver.seconddev.jcl.organization.util.DateUtil; import com.weaver.teams.domain.user.SimpleEmployee; import org.apache.commons.beanutils.BeanUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -20,6 +27,7 @@ import java.beans.PropertyDescriptor; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class OrganaztionSeviceImpl implements OrganaztionService { @@ -29,6 +37,7 @@ public class OrganaztionSeviceImpl implements OrganaztionService { private CommonService commonService; @Autowired private DatabaseUtils databaseUtils; + private static final Logger log = LoggerFactory.getLogger(OrganaztionSeviceImpl.class); @Override @@ -61,21 +70,115 @@ public class OrganaztionSeviceImpl implements OrganaztionService { @Override public void updateOrganaztionDepartment(Department department, SimpleEmployee employee) { - String sql = "select sjzzmc,sjzz,sjzzbh from uf_organization_bghzzsj where bh=?"; - List> dataList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(department.getSjzzbh())); + String sql = "select bh,zzmc,zz from uf_organization_bghzzsj where bh=? and form_data_id=? "; + List> dataList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(department.getSjzzbh(),department.getForm_data_id())); - sql = "update uf_organization_bghzzsj set zzmc=?,bmsqcj=?,bmfzr=?,fgld=?,sscb=?,bz=?,sjzzmc=?,sjzz=?,sjzzbh=? where bh=?"; + sql = "update uf_organization_bghzzsj set zzmc=?,bmsqcj=?,bmfzr=?,fgld=?,sscb=?,bz=?,sjzzmc=?,sjzz=?,sjzzbh=? where bh=? and form_data_id=?"; databaseUtils.execute(sql,CommonUtils.getParamList(department.getZzmc(),department.getBmsqcj(),department.getBmfzr(),department.getFgld(),department.getSscb(),department.getBz(), - CommonUtils.null2String(dataList.get(0).get("sjzzmc")),CommonUtils.null2String(dataList.get(0).get("sjzz")),CommonUtils.null2String(dataList.get(0).get("sjzzbh")),department.getBh())); + CommonUtils.null2String(dataList.get(0).get("zzmc")),CommonUtils.null2String(dataList.get(0).get("zz")),CommonUtils.null2String(dataList.get(0).get("bh")),department.getBh(),department.getForm_data_id())); } @Override public void mergeOrganaztionDepartment(Department department, SimpleEmployee employee) { String bhbbmid = department.getBhbbmid(); - String sql = "update uf_organization_bghzzsj set delete_type='1' where bh in (?)"; - databaseUtils.execute(sql,CommonUtils.getParamList(bhbbmid)); + String sql = "select id,code from eteams.department where id in ("+bhbbmid+")"; + log.error("mergeOrganaztionDepartment query sql :"+sql); + List> departmentList = databaseUtils.getSqlList(sql); + log.error("departmentList : [{}]",departmentList); + List departmentStrs = departmentList.stream().map(e->"'"+e.get("code").toString()+"'").collect(Collectors.toList());; + + sql = "update uf_organization_bghzzsj set delete_type='3',is_delete='1' where bh in ("+String.join(",",departmentStrs)+")"; + log.error("mergeOrganaztionDepartment update sql :"+sql); + databaseUtils.execute(sql); addOrganaztionDepartment( department, employee); } + + @Override + public void splitOrganzationDepartment(Map param, SimpleEmployee employee) { + Gson gson = new Gson(); + log.error("param : "+param); + log.error(gson.toJson(param)); + String splitDepartment = String.valueOf(param.get("departmentId")); + String splitDepartmentCode = String.valueOf(param.get("departmentCode")); + String fgldId = String.valueOf(param.get("fgldId")); + String sscb = String.valueOf(param.get("sscb")); + List> dataList = gson.fromJson(param.get("data").toString(),List.class); + + String sql = "select * from eteams.department where parent=? and delete_type='0'"; + List> sonDepartmList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(splitDepartment)); + sql = "select * from eteams.employee where department=? and delete_type='0'"; + List> personList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(splitDepartment)); + if (sonDepartmList.size() >0){ + throw new EmployeeJclRunTimeException("被拆分组织有子部门"); + }else if (personList.size() >0){ + throw new EmployeeJclRunTimeException("被拆分组织下存在人员"); + } + for (Map data:dataList){ + log.error("splitOrganzationDepartment data"+data); + String bmfzr = ((List>)data.get("bmfzr")).get(0).get("id").toString(); + String sjzz = ((List>)data.get("sjzz")).get(0).get("id").toString(); + String sjzzName = ((List>)data.get("sjzz")).get(0).get("name").toString(); + Department department = Department.builder().form_data_id(String.valueOf(param.get("id"))).bh(data.get("bh").toString()).czlx("4").bcfzzid(splitDepartmentCode).bz(data.get("bz").toString()) + .sscb(sscb).fgld(fgldId).sjzzmc(sjzzName).bmsqcj(data.get("bmsqcj").toString()).bmfzr(bmfzr).zzmc(data.get("zzmc").toString()).sjzz(sjzz).sjzzbh(data.get("sjzzbh").toString()).build(); + addOrganaztionDepartment(department,employee); + } + + sql = "update uf_organization_bghzzsj set delete_type='3',is_delete='1' where bh=?"; + databaseUtils.execute(sql,CommonUtils.getParamList(splitDepartmentCode)); + + } + + @Override + public List> getDepartmentCodeById(String id) { + String sql = "select * from eteams.department where id=?"; + return databaseUtils.getSqlList(sql,CommonUtils.getParamList(id)); + } + + @Override + public AbstractWeaTable queryOrganzationTableData(SimpleEmployee simpleEmployee, Map params) { + int current = Integer.valueOf(CommonUtils.null2String(params.get("current"))); + int pageSize = Integer.valueOf(CommonUtils.null2String(params.get("pageSize"))); + String orgId = CommonUtils.null2String(params.get("orgId")); + WeaTable weaTable =new WeaTable(); + + + String sql = "select * from eteams.department where id in(select distinct cid from eteams.depart_link dl where pid in (?) and delete_type='0') and delete_type='0'"; + List> allSonDepartmentList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(orgId)); + + Map>> allSonDepartmentGroup = allSonDepartmentList.stream().collect(Collectors.groupingBy(e->e.get("parent").toString())); + for (Map.Entry>> entry :allSonDepartmentGroup.entrySet()){ + String parentId = entry.getKey(); + List> list = entry.getValue(); + for (Map map:allSonDepartmentList){ + if (parentId.equals(CommonUtils.null2String(map.get("id")))){ + map.put("isParent",true); + map.put("children",list); + } + } + } + log.error("allSonDepartmentList : [{}]",allSonDepartmentList); + List> dataList = allSonDepartmentList.stream().filter(e->orgId.equals(e.get("parent").toString())).collect(Collectors.toList()); + int startindex = (current-1)*pageSize; + int endindex = current*pageSize; + int total = dataList.size(); + if (pageSize != 9999){ + if (endindex > total){ + endindex = total; + } + if (startindex < 0){ + startindex = 0; + } + dataList = dataList.subList(startindex,endindex); + } + weaTable.setTotal(total); + weaTable.setPageSize(pageSize); + weaTable.setCurrent(current); + weaTable.setData(dataList); + + + + return weaTable; + } }