develop #202

Merged
liang.cheng merged 138 commits from develop into master 2 years ago

@ -78,10 +78,12 @@ public class JobBrowserService extends BrowserService {
String q = Util.null2String(httpServletRequest.getParameter("q"));
List<String> sqlParams = new ArrayList<>();
String keyword = "";
if (q.length() > 0) keyword = "%" + q + "%";
if (q.length() > 0) {
keyword = "%" + q + "%";
}
RecordSet rs = new RecordSet();
String sqlwhere = " where t.delete_type = 0 ";
String backfields = "t.id, t.job_no, h.jobtitlename as name, t.sequence_id, t.scheme_id , t.grade_id , t.level_id ";
String backfields = "t.id, t.job_no, h.jobtitlename as name ";
String fromSql = "FROM jcl_org_job t left join hrmjobtitles h on t.ec_jobTitle = h.id ";
String orderby = " order by t.id ";
sqlwhere += " ";
@ -99,7 +101,7 @@ public class JobBrowserService extends BrowserService {
rs.executeQuery(sql, sqlParams);
List<Map<String, String>> datas = new ArrayList<>();
while (rs.next()) {
Map<String, String> item = new HashMap<>();
Map<String, String> item = new HashMap<>(3);
item.put("id", Util.null2String(rs.getString("id")));
String name = Util.null2String(rs.getString("name"));
item.put("name", name);

@ -18,6 +18,9 @@ public class InitListener implements AbstractResourceModelListener {
int menuid = 100139;
BaseBean bb = new BaseBean();
String cId = new License().getCId();
if(cId.length() > 7) {
cId = cId.substring(cId.length() - 7);
}
String defaultCloseNonStandard151 = bb.getPropValue("hrmOrganization", "defaultCloseNonStandard151");
if(StringUtils.isNotBlank(cId) && "true".equals(defaultCloseNonStandard151)) {
int cid = Integer.parseInt(cId);

@ -5,7 +5,6 @@ import javax.ws.rs.Path;
/**
* @Author liang.cheng
* @Date 2023/6/27 3:38 PM
* @Description: TODO
* @Version 1.0
*/

@ -0,0 +1,12 @@
package com.api.organization.web;
import javax.ws.rs.Path;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
@Path("/bs/hrmorganization/quicksearch")
public class QuickSearchController extends com.engine.organization.web.QuickSearchController {
}

@ -0,0 +1,87 @@
package com.engine.organization.entity.chart;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
/**
* @author:dxfeng
* @createTime: 2023/06/30
* @version: 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ChartPO {
private String fname;
/**
* 0:,1:,2:
*/
private String ftype;
private String fnumber;
private String fobjid;
private String parentId;
private String expand;
private String fisvitual;
private String hasChildren;
// 在岗数
private Integer fonjob;
// 部门负责人
private String fleader;
// 人员主次账号
private String belongto;
// 人员工龄
private String companyWorkYear;
// 人员头像
private String fleaderimg;
private String id;
private String key;
// 部门层级
private int departmentDepth;
public String getId() {
if (StringUtils.isNotBlank(ftype)) {
switch (ftype) {
case "0":
id = "c_" + fobjid;
break;
case "1":
id = "s_" + fobjid;
break;
case "2":
id = "d_" + fobjid;
break;
default:
break;
}
}
return id;
}
public String getFisvitual() {
// 人员、岗位不展示次字段
if (StringUtils.isNotBlank(ftype) && ("3".equals(ftype) || "4".equals(ftype))) {
return null;
}
return StringUtils.isBlank(fisvitual) ? "0" : fisvitual;
}
public String getKey() {
return getId();
}
public String getCompanyWorkYear() {
if (StringUtils.isNotBlank(ftype) && "4".equals(ftype)) {
return StringUtils.isNotBlank(companyWorkYear) ? companyWorkYear : "0";
}
return null;
}
}

@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import weaver.conn.RecordSet;
/**
* @author:dxfeng
@ -22,11 +21,10 @@ public class CompanyTreePO {
private String title;
private boolean isLeaf;
private String key;
private boolean disabled;
public boolean getIsLeaf() {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from hrmsubcompany where (canceled is null or canceled != '1') and supsubcomid = ?",id);
return !rs.next();
return isLeaf;
}
public String getpId() {
@ -36,4 +34,8 @@ public class CompanyTreePO {
public String getKey() {
return id;
}
public String getValue() {
return id;
}
}

@ -0,0 +1,21 @@
package com.engine.organization.entity.chart;
import com.engine.organization.common.BaseQueryParam;
import lombok.*;
/**
* @Author liang.cheng
* @Date 2023/7/3 2:48 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
public class ReasourceListParam extends BaseQueryParam {
private Integer departmentId;
}

@ -0,0 +1,27 @@
package com.engine.organization.entity.chart;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/3 2:16 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResourceListColumns {
private String title;
private String dataIndex;
private String key;
}

@ -0,0 +1,28 @@
package com.engine.organization.entity.chart;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/6/29 11:19 AM
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class TimeLinesBO {
private Integer key;
private Integer id;
private String title;
private String color;
private String time;
}

@ -0,0 +1,112 @@
package com.engine.organization.entity.chart;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import java.util.ArrayList;
import java.util.List;
/**
* @author:dxfeng
* @createTime: 2023/07/25
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class TreeSelect {
public static final String COMPANY = "0";
public static final String SUB_COMPANY = "1";
public static final String DEPARTMENT = "2";
@JSONField(ordinal = 1)
private String key;
@JSONField(ordinal = 2)
private String title;
@JSONField(ordinal = 3)
private String id;
@JSONField(ordinal = 4)
private List<TreeSelect> children;
private String type;
private String canceled;
private boolean disabled;
private String showCanceled;
public List<TreeSelect> getChildren() {
if (null != children) {
return children;
}
children = new ArrayList<>();
RecordSet rs = new RecordSet();
if (COMPANY.equals(type)) {
String sql = "select id ,subcompanyname ,canceled from hrmsubcompany where " + getCancelSqlStr() + " and (supsubcomid is null or supsubcomid = 0) and companyid = ? order by showorder,id";
rs.executeQuery(sql, key);
while (rs.next()) {
children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).showCanceled(showCanceled).build());
}
} else if (SUB_COMPANY.equals(type)) {
String sql = "select id ,subcompanyname ,canceled from hrmsubcompany where " + getCancelSqlStr() + " and supsubcomid = ? order by showorder,id";
rs.executeQuery(sql, key);
while (rs.next()) {
children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).showCanceled(showCanceled).build());
}
sql = "select id,departmentname ,canceled from hrmdepartment where " + getCancelSqlStr() + " and (supdepid is null or supdepid =0) and subcompanyid1 = ? order by showorder,id";
rs.executeQuery(sql, key);
while (rs.next()) {
children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).showCanceled(showCanceled).build());
}
} else if (DEPARTMENT.equals(type)) {
String sql = "select id,departmentname ,canceled from hrmdepartment where " + getCancelSqlStr() + " and supdepid = ? order by showorder,id";
rs.executeQuery(sql, key);
while (rs.next()) {
children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).showCanceled(showCanceled).build());
}
}
return CollectionUtils.isEmpty(children) ? null : children;
}
public String getKey() {
switch (type) {
case COMPANY:
return "c" + key;
case SUB_COMPANY:
return "s" + key;
case DEPARTMENT:
return "d" + key;
default:
break;
}
return key;
}
public String getId() {
return getKey();
}
public String getCanceled() {
if (StringUtils.isBlank(canceled)) {
return "0";
}
return canceled;
}
public String getShowCanceled() {
return null;
}
private String getCancelSqlStr() {
if (StringUtils.isNotBlank(showCanceled) && "1".equals(showCanceled)) {
return " 1=1 ";
} else {
return " (canceled is null or canceled != 1) ";
}
}
}

@ -0,0 +1,46 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CompanyVirtualHistory {
private Integer id;
private Integer companyVirtualId;
private String creater;
private String companyName;
private String companyCode;
private String companyDesc;
private Integer showOrder;
private Integer canceled;
private String virtualType;
private String virtualTypeDesc;
private String versionDate;
private Integer versionId;
private Integer fonJob;
}

@ -0,0 +1,56 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DepartmentHistory {
private Integer id;
private String creater;
private Integer departmentId;
private String departmentMark;
private String departmentName;
private String subcompanyId;
private String subcompany;
private Integer supDepartmentId;
private String supDepartment;
private Integer canceled;
private String departmentCode;
private String coadJutant;
private Integer tlevel;
private String versionDate;
private Integer versionId;
private Integer fonjob;
private Integer isVirtual;
private String fLeader;
}

@ -0,0 +1,56 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DepartmentVirtualHistory {
private Integer id;
private Integer departmentVirtualId;
private String creater;
private String departmentName;
private String departmentCode;
private String departmentMark;
private String supDepartment;
private Integer supDepId;
private String allSupDepId;
private String subCompany;
private String subCompanyId;
private Integer canceled;
private String virtualType;
private String tLevel;
private String showOrder;
private String versionDate;
private Integer versionId;
private Integer fonJob;
}

@ -0,0 +1,51 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:59 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class JobHistory {
private Integer id;
private String creater;
private Integer jobId;
private String jobName;
private Integer departmentId;
private String department;
private Integer subCompanyId;
private String subCompany;
private String jobResponsibility;
private Integer canceled;
private String jobCode;
private String description;
private String versionDate;
private Integer versionId;
private Integer fonJob;
}

@ -0,0 +1,94 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResourceHistory {
private Integer id;
private Integer resourceId;
private String creater;
private Integer workyear;
private String usekind;
private String managerStr;
private Integer status;
private String sex;
private Integer accountType;
private Integer belongTo;
private String loginId;
private String maritalStatus;
private String telephone;
private String mobile;
private String mobileCall;
private String email;
private String locationName;
private String resourceType;
private String startDate;
private String endDate;
private Integer jobTitleId;
private String jobTitle;
private Integer jobLevel;
private Integer secLevel;
private Integer departmentId;
private String department;
private String subcompanyId;
private String subcompany;
private String costCenter;
private Integer manager;
private Integer assistant;
private String workcode;
private String classification;
private String versionDate;
private Integer versionId;
private Integer policy;
private String degree;
}

@ -0,0 +1,42 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:59 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResourceVirtualHistory {
private Integer id;
private Integer resourceId;
private Integer managerId;
private Integer subCompanyId;
private String departmentId;
private String managerStr;
private Integer virtualType;
private String description;
private String versionDate;
private Integer versionId;
}

@ -0,0 +1,54 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SubCompanyVirtualHistory {
private Integer id;
private Integer subCompanyVirtualId;
private String creater;
private String subCompanyName;
private String subCompanyCode;
private String subCompanyDesc;
private String supSubCompany;
private Integer supSubCompId;
private String company;
private String companyId;
private Integer canceled;
private String virtualType;
private String tLevel;
private String showOrder;
private String versionDate;
private Integer versionId;
private Integer fonJob;
}

@ -0,0 +1,56 @@
package com.engine.organization.entity.chart.history;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/11 4:36 PM
* @Description:
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SubcompanyHistory {
private Integer id;
private String creater;
private Integer subcompanyId;
private String subcompanyName;
private String subcompanyDesc;
private String company;
private String supSubcompanyId;
private String supSubcompany;
private Integer canceled;
private String subcompanyCode;
private Integer limitUsers;
private Integer tlevel;
private String versionDate;
private Integer versionId;
private Integer fonJob;
private Integer isVirtual;
}

@ -5,13 +5,14 @@ import com.engine.organization.entity.department.param.DeptSearchParam;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.department.vo.SingleDeptTreeVO;
import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.employee.EmployeeMapper;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.resource.ResourceComInfo;
import java.util.*;
import java.util.stream.Collectors;
@ -24,10 +25,24 @@ import java.util.stream.Collectors;
**/
public class DepartmentBO {
public static List<DepartmentListDTO> buildDeptDTOList(Collection<DepartmentPO> list) {
/**
*
* @param list
* @return
*/
public static List<DepartmentListDTO> buildDeptDTOShowNames(Collection<DepartmentListDTO> list) {
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
return list.stream().peek(e -> {
e.setSubCompanyName((null == e.getSubCompanyId1() || 0 == e.getSubCompanyId1()) ? "" : subCompanyComInfo.getSubCompanyname(Util.null2String(e.getSubCompanyId1())));
e.setSupDepName((null == e.getSupDepId() || 0 == e.getSupDepId()) ? "" : departmentComInfo.getDepartmentname(Util.null2String(e.getSupDepId())));
e.setBmfzr(getEmployeeNameById(e.getId()));
}
).collect(Collectors.toList());
}
public static List<DepartmentListDTO> buildDeptDTOList(Collection<DepartmentPO> list) {
// 递归添加父级数据
Map<Integer, DepartmentPO> poMaps = list.stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
List<DepartmentListDTO> dtoList = list.stream().map(e ->
DepartmentListDTO
.builder()
@ -36,10 +51,7 @@ public class DepartmentBO {
.departmentName(e.getDepartmentName())
.departmentCode(e.getDepartmentCode())
.subCompanyId1(e.getSubCompanyId1())
.subCompanyName(0 == e.getSubCompanyId1() ? "" : MapperProxyFactory.getProxy(CompMapper.class).listById(e.getSubCompanyId1()).getSubCompanyName())
.supDepId(e.getSupDepId())
.supDepName(null == poMaps.get(e.getSupDepId()) ? "" : poMaps.get(e.getSupDepId()).getDepartmentName())
.bmfzr(getEmployeeNameById(e.getId()))
.showOrder(null == e.getShowOrder() ? 0 : e.getShowOrder())
.canceled(null == e.getCanceled() ? 0 : e.getCanceled())
.build()).collect(Collectors.toList());
@ -162,11 +174,21 @@ public class DepartmentBO {
if (StringUtils.isBlank(departmentPrincipal) || "$NULL$".equalsIgnoreCase(departmentPrincipal)) {
return "";
}
List<Long> collect = Arrays.stream(departmentPrincipal.split(",")).map(Long::parseLong).collect(Collectors.toList());
List<String> collect = Arrays.stream(departmentPrincipal.split(",")).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
return "";
}
List<String> employeeNameById = MapperProxyFactory.getProxy(EmployeeMapper.class).getEmployeeNameById(collect);
List<String> employeeNameById = new ArrayList<>();
try {
for (String aLong : collect) {
String lastname = new ResourceComInfo().getLastname(Util.null2String(aLong));
if (StringUtils.isNotBlank(lastname)) {
employeeNameById.add(lastname);
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return StringUtils.join(employeeNameById, ",");
}

@ -0,0 +1,16 @@
package com.engine.organization.entity.department.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DepartmentDragParam {
private Integer dropPosition;
private String sourcekey;
private String targetkey;
}

@ -29,5 +29,4 @@ public class DeptSearchParam extends BaseQueryParam {
private String uuid;
private Double showOrder;
private Integer showOrderOfTree;
private Boolean forbiddenTag;
}

@ -0,0 +1,37 @@
package com.engine.organization.entity.hrmresource.bo;
import com.engine.organization.entity.hrmresource.po.ResourceChartPO;
import com.engine.organization.entity.hrmresource.vo.ResourceChartVO;
import com.engine.organization.transmethod.HrmResourceTransMethod;
import weaver.general.Util;
import java.util.ArrayList;
import java.util.List;
/**
* @author:dxfeng
* @createTime: 2023/07/06
* @version: 1.0
*/
public class ResourceChartBO {
public static List<ResourceChartVO> convertToVO(List<ResourceChartPO> resourceChartPOS) {
List<ResourceChartVO> resourceChartVOS = new ArrayList<>();
for (ResourceChartPO resourceChartPO : resourceChartPOS) {
ResourceChartVO resourceChartVO = new ResourceChartVO();
resourceChartVO.setId(resourceChartPO.getId());
resourceChartVO.setWorkCode(resourceChartPO.getWorkCode());
resourceChartVO.setLastName(resourceChartPO.getLastName());
resourceChartVO.setSex("1".equals(resourceChartPO.getSex()) ? "女" : "男");
resourceChartVO.setDepartmentName(HrmResourceTransMethod.getDepartmentName(Util.null2String(resourceChartPO.getDepartmentId())));
resourceChartVO.setSubcompanyName(HrmResourceTransMethod.getCompanyName(Util.null2String(resourceChartPO.getSubcompanyid1())));
resourceChartVO.setJobTitle(HrmResourceTransMethod.getJobName(Util.null2String(resourceChartPO.getJobTitle())));
resourceChartVO.setStatus(resourceChartPO.getStatus());
resourceChartVO.setMobile(resourceChartPO.getMobile());
resourceChartVOS.add(resourceChartVO);
}
return resourceChartVOS;
}
}

@ -0,0 +1,39 @@
package com.engine.organization.entity.hrmresource.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/3 2:25 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ResourceChartPO {
private Long id;
private String workCode;
private String lastName;
private String sex;
private Integer departmentId;
private Integer subcompanyid1;
private Integer jobTitle;
private Integer status;
private String mobile;
}

@ -0,0 +1,44 @@
package com.engine.organization.entity.hrmresource.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2023/7/3 2:40 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ResourceChartVO {
private Long id;
private String workCode;
private String lastName;
private String sex;
private String departmentName;
private String subcompanyName;
private String jobTitle;
private Integer status;
private String mobile;
private Long key;
public Long getKey() {
return id;
}
}

@ -85,13 +85,10 @@ public class JobBO {
.jobTitleName(e.getJobTitleName())
.subCompanyName(e.getSubCompanyName())
.departmentName(e.getDepartmentName())
//.sequenceName(e.getSequenceName())
//.schemeName(e.getSchemeName())
//.parentJob(e.getParentJob())
//.parentJobName(null == poMaps.get(e.getParentJob()) ? "" : poMaps.get(e.getParentJob()).getJobName())
.jobGroupName(e.getJobGroupName())
.jobActivityName(e.getJobActivityName())
.isKey(JobTransMethod.getIsKeySpan(e.getIsKey()))
.showOrder(e.getShowOrder())
//.forbiddenTag(e.getForbiddenTag())
.isUsed(0)
.build()).collect(Collectors.toList());
List<String> usedIds = MapperProxyFactory.getProxy(JobMapper.class).listUsedId();
@ -145,7 +142,7 @@ public class JobBO {
}
}
public static List<SearchTree> buildSetToSearchTree(Set<JobPO> builderJobs) {
public static List<SearchTree> buildSetToSearchTree(Collection<JobPO> builderJobs) {
return builderJobs.stream().map(item -> {
SearchTree tree = new SearchTree();
tree.setCanClick(true);

@ -51,16 +51,18 @@ public class JobListDTO {
*/
@TableTitle(title = "所属部门", dataIndex = "departmentName", key = "departmentName")
private String departmentName;
/**
*
*
*/
//@TableTitle(title = "岗位序列", dataIndex = "sequenceName", key = "sequenceName")
//private String sequenceName;
@TableTitle(title = "职务类别", dataIndex = "jobGroupName", key = "jobGroupName")
private String jobGroupName;
/**
*
*
*/
//@TableTitle(title = "等级方案", dataIndex = "schemeName", key = "schemeName")
//private String schemeName;
@TableTitle(title = "所属职务", dataIndex = "jobActivityName", key = "jobActivityName")
private String jobActivityName;
/**
*
*/

@ -19,8 +19,11 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@OrganizationTable(pageId = "98e9c62f-cd12-11ec-a15f-00ffcbed7123",
fields = "t.id, t.job_no, h.jobtitlename as name, t.sequence_id, t.scheme_id , t.grade_id , t.level_id",
fromSql = "FROM jcl_org_job t left join hrmjobtitles h on t.ec_jobTitle = h.id ",
fields = "t.id, t.job_no, h.jobtitlename as name, t.sequence_id, t.scheme_id , t.grade_id , t.level_id , e.jobactivityname, f.jobgroupname ",
fromSql = "FROM jcl_org_job t" +
" left join hrmjobtitles h on t.ec_jobTitle = h.id" +
" left join hrmjobactivities e on h.jobactivityid =e.id" +
" left join hrmjobgroups f on e.jobgroupid =f.id ",
orderby = "id",
sortway = "asc",
primarykey = "id",
@ -41,6 +44,13 @@ public class JobBrowserVO {
@OrganizationTableColumn(text = "岗位名称", width = "25%", column = "name")
private String jobName;
@OrganizationTableColumn(text = "职务类别", width = "25%", column = "jobGroupName")
private String jobGroupName;
@OrganizationTableColumn(text = "所属职务", width = "25%", column = "jobActivityName")
private String jobActivityName;
//@OrganizationTableColumn(text = "等级方案", width = "25%", column = "scheme_id", transmethod = "com.engine.organization.transmethod.JobTransMethod.getSchemeName")
//private String schemeName;
//@OrganizationTableColumn(text = "职等", width = "25%", column = "level_id", transmethod = "com.engine.organization.transmethod.JobTransMethod.getLevelName")

@ -0,0 +1,50 @@
package com.engine.organization.entity.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuickSearchCondition {
/**
* ID
*/
private Integer id;
/**
* id
*/
private String fieldId;
/**
*
*/
private String customName;
/**
*
*/
private Integer type;
/**
* id
*/
private Integer orderId;
/**
*
*/
private Integer belongTo;
/**
*
*/
private Integer showModel;
/**
* id
*/
private Integer modelId;
}

@ -0,0 +1,58 @@
package com.engine.organization.entity.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuickSearchDetail {
/**
* ID
*/
private Integer id;
/**
* id
*/
private String fieldId;
/**
*
*/
private Integer belongTo;
/**
* cid
*/
private Integer cId;
/**
*
*/
private String customName;
/**
*
*/
private Integer minNum;
/**
*
*/
private Integer maxNum;
/**
*
*/
private Integer type;
/**
* id
*/
private Integer orderId;
/**
* id
*/
private Integer modelId;
}

@ -0,0 +1,21 @@
package com.engine.organization.entity.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/09
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuickSearchField {
private String fieldHtmlType;
private String type;
private String fieldDbType;
}

@ -0,0 +1,23 @@
package com.engine.organization.entity.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/09
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuickSearchOption {
private String fieldId;
private String fieldLabel;
private String fieldName;
private String fieldHtmlType;
private String type;
}

@ -0,0 +1,26 @@
package com.engine.organization.entity.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/09
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuickSearchSetting {
private Integer id;
private Integer belongTo;
private Integer isQuickSearch;
private Integer isShowType;
private Integer isHideName;
private Integer updateTor;
private String updateDate;
private String updateTime;
}

@ -0,0 +1,21 @@
package com.engine.organization.entity.search.condition;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author:dxfeng
* @createTime: 2023/08/14
* @version: 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ConditionOption {
private String key;
private String showname;
private Boolean selected;
}

@ -0,0 +1,43 @@
package com.engine.organization.entity.search.condition;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/08/14
* @version: 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RangeCondition {
private String label;
private List<ConditionOption> options;
private List<String> domkey;
private Map<String, Object> selectLinkageDatas;
private Integer labelcol;
private Integer fieldcol;
//private Integer showModel;
private String com;
public Integer getLabelcol() {
if (null == labelcol) {
return 6;
}
return labelcol;
}
public Integer getFieldcol() {
if (null == fieldcol) {
return 18;
}
return fieldcol;
}
}

@ -0,0 +1,37 @@
package com.engine.organization.enums;
/**
* @author:dxfeng
* @createTime: 2023/08/14
* @version: 1.0
*/
public enum QuickSearchConditionEnum {
/**
*
*/
SELECT("5"), DATETIME("3"),NUMBER("1"),RESOURCE("-1"),MEETING("-3"),WAREHOUSE("-5");
private String value;
QuickSearchConditionEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public static QuickSearchConditionEnum getByValue(String value) {
for (QuickSearchConditionEnum conditionEnum : values()) {
if (conditionEnum.getValue().equals(value)) {
return conditionEnum;
}
}
return null;
}
}

@ -0,0 +1,151 @@
package com.engine.organization.mapper.condition;
import com.engine.organization.entity.jclimport.po.CusFormFieldPO;
import com.engine.organization.entity.jclimport.po.HrmFormFieldPO;
import com.engine.organization.entity.jclimport.po.JclSelectItem;
import com.engine.organization.entity.search.*;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
/**
* @author:dxfeng
* @createTime: 2023/08/09
* @version: 1.0
*/
public interface QuickSearchMapper {
/**
*
*
* @param belongTo ID
* @return
*/
QuickSearchSetting getQuickSearchSetting(@Param("belongTo") Integer belongTo);
/**
*
*
* @param belongTo ID
* @return
*/
List<QuickSearchCondition> getQuickSearchConditionList(@Param("belongTo") Integer belongTo, @Param("modelId") Integer modelId);
/**
*
*
* @return
*/
List<QuickSearchOption> getQuickSearchOptionList();
/**
*
*
* @return
*/
List<CusFormFieldPO> getAllFieldInfo();
/**
*
*
* @param quickSearchSetting
* @return return
*/
int insertQuickSearchSetting(@Param("quickSearchSetting") QuickSearchSetting quickSearchSetting);
/**
*
*
* @param quickSearchSetting
* @return return
*/
int updateQuickSearchSetting(@Param("quickSearchSetting") QuickSearchSetting quickSearchSetting);
/**
*
*
* @param quickSearchCondition
* @return return
*/
int insertQuickSearchCondition(@Param("quickSearchCondition") QuickSearchCondition quickSearchCondition);
/**
*
*
* @param quickSearchCondition
* @return return
*/
int updateQuickSearchCondition(@Param("quickSearchCondition") QuickSearchCondition quickSearchCondition);
/**
* Cid
*
* @param cId condition
* @return return
*/
int deleteQuickSearchDetailByCid(@Param("cId") Integer cId);
/**
* ID
*
* @param ids ids
* @return return
*/
int deleteQuickSearchConditionByIds(@Param("ids") Collection<Integer> ids);
/**
* Cids
*
* @param cIds cIds
* @return return
*/
int deleteQuickSearchDetailByCids(@Param("cIds") Collection<Integer> cIds);
/**
* Cid
*
* @param cId cId
* @return return
*/
List<QuickSearchDetail> getQuickSearchDetailByCid(@Param("cId") String cId);
QuickSearchDetail getQuickSearchDetailById(@Param("id") String id);
/**
* Id
*
* @param id Id
* @return return
*/
List<QuickSearchField> getQuickSearchFieldListByConditionId(@Param("id") String id);
/**
*
*
* @param quickSearchDetail
* @return return
*/
int updateQuickSearchDetail(@Param("quickSearchDetail") QuickSearchDetail quickSearchDetail);
/**
*
*
* @param quickSearchDetail
* @return return
*/
int insertQuickSearchDetail(@Param("quickSearchDetail") QuickSearchDetail quickSearchDetail);
/**
* ID
*
* @param ids id
* @return return
*/
int deleteQuickSearchDetailByIds(@Param("ids") Collection<Integer> ids);
HrmFormFieldPO getHrmFormFieldByFieldId(@Param("fieldId") String fieldId);
List<JclSelectItem> getSelectItemListByFieldId(@Param("fieldId") String fieldId);
}

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.organization.mapper.condition.QuickSearchMapper">
<select id="getQuickSearchSetting" resultType="com.engine.organization.entity.search.QuickSearchSetting">
select id, isquicksearch, isshowtype, ishidename
from jcl_quicksearch_setting
where belongto = #{belongTo}
</select>
<select id="getQuickSearchConditionList"
resultType="com.engine.organization.entity.search.QuickSearchCondition">
select c.id, fieldid, c.customname, c.type, c.orderid, c.showmodel
from jcl_quicksearch_condition c
where belongto = #{belongTo}
and modelid = #{modelId}
order by c.orderid, c.id
</select>
<select id="getQuickSearchOptionList" resultType="com.engine.organization.entity.search.QuickSearchOption">
select b.fieldid, b.fieldlabel, b.fieldname, fieldhtmltype, b.type
from hrm_formfield b
inner join hrm_fieldgroup c on c.id = b.groupid and c.grouptype in (-1, 1, 3)
</select>
<select id="getQuickSearchDetailByCid"
resultType="com.engine.organization.entity.search.QuickSearchDetail">
select id,
customname,
minnum,
maxnum,
type,
orderid,
fieldid,
belongto
from jcl_quicksearch_detail
where cid = #{cId}
order by orderid, id
</select>
<select id="getQuickSearchDetailById" resultType="com.engine.organization.entity.search.QuickSearchDetail">
select id,
customname,
minnum,
maxnum,
type,
orderid,
fieldid,
belongto
from jcl_quicksearch_detail
where id = #{id}
</select>
<select id="getQuickSearchFieldListByConditionId"
resultType="com.engine.organization.entity.search.QuickSearchField">
select b.fieldhtmltype, b.type, b.fielddbtype
from jcl_quicksearch_condition c
left join hrm_formfield b on b.fieldid = c.fieldid
where c.id = #{id}
</select>
<select id="getHrmFormFieldByFieldId"
resultType="com.engine.organization.entity.jclimport.po.HrmFormFieldPO">
select a.fieldid,
a.fieldname,
a.issystem,
a.fieldlabel labelname,
a.ismand,
a.fielddbtype,
a.fieldhtmltype,
a.type,
a.dmlurl
from hrm_formfield a
where a.fieldhtmltype != '6'
and a.fieldid = #{fieldId}
</select>
<select id="getSelectItemListByFieldId"
resultType="com.engine.organization.entity.jclimport.po.JclSelectItem">
select selectvalue, selectname
from hrm_selectitem
where fieldid = #{fieldId}
</select>
<select id="getAllFieldInfo" resultType="com.engine.organization.entity.jclimport.po.CusFormFieldPO">
SELECT *
FROM (SELECT t1.fieldid,
t2.fieldname,
t1.fieldlable fieldLabel,
t1.ismand,
t2.fielddbtype,
t2.fieldhtmltype,
t2.type,
t1.dmlurl,
fieldorder,
groupid,
t1.scopeid as scopeId,
'cus' as tablename
FROM cus_formfield t1,
cus_formdict t2
WHERE t1.fieldid = t2.id
AND t1.scope = 'HrmCustomFieldByInfoType'
UNION ALL
SELECT t3.fieldid,
t3.fieldname,
t3.fieldlabel fieldLabel,
t3.ismand,
t3.fielddbtype,
t3.fieldhtmltype,
t3.TYPE,
t3.dmlurl,
t3.fieldorder,
t3.groupid,
c.grouptype as scopeId,
'hrm' as tablename
FROM hrm_formfield t3
inner join hrm_fieldgroup c on c.id = t3.groupid and c.grouptype in (-1, 1, 3)) hrmallfield
WHERE FIELDHTMLTYPE != '6'
ORDER BY hrmallfield.groupid, hrmallfield.fieldorder
</select>
<insert id="insertQuickSearchSetting">
insert into jcl_quicksearch_setting(belongto,
isquicksearch,
isshowtype,
ishidename,
updatetor,
updatedate,
updatetime)
values (#{quickSearchSetting.belongTo},
#{quickSearchSetting.isQuickSearch},
#{quickSearchSetting.isShowType},
#{quickSearchSetting.isHideName},
#{quickSearchSetting.updateTor},
#{quickSearchSetting.updateDate},
#{quickSearchSetting.updateTime})
</insert>
<update id="updateQuickSearchSetting">
update jcl_quicksearch_setting
set isquicksearch=#{quickSearchSetting.isQuickSearch},
isshowtype=#{quickSearchSetting.isShowType},
ishidename=#{quickSearchSetting.isHideName}
where id = #{quickSearchSetting.id}
</update>
<insert id="insertQuickSearchCondition">
insert into jcl_quicksearch_condition(belongto, fieldid, customname, type, orderid, showmodel, modelid)
values (#{quickSearchCondition.belongTo}, #{quickSearchCondition.fieldId}, #{quickSearchCondition.customName},
#{quickSearchCondition.type}, #{quickSearchCondition.orderId}, #{quickSearchCondition.showModel},
#{quickSearchCondition.modelId})
</insert>
<update id="updateQuickSearchCondition">
update jcl_quicksearch_condition
set belongto=#{quickSearchCondition.belongTo},
fieldid=#{quickSearchCondition.fieldId},
customname=#{quickSearchCondition.customName},
type=#{quickSearchCondition.type},
orderid=#{quickSearchCondition.orderId},
showmodel=#{quickSearchCondition.showModel},
modelid = #{quickSearchCondition.modelId}
where id = #{quickSearchCondition.id}
</update>
<insert id="insertQuickSearchDetail">
insert into jcl_quicksearch_detail(cid, customname, minnum, maxnum, type, orderid, fieldid, belongto)
values (#{quickSearchDetail.cId}, #{quickSearchDetail.customName}, #{quickSearchDetail.minNum},
#{quickSearchDetail.maxNum}, #{quickSearchDetail.type}, #{quickSearchDetail.orderId},
#{quickSearchDetail.fieldId}, #{quickSearchDetail.belongTo})
</insert>
<update id="updateQuickSearchDetail">
update jcl_quicksearch_detail
set cid=#{quickSearchDetail.cId},
customname=#{quickSearchDetail.customName},
minnum=#{quickSearchDetail.minNum},
maxnum=#{quickSearchDetail.maxNum},
type=#{quickSearchDetail.type},
orderid=#{quickSearchDetail.orderId},
fieldid=#{quickSearchDetail.fieldId},
belongto=#{quickSearchDetail.belongTo}
where id = #{quickSearchDetail.id}
</update>
<delete id="deleteQuickSearchDetailByCid">
delete
from jcl_quicksearch_detail
where cid = #{cId}
</delete>
<delete id="deleteQuickSearchConditionByIds">
delete from jcl_quicksearch_condition where id in
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteQuickSearchDetailByCids">
delete from jcl_quicksearch_detail where cid in
<foreach collection="cIds" open="(" item="cid" separator="," close=")">
#{cid}
</foreach>
</delete>
<delete id="deleteQuickSearchDetailByIds">
delete from jcl_quicksearch_detail where id in
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

@ -48,4 +48,16 @@ public interface JclOrgMapper {
JclOrgMap getResInfo(@Param("level") String level, @Param("grade") String grade, @Param("id") String id);
int insertSubVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
int insertSubVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
int insertDeptVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
int insertDeptVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
int insertCompanyVirtualVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
int insertJobVersionRecord(@Param("currentDate") String currentDate, @Param("creator") String creator);
}

@ -407,4 +407,189 @@
left join jcl_org_grade f on d.${grade}=f.id
where a.id=#{id}
</select>
<!--分部版本历史记录-->
<insert id="insertSubVersionRecord">
insert into jcl_org_chart_subcompany(creater, subcompanyid, subcompanyname, subcompanydesc, company,
supsubcompanyid, supsubcompany, canceled, subcompanycode, limitusers,
tlevel, versiondate, type)
select #{creator},
a.id as subcompanyid,
a.subcompanyname,
a.subcompanydesc,
a.companyid as company,
b.supsubcomid as supsubcompanyid,
b.subcompanyname as supsubcompany,
a.canceled,
a.subcompanycode,
a.limitusers,
a.tlevel,
#{currentDate},
c.fblx as type
from hrmsubcompany a
left join hrmsubcompany b on a.supsubcomid = b.id
left join hrmsubcompanydefined c on a.id = c.subcomid left join hrmsubcompany b on a.supsubcomid=b.id
</insert>
<!--虚拟分部历史记录-->
<insert id="insertSubVirtualVersionRecord">
insert into jcl_chart_subcompanyvirtual(subcompanyvirtualid, creater, subcompanyname, subcompanycode,
subcompanydesc, supsubcompany, supsubcomid, company, companyid,
canceled, virtualtype, tlevel, showorder, versiondate)
select a.id as subcompanyvirtualid,
#{creator},
a.subcompanyname,
a.subcompanycode,
a.subcompanydesc,
b.subcompanyname as supsubcompany,
a.supsubcomid,
c.companyname as company,
a.companyid,
a.canceled,
a.virtualtypeid as virtualtype,
a.tlevel,
a.showorder,
#{currentDate}
from hrmsubcompanyvirtual a
left join hrmsubcompanyvirtual b on a.supsubcomid = b.id
left join hrmcompanyvirtual c on a.companyid = c.id
</insert>
<!--部门版本历史记录-->
<insert id="insertDeptVersionRecord">
insert into jcl_chart_department(creater, departmentid, departmentmark, departmentname, subcompanyid,
subcompany, supdepartmentid, supdepartment, canceled, departmentcode,
coadjutant, tlevel, versiondate, type, fleader)
select #{creator},
a.id as departmentid,
a.departmentmark,
a.departmentname,
a.subcompanyid1 as subcompanyid,
b.SUBCOMPANYNAME as subcompany,
a.supdepid as supdepartmentid,
c.departmentname as supdepartment,
a.canceled,
a.departmentcode,
a.coadjutant,
a.tlevel,
#{currentDate},
d.bmlx as type,
a.bmfzr as fleader
from hrmdepartment a
left join hrmsubcompany b on a.subcompanyid1 = b.id
left join hrmdepartment c on a.supdepid = c.id
left join hrmdepartmentdefined d on a.id=d.deptid;left join hrmdepartmentdefined d on a.id=d.deptid
</insert>
<!--虚拟部门版本历史记录-->
<insert id="insertDeptVirtualVersionRecord">
insert into jcl_chart_departmentvirtual(departmentvirtualid, creater, departmentname, departmentcode,
departmentmark, supdeptment, supdepid, allsupdepid, subcompany,
subcompanyid, canceled, virtualtype, tlevel, showorder, versiondate)
select a.id as departmentvirtualid,
#{creator},
a.departmentname,
a.departmentcode,
a.departmentmark,
b.DEPARTMENTNAME as supdeptment,
b.SUPDEPID as supdepid,
a.allsupdepid,
c.SUBCOMPANYNAME as subcompany,
a.SUBCOMPANYID1 as subcompanyid,
a.canceled,
a.virtualtype,
a.tlevel,
a.showorder,
#{currentDate}
from hrmdepartmentvirtual a
left join hrmdepartmentvirtual b on a.SUPDEPID = b.id
left join hrmsubcompanyvirtual c on a.SUBCOMPANYID1 = c.id
</insert>
<!--虚拟总部历史记录-->
<insert id="insertCompanyVirtualVersionRecord">
INSERT into jcl_chart_companyvirtual(companyvirtualid, creater, companyname, companycode, companydesc,
showorder, canceled, virtualtype, virtualtypedesc, versiondate)
select id as companyvirtualid,
#{creator},
companyname,
companycode,
companydesc,
showorder,
canceled,
virtualtype,
virtualtypedesc,
#{currentDate}
from hrmcompanyvirtual
</insert>
<!--岗位历史记录-->
<insert id="insertJobVersionRecord">
insert into jcl_org_chart_job(creater, jobname, department, subcompany, jobresponsibility, canceled, jobcode,
description, versiondate)
select #{creator},
a.job_name as jobname,
a.ec_department as department,
a.ec_company as subcompany,
b.jobresponsibility,
a.forbidden_tag as canceled,
a.job_no as jobcode,
a.description,
#{currentDate}
from jcl_org_job a
left join hrmjobtitles b on a.ec_jobtitle = b.id
</insert>
<insert id="insertResourceVersionRecord">
insert into jcl_chart_resource(resourceid, creater, workyear, usekind, managerstr, status, sex, accounttype,
belongto, loginid, maritalstatus, telephone, mobile, mobilecall, email,
locationname, resourcetype, startdate, enddate, jobtitleid, jobtitle, joblevel,
seclevel, departmentid, department, subcompanyid, subcompany, costcenter,
manager, assistant, workcode, classification, versiondate, policy, degree,
versionid)
select a.id as resourceid,
1,
workyear,
usekind,
managerstr,
status,
sex,
accounttype,
belongto,
loginid,
maritalstatus,
a.telephone,
mobile,
mobilecall,
email,
b.locationname,
resourcetype,
startdate,
enddate,
c.id as jobtitleid,
d.JOBTITLENAME as jobtitle,
joblevel,
seclevel,
departmentid,
e.departmentname as department,
a.subcompanyid1 as subcompanyid,
f.subcompanyname as subcompany,
a.costcenterid as costcenter,
a.managerid as manager,
a.assistantid as assistant,
workcode,
classification,
'2023-07-11 15:47',
policy,
degree,
1111
from hrmresource a
left join hrmlocations b on a.locationid = b.id
left join jcl_org_job c on a.jobtitle = c.id
left join hrmjobtitles d on c.ec_jobtitle = d.id
left join hrmdepartment e on a.departmentid = e.id
left join hrmsubcompany f on a.subcompanyid1= f.id;
</insert>
</mapper>

@ -330,6 +330,8 @@
b.departmentname ,
c.sequence_name,
d.scheme_name,
e.jobactivityname,
f.jobgroupname,
<include refid="baseColumns"/>
FROM jcl_org_job t
left join hrmjobtitles h on
@ -342,6 +344,8 @@
t.sequence_id = c.id
left join jcl_org_scheme d on
t.scheme_id = d.id
left join hrmjobactivities e on h.jobactivityid =e.id
left join hrmjobgroups f on e.jobgroupid =f.id
WHERE t.delete_type = 0
<include refid="likeSQL"/>
<if test=" jobPO.parentJob != null ">
@ -374,6 +378,8 @@
b.departmentname ,
c.sequence_name,
d.scheme_name,
e.jobactivityname,
f.jobgroupname,
<include refid="baseColumns"/>
FROM jcl_org_job t
left join hrmsubcompany a on
@ -385,6 +391,8 @@
left join jcl_org_scheme d on
t.scheme_id = d.id
left join hrmjobtitles h on t.ec_jobTitle = h.id
left join hrmjobactivities e on h.jobactivityid =e.id
left join hrmjobgroups f on e.jobgroupid =f.id
WHERE t.delete_type = 0 order by ${orderSql}
</select>

@ -1,6 +1,7 @@
package com.engine.organization.mapper.resource;
import com.alibaba.fastjson.JSONObject;
import com.engine.organization.entity.hrmresource.po.ResourceChartPO;
import com.engine.organization.entity.hrmresource.po.ResourcePO;
import com.engine.organization.entity.hrmresource.param.SearchTemplateParam;
import com.engine.organization.entity.hrmresource.po.SearchTemplatePO;
@ -78,4 +79,14 @@ public interface HrmResourceMapper {
String queryLabelName(@Param("fieldName") String fieldName, @Param("scopeId") String scopeId);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/7/3 2:38 PM
* @param: [departmentId]
* @return: java.util.List<com.engine.organization.entity.hrmresource.po.ResourceChartPO>
*/
List<ResourceChartPO> selectByDepartmentId(@Param("departmentId")Integer departmentId);
}

@ -17,8 +17,16 @@
<select id="selectFilterDatas" resultType="com.engine.organization.entity.hrmresource.po.ResourcePO">
SELECT DISTINCT subcompanyid1, departmentid, jobtitle
from hrmresource where status &lt; 4
select distinct a.subcompanyid1, a.departmentid, a.jobtitle
from hrmresource a
where a.status &lt; 4
and not exists
(select 1
from jcl_org_job b
where a.subcompanyid1 = b.ec_company
and a.departmentid = b.ec_department
and a.jobtitle = b.ec_jobtitle
and b.delete_type = 0)
</select>
<select id="listByFilter" resultMap="HrmResourceMap">
select id, subcompanyid1 , departmentid , jobtitle , lastname , dspOrder from hrmresource t
@ -443,4 +451,9 @@
and creator = #{userId}
</select>
<select id="selectByDepartmentId" resultType="com.engine.organization.entity.hrmresource.po.ResourceChartPO">
select id,workcode,lastname,sex,departmentid,subcompanyid1,jobtitle,status,mobile
from hrmresource where departmentid = #{departmentId} and status &lt; 4 order by id
</select>
</mapper>

@ -2,6 +2,7 @@ package com.engine.organization.mapper.resource;
import com.engine.organization.entity.hrmresource.po.HrmResourcePO;
import com.engine.organization.entity.hrmresource.po.ResourceChartPO;
import com.engine.organization.entity.hrmresource.vo.HrmResourceVO;
import org.apache.ibatis.annotations.Param;
@ -39,4 +40,6 @@ public interface ResourceMapper {
List<Long> getIdByKeyField(@Param("keyField") String keyField, @Param("keyFieldValue") String keyFieldValue);
}

@ -0,0 +1,75 @@
package com.engine.organization.service;
import weaver.hrm.User;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/06/29
* @version: 1.0
*/
public interface ChartService {
/**
* ,
*
* @param params
* @return
*/
Map<String, Object> getCompanyData(Map<String, Object> params);
/**
* ,
*
* @param params
* @return
*/
Map<String, Object> asyncCompanyData(Map<String, Object> params);
Map<String, Object> getDepartmentDetail(Map<String, Object> params);
/**
* @Description: Id
* @Author: liang.cheng
* @Date: 2023/7/11 2:53 PM
* @param: [id]
* @return: java.lang.String
*/
String selectVersionDate(String id);
/**
*
*
* @param params
* @return
*/
Map<String, Object> versionRecord(Map<String, Object> params, User user);
/**
*
*
* @param params
* @return
*/
Map<String, Object> getDepartmentTree(Map<String, Object> params);
/**
*
*
* @param params
* @return
*/
Map<String, Object> getMovingTree(Map<String, Object> params);
/**
* TreeSelect
*
* @param params
* @return
*/
Map<String, Object> getFullSelectTree(Map<String, Object> params);
}

@ -160,4 +160,11 @@ public interface DepartmentService {
*/
int moveDepartment(DepartmentMoveParam moveParam);
/**
*
* @param params
* @return
*/
int dragDepartment(DepartmentDragParam departmentDragParam);
}

@ -1,8 +1,9 @@
package com.engine.organization.service;
import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -19,4 +20,15 @@ public interface ExportCommonService {
* @return
*/
XSSFWorkbook resourceExport(List<Long> ids);
/**
* Excel
*
* @param request request
* @param response response
* @param ids ID
* @return
*/
XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids);
}

@ -167,4 +167,16 @@ public interface HrmResourceService {
Map<String, Object> getCustomTransferData(Map<String, Object> params);
Integer saveColumnsCustomTemplate(Map<String, Object> params);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/7/3 11:04 AM
* @param: [departmentId]
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String, Object> chartResourceList(Integer departmentId,String versionId,String dimension);
}

@ -85,4 +85,12 @@ public interface OrgChartService {
*/
void insertChartVersion(Integer fclass,String description);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/6/29 10:36 AM
* @param: [request2Map]
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
Map<String, Object> searchTimeLines(Map<String, Object> request2Map);
}

@ -5,7 +5,6 @@ import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/6/27 3:45 PM
* @Description: TODO
* @Version 1.0
*/
public interface OrgVirtualService {

@ -0,0 +1,50 @@
package com.engine.organization.service;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
public interface QuickSearchService {
/**
*
*
* @param params
* @return return
*/
Map<String, Object> getQuickSearchCondition(Map<String, Object> params);
/**
*
*
* @param params params
* @return return
*/
Map<String, Object> getQuickSearchInfo(Map<String, Object> params);
/**
*
*
* @param params params
* @return return
*/
Map<String, Object> saveQuickSearchInfo(Map<String, Object> params);
/**
*
*
* @param params params
* @return return
*/
Map<String, Object> getQuickSearchDetailInfo(Map<String, Object> params);
/**
*
*
* @param params params
* @return return
*/
Map<String, Object> saveQuickSearchDetailInfo(Map<String, Object> params);
}

@ -153,6 +153,15 @@ public class CompServiceImpl extends Service implements CompService {
@Override
public Map<String, Object> deleteByIds(Map<String, Object> params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
RecordSet rs = new RecordSet();
HashMap<String, Object> returnMap = new HashMap<>(2);
rs.executeQuery("select id from HrmDepartment where subcompanyid1 =" + Util.null2String(params.get("id")));
if (rs.next()) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(81683, user.getLanguage()));
return returnMap;
}
return ServiceUtil.getService(OrganizationServiceImpl.class, user).delSubCompany(params, user);
}

@ -142,13 +142,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 添加父级元素
List<DepartmentListDTO> compListDTOS = DepartmentBO.buildDeptDTOList(allList, filterDeptPOs);
List<DepartmentListDTO> subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, DepartmentListDTO.class);
pageInfos = new PageInfo<>(DepartmentBO.buildDeptDTOShowNames(subList), DepartmentListDTO.class);
pageInfos.setTotal(compListDTOS.size());
} else {
// 组合list
List<DepartmentListDTO> compListDTOS = DepartmentBO.buildDeptDTOList(allList);
List<DepartmentListDTO> subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, DepartmentListDTO.class);
pageInfos = new PageInfo<>(DepartmentBO.buildDeptDTOShowNames(subList), DepartmentListDTO.class);
pageInfos.setTotal(compListDTOS.size());
}
@ -182,7 +182,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
@Override
public int updateForbiddenTagById(DeptSearchParam params) {
HasRightUtil.hasRight(user, RIGHT_NAME, false);
DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).canceled(params.getForbiddenTag() ? 0 : 1).build();
DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).canceled(params.getCanceled() ? 0 : 1).build();
Map<String, Object> map = new HashMap<>();
map.put("id", Util.null2String(departmentPO.getId()));
map.put("forbiddenTag", Util.null2String(departmentPO.getCanceled()));
@ -469,7 +469,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
String ecDepartmentID = Util.null2String(syncMap.get("id"));
OrganizationAssert.isTrue(StringUtils.isNotBlank(ecDepartmentID), syncMap.get("message").toString());
// 更新组织架构图
//TODO new DepartmentTriggerRunnable(deptById.getId()).run();
// new DepartmentTriggerRunnable(deptById.getId()).run();
// 复制当前部门岗位信息
//if ("1".equals(copyJob)) {
@ -540,7 +540,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
departmentPO.setSubCompanyId1(targetDepartment.getSubCompanyId1());
updateEcDepartment(departmentPO);
// 更新组织架构图
//TODO new DepartmentTriggerRunnable(departmentPO.getId()).run();
// new DepartmentTriggerRunnable(departmentPO.getId()).run();
}
// 查询该部门一级岗位、更新岗位所属分部、所属部门
//List<JobPO> firstChildJobList = getJobMapper().listJobsByDepartmentId(mergeParam.getId());
@ -553,7 +553,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 更新岗位组织架构图
//for (JobPO jobPO : firstChildJobList) {
// // 刷新组织架构图
// TODO new JobTriggerRunnable(jobPO.getId()).run();
// new JobTriggerRunnable(jobPO.getId()).run();
//}
// 更新当前部门下的人员
rs.executeUpdate("update hrmresource set SUBCOMPANYID1 =?,DEPARTMENTID =? where DEPARTMENTID =?", targetDepartment.getSubCompanyId1(), targetEcDeptId, mergeEcDeptId);
@ -561,7 +561,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
//List<Long> hrmResourceIds = getSystemDataMapper().getHrmResourceIdsByDept(mergeParam.getId().toString());
//// 更新人员组织架构图
//for (Long hrmResourceId : hrmResourceIds) {
//TODO new HrmResourceTriggerRunnable(hrmResourceId).run();
// new HrmResourceTriggerRunnable(hrmResourceId).run();
//}
// 更新子部门下岗位的所属分部
for (DepartmentPO departmentPO : firstChildDeptList) {
@ -570,18 +570,25 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
}
// 原部门删除
// DepartmentPO mergeDepartment = getDepartmentMapper().getDeptById(mergeParam.getId());
// 删除部门(先更改原部门名称,释放原部门名称,然后删除)
DepartmentPO sourceDepartmentPO = getDepartmentMapper().getDeptById(mergeParam.getId());
sourceDepartmentPO.setDepartmentName(sourceDepartmentPO.getDepartmentName() + "_被合并");
sourceDepartmentPO.setDepartmentMark(sourceDepartmentPO.getDepartmentMark() + "_被合并");
updateEcDepartment(sourceDepartmentPO);
Map<String, Object> map = new HashMap<>();
map.put("id", Util.null2String(mergeParam.getId()));
// 删除部门
ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentCancel(map, user);
// 删除原部门下的岗位
// 更新组织架构图
// TODO new DepartmentTriggerRunnable(mergeDepartment).run();
// new DepartmentTriggerRunnable(mergeDepartment).run();
// 更新部门合并后名称
targetDepartment.setDepartmentName(mergeParam.getMergeName());
targetDepartment.setDepartmentMark(mergeParam.getMergeName());
updateEcDepartment(targetDepartment);
// 更新组织架构图
// TODO new DepartmentTriggerRunnable(oldFParentId, targetDepartment.getId()).run();
// new DepartmentTriggerRunnable(oldFParentId, targetDepartment.getId()).run();
return 0;
}
@ -622,7 +629,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
deptById.setSupDepId(null);
// 更新组织架构图
//TODO new DepartmentTriggerRunnable(company.toString(), deptById).run();
// new DepartmentTriggerRunnable(company.toString(), deptById).run();
} else if ("1".equals(moveParam.getMoveType())) {
Integer departmentId = moveParam.getDepartment();
OrganizationAssert.notNull(departmentId, "请选择要转移到的部门");
@ -638,7 +645,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
deptById.setSubCompanyId1(parentDepartment.getSubCompanyId1());
// 更新组织架构图
// TODO new DepartmentTriggerRunnable(Integer.toString(100000000 + department.intValue()), deptById).run();
// new DepartmentTriggerRunnable(Integer.toString(100000000 + department.intValue()), deptById).run();
}
// 更新EC部门
updateEcDepartment(deptById);
@ -651,13 +658,108 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
//// 更新人员组织架构图
//List<Long> hrmResourceIds = getSystemDataMapper().getHrmResourceIdsByDept(deptById.getId().toString());
//for (Long hrmResourceId : hrmResourceIds) {
//TODO new HrmResourceTriggerRunnable(hrmResourceId).run();
// new HrmResourceTriggerRunnable(hrmResourceId).run();
//}
forbiddenChildTag(deptById.getSubCompanyId1(), deptList);
// 递归更新下级部门、岗位
return 1;
}
@Override
public int dragDepartment(DepartmentDragParam departmentDragParam) {
String sourceKey = Util.null2String(departmentDragParam.getSourcekey());// 原目标
String targetKey = Util.null2String(departmentDragParam.getTargetkey());// 目的地
String dragPostion = Util.null2String(departmentDragParam.getDropPosition());// 0:目的里面 1目的外边
DepartmentPO deptById = getDepartmentMapper().getDeptById(Util.getIntValue(sourceKey.substring(1)));
RecordSet recordSet = new RecordSet();
// 部门不能到集团下
String sourceType = sourceKey.substring(0, 1);
String sourceId = sourceKey.substring(1);
String targetType = targetKey.substring(0, 1);
String targetId = targetKey.substring(1);
String supComId = "";
String supId = "";
String ftype = "";
String querySupIdSql;
// OrganizationAssert.isFalse("s".equals(sourceType) && "d".equals(targetType), "分部不能转移到部门下");
OrganizationAssert.isFalse("-1".equals(dragPostion), "分部、部门不能转移至与集团平级");
if ("s".equals(targetType)) {// 分部
querySupIdSql = "select companyId as supComId,supsubcomid as supId,'s' as ftype from hrmsubcompany where id = ?";
} else {
querySupIdSql = "select subcompanyid1 as supComId,supdepid as supId,'d' as ftype from hrmdepartment where id = ?";
}
recordSet.executeQuery(querySupIdSql, targetId);
if (recordSet.next()) {
supId = Util.null2String(recordSet.getString("supId"));
supComId = Util.null2String(recordSet.getString("supComId"));
ftype = Util.null2String(recordSet.getString("ftype"));
}
if ("s".equals(sourceType)) {// 拖拽源是分部
Map<String, Object> params = new HashMap<>();
params.put("id", sourceId);
if ("0".equals(dragPostion)) {//内部
OrganizationAssert.isFalse("d".equals(targetType), "分部不能拖拽至部门下");
if ("c".equals(targetType)) {// 集团下上级分部为0
params.put("supsubcomid", "0");
}else if ("s".equals(targetType)){
params.put("supsubcomid", targetId);//上下级关系
}
}else{//外部
if("s".equals(targetType)){// 分部外(平级)
params.put("supsubcomid",supId);
}else{// 部门外(找上级)
OrganizationAssert.isFalse("d".equals(ftype), "分部不能拖拽至部门下");
params.put("supsubcomid",supId);
}
}
new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, params).sync();
} else {//拖拽源是部门
List<DepartmentPO> deptListByPId;
Set<Integer> disableIds = new HashSet<>();
if ("0".equals(dragPostion)) {//内部
OrganizationAssert.isFalse("c".equals(targetType), "部门不能拖拽至集团下");
if("s".equals(targetType)){
deptById.setSubCompanyId1(Util.getIntValue(targetId));
deptById.setSupDepId(null);
}else{
deptListByPId = getDepartmentMapper().getDeptListByPId(Util.getIntValue(targetId));
disableIds.add(Util.getIntValue(sourceKey.substring(1)));
if (CollectionUtils.isNotEmpty(deptListByPId)) {
addDisableIds(disableIds, deptListByPId);
}
OrganizationAssert.isFalse("d".equals(targetType) && disableIds.contains(Util.getIntValue(targetId)), "请勿选择当前部门本身及其子部门");
deptById.setSupDepId(Util.getIntValue(targetId));
DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(Util.getIntValue(targetId));
deptById.setSubCompanyId1(parentDepartment.getSubCompanyId1());
}
}else{//外部
if("s".equals(targetType)){
OrganizationAssert.isFalse("0".equals(supId), "部门不能拖拽至集团下");
deptById.setSubCompanyId1(Util.getIntValue(supId));
deptById.setSupDepId(null);
}else{
// 转移到部门外
deptListByPId = getDepartmentMapper().getDeptListByPId(Util.getIntValue(supId));
disableIds.add(Util.getIntValue(sourceKey.substring(1)));
if (CollectionUtils.isNotEmpty(deptListByPId)) {
addDisableIds(disableIds, deptListByPId);
}
deptById.setSupDepId(Util.getIntValue(supId));
deptById.setSubCompanyId1(Util.getIntValue(supComId));
}
}
// 更新EC部门
updateEcDepartment(deptById);
// 刷新岗位分部
List<DepartmentPO> deptList = getDepartmentMapper().getDeptListByPId(deptById.getId());
forbiddenChildTag(deptById.getSubCompanyId1(), deptList);
}
return 1;
}
/**
* id
*
@ -672,7 +774,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
updateEcDepartment(departmentPO);
// 更新组织架构图
// TODO new DepartmentTriggerRunnable(departmentPO.getId()).run();
// new DepartmentTriggerRunnable(departmentPO.getId()).run();
// 刷新岗位所属分部
//refreshJobComp(departmentPO.getId(), subCompanyId1);
// 更新当前部门下的人员
@ -682,7 +784,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
//List<Long> hrmResourceIds = getSystemDataMapper().getHrmResourceIdsByDept(departmentPO.getId().toString());
//// 更新人员组织架构图
//for (Long hrmResourceId : hrmResourceIds) {
//TODO new HrmResourceTriggerRunnable(hrmResourceId).run();
// new HrmResourceTriggerRunnable(hrmResourceId).run();
//}
List<DepartmentPO> childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId());
forbiddenChildTag(subCompanyId1, childList);

@ -1,7 +1,18 @@
package com.engine.organization.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.cloudstore.dev.api.service.Service_DevTable;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.core.impl.Service;
import com.engine.organization.component.OrganizationWeaTable;
import com.engine.organization.entity.hrmresource.po.SearchTemplatePO;
import com.engine.organization.entity.hrmresource.vo.HrmResourceVO;
import com.engine.organization.mapper.resource.HrmResourceMapper;
import com.engine.organization.mapper.resource.ResourceMapper;
import com.engine.organization.service.ExportCommonService;
import com.engine.organization.util.HrmI18nUtil;
@ -10,11 +21,13 @@ import com.engine.organization.util.detach.DetachUtil;
import com.engine.organization.util.excel.ExcelUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.general.Util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -74,5 +87,119 @@ public class ExportCommonServiceImpl extends Service implements ExportCommonServ
return ExcelUtil.genWorkbookV2(excelSheetData, sheetName);
}
@Override
public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids) {
List<String> headerList = new ArrayList<>();
List<Object> headerNameList = new ArrayList<>();
OrganizationWeaTable<HrmResourceVO> table = new OrganizationWeaTable<>(user, HrmResourceVO.class);
String sqlWhere = " where 1 = 1 and t.status < 4 and (t.accounttype is null or t.accounttype != 1)";
// 分权查询
DetachUtil detachUtil = new DetachUtil(user);
String parentCompanyIds = detachUtil.getJclRoleLevels();
if (detachUtil.isDETACH()) {
sqlWhere += " and t.subcompanyid1 in(" + parentCompanyIds + ")";
}
if(StringUtils.isNotBlank(ids)){
sqlWhere += " and t.id in(" + ids + ")";
}
table.setSqlwhere(sqlWhere);
List<WeaTableColumn> weaTableColumnList = new ArrayList<>();
List<String> fields = new ArrayList<>();
HrmResourceServiceImpl hrmResourceService = new HrmResourceServiceImpl();
List<SearchConditionGroup> allConditions = hrmResourceService.getAllConditions();
List<String> columnList;
// 查询当前台账定制列
SearchTemplatePO usedCustomTemplate = MapperProxyFactory.getProxy(HrmResourceMapper.class).getUsedCustomTemplateByUser(user.getUID());
if (null == usedCustomTemplate) {
// 默认列定制
String selectKeys = "-1_hrm_lastname,-1_hrm_departmentid,-1_hrm_jobtitle,-1_hrm_mobile,-1_hrm_telephone,-1_hrm_managerid";
columnList = Arrays.asList(selectKeys.split(","));
} else {
columnList = hrmResourceService.getSelectKeys(usedCustomTemplate);
}
BigDecimal decimal = new BigDecimal(100 / columnList.size());
for (SearchConditionGroup allCondition : allConditions) {
List<SearchConditionItem> items = allCondition.getItems();
for (SearchConditionItem item : items) {
String columnName = item.getDomkey()[0];
fields.add(hrmResourceService.buildTableSql(columnName) + " as " + hrmResourceService.buildTableSql(columnName).replace(".", "_"));
String scopeId = columnName.split("_")[0];
String fieldName = columnName.substring(columnName.lastIndexOf("_") + 1);
WeaTableColumn weaTableColumn = new WeaTableColumn();
weaTableColumn.setText(MapperProxyFactory.getProxy(HrmResourceMapper.class).queryLabelName(fieldName, scopeId));
weaTableColumn.setColumn(hrmResourceService.buildTableSql(columnName).replace(".", "_"));
weaTableColumn.setDisplay(columnList.contains(columnName) ? WeaBoolAttr.TRUE : WeaBoolAttr.FALSE);
weaTableColumn.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getFieldTrueValue");
weaTableColumn.setOtherpara(columnName);
weaTableColumn.setWidth(decimal.setScale(2, RoundingMode.HALF_UP).doubleValue() + "%");
if (weaTableColumn.getDisplay().getBoolVal()) {
weaTableColumnList.add(weaTableColumn);
headerList.add(weaTableColumn.getColumn());
headerNameList.add(weaTableColumn.getText());
}
}
}
// 增加id字段,跳转人员卡片
WeaTableColumn weaTableColumn = new WeaTableColumn();
weaTableColumn.setColumn("id");
weaTableColumn.setDisplay(WeaBoolAttr.FALSE);
weaTableColumnList.add(weaTableColumn);
fields.add("t.id");
// 增加分部字段
//WeaTableColumn weaTableColumn1 = new WeaTableColumn();
//weaTableColumn1.setText("分部");
//weaTableColumn1.setColumn("subcompanyid1");
//weaTableColumn1.setDisplay(WeaBoolAttr.TRUE);
//weaTableColumn1.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getCompanyName");
//fields.add("t.subcompanyid1");
//headerList.add(0, weaTableColumn1.getColumn());
//headerNameList.add(0, weaTableColumn1.getText());
//weaTableColumnList.add(0, weaTableColumn1);
table.setBackfields(StringUtils.join(fields, ","));
table.setColumns(weaTableColumnList);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
Map<String, Object> resultMap = result.getResultMap();
String dataKey = Util.null2String(resultMap.get("datas"));
String getcounts = new Service_DevTable().getcounts(request, response, dataKey);
JSONObject jsonObject = JSON.parseObject(getcounts);
String count = jsonObject.getString("count");
String datas = new Service_DevTable().datas(request, response, dataKey, count, "[]", "", "", "1", "");
jsonObject = JSON.parseObject(datas);
List<Map<String, Object>> datas1 = (List<Map<String, Object>>) jsonObject.get("datas");
List<List<Object>> rows = new LinkedList<>();
for (Map<String, Object> map : datas1) {
List<Object> row = new LinkedList<>();
for (String s : headerList) {
JSONObject o = (JSONObject) map;
String value = o.getString(s + "span");
row.add(Util.formatMultiLangForExpCustomLabel(value, String.valueOf(user.getLanguage())));
}
rows.add(row);
}
List<List<Object>> excelSheetData = new ArrayList<>();
excelSheetData.add(headerNameList);
excelSheetData.addAll(rows);
String sheetName = HrmI18nUtil.getI18nLabel(85368, "人员档案数据");
return ExcelUtil.genWorkbookV2(excelSheetData, sheetName);
}
}

@ -13,6 +13,7 @@ import com.engine.core.impl.Service;
import com.engine.hrm.util.face.HrmFaceCheckManager;
import com.engine.organization.component.OrganizationWeaTable;
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.chart.ResourceListColumns;
import com.engine.organization.entity.company.bo.CompBO;
import com.engine.organization.entity.company.po.CompPO;
import com.engine.organization.entity.department.bo.DepartmentBO;
@ -20,20 +21,21 @@ import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.extend.bo.ExtendInfoBO;
import com.engine.organization.entity.extend.po.ExtendInfoPO;
import com.engine.organization.entity.hrmresource.bo.HrmRelationBO;
import com.engine.organization.entity.hrmresource.bo.ResourceChartBO;
import com.engine.organization.entity.hrmresource.param.HrmRelationSaveParam;
import com.engine.organization.entity.hrmresource.param.SearchTemplateParam;
import com.engine.organization.entity.hrmresource.po.HrmRelationPO;
import com.engine.organization.entity.hrmresource.po.JclOrgCustomTemplatePO;
import com.engine.organization.entity.hrmresource.po.SearchTemplatePO;
import com.engine.organization.entity.hrmresource.po.TransferDataPO;
import com.engine.organization.entity.hrmresource.po.*;
import com.engine.organization.entity.hrmresource.vo.HrmResourceVO;
import com.engine.organization.entity.hrmresource.vo.ResourceChartVO;
import com.engine.organization.entity.jclimport.po.CusFormFieldPO;
import com.engine.organization.entity.job.bo.JobBO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.entity.search.QuickSearchDetail;
import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.entity.searchtree.SearchTreeParams;
import com.engine.organization.enums.HrmGroupEnum;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.condition.QuickSearchMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.hrmresource.HrmRelationMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
@ -57,6 +59,7 @@ import org.json.JSONObject;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.definedfield.HrmFieldManager;
@ -66,6 +69,8 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import static weaver.general.Util.getIntValue;
/**
* @author:dxfeng
* @createTime: 2022/06/20
@ -115,6 +120,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
return MapperProxyFactory.getProxy(JclOrgCustomTemplateMapper.class);
}
private QuickSearchMapper getQuickSearchMapper() {
return MapperProxyFactory.getProxy(QuickSearchMapper.class);
}
// 所有满足条件的岗位ID
private List<Integer> jobTitleList = null;
// 是否
@ -308,7 +318,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
@Override
public Integer updateCustomTemplate(Map<String, Object> params) {
int rowNum = Util.getIntValue((String) params.get("rownum"));
int rowNum = getIntValue((String) params.get("rownum"));
int count = 0;
List<Long> allIds = getJclOrgCustomTemplateMapper().listAllId();
String currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date());
@ -423,6 +433,76 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
return jclOrgCustomTemplatePO.getId();
}
@Override
public Map<String, Object> chartResourceList(Integer departmentId, String versionId, String dimension) {
Map<String, Object> dataMap = new HashMap<>();
List<ResourceListColumns> resourceListColumns = getTableColumns();
List<ResourceChartPO> resourceChartPOS = new ArrayList<>();
List<ResourceChartVO> resourceChartVOS = new ArrayList<>();
RecordSet rs = new RecordSet();
if ("0".equals(dimension)) {
if ("0".equals(versionId)) {
//当前数据
resourceChartPOS = getHrmResourceMapper().selectByDepartmentId(departmentId);
resourceChartVOS = ResourceChartBO.convertToVO(resourceChartPOS);
} else {
rs.executeQuery("select resourceid,workcode,lastname,sex,department,subcompany,jobtitle,mobile from jcl_chart_resource where departmentid = ? and versionid = ?", departmentId, versionId);
while (rs.next()) {
ResourceChartVO build = ResourceChartVO.builder()
.id((long) Util.getIntValue(rs.getString("resourceid")))
.workCode(Util.null2String(rs.getString("workcode")))
.lastName(Util.null2String(rs.getString("lastname")))
.sex("1".equals(Util.null2String(rs.getString("workcode"))) ? "女" : "男")
.departmentName(Util.null2String(rs.getString("department")))
.subcompanyName(Util.null2String(rs.getString("subcompany")))
.jobTitle(Util.null2String(rs.getString("jobtitle")))
.mobile(Util.null2String(rs.getString("mobile")))
.build();
resourceChartVOS.add(build);
}
}
} else {
rs.executeQuery("select h.id,h.workcode,h.lastname,h.sex,h.departmentid,h.subcompanyid1,h.jobtitle,h.status,h.mobile " +
" from hrmresourcevirtual v inner join hrmresource h on v.resourceid = h.id and v.virtualtype = ? and v.departmentid = ?", dimension, departmentId);
while (rs.next()) {
ResourceChartPO build = ResourceChartPO.builder()
.id((long) Util.getIntValue(rs.getString("id")))
.workCode(Util.null2String(rs.getString("workcode")))
.lastName(Util.null2String(rs.getString("lastname")))
.sex(Util.null2String(rs.getString("sex")))
.departmentId(Util.getIntValue(rs.getString("departmentid")))
.subcompanyid1(Util.getIntValue(rs.getString("subcompanyid1")))
.jobTitle(Util.getIntValue(rs.getString("jobtitle")))
.status(Util.getIntValue(rs.getString("status")))
.mobile(Util.null2String(rs.getString("mobile")))
.build();
resourceChartPOS.add(build);
}
resourceChartVOS = ResourceChartBO.convertToVO(resourceChartPOS);
}
dataMap.put("columns", resourceListColumns);
dataMap.put("dataSource", resourceChartVOS);
return dataMap;
}
private List<ResourceListColumns> getTableColumns() {
List<ResourceListColumns> list = new ArrayList<>();
list.add(ResourceListColumns.builder().title("序号").dataIndex("id").key("id").build());
list.add(ResourceListColumns.builder().title("工号").dataIndex("workCode").key("workCode").build());
list.add(ResourceListColumns.builder().title("姓名").dataIndex("lastName").key("lastName").build());
list.add(ResourceListColumns.builder().title("性别").dataIndex("sex").key("sex").build());
list.add(ResourceListColumns.builder().title("部门").dataIndex("departmentName").key("departmentName").build());
list.add(ResourceListColumns.builder().title("分部").dataIndex("subcompanyName").key("subcompanyName").build());
list.add(ResourceListColumns.builder().title("岗位").dataIndex("jobTitle").key("jobTitle").build());
//list.add(ResourceListColumns.builder().title("状态").dataIndex("status").key("status").build());
list.add(ResourceListColumns.builder().title("手机号").dataIndex("mobile").key("mobile").build());
return list;
}
@Override
public Map<String, Object> getSearchCondition(Map<String, Object> params) {
String templateId = Util.null2String(params.get("templateId"));
@ -632,11 +712,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
hrmFieldsByScopeId = getSystemDataMapper().getHrmFieldsByScopeId(HrmGroupEnum.HRM_WORK.getGroupType().toString());
createConditionItems(hrmFieldSearchConditionComInfo, hrmFieldsByScopeId, conditionItems);
Map<String, SearchConditionItem> allFieldsMap = conditionItems.stream().collect(Collectors.toMap(item -> item.getDomkey()[0], item -> item, (k1, k2) -> k1));
boolean isQuickSearch = "true".equals(Util.null2String(params.get("isQuickSearch")));
DBType dbType = DBType.get(new RecordSet().getDBType());
StringBuilder sb = new StringBuilder(" where 1=1 ");
if (params.containsKey("lastName")) {
if (params.containsKey("lastName") || !params.containsKey("-1_hrm_status")) {
// sb.append(" and t.status = 1");
sb.append(" and t.status < 4");
}
@ -667,7 +747,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
SearchConditionItem searchConditionItem = allFieldsMap.get(key);
// 根据不同的类型,不同的查询方式
buildDynamicSql(searchConditionItem, key, value, sb, dbType);
buildDynamicSql(searchConditionItem, key, value, sb, dbType, isQuickSearch, params);
}
if (searchJobTitle) {
String jobTitleIds = StringUtils.join(jobTitleList, ",");
@ -703,12 +783,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
} else if (TYPE_JOB.equals(type)) {
// 查询部门信息
List<JobPO> filterDeparts = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build());
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO departmentPO : filterDeparts) {
buildParentJobs(departmentPO, builderJobs);
}
searchTree = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<JobPO> filterJobs = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build());
searchTree = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(filterJobs));
}
return searchTree;
}
@ -726,13 +802,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
new DetachUtil(user).filterJobList(jobPOS);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
new DetachUtil(user).filterDepartmentList(filterDeparts);
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(jobPOS));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
// 兼容SQLServer每次最多in,2100条数据
@ -757,8 +828,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts, departmentPOMap);
}
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
@ -784,13 +857,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
private List<SearchTree> buildTreeByDeptAndJob(DepartmentPO departmentBuild, JobPO jobBuild) {
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(jobPOS));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
// 兼容SQLServer每次最多in,2100条数据
@ -808,40 +876,30 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
filterDeparts.addAll(departmentsByIds);
}
}
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
// 查询分部信息
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts, departmentPOMap);
}
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
}
private void buildParentJobs(JobPO jobPO, Set<JobPO> builderJobs) {
builderJobs.add(jobPO);
if (SearchTreeUtil.isTop(jobPO.getParentJob())) {
return;
}
JobPO parentJob = getJobMapper().getJobById(jobPO.getParentJob());
if (null != parentJob) {
buildParentJobs(parentJob, builderJobs);
}
}
/**
*
*
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts, Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts, departmentPOMap);
}
}
@ -1041,7 +1099,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* @param sb
* @param dbType
*/
private void buildDynamicSql(SearchConditionItem conditionItem, String key, String value, StringBuilder sb, DBType dbType) {
private void buildDynamicSql(SearchConditionItem conditionItem, String key, String value, StringBuilder sb, DBType dbType, boolean isQuickSearch, Map<String, Object> params) {
if (null == conditionItem) {
return;
}
@ -1094,6 +1152,19 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
break;
case INPUTNUMBER:// 数字
if (isQuickSearch) {
if ("-1".equals(value)){
break;
}
QuickSearchDetail quickSearchDetailById = getQuickSearchMapper().getQuickSearchDetailById(value);
Integer maxNum = quickSearchDetailById.getMaxNum();
Integer minNum = quickSearchDetailById.getMinNum();
sb.append(" and ").append(dbType.ifNull(tableSql, "0")).append(" >= ").append(minNum);
sb.append(" and ").append(dbType.ifNull(tableSql, "0")).append(" <= ").append(maxNum);
} else {
sb.append(" and ").append(dbType.ifNull(tableSql, "0")).append(" = '").append(value).append("' ");
}
break;
case CHECKBOX:
case SWITCH:
sb.append(" and ").append(dbType.ifNull(tableSql, "0")).append(" = '").append(value).append("' ");
@ -1111,8 +1182,27 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
case DATEPICKER:
case TIMEPICKER:
case RANGEPICKER:
// 精准搜索
sb.append(" and ").append(tableSql).append(" = '").append(value).append("' ");
if (isQuickSearch) {
if (StringUtils.isNotBlank(value) && !"-1".equals(value) && !"0,,".equals(value) && !"0".equals(value)) {
if (!"6".equals(value)) {
sb.append(" and ").append(tableSql).append(" >= '").append(TimeUtil.getDateByOption(value, "0")).append(" 00:00:00'");
sb.append(" and ").append(tableSql).append(" <= '").append(TimeUtil.getDateByOption(value, "")).append(" 23:59:59'");
} else {
String startDate = Util.null2String(params.get(key + "_start"));
String endDate = Util.null2String(params.get(key + "_end"));
if (StringUtils.isNotBlank(startDate)) {
sb.append(" and ").append(tableSql).append(" >= '").append(startDate).append("' ");
}
if (StringUtils.isNotBlank(endDate)) {
sb.append(" and ").append(tableSql).append(" <= '").append(endDate).append("' ");
}
}
}
} else {
// 精准搜索
sb.append(" and ").append(tableSql).append(" = '").append(value).append("' ");
}
break;
default:
break;
@ -1125,7 +1215,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* @param key
* @return
*/
private String buildTableSql(String key) {
public String buildTableSql(String key) {
StringBuilder sb = new StringBuilder();
String[] s = key.split("_");
if (s.length < 3) {
@ -1192,7 +1282,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
* @param searchTemplatePO
* @return
*/
private List<String> getSelectKeys(SearchTemplatePO searchTemplatePO) {
public List<String> getSelectKeys(SearchTemplatePO searchTemplatePO) {
List<String> selectKeys = new ArrayList<>();
String basicFields = searchTemplatePO.getBasicFields();
String personalFields = searchTemplatePO.getPersonalFields();

@ -278,6 +278,15 @@ public class JobServiceImpl extends Service implements JobService {
for (ExtendTitlePO extendTitle : extendTitles) {
List<SearchConditionItem> items = getExtService(user).getExtSaveForm(user, EXTEND_TYPE + "", JCL_ORG_JOB, 2, extendTitle.getId().toString(), "job_no", RuleCodeType.JOBTITLES.getValue(), params, "scheme_id", "parent_comp");
if (CollectionUtils.isNotEmpty(items)) {
for (SearchConditionItem searchConditionItem : items) {
if ("ec_jobTitle".equals(searchConditionItem.getDomkey()[0])) {
BrowserBean browserBean = searchConditionItem.getBrowserConditionParam();
String s = JSONObject.toJSONString(browserBean);
browserBean.setHasAddBtn(true);
searchConditionItem.setBrowserConditionParam(browserBean);
}
}
addGroups.add(new SearchConditionGroup(extendTitle.getTitle(), true, items));
}
}
@ -446,7 +455,7 @@ public class JobServiceImpl extends Service implements JobService {
jobById.setShowOrder(orderNum);
insertCount += getJobMapper().insertIgnoreNull(jobById);
// 更新组织架构图
//TODO new JobTriggerRunnable(jobById.getId()).run();
// new JobTriggerRunnable(jobById.getId()).run();
}
return insertCount;
@ -567,27 +576,27 @@ public class JobServiceImpl extends Service implements JobService {
// 更新合并后的岗位,更新组织架构图
// updateEcJob(targetJob, mergeParam.getMergeName());
// TODO targetJob.setJobName(mergeParam.getMergeName());
// targetJob.setJobName(mergeParam.getMergeName());
getJobMapper().updateBaseJob(targetJob);
//TODO new JobTriggerRunnable(jobById.getId(), targetJob.getId()).run();
// new JobTriggerRunnable(jobById.getId(), targetJob.getId()).run();
// 原岗位删除
//new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobById).sync();
getJobMapper().deleteByIds(Collections.singletonList(jobById.getId()));
// 更新组织架构图
//TODO new JobTriggerRunnable(jobById).run();
// new JobTriggerRunnable(jobById).run();
return updateCount;
}
@Override
public void refresh() {
//1.人员表查询
List<ResourcePO> resourcePOS = getHrmResourceMapper().selectFilterDatas();
//2.数据过滤
//3.数据插入
resourcePOS.forEach(resourcePO -> {
if (Objects.nonNull(resourcePO) && null != resourcePO.getJobtitle() && resourcePO.getJobtitle() > 0) {
int count = getJobMapper().selectByConditions(resourcePO);
if (count == 0) {
// 解决并发情况下,岗位数据重复问题
synchronized (JobServiceImpl.class) {
//1.人员表查询
List<ResourcePO> resourcePOS = getHrmResourceMapper().selectFilterDatas();
//2.数据过滤
//3.数据插入
resourcePOS.forEach(resourcePO -> {
if (Objects.nonNull(resourcePO) && null != resourcePO.getJobtitle() && resourcePO.getJobtitle() > 0) {
JobPO jobPO = JobPO.builder()
.ecCompany(resourcePO.getSubcompanyid1())
.ecDepartment(resourcePO.getDepartmentid())
@ -599,8 +608,8 @@ public class JobServiceImpl extends Service implements JobService {
.build();
getJobMapper().insertIgnoreNull(jobPO);
}
}
});
});
}
}
@ -614,7 +623,7 @@ public class JobServiceImpl extends Service implements JobService {
// 更新人员信息
// updateResourceJob(job);
// 更新组织架构图
//TODO new JobTriggerRunnable(job.getId()).run();
// new JobTriggerRunnable(job.getId()).run();
// 递归处理子级元素
List<JobPO> jobsByPid = getJobMapper().getJobsByPid(job.getId());
@ -628,14 +637,14 @@ public class JobServiceImpl extends Service implements JobService {
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts,Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept && (null == parentDept.getCanceled() || 0 == parentDept.getCanceled())) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts, departmentPOMap);
}
}
@ -673,9 +682,10 @@ public class JobServiceImpl extends Service implements JobService {
//
// 查询部门信息
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(DepartmentPO.builder().departmentName(keyword).canceled(0).supDepId(Integer.parseInt(id)).build(), "showorder");
Map<Integer, DepartmentPO> departmentPOMap = filterDeparts.stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts, departmentPOMap);
}
searchTree = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts));
@ -692,13 +702,15 @@ public class JobServiceImpl extends Service implements JobService {
*/
private List<SearchTree> buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild) {
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
new DetachUtil(user).filterDepartmentList(filterDeparts);
// 查询分部信息
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts));
// 添加部门的上级分部

@ -25,6 +25,7 @@ import com.weaver.general.BaseBean;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import java.util.*;
import java.util.stream.Collectors;
@ -157,11 +158,11 @@ public class ManagerDetachServiceImpl extends Service implements ManagerDetachSe
private String buildSqlWhere(Map<String, Object> params) {
DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " where delete_type = 0";
String lastName = (String) params.get("ecManager");
List<Long> resourceIds = MapperProxyFactory.getProxy(EmployeeMapper.class).getResourceIds(lastName);
String ecManager = StringUtils.join(resourceIds,",");
String lastName = Util.null2String(params.get("ecManager"));
if (StringUtils.isNotBlank(lastName)) {
sqlWhere += " AND ec_manager in ("+ecManager+") ";
List<Long> resourceIds = MapperProxyFactory.getProxy(EmployeeMapper.class).getResourceIds(lastName);
String ecManager = StringUtils.join(resourceIds, ",");
sqlWhere += " AND ec_manager in (" + (StringUtils.isBlank(ecManager) ? "''" : ecManager) + ") ";
}
String ecRolelevel = (String) params.get("ecRolelevel");
if (StringUtils.isNotBlank(ecRolelevel)) {

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.engine.core.impl.Service;
import com.engine.organization.entity.chart.CompanyTreePO;
import com.engine.organization.entity.chart.TimeLinesBO;
import com.engine.organization.entity.map.JclOrgMap;
import com.engine.organization.entity.scheme.po.GradePO;
import com.engine.organization.entity.scheme.po.LevelPO;
@ -17,7 +18,6 @@ import com.engine.organization.util.db.DBType;
import com.engine.organization.util.db.MapperProxyFactory;
import com.engine.organization.util.detach.DetachUtil;
import org.apache.commons.lang3.StringUtils;
import tebie.applib.api.O;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -83,10 +83,10 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
}
List<CompanyTreePO> companyTree = new ArrayList<>();
sql = "select id as 'id', id as 'value', subcompanyname as 'title', supsubcomid as 'pId' from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '0'";
sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '0'";
rs.executeQuery(sql);
while (rs.next()) {
companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).build());
companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf("select id from hrmsubcompany where (canceled is null or canceled != '1') and supsubcomid = ?", rs.getString("id"))).build());
}
result.put("api_status", true);
result.put("fclasslist", fclasslist);
@ -106,13 +106,26 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
subcompany = "0";
}
String fclass = Util.null2String(params.get("fclass"));
String sql = "select id as 'id', id as 'value', subcompanyname as 'title', supsubcomid as 'pId' from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '" + subcompany + "'";
if (StringUtils.isNotBlank(fclass) && !"0".equals(fclass)) {
sql = "select id as 'id', id as 'value', subcompanyname as 'title', supsubcomid as 'pId' from hrmsubcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '" + subcompany + "' and companyid = '" + fclass + "'";
String id = Util.null2String(params.get("id"));
// 是否展示当前数据
boolean isSearchCurrent = StringUtils.isBlank(id) || "0".equals(id);
String sql;
if (isSearchCurrent) {
sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = ? ";
if (StringUtils.isNotBlank(fclass) && !"0".equals(fclass)) {
sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = ? and companyid = '" + fclass + "'";
}
} else {
sql = "select subcompanyid as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = ? ";
if (StringUtils.isNotBlank(fclass) && !"0".equals(fclass)) {
sql = "select subcompanyvirtualid as id, id as value, subcompanyname as title, supsubcompanyid as pId from jcl_chart_subcompanyvirtual where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcompanyid", "0") + " = ? and companyid = '" + fclass + "'";
}
// 添加时间轴条件
sql += " and versionid = " + id;
}
rs.executeQuery(sql);
rs.executeQuery(sql,subcompany);
while (rs.next()) {
companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).build());
companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf(sql, rs.getString("id"))).build());
}
result.put("companyTree", companyTree);
return result;
@ -609,17 +622,39 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
RecordSet rs = new RecordSet();
String recordDate = OrganizationDateUtil.getFormatLocalDateTime(LocalDateTime.now());
String createDate = OrganizationDateUtil.getFormatLocalDate(LocalDate.now());
rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createdate = ?",fclass,createDate);
rs.executeQuery("select id from JCL_ORG_CHARTVERSION where fclass = ? and createtime = ?",fclass,createDate);
rs.next();
String id = Util.null2String(rs.getString("id"));
if(StringUtils.isNotEmpty(id)){
rs.executeUpdate("update JCL_ORG_CHARTVERSION set recorddate = ?,description = ?,creator = ? where fclass = ? and createdate = ?",recordDate,description,user.getUID(),fclass,createDate);
rs.executeUpdate("update JCL_ORG_CHARTVERSION set recorddate = ?,description = ?,creator = ? where fclass = ? and createtime = ?",recordDate,description,user.getUID(),fclass,createDate);
}else {
rs.executeUpdate("insert into JCL_ORG_CHARTVERSION (recorddate,description,creator,deletetype,createdate,fclass) values(?,?,?,?,?,?)",recordDate,description,user.getUID(),0,createDate,fclass);
rs.executeUpdate("insert into JCL_ORG_CHARTVERSION (recorddate,description,creator,deletetype,createtime,fclass) values(?,?,?,?,?,?)",recordDate,description,user.getUID(),0,createDate,fclass);
}
}
@Override
public Map<String, Object> searchTimeLines(Map<String, Object> params) {
Map<String,Object> datas = new HashMap<>();
RecordSet rs = new RecordSet();
String fclass = Util.null2String(params.get("fclass"));
List<TimeLinesBO> timeLinesBOList = new ArrayList<>();
timeLinesBOList.add(TimeLinesBO.builder().key(0).id(0).title("当前版本").color("blue").time("").build());
rs.executeQuery("SELECT id,recorddate,description from JCL_ORG_CHARTVERSION where fclass = ? and deletetype = ? order by id desc",fclass,0);
while (rs.next()) {
timeLinesBOList.add(TimeLinesBO.builder()
.key(rs.getInt("id"))
.id(rs.getInt("id"))
.title(Util.null2String(rs.getString("description")))
.color("grey")
.time(Util.null2String(rs.getString("recorddate")))
.build());
}
datas.put("timelineList",timeLinesBOList);
return datas;
}
/**
*
*/
@ -666,6 +701,19 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
return fieldname;
}
/**
*
*
* @param sql SQL
* @param treeId ID
* @return
*/
private boolean judgeTreeLeaf(String sql, String treeId) {
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, treeId);
return !recordSet.next();
}
static class OrgSelectItem {
private Integer key;
private String id;

@ -8,7 +8,6 @@ import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/6/27 3:45 PM
* @Description: TODO
* @Version 1.0
*/
public class OrgVirtualServiceImpl extends Service implements OrgVirtualService {

@ -42,10 +42,8 @@ import weaver.general.GCONST;
import weaver.general.StringUtil;
import weaver.general.Util;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
@ -641,8 +639,9 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
@ -718,9 +717,11 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
}
// 查询分部信息
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
}
@ -732,14 +733,14 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts,Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts,departmentPOMap);
}
}

