zm_dev
liuliang 1 year ago
parent 8933227ebb
commit 481c1d2ceb

@ -330,4 +330,6 @@ public class PersongroupCommonUtil {
String sql = "select id,mc name from uf_jcl_kq_hxbz";
return DbTools.getSqlToMapList(sql);
}
}

@ -44,6 +44,12 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic
sql = "select fieldid,selectvalue,selectname from hrm_selectitem";
List<Map<String,Object>> selectItemLists = DbTools.getSqlToList(sql);
Map<String, List<Map<String,Object>>> selectItemMap = selectItemLists.stream().collect(Collectors.groupingBy(e -> e.get("fieldid").toString()));
sql = "select fieldid,selectvalue,selectname from cus_selectitem";
List<Map<String,Object>> custSelectItemLists = DbTools.getSqlToList(sql);
Map<String, List<Map<String,Object>>> custSelectItemMap = custSelectItemLists.stream().collect(Collectors.groupingBy(e -> e.get("fieldid").toString()));
log.info("selectItemMap : [{}]",selectItemMap);
sql = "select type,linkurl from wf_browser_config group by type";
@ -53,10 +59,14 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic
for (Map<String,Object> map :dataList){
Integer fieldlable = Integer.valueOf(map.get("fieldlable").toString());
String fieldname = Util.null2String(map.get("fieldname"));
String showName = SystemEnv.getHtmlLabelName(fieldlable, user.getLanguage());
map.put("showName",showName);
map.put("linkurl",browserTypeMaps.get(map.get("type").toString()));
map.put("selectItems",selectItemMap.get(map.get("fieldid").toString()));
if (fieldname.contains("field")){
map.put("selectItems",custSelectItemMap.get(map.get("fieldid").toString()));
}
}
data.put("data",dataList);

@ -0,0 +1,33 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
/**
* -
*/
public enum ApplicableOrganizationEnum implements BaseEnum {
PERSONNEL("0","人员"),
PERSONNEL_GROUP("1","人员分组"),
DEPARTMENT("2","部门"),
SUBCOMPANY("3","分部");
private String key;
private String value;
ApplicableOrganizationEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -21,5 +21,6 @@ public class HolidayGenerationJob extends BaseCronJob {
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
//假期额度模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_jqed");
}
}

@ -0,0 +1,9 @@
package com.engine.attendance.vacation.service;
import weaver.hrm.User;
import java.util.Map;
public interface vocationService {
Map<String,Object> getHrmCondition(Map<String,Object> params, User user);
}