@ -0,0 +1,470 @@
package com.engine.organization.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.api.hrm.bean.HrmFieldBean;
import com.api.hrm.util.HrmFieldSearchConditionComInfo;
import com.cloudstore.dev.api.util.TextUtil;
import com.engine.core.impl.Service;
import com.engine.organization.entity.jclimport.po.CusFormFieldPO;
import com.engine.organization.entity.search.QuickSearchCondition;
import com.engine.organization.entity.search.QuickSearchDetail;
import com.engine.organization.entity.search.QuickSearchField;
import com.engine.organization.entity.search.QuickSearchSetting;
import com.engine.organization.entity.search.condition.ConditionOption;
import com.engine.organization.entity.search.condition.RangeCondition;
import com.engine.organization.enums.LogModuleNameEnum;
import com.engine.organization.mapper.condition.QuickSearchMapper;
import com.engine.organization.service.QuickSearchService;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.json.JSONException;
import weaver.formmode.exttools.impexp.common.DateUtils;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.definedfield.HrmFieldManager;
import weaver.systeminfo.SystemEnv;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
public class QuickSearchServiceImpl extends Service implements QuickSearchService {
private QuickSearchMapper getQuickSearchMapper() {
return MapperProxyFactory.getProxy(QuickSearchMapper.class);
}
@Override
public Map<String, Object> getQuickSearchCondition(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>(16);
QuickSearchSetting quickSearchSetting = getQuickSearchMapper().getQuickSearchSetting(user.getUID());
if (null != quickSearchSetting) {
apiDatas.put("enable", "1".equals(Util.null2String(quickSearchSetting.getIsQuickSearch())));
} else {
apiDatas.put("enable", false);
}
List<Object> rangeConditions = new ArrayList<>();
List<QuickSearchCondition> quickSearchConditionList = getQuickSearchMapper().getQuickSearchConditionList(user.getUID(), LogModuleNameEnum.RESOURCE.getValue());
for (QuickSearchCondition quickSearchCondition : quickSearchConditionList) {
RangeCondition condition = new RangeCondition();
condition.setLabel(quickSearchCondition.getCustomName());
condition.setDomkey(Collections.singletonList(quickSearchCondition.getFieldId()));
// 根据条件字段类型,组装展示样式
switch (quickSearchCondition.getType()) {
case 5:
List<SearchConditionOption> selectOptions = getSelectOptions(quickSearchCondition);
if (CollectionUtils.isEmpty(selectOptions)) {
condition.setCom("未设置选项");
} else {
// 字段本身值、判断有无下拉框选项
List<ConditionOption> options = selectOptions.stream().map(item -> ConditionOption.builder().key(item.getKey()).showname(item.getShowname()).build()).collect(Collectors.toList());
options.add(0,ConditionOption.builder().key("-1").showname("全部").build());
condition.setOptions(options);
}
rangeConditions.add(condition);
break;
case 3:
// 日期类型数据
List<ConditionOption> options = new ArrayList<>();
options.add(ConditionOption.builder().key("0").showname(SystemEnv.getHtmlLabelName(332, user.getLanguage())).build());
options.add(ConditionOption.builder().key("1").showname(SystemEnv.getHtmlLabelName(15537, user.getLanguage())).build());
options.add(ConditionOption.builder().key("2").showname(SystemEnv.getHtmlLabelName(15539, user.getLanguage())).build());
options.add(ConditionOption.builder().key("3").showname(SystemEnv.getHtmlLabelName(15541, user.getLanguage())).build());
options.add(ConditionOption.builder().key("7").showname(SystemEnv.getHtmlLabelName(27347, user.getLanguage())).build());
options.add(ConditionOption.builder().key("4").showname(SystemEnv.getHtmlLabelName(21904, user.getLanguage())).build());
options.add(ConditionOption.builder().key("5").showname(SystemEnv.getHtmlLabelName(15384, user.getLanguage())).build());
options.add(ConditionOption.builder().key("8").showname(SystemEnv.getHtmlLabelName(81716, user.getLanguage())).build());
options.add(ConditionOption.builder().key("6").showname(SystemEnv.getHtmlLabelName(32530, user.getLanguage())).build());
condition.setOptions(options);
Map<String, Object> selectLinkageDataMap = new HashMap<>(1);
Map<String, Object> map = new HashMap<>(2);
map.put("conditionType", "RANGEPICKER");
map.put("domkey", Arrays.asList(quickSearchCondition.getFieldId() + "_start", quickSearchCondition.getFieldId() + "_end"));
selectLinkageDataMap.put("6", map);
condition.setSelectLinkageDatas(selectLinkageDataMap);
rangeConditions.add(condition);
break;
case 1:
// 整数-浮点数
List<QuickSearchDetail> quickSearchDetailList = getQuickSearchMapper().getQuickSearchDetailByCid(quickSearchCondition.getId().toString());
if (CollectionUtils.isEmpty(quickSearchDetailList)) {
condition.setCom("未设置选项");
} else {
List<ConditionOption> collect = quickSearchDetailList.stream().map(item -> ConditionOption.builder().key(item.getId().toString()).showname(item.getCustomName()).build()).collect(Collectors.toList());
collect.add(0,ConditionOption.builder().key("-1").showname("全部").build());
condition.setOptions(collect);
}
rangeConditions.add(condition);
break;
case -1:
case -3:
case -4:
default:
rangeConditions.add(condition);
break;
}
}
apiDatas.put("rangeConditions", rangeConditions);
return apiDatas;
}
@Override
public Map<String, Object> getQuickSearchInfo(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>(16);
//开关查询
QuickSearchSetting quickSearchSetting = getQuickSearchMapper().getQuickSearchSetting(user.getUID());
JSONObject json = new JSONObject();
if (null != quickSearchSetting) {
json.put("isquicksearch", Util.null2String(quickSearchSetting.getIsQuickSearch()));
json.put("isshowtype", null != quickSearchSetting.getIsShowType() ? quickSearchSetting.getIsShowType() : "1");
json.put("ishidename", null != quickSearchSetting.getIsHideName() ? quickSearchSetting.getIsHideName() : "0");
json.put("id", Util.null2String(quickSearchSetting.getId()));
} else {
json.put("isquicksearch", "0");
json.put("isshowtype", "0");
json.put("ishidename", "0");
json.put("id", "0");
}
apiDatas.put("setting", json);
//条件字段查询
List<QuickSearchCondition> quickSearchConditionList = getQuickSearchMapper().getQuickSearchConditionList(user.getUID(), LogModuleNameEnum.RESOURCE.getValue());
JSONArray datas = new JSONArray();
if (CollectionUtils.isNotEmpty(quickSearchConditionList)) {
for (QuickSearchCondition quickSearchCondition : quickSearchConditionList) {
JSONObject obj = new JSONObject();
String id = Util.null2String(quickSearchCondition.getId());
String fieldId = Util.null2String(quickSearchCondition.getFieldId());
String customName = Util.null2String(quickSearchCondition.getCustomName());
String type = Util.null2String(quickSearchCondition.getType());
String orderId = Util.null2String(quickSearchCondition.getOrderId());
String showModel = null != quickSearchCondition.getShowModel() ? quickSearchCondition.getShowModel().toString() : "0";
obj.put("cid", id);
obj.put("key", id);
obj.put("fieldid", fieldId);
obj.put("orifieldid", fieldId);
obj.put("customname", TextUtil.toBase64ForMultilang(customName));
obj.put("type", type);
obj.put("orderid", orderId);
obj.put("groupid", "");
obj.put("showmodel", showModel);
datas.add(obj);
}
}
apiDatas.put("datas", datas);
//字段下拉框查询
List<CusFormFieldPO> allFieldInfo = getQuickSearchMapper().getAllFieldInfo();
//List<QuickSearchOption> quickSearchOptionList = getQuickSearchMapper().getQuickSearchOptionList();
JSONArray options = new JSONArray();
if (CollectionUtils.isNotEmpty(allFieldInfo)) {
for (CusFormFieldPO formFieldPO : allFieldInfo) {
JSONObject obj = new JSONObject();
String fieldHtmlType = Util.null2String(formFieldPO.getFieldHtmlType());
String fieldId = Util.null2String(formFieldPO.getScopeId() + "_" + formFieldPO.getTableName() + "_" + formFieldPO.getFieldName());
// String fieldName = Util.null2String(quickSearchOption.getFieldName());
String type = Util.null2String(formFieldPO.getType());
int fieldLabel = Util.getIntValue(formFieldPO.getFieldLabel(), 0);
String labelName = SystemEnv.getHtmlLabelName(Util.getIntValue(formFieldPO.getFieldLabel()), user.getLanguage());
String fieldType = "2";
boolean isShowModel = false;
if ("1".equals(fieldHtmlType)) {
if ("1".equals(type)) {
//单行文本
continue;
} else {
//整数或浮点数
fieldType = "1";
isShowModel = true;
}
} else if ("5".equals(fieldHtmlType) && "3".equals(type)) {
//选择框单选框
fieldType = "5";
isShowModel = true;
} else if ("5".equals(fieldHtmlType) && "2".equals(type)) {
//选择框多选框
fieldType = "5";
isShowModel = true;
} else if ("5".equals(fieldHtmlType) && "0".equals(type)) {
//选择框
fieldType = "5";
isShowModel = true;
} else if ("4".equals(fieldHtmlType) && "1".equals(type)) {
//check框
fieldType = "5";
isShowModel = true;
} else if ("3".equals(fieldHtmlType)) {
switch (type) {
case "2":
//日期
fieldType = "3";
break;
case "1":
case "3":
case "5":
default:
continue;
}
} else {
continue;
}
if ("".equals(labelName)) {
labelName = SystemEnv.getHtmlLabelName(fieldLabel, user.getLanguage());
}
obj.put("key", fieldId);
obj.put("fieldid", fieldId);
obj.put("showname", labelName);
obj.put("isdetailtable", "0");
obj.put("type", fieldType);
obj.put("isShowModel", isShowModel);
options.add(obj);
}
}
apiDatas.put("options", options);
apiDatas.put("groupidOptions", new JSONArray());
return apiDatas;
}
@Override
public Map<String, Object> saveQuickSearchInfo(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>(16);
String isQuickSearch = Util.null2String(params.get("isquicksearch"));
String isShowType = Util.null2String(params.get("isshowtype"));
isShowType = StringUtils.isBlank(isShowType) ? "0" : isShowType;
String isHideName = Util.null2String(params.get("ishidename"));
isHideName = StringUtils.isBlank(isHideName) ? "0" : isHideName;
String id = Util.null2String(params.get("id"));
String data = Util.null2String(params.get("data"));
JSONArray datas = JSONArray.parseArray(data);
//配置信息更新
if ("0".equals(id) || "".equals(id)) {
QuickSearchSetting quickSearchSetting = QuickSearchSetting.builder()
.belongTo(user.getUID())
.isQuickSearch(Integer.parseInt(isQuickSearch))
.isShowType(Integer.parseInt(isShowType))
.isHideName(Integer.parseInt(isHideName))
.updateTor(user.getUID())
.updateDate(DateUtils.getCurrentDate())
.updateTime(DateUtils.getCurrentTime())
.build();
//第一次修改配置
getQuickSearchMapper().insertQuickSearchSetting(quickSearchSetting);
} else {
QuickSearchSetting quickSearchSetting = QuickSearchSetting.builder()
.id(Integer.parseInt(id))
.isQuickSearch(Integer.parseInt(isQuickSearch))
.isShowType(Integer.parseInt(isShowType))
.isHideName(Integer.parseInt(isHideName))
.build();
getQuickSearchMapper().updateQuickSearchSetting(quickSearchSetting);
}
List<QuickSearchCondition> quickSearchConditionList = getQuickSearchMapper().getQuickSearchConditionList(user.getUID(), LogModuleNameEnum.RESOURCE.getValue());
List<Integer> list = quickSearchConditionList.stream().map(QuickSearchCondition::getId).collect(Collectors.toList());
for (int i = 0; i < datas.size(); i++) {
JSONObject obj = (JSONObject) datas.get(i);
String fieldId = obj.getString("fieldid");
String oriFieldId = obj.getString("orifieldid");
Integer cid = Util.getIntValue(obj.getString("cid"));
String customName = obj.getString("customname");
String type = obj.getString("type");
String orderId = obj.getString("orderid");
String showModel = obj.getString("showmodel");
if (cid > 0) {
list.remove(cid);
QuickSearchCondition quickSearchCondition = QuickSearchCondition.builder()
.belongTo(user.getUID())
.fieldId(fieldId)
.customName(customName)
.type(StringUtils.isBlank(type) ? null : Integer.parseInt(type))
.orderId(StringUtils.isBlank(orderId) ? null : Integer.parseInt(orderId))
.showModel(StringUtils.isBlank(showModel) ? null : Integer.parseInt(showModel))
.id(cid)
.modelId(LogModuleNameEnum.RESOURCE.getValue())
.build();
getQuickSearchMapper().updateQuickSearchCondition(quickSearchCondition);
if (!fieldId.equals(oriFieldId)) {
//改变了字段,将原先字段的明细删除
getQuickSearchMapper().deleteQuickSearchDetailByCid(cid);
}
} else {
QuickSearchCondition quickSearchCondition = QuickSearchCondition.builder()
.belongTo(user.getUID())
.fieldId(fieldId)
.customName(customName)
.type(StringUtils.isBlank(type) ? null : Integer.parseInt(type))
.orderId(StringUtils.isBlank(orderId) ? null : Integer.parseInt(orderId))
.showModel(StringUtils.isBlank(showModel) ? null : Integer.parseInt(showModel))
.modelId(LogModuleNameEnum.RESOURCE.getValue())
.build();
getQuickSearchMapper().insertQuickSearchCondition(quickSearchCondition);
}
}
if (CollectionUtils.isNotEmpty(list)) {
getQuickSearchMapper().deleteQuickSearchConditionByIds(list);
getQuickSearchMapper().deleteQuickSearchDetailByCids(list);
}
return apiDatas;
}
@Override
public Map<String, Object> getQuickSearchDetailInfo(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>(16);
String cid = weaver.formmode.exttools.impexp.common.StringUtils.null2String(params.get("cid"));
//开关查询
List<QuickSearchDetail> quickSearchDetailList = getQuickSearchMapper().getQuickSearchDetailByCid(cid);
JSONArray datas = new JSONArray();
for (QuickSearchDetail quickSearchDetail : quickSearchDetailList) {
JSONObject obj = new JSONObject();
String id = Util.null2String(quickSearchDetail.getId());
String customName = Util.null2String(quickSearchDetail.getCustomName());
String minNum = Util.null2String(quickSearchDetail.getMinNum());
minNum = minNum.startsWith("0E") ? "0" : minNum;
String maxNum = Util.null2String(quickSearchDetail.getMaxNum());
maxNum = maxNum.startsWith("0E") ? "0" : maxNum;
String type = Util.null2String(quickSearchDetail.getType());
String orderId = Util.null2String(quickSearchDetail.getOrderId());
String fieldId = Util.null2String(quickSearchDetail.getFieldId());
String belongTo = Util.null2String(quickSearchDetail.getBelongTo());
obj.put("id", id);
obj.put("cid", cid);
obj.put("key", id);
obj.put("customname", customName);
obj.put("minnum", minNum);
obj.put("maxnum", maxNum);
obj.put("type", type);
obj.put("fieldid", fieldId);
obj.put("belongto", belongTo);
obj.put("orderid", orderId);
datas.add(obj);
}
List<QuickSearchField> quickSearchFieldList = getQuickSearchMapper().getQuickSearchFieldListByConditionId(cid);
int precision = 0;
for (QuickSearchField quickSearchField : quickSearchFieldList) {
String fieldHtmlType = quickSearchField.getFieldHtmlType();
String type = quickSearchField.getType();
String fieldDbType = quickSearchField.getFieldDbType();
if ("1".equals(fieldHtmlType) && !"1".equals(type)) {
int digitsIndex = fieldDbType.indexOf(",");
precision = Util.getIntValue(fieldDbType.substring(digitsIndex + 1, fieldDbType.length() - 1), 0);
}
}
apiDatas.put("datas", datas);
apiDatas.put("precision", precision);
return apiDatas;
}
@Override
public Map<String, Object> saveQuickSearchDetailInfo(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>(16);
String cid = Util.null2String(params.get("cid"));
String data = Util.null2String(params.get("data"));
JSONArray datas = JSONArray.parseArray(data);
List<Integer> list = getQuickSearchMapper().getQuickSearchDetailByCid(cid).stream().map(QuickSearchDetail::getId).collect(Collectors.toList());
try {
for (int i = 0; i < datas.size(); i++) {
JSONObject obj = (JSONObject) datas.get(i);
String customName = obj.getString("customname");
String fieldId = obj.getString("fieldid");
String minNum = obj.getString("minnum");
minNum = "".equals(minNum) ? null : minNum;
String maxNum = obj.getString("maxnum");
maxNum = "".equals(maxNum) ? null : maxNum;
String type = obj.getString("type");
String orderId = obj.getString("orderid");
Integer id = Util.getIntValue(obj.getString("id"));
QuickSearchDetail quickSearchDetail = QuickSearchDetail.builder()
.cId(StringUtils.isBlank(cid) ? null : Integer.parseInt(cid))
.customName(customName)
.minNum(StringUtils.isBlank(minNum) ? null : Integer.parseInt(minNum))
.maxNum(StringUtils.isBlank(maxNum) ? null : Integer.parseInt(maxNum))
.type(StringUtils.isBlank(type) ? null : Integer.parseInt(type))
.orderId(StringUtils.isBlank(orderId) ? null : Integer.parseInt(orderId))
.fieldId(fieldId)
.belongTo(user.getUID())
.build();
if (id > 0) {
list.remove(id);
quickSearchDetail.setId(id);
getQuickSearchMapper().updateQuickSearchDetail(quickSearchDetail);
} else {
getQuickSearchMapper().insertQuickSearchDetail(quickSearchDetail);
}
}
if (CollectionUtils.isNotEmpty(list)) {
getQuickSearchMapper().deleteQuickSearchDetailByIds(list);
}
} catch (Exception e) {
new BaseBean().writeLog(e);
e.printStackTrace();
}
return apiDatas;
}
/**
*
*
* @param quickSearchCondition
* @return
*/
private List<SearchConditionOption> getSelectOptions(QuickSearchCondition quickSearchCondition) {
try {
String fieldId = quickSearchCondition.getFieldId();
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo();
int scopeid = Integer.parseInt(fieldId.split("_")[0]);
HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType", scopeid);
String fieldName = fieldId.substring(fieldId.lastIndexOf("_") + 1);
org.json.JSONObject hrmFieldConf = hfm.getHrmFieldConf(fieldName);
if (null == hrmFieldConf) {
return new ArrayList<>();
}
boolean baseField = hfm.isBaseField(fieldName);
HrmFieldBean hrmFieldBean = new HrmFieldBean();
hrmFieldBean.setFieldid(Util.null2String(hrmFieldConf.getString("id")));
hrmFieldBean.setFieldname(scopeid + "_" + (baseField ? "hrm" : "cus") + "_" + fieldName);
hrmFieldBean.setFieldlabel(hrmFieldConf.getString("fieldlabel"));
hrmFieldBean.setFieldhtmltype(hrmFieldConf.getString("fieldhtmltype"));
hrmFieldBean.setType(hrmFieldConf.getString("type"));
hrmFieldBean.setDmlurl(hrmFieldConf.getString("dmlurl"));
hrmFieldBean.setIssystem(baseField ? "1" : "0");
hrmFieldBean.setIsFormField(true);
hrmFieldBean.setIsQuickSearch(false);
hrmFieldBean.setIsScope(false);
if ("jobactivity".equals(fieldName)) {
// 职务282
hrmFieldBean.setType("282");
}
SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user);
return searchConditionItem.getOptions();
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

@ -132,8 +132,8 @@ public class StaffServiceImpl extends Service implements StaffService {
checkRequired(staffPO);
int ignoreNull = getStaffMapper().insertIgnoreNull(staffPO);
// 同步组织架构图编制信息
//new StaffTriggerRunnable(staffPO).run();
// 初始化编制在编数
initStaffInfo(staffPO);
return ignoreNull;
}
@ -458,4 +458,35 @@ public class StaffServiceImpl extends Service implements StaffService {
}
}
/**
*
*
* @param staffPO
*/
public static void initStaffInfo(StaffPO staffPO) {
RecordSet rs = new RecordSet();
String sql = "select count(1) as num from hrmresource where STATUS < 4";
if (null != staffPO.getEcCompany() && 0 != staffPO.getEcCompany()) {
sql += " and subcompanyid1 = " + staffPO.getEcCompany();
}
if (null != staffPO.getEcDepartment() && 0 != staffPO.getEcDepartment()) {
sql += " and departmentid = " + staffPO.getEcDepartment();
}
if (null != staffPO.getJobId() && 0 != staffPO.getJobId()) {
JobPO jobById = MapperProxyFactory.getProxy(JobMapper.class).getJobById(staffPO.getJobId());
if (null == jobById) {
return;
}
Integer ecJobTitle = jobById.getEcJobTitle();
sql += " and jobtitle = " + ecJobTitle;
}
rs.executeQuery(sql);
if (rs.next()) {
staffPO.setPermanentNum(-1 == rs.getInt("num") ? 0 : rs.getInt("num"));
StaffBO.buildStaffDesc(staffPO);
MapperProxyFactory.getProxy(StaffMapper.class).updateStaff(staffPO);
}
}
}