@ -0,0 +1,259 @@
package com.engine.common.cmd;
import com.engine.attendance.enums.ApplicableOrganizationEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* modeid
*/
@Slf4j
public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand<Map<String,Object>> {
@Override
public BizLogContext getLogContext() {
return null;
}
public GetPersonDateBySuitOrganzation(Map<String,Object> params){
this.params=params;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String modeId = Util.null2String(params.get("modeId"));
String sql = "select dxlx,aqjb,dataid,dx from uf_syzz where modeid=?";
//假期额度适用组织所有值集合
List<Map<String,Object>> organzationList = DbTools.getSqlToList(sql,modeId);
sql = "select a.id dataid,a.*,b.* from uf_jcl_kq_jqed a left join uf_jcl_kq_jqed_dt1 b on a.id=b.mainid";
//所有假期额度生成规则值
List<Map<String,Object>> vacationList = DbTools.getSqlToList(sql);
//人力资源id假别规则id
Map<String,Object> personMap = Maps.newHashMap();
//人员分组id假别规则id
Map<String,Object> personOrganzationMap = Maps.newHashMap();
//部门id假别规则id
Map<String,Object> departMentMap = Maps.newHashMap();
//分部id假别规则id
Map<String,Object> subCompanyMap = Maps.newHashMap();
//以假期额度生成规则id分割的适用组织所有值集合
Map<String,List<Map<String,Object>>> organzationCollect = organzationList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("dataid"))));
//规则id-对象id安全级别
Map<String,String> organzationByMap = Maps.newHashMap();
for (Map<String,Object> map : organzationList){
String dataid = Util.null2String(map.get("dataid"));
String aqjb = Util.null2String(map.get("aqjb"));
String dx = Util.null2String(map.get("dx")).split("-")[0];
String key = dataid+"-"+dx;
String oldvalue = organzationByMap.get(key);
if (oldvalue == null){
organzationByMap.put(key,aqjb);
}else {
oldvalue = oldvalue+","+aqjb;
organzationByMap.put(key,oldvalue);
}
}
//以假期额度生成规则id分割的假期额度生成规则值集合
Map<String,String> vacationMap = vacationList.stream().collect(Collectors.toMap(e->e.get("dataid").toString(),e->e.get("jb").toString()));
Set<String> personOrganzationIds = Sets.newHashSet();
Set<String> departMentIds = Sets.newHashSet();
Set<String> subCompanyIds = Sets.newHashSet();
for (Map<String,Object> organzation:organzationList){
String dx = Util.null2String(organzation.get("dx")).split("-")[0];
String dataid = Util.null2String(organzation.get("dataid"));
String jb = vacationMap.get(dataid);
if (ApplicableOrganizationEnum.PERSONNEL.getKey().equals(organzation.get("dxlx"))){
Map<String,String> psersonSet = (Map<String,String>)personMap.get(dx);
if (psersonSet == null){
psersonSet = Maps.newHashMap();
personMap.put(dx,psersonSet);
}
psersonSet.put(jb,dataid);
}else if (ApplicableOrganizationEnum.PERSONNEL_GROUP.getKey().equals(organzation.get("dxlx"))){
personOrganzationIds.add(dx);
Map<String,String> personOrganzationSet = (Map<String,String>)personOrganzationMap.get(dx);
if (personOrganzationSet == null){
personOrganzationSet = Maps.newHashMap();
personOrganzationMap.put(dx,personOrganzationSet);
}
personOrganzationSet.put(jb,dataid);
}else if (ApplicableOrganizationEnum.DEPARTMENT.getKey().equals(organzation.get("dxlx"))){
departMentIds.add(dx);
Map<String,String> departMentSet = (Map<String,String>)departMentMap.get(dx);
if (departMentSet == null){
departMentSet = Maps.newHashMap();
departMentMap.put(dx,departMentSet);
}
departMentSet.put(jb,dataid);
}else if (ApplicableOrganizationEnum.SUBCOMPANY.getKey().equals(organzation.get("dxlx"))){
subCompanyIds.add(dx);
Map<String,String> subCompanySet = (Map<String,String>)subCompanyMap.get(dx);
if (subCompanySet == null){
subCompanySet = Maps.newHashMap();
subCompanyMap.put(dx,subCompanySet);
}
subCompanySet.put(jb,dataid);
}
}
sql = "select id,departmentid,subcompanyid1,seclevel from hrmresource where 1=1";
if (departMentIds.size() > 0){
sql = sql+ " and departmentid in ("+String.join(",",departMentIds)+")";
}
if (subCompanyIds .size() >0 && departMentIds.size() > 0){
sql = sql+ " or subcompanyid1 in ("+String.join(",",subCompanyIds)+")";
}else if (subCompanyIds .size() >0 && departMentIds.size() == 0){
sql = sql+ " and subcompanyid1 in ("+String.join(",",subCompanyIds)+")";
}
List<Map<String,Object>> hrmListByDepartAndSubCompanyIds = DbTools.getSqlToList(sql);
//分部id-人员id集合
Map<String,List<Map<String,Object>>> hrmListGroupByDepart = hrmListByDepartAndSubCompanyIds.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("departmentid"))));
//部门id-人员id集合
Map<String,List<Map<String,Object>>> hrmListGroupBySubCompany = hrmListByDepartAndSubCompanyIds.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("subcompanyid1"))));
//人员分组id-人员id集合
Map<String,Set<String>> personGroupUserIds = getPersonGroupUserIds(personOrganzationIds);
//人员分组id-假别假期规则id
for (Map.Entry<String,Object> entry : personOrganzationMap.entrySet()){
String personGroupId = entry.getKey();
//人员分组假别假期规则id
Map<String,String> personGroupHolidayMap = (Map<String,String>)entry.getValue();
Set<String> userIds = personGroupUserIds.get(personGroupId);
for (String userId :userIds){
//人力资源原本已有的假期假别规则id
Map<String,String> psersonSet = personMap.get(userId) == null?null:(Map<String,String>)personMap.get(userId);
if (psersonSet == null) {
personMap.put(userId,personGroupHolidayMap);
}else {
Map<String,String> newMap = Maps.newHashMap();
for (Map.Entry<String,String> personGroupHolidayEntry :personGroupHolidayMap.entrySet()){
if (psersonSet.get(personGroupHolidayEntry.getKey()) == null){
newMap.put(personGroupHolidayEntry.getKey(),personGroupHolidayEntry.getValue());
}
}
personMap.put(userId,newMap);
}
}
}
//部门id
for (Map.Entry<String,Object> entry : departMentMap.entrySet()){
String departMentId = entry.getKey();
//部门假别假期规则id
Map<String,String> departMentHolidayMap = (Map<String,String>)entry.getValue();
List<Map<String,Object>> userIds = hrmListGroupByDepart.get(departMentId);
for (Map<String,Object> userIdMap :userIds){
//人力资源原本已有的假期假别规则id
String userId = Util.null2String(userIdMap.get("id"));
Map<String,String> psersonSet = personMap.get(userId) == null?null:(Map<String,String>)personMap.get(userId);
if (psersonSet == null) {
personMap.put(userId,departMentHolidayMap);
}else {
Map<String,String> newMap = Maps.newHashMap();
for (Map.Entry<String,String> personGroupHolidayEntry :departMentHolidayMap.entrySet()){
if (psersonSet.get(personGroupHolidayEntry.getKey()) == null){
newMap.put(personGroupHolidayEntry.getKey(),personGroupHolidayEntry.getValue());
}
}
personMap.put(userId,newMap);
}
}
}
//分部id
for (Map.Entry<String,Object> entry : subCompanyMap.entrySet()){
String subCompanyId = entry.getKey();
//分部假别假期规则id
Map<String,String> subCompanyHolidayMap = (Map<String,String>)entry.getValue();
List<Map<String,Object>> userIds = hrmListGroupBySubCompany.get(subCompanyId);
for (Map<String,Object> userIdMap :userIds){
//人力资源原本已有的假期假别规则id
String userId = Util.null2String(userIdMap.get("id"));
Map<String,String> psersonSet = personMap.get(userId) == null?null:(Map<String,String>)personMap.get(userId);
if (psersonSet == null) {
personMap.put(userId,subCompanyHolidayMap);
}else {
Map<String,String> newMap = Maps.newHashMap();
for (Map.Entry<String,String> personGroupHolidayEntry :subCompanyHolidayMap.entrySet()){
if (psersonSet.get(personGroupHolidayEntry.getKey()) == null){
newMap.put(personGroupHolidayEntry.getKey(),personGroupHolidayEntry.getValue());
}
}
personMap.put(userId,newMap);
}
}
}
log.info("personMap : [{}]",personMap);
return personMap;
}
/**
*
* @param personOrganzationIds
* @returnid-id
*/
public Map<String,Set<String>> getPersonGroupUserIds(Set<String> personOrganzationIds){
String sql = "select b.mainid,b.empid,b.filters,b.bdate,b.edate,a.list_type from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where mainid in ("+String.join(",",personOrganzationIds)+")";
List<Map<String,Object>> personGroupDataList = DbTools.getSqlToList(sql);
Map<String,Set<String>> personGroupUserIds = Maps.newHashMap();
for (Map<String,Object> personGroupData :personGroupDataList){
String id = Util.null2String(personGroupData.get("mainid"));
String empid = Util.null2String(personGroupData.get("empid"));
String filters = Util.null2String(personGroupData.get("filters"));
String list_type = Util.null2String(personGroupData.get("list_type"));
Set<String> userIds = personGroupUserIds.get(id);
if (userIds == null){
userIds = Sets.newHashSet();
personGroupUserIds.put(id,userIds);
}
if ("0".equals(list_type) && !"".equals(empid)){
//人员清单
userIds.add(empid);
}else if ("1".equals(list_type) && !"".equals(filters)){
//条件清单
sql = "select id,seclevel from hrmresource where 1=1 ";
if (filters.contains("field")){
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and scopeid=-1 and "+filters;
}else {
filters = filters.replace("","and");
filters = filters.replace("","or");
sql = sql+ " and "+filters;
}
log.info("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
String seclevel = Util.null2String(dataMap.get("seclevel"));
userIds.add(hrmId);
}
}
}
return personGroupUserIds;
}
}

Binary file not shown.

Binary file not shown.

@ -2,7 +2,6 @@ import com.engine.common.util.Utils;
public class TestObj {
public static void main(String[] args) {
Utils.test1();
Utils.test1();
System.out.println("-".split("-")[0]);
}
}

Loading…
Cancel
Save