@ -180,7 +180,6 @@ public class OrganizationSyncEc {
*
*/
private void cancelCompany() {
// TODO
String forbiddenTag = Util.null2String(params.get("forbiddenTag"));
if ("0".equals(forbiddenTag)) {
// 解封

@ -0,0 +1,104 @@
package com.engine.organization.util;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import weaver.conn.RecordSet;
import java.lang.reflect.Method;
import java.sql.Blob;
import java.sql.Clob;
import java.util.ArrayList;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryObjUtil<T> {
/**
*
*/
private String querySQL;
/**
* Bean
*/
private Class<?> cla;
private T obj;
@SuppressWarnings("unchecked")
public List<T> query() {
RecordSet rs = new RecordSet();
List<T> list = null;
int cols;
try {
rs.executeQuery(querySQL);
cols = rs.getColCounts();
list = new ArrayList<T>();
while (rs.next()) {
// 并实例化成对象
obj = (T) cla.newInstance();
for (int j = 1; j <= cols; j++) {
String colName = iniStr(rs.getColumnName(j).toLowerCase());
try {
// 通过getter确定bean属性的数据类型
Method met = cla.getMethod("get" + colName);
// 取得属性的数据类型
Class<?> p = met.getReturnType();
// 获取set
met = obj.getClass().getMethod("set" + colName, p);
// 根据属性的数据类型来判断该用哪种数据类型取值,并将值存入对象属性中
if (p == String.class) {
met.invoke(obj, rs.getString(j));
} else if (p == Long.class || p == long.class) {
met.invoke(obj, rs.getInt(j));//rs未封装long
} else if (p == Double.class || p == double.class) {
met.invoke(obj, rs.getDouble(j));
} else if (p == Integer.class || p == int.class) {
met.invoke(obj, rs.getInt(j));
} else if (p == Blob.class) {
met.invoke(obj, rs.getBlobStr(j));
} else if (p == Boolean.class || p == boolean.class) {
met.invoke(obj, rs.getBoolean(j));
}
// else if (p == Byte.class || p == byte.class) {
// met.invoke(obj, rs.getByte(j));
// }
// else if (p == Short.class || p == short.class) {
// met.invoke(obj, rs.getShort(j));
// }
else if (p == Object.class) {
met.invoke(obj, rs.getString(j)); //未封装obj
} else if (p == Float.class || p == float.class) {
met.invoke(obj, rs.getFloat(j));
} else if (p == java.sql.Date.class) {
met.invoke(obj, rs.getDate(j));
} else if (p == java.util.Date.class) {
met.invoke(obj, rs.getDate(j));
} else if (p == Clob.class) {
met.invoke(obj, rs.getString(j));
}
} catch (NoSuchMethodException e) {
}
}
list.add(obj);
}
}catch (Exception e){
e.printStackTrace();
}
return list;
}
/**
* set
* @param old
* @return
*/
public String iniStr(String old) {
return old.substring(0, 1).toUpperCase() + old.substring(1);
}
}

@ -5,6 +5,8 @@ public interface DBOperateAdapter {
String concat(String some);
String concat(String concatStr, String fieldName);
String currentDate();
String ifNull(String some, String defaultValue);

@ -5,6 +5,9 @@ import com.engine.organization.exception.OrganizationRunTimeException;
import weaver.conn.RecordSet;
public enum DBType implements DBOperateAdapter {
/**
*
*/
MYSQL("mysql") {
@Override
public String like(String some) {
@ -16,6 +19,11 @@ public enum DBType implements DBOperateAdapter {
return " concat(','," + some + ",',') ";
}
@Override
public String concat(String concatStr, String fieldName) {
return " concat('" + concatStr + "'," + fieldName + ") ";
}
@Override
public String currentDate() {
return "now()";
@ -37,6 +45,11 @@ public enum DBType implements DBOperateAdapter {
return " ','+" + some + "+',' ";
}
@Override
public String concat(String concatStr, String fieldName) {
return " '" + concatStr + "' + cast(" + fieldName + " as varchar) ";
}
@Override
public String currentDate() {
return "GETDATE()";
@ -58,6 +71,11 @@ public enum DBType implements DBOperateAdapter {
return " ',' ||" + some + "|| ',' ";
}
@Override
public String concat(String concatStr, String fieldName) {
return " '" + concatStr + "' ||" + fieldName + " ";
}
@Override
public String currentDate() {
return "SYSDATE";
@ -79,6 +97,11 @@ public enum DBType implements DBOperateAdapter {
return " ',' ||" + some + "|| ',' ";
}
@Override
public String concat(String concatStr, String fieldName) {
return " '" + concatStr + "' ||" + fieldName + " ";
}
@Override
public String currentDate() {
return "now()";

@ -251,7 +251,7 @@ public class CompanyImport {
Map<String, Object> syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, map, false).sync();
if (OrgImportUtil.isThrowError(syncMap)) {
// 刷新组织架构图
//TODO new CompanyTriggerRunnable(infoParams.getId()).run();
// new CompanyTriggerRunnable(infoParams.getId()).run();
historyDetailPO.setOperateDetail("添加成功");
historyDetailPO.setStatus("1");
} else {
@ -274,7 +274,7 @@ public class CompanyImport {
Map<String, Object> syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, map, false).sync();
if (OrgImportUtil.isThrowError(syncMap)) {
// 刷新组织架构图
//TODO new CompanyTriggerRunnable(companyId).run();
// new CompanyTriggerRunnable(companyId).run();
historyDetailPO.setOperateDetail("更新成功");
historyDetailPO.setStatus("1");
} else {

@ -311,7 +311,7 @@ public class DepartmentImport {
Map<String, Object> syncMap = new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map, false).sync();
if (OrgImportUtil.isThrowError(syncMap)) {
// 刷新组织架构图
//TODO new DepartmentTriggerRunnable(departmentId).run();
// new DepartmentTriggerRunnable(departmentId).run();
historyDetailPO.setOperateDetail("更新成功");
historyDetailPO.setStatus("1");
} else {

@ -81,6 +81,8 @@ public class OrgImportUtil {
object = Integer.parseInt(cellValue);
} else if ("float".equals(valueType)) {
object = Float.parseFloat(cellValue);
}else if("text".equals(valueType)) {
object = cellValue;
} else {
try {
object = new BigDecimal(cellValue).toPlainString();

@ -15,6 +15,7 @@ import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.mapper.staff.StaffMapper;
import com.engine.organization.mapper.staff.StaffPlanMapper;
import com.engine.organization.service.impl.StaffServiceImpl;
import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.collections.CollectionUtils;
@ -296,6 +297,8 @@ public class StaffInfoImportUtil {
staffPO.setControlPolicy(1);
}
MapperProxyFactory.getProxy(StaffMapper.class).insertIgnoreNull(staffPO);
// 初始化编制信息
StaffServiceImpl.initStaffInfo(staffPO);
historyDetailPO.setOperateDetail("添加成功");
historyDetailPO.setStatus("1");

@ -332,5 +332,17 @@ public class DepartmentController {
return ReturnResult.exceptionHandle(e);
}
}
@POST
@Path("/dragDepartment")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult dragDepartment(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DepartmentDragParam departmentDragParam) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
return ReturnResult.successed(getDepartmentWrapper(user).dragDepartment(departmentDragParam));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
}

@ -21,10 +21,6 @@ import javax.ws.rs.core.StreamingOutput;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author weaver_cl
@ -43,13 +39,8 @@ public class ExportCommonController {
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response resourceExport(@Context HttpServletRequest request, @Context HttpServletResponse response,
@QueryParam("ids") String ids) {
//HrmResourceSearchParam param = buildResourceParam(request);
List<Long> idList = new ArrayList<>();
if (StringUtils.isNotBlank(ids)){
idList = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
}
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getExportCommonWrapper(user).resourceExport(idList);
XSSFWorkbook workbook = getExportCommonWrapper(user).resourceExport(request, response, ids);
String time = LocalDate.now().toString();
String fileName = "人员导出" + time;
try {

@ -30,9 +30,8 @@ public class OrgChartController {
@GET
@Path("/getCondition")
@Produces(MediaType.APPLICATION_JSON)
public String getCondition(@Context HttpServletRequest request, @Context HttpServletResponse
response) {
Map<String, Object> apidatas = new HashMap<String, Object>();
public String getCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
//实例化Service 并调用业务类处理
@ -47,7 +46,57 @@ public class OrgChartController {
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/timeLines")
@Produces(MediaType.APPLICATION_JSON)
public String searchTimeLines(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
apidatas = getOrgChartWrapper(user).searchTimeLines(ParamUtil.request2Map(request), user);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getDepartmentDetail")
@Produces(MediaType.APPLICATION_JSON)
public String getDepartmentDetail(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
apidatas = getOrgChartWrapper(user).getDepartmentDetail(ParamUtil.request2Map(request), user);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/versionRecord")
@Produces(MediaType.APPLICATION_JSON)
public String versionRecord(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
apidatas = getOrgChartWrapper(user).versionRecord(ParamUtil.request2Map(request), user);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getSubCompanyTree")
@ -69,6 +118,66 @@ public class OrgChartController {
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getDepartmentTree")
@Produces(MediaType.APPLICATION_JSON)
public String getDepartmentTree(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
//实例化Service 并调用业务类处理
apidatas = getOrgChartWrapper(user).getDepartmentTree(ParamUtil.request2Map(request), user);
apidatas.put("api_status", true);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
//数据转换
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getMovingTree")
@Produces(MediaType.APPLICATION_JSON)
public String getMovingTree(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
//实例化Service 并调用业务类处理
apidatas = getOrgChartWrapper(user).getMovingTree(ParamUtil.request2Map(request), user);
apidatas.put("api_status", true);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
//数据转换
return JSONObject.toJSONString(apidatas);
}
@GET
@Path("/getFullSelectTree")
@Produces(MediaType.APPLICATION_JSON)
public String getFullSelectTree(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
//实例化Service 并调用业务类处理
apidatas = getOrgChartWrapper(user).getFullSelectTree(ParamUtil.request2Map(request), user);
apidatas.put("api_status", true);
} catch (Exception e) {
//异常处理
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
//数据转换
return JSONObject.toJSONString(apidatas);
}
/**
*
*/
@ -77,7 +186,7 @@ public class OrgChartController {
@Produces(MediaType.APPLICATION_JSON)
public String getCompanyData(@Context HttpServletRequest request, @Context HttpServletResponse
response) {
Map<String, Object> apidatas = new HashMap<String, Object>();
Map<String, Object> apidatas = new HashMap<>();
try {
User user = HrmUserVarify.getUser(request, response);
//实例化Service 并调用业务类处理

@ -19,7 +19,6 @@ import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/6/27 3:41 PM
* @Description: TODO
* @Version 1.0
*/
public class OrgVirtualController {

@ -0,0 +1,94 @@
package com.engine.organization.web;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.organization.util.response.ReturnResult;
import com.engine.organization.wrapper.QuickSearchWrapper;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
public class QuickSearchController {
public QuickSearchWrapper getQuickSearchWrapper(User user) {
return ServiceUtil.getService(QuickSearchWrapper.class, user);
}
@GET
@Path("/getQuickSearchCondition")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult getQuickSearchCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getQuickSearchWrapper(user).getQuickSearchCondition(map));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
@GET
@Path("/getQuickSearchInfo")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult getQuickSearchInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getQuickSearchWrapper(user).getQuickSearchInfo(map));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
@POST
@Path("/saveQuickSearchInfo")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult saveQuickSearchInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getQuickSearchWrapper(user).saveQuickSearchInfo(map));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
@GET
@Path("/getQuickSearchDetailInfo")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult getQuickSearchDetailInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getQuickSearchWrapper(user).getQuickSearchDetailInfo(map));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
@POST
@Path("/saveQuickSearchDetailInfo")
@Produces(MediaType.APPLICATION_JSON)
public ReturnResult saveQuickSearchDetailInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> map = ParamUtil.request2Map(request);
return ReturnResult.successed(getQuickSearchWrapper(user).saveQuickSearchDetailInfo(map));
} catch (Exception e) {
return ReturnResult.exceptionHandle(e);
}
}
}

@ -5,6 +5,7 @@ import com.api.browser.bean.SearchConditionGroup;
import com.engine.common.util.ServiceUtil;
import com.engine.organization.annotation.Log;
import com.engine.organization.entity.DeleteParam;
import com.engine.organization.entity.company.po.CompPO;
import com.engine.organization.entity.department.param.*;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.department.vo.SingleDeptTreeVO;
@ -12,6 +13,7 @@ import com.engine.organization.entity.job.vo.SingleJobTreeVO;
import com.engine.organization.entity.searchtree.SearchTreeParams;
import com.engine.organization.enums.LogModuleNameEnum;
import com.engine.organization.enums.OperateTypeEnum;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.service.DepartmentService;
import com.engine.organization.service.impl.DepartmentServiceImpl;
@ -21,6 +23,7 @@ import com.engine.organization.util.db.MapperProxyFactory;
import com.engine.organization.util.page.PageInfo;
import com.engine.organization.util.response.ReturnResult;
import org.apache.commons.lang.StringUtils;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.Collection;
@ -43,6 +46,9 @@ public class DepartmentWrapper extends OrganizationWrapper {
private DepartmentMapper getDepartmentMapper() {
return MapperProxyFactory.getProxy(DepartmentMapper.class);
}
private CompMapper getCompMapper() {
return MapperProxyFactory.getProxy(CompMapper.class);
}
public ReturnResult getDeptListByPid(QuerySingleDeptListParam param) {
PageInfo<SingleDeptTreeVO> singleDeptTreeVOS = getDepartmentService(user).getDeptListByPid(param);
@ -259,4 +265,30 @@ public class DepartmentWrapper extends OrganizationWrapper {
}.getClass(), departmentPO.getDepartmentName(), JSON.toJSONString(moveParam), departmentPO, getDepartmentMapper().getDeptById(departmentPO.getId()));
return moveDepartment;
}
/**
*
*
* @param moveParam
* @return
*/
@Log(operateType = OperateTypeEnum.MOVE, operateDesc = "拖拽转移部门或分部", operateModule = LogModuleNameEnum.DEPARTMENT)
public int dragDepartment(DepartmentDragParam departmentDragParam) {
String type = departmentDragParam.getSourcekey().substring(0,1);
String sourceId = departmentDragParam.getSourcekey().substring(1);
int moveDepartment = 0;
if("d".equals(type)) {
DepartmentPO departmentPO = getDepartmentMapper().getDeptById(Integer.valueOf(sourceId));
moveDepartment = getDepartmentService(user).dragDepartment(departmentDragParam);
writeOperateLog(new Object() {
}.getClass(), departmentPO.getDepartmentName(), JSON.toJSONString(departmentDragParam), departmentPO, getDepartmentMapper().getDeptById(departmentPO.getId()));
}else{
CompPO compPO = getCompMapper().listById(Integer.valueOf(sourceId));
moveDepartment = getDepartmentService(user).dragDepartment(departmentDragParam);
CompPO newcompPO = getCompMapper().listById(Integer.valueOf(sourceId));
writeOperateLog(new Object() {
}.getClass(), compPO.getSubCompanyName(), JSON.toJSONString(departmentDragParam), compPO, newcompPO);
}
return moveDepartment;
}
}

@ -7,6 +7,8 @@ import com.engine.organization.service.impl.ExportCommonServiceImpl;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -24,4 +26,8 @@ public class ExportCommonWrapper extends Service {
public XSSFWorkbook resourceExport(List<Long> ids) {
return getExportCommonService(user).resourceExport(ids);
}
public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids) {
return getExportCommonService(user).resourceExport(request, response, ids);
}
}

@ -167,7 +167,7 @@ public class JobWrapper extends OrganizationWrapper {
}.getClass(), jobById.getJobNo(), JSON.toJSONString(params), jobById, newJobById);
// 更新组织架构图
//TODO new Thread(new JobTriggerRunnable(jobById, newJobById)).start();
// new Thread(new JobTriggerRunnable(jobById, newJobById)).start();
return updateForbiddenTagById;
}
@ -185,7 +185,7 @@ public class JobWrapper extends OrganizationWrapper {
writeOperateLog(new Object() {
}.getClass(), jobPO.getJobTitleName(), JSON.toJSONString(ids), "删除岗位");
// 更新组织架构图
// TODO new JobTriggerRunnable(jobPO).run();
// new JobTriggerRunnable(jobPO).run();
}
return deleteByIds;
}

@ -2,7 +2,9 @@ package com.engine.organization.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.organization.service.ChartService;
import com.engine.organization.service.OrgChartService;
import com.engine.organization.service.impl.ChartServiceImpl;
import com.engine.organization.service.impl.OrgChartServiceImpl;
import weaver.hrm.User;
@ -17,6 +19,11 @@ import java.util.Map;
public class OrgChartWrapper extends Service {
private OrgChartService getOrgChartService(User user) {
return ServiceUtil.getService(OrgChartServiceImpl.class, user);
}
private ChartService getChartService(User user) {
return ServiceUtil.getService(ChartServiceImpl.class, user);
}
@ -29,7 +36,8 @@ public class OrgChartWrapper extends Service {
}
public Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user) {
return getOrgChartService(user).getCompanyData(request2Map, user);
// return getOrgChartService(user).getCompanyData(request2Map, user);
return getChartService(user).getCompanyData(request2Map);
}
public Map<String, Object> getUserData(Map<String, Object> request2Map, User user) {
@ -41,11 +49,35 @@ public class OrgChartWrapper extends Service {
}
public Map<String, Object> asyncCompanyData(Map<String, Object> request2Map, User user) {
return getOrgChartService(user).asyncCompanyData(request2Map, user);
// return getOrgChartService(user).asyncCompanyData(request2Map, user);
return getChartService(user).asyncCompanyData(request2Map);
}
public String synchronousData(Map<String, Object> request2Map) {
return getOrgChartService(user).synchronousData(request2Map, user);
}
public Map<String, Object> searchTimeLines(Map<String, Object> request2Map, User user) {
return getOrgChartService(user).searchTimeLines(request2Map);
}
public Map<String, Object> getDepartmentDetail(Map<String, Object> request2Map, User user) {
return getChartService(user).getDepartmentDetail(request2Map);
}
public Map<String, Object> versionRecord(Map<String, Object> request2Map, User user) {
return getChartService(user).versionRecord(request2Map,user);
}
public Map<String, Object> getDepartmentTree(Map<String, Object> request2Map, User user) {
return getChartService(user).getDepartmentTree(request2Map);
}
public Map<String, Object> getMovingTree(Map<String, Object> request2Map, User user) {
return getChartService(user).getMovingTree(request2Map);
}
public Map<String, Object> getFullSelectTree(Map<String, Object> request2Map, User user) {
return getChartService(user).getFullSelectTree(request2Map);
}
}

@ -11,7 +11,6 @@ import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/6/27 3:42 PM
* @Description: TODO
* @Version 1.0
*/
public class OrgVirtualWrapper extends Service {

@ -0,0 +1,40 @@
package com.engine.organization.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.organization.service.QuickSearchService;
import com.engine.organization.service.impl.QuickSearchServiceImpl;
import weaver.hrm.User;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/08/08
* @version: 1.0
*/
public class QuickSearchWrapper extends Service {
private QuickSearchService getQuickSearchService(User user) {
return ServiceUtil.getService(QuickSearchServiceImpl.class, user);
}
public Map<String, Object> getQuickSearchCondition(Map<String, Object> params) {
return getQuickSearchService(user).getQuickSearchCondition(params);
}
public Map<String, Object> getQuickSearchInfo(Map<String, Object> params) {
return getQuickSearchService(user).getQuickSearchInfo(params);
}
public Map<String, Object> saveQuickSearchInfo(Map<String, Object> params) {
return getQuickSearchService(user).saveQuickSearchInfo(params);
}
public Map<String, Object> getQuickSearchDetailInfo(Map<String, Object> params) {
return getQuickSearchService(user).getQuickSearchDetailInfo(params);
}
public Map<String, Object> saveQuickSearchDetailInfo(Map<String, Object> params) {
return getQuickSearchService(user).saveQuickSearchDetailInfo(params);
}
}
Loading…
Cancel
Save