diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/common/web/EmployeeCommonController.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/common/web/EmployeeCommonController.java new file mode 100644 index 0000000..09a520d --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/common/web/EmployeeCommonController.java @@ -0,0 +1,55 @@ +package com.weaver.seconddev.jcl.common.web; + +import com.weaver.common.hrm.util.HrmCommonUtil; +import com.weaver.form.controller.FormBaseController; +import com.weaver.form.controller.core.FormBaseServiceHandler; +import com.weaver.teams.domain.user.SimpleEmployee; +import com.weaver.teams.security.context.UserContext; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.servlet.http.HttpServletRequest; + +public class EmployeeCommonController { + @Autowired + private HrmCommonUtil hrmCommonUtil; + @Autowired + private FormBaseServiceHandler formBaseServiceHandler; + @Autowired + protected HttpServletRequest request; + + protected SimpleEmployee getCurrentUser(Long employeeId) { + if (employeeId != null) { + SimpleEmployee employee = this.hrmCommonUtil.getSimpleEmployee(employeeId); + return employee != null ? this.getCurrentUserCommon(employee) : this.getCurrentUser(); + } else { + return this.getCurrentUser(); + } + } + + protected SimpleEmployee getCurrentUser() { + SimpleEmployee se = (SimpleEmployee) UserContext.getCurrentUser(); + return this.getCurrentUserCommon(se); + } + + private SimpleEmployee getCurrentUserCommon(SimpleEmployee se) { + if (se == null) { + return null; + } else { + SimpleEmployee simple = new SimpleEmployee(); + simple.setId(se.getId()); + simple.setUserId(se.getUserId()); + simple.setUsername(se.getUsername()); + simple.setPinyin(se.getPinyin()); + simple.setImUid(se.getImUid()); + simple.setImCid(se.getImCid()); + simple.setTenantKey(se.getTenantKey()); + simple.setDepartment(se.getDepartment()); + simple.setAdmin(se.isAdmin()); + simple.setModuleAdmin(se.isModuleAdmin()); + simple.setModules(se.getModules()); + simple.setIsPartTime(se.getIsPartTime() != null && se.getIsPartTime()); + simple.setCurrentExtraId(se.getCurrentExtraId()); + return simple; + } + } +} diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/EmployeeInformationController.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/EmployeeInformationController.java index aead1dd..81c5a92 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/EmployeeInformationController.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/EmployeeInformationController.java @@ -2,6 +2,7 @@ package com.weaver.seconddev.jcl.organization.controller; import com.weaver.common.authority.annotation.WeaPermission; +import com.weaver.seconddev.jcl.common.web.EmployeeCommonController; import com.weaver.seconddev.jcl.organization.entity.Employee; import com.weaver.seconddev.jcl.organization.entity.PendingEmployee; import com.weaver.seconddev.jcl.organization.service.EmployeeInformationService; @@ -25,7 +26,7 @@ import java.util.Map; @Slf4j @RestController @RequestMapping("/api/secondev/jcl/employeeInformation") -public class EmployeeInformationController { +public class EmployeeInformationController extends EmployeeCommonController { @Autowired private EmployeeInformationService employeeInformationService; @@ -62,7 +63,7 @@ public class EmployeeInformationController { } /** - * 获得待入职员工共信息 + * 更新待入职员工共信息 * @return */ @WeaPermission(publicPermission = true) @@ -73,6 +74,19 @@ public class EmployeeInformationController { Map actionMap = new HashMap<>(); employeeInformationService.updatePendingEmploy(employee); + return actionMap; + } + /** + * 更新待入职员工共信息 + * @return + */ + @WeaPermission(publicPermission = true) + @Produces(MediaType.APPLICATION_JSON) + @GetMapping("/synchronousField") + public Map synchronousField(){ + Map actionMap = new HashMap<>(); + employeeInformationService.synchronousField(this.getCurrentUser()); + return actionMap; } } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/EmployeeInformationService.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/EmployeeInformationService.java index 674a796..47d19cd 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/EmployeeInformationService.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/EmployeeInformationService.java @@ -1,7 +1,9 @@ package com.weaver.seconddev.jcl.organization.service; +import com.weaver.common.form.param.FieldManageParam; import com.weaver.seconddev.jcl.organization.entity.Employee; import com.weaver.seconddev.jcl.organization.entity.PendingEmployee; +import com.weaver.teams.domain.user.SimpleEmployee; import java.util.List; import java.util.Map; @@ -13,4 +15,14 @@ public interface EmployeeInformationService { List> getPendingEmployment(Employee employee); void updatePendingEmploy(PendingEmployee pendingEmployee); + + void synchronousField(SimpleEmployee employee); + + /** + * 获得字段信息 + * @param entity + * @param employee + * @return + */ + List> getFieldList(FieldManageParam entity, SimpleEmployee employee); } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java index c92fc19..f2d3657 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeInformationServiceImpl.java @@ -2,21 +2,38 @@ package com.weaver.seconddev.jcl.organization.service.impl; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.common.form.dto.form.FormTableDto; +import com.weaver.common.form.fieldmanage.service.FormFieldManageService; +import com.weaver.common.form.metadata.ModuleSource; +import com.weaver.common.form.param.FieldManageParam; +import com.weaver.common.form.physical.enums.FormTableType; +import com.weaver.common.form.service.IdGeneratorService; +import com.weaver.form.controller.FormBaseController; +import com.weaver.form.controller.manage.FormFieldManageController; +import com.weaver.form.entity.FormFieldManageParam; import com.weaver.seconddev.jcl.common.service.CommonService; import com.weaver.seconddev.jcl.organization.entity.Employee; import com.weaver.seconddev.jcl.organization.entity.PendingEmployee; import com.weaver.seconddev.jcl.organization.service.EmployeeInformationService; import com.weaver.seconddev.jcl.organization.util.CommonUtils; +import com.weaver.seconddev.jcl.organization.util.Constants; import com.weaver.seconddev.jcl.organization.util.DatabaseUtils; +import com.weaver.teams.domain.user.SimpleEmployee; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 员工信息管理 */ +@Slf4j @Service public class EmployeeInformationServiceImpl implements EmployeeInformationService { @@ -24,12 +41,15 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic private DatabaseUtils databaseUtils; @Autowired private CommonService commonService; - + @Autowired + private IdGeneratorService idGeneratorService; + @Autowired + private FormFieldManageController fieldManageController; @Override public List> getInformation(Employee employee) { - String sql = "select * from uf_jcl_employee_information where (delete_type is null or delete_type=false) and ("; + String sql = "select * from uf_jcl_employee_information where delete_type='0' and ("; List paramList = Lists.newArrayList(); if (employee.getMobile() != null && !"".equals(employee.getMobile())){ @@ -56,7 +76,7 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic String ygzt = CommonUtils.null2String(userMap.get("personnel_status")); if (ygzt.equals("5")){ //离职 - sql = "select zhgzr,lzqbm from uf_jcl_lzxxjl where glyg=? and (delete_type is null or delete_type<>'1') "; + sql = "select zhgzr,lzqbm from uf_jcl_lzxxjl where glyg=? and delete_type='0' "; List> resignList = databaseUtils.getSqlList(sql, CommonUtils.getParamList(userMap.get("id").toString())); if (resignList.size() > 0){ userMap.put("zhgzr",resignList.get(0).get("zhgzr")); @@ -64,7 +84,7 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic ssbm = CommonUtils.null2String(resignList.get(0).get("lzqbm")); }else if (ygzt.equals("6")){ //退休 - sql = "select zhgzr,txqbm from uf_jcl_txxxjl where glyg=? and (delete_type is null or delete_type<>'1') "; + sql = "select zhgzr,txqbm from uf_jcl_txxxjl where glyg=? and delete_type='0' "; List> retireList = databaseUtils.getSqlList(sql, CommonUtils.getParamList(userMap.get("id").toString())); if (retireList.size() > 0){ userMap.put("zhgzr",retireList.get(0).get("zhgzr")); @@ -85,7 +105,7 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic @Override public List> getPendingEmployment(Employee employee) { - String sql = "select * from uf_jcl_rzgl where (delete_type is null or delete_type<>'1') and ("; + String sql = "select * from uf_jcl_rzgl where delete_type<>'0' and ("; List paramList = Lists.newArrayList(); if (employee.getMobile() != null && !"".equals(employee.getMobile())){ @@ -127,4 +147,157 @@ public class EmployeeInformationServiceImpl implements EmployeeInformationServic param.put("condition",condition); commonService.updateCommon(param); } + + @Override + public void synchronousField(SimpleEmployee employee) { + String sql = "select form_id from form_table where table_name=? and delete_type='0'"; + List paramList = Lists.newArrayList(); + paramList.add(Constants.EMPLOYEE_INFORMATION); + String employee_form_id = CommonUtils.null2String(databaseUtils.getSqlList(sql,paramList).get(0).get("form_id")); + //基本信息自定义字段表 + String personCustomfieldFormid="1088177870727446575"; + + + List formIdParamList = Lists.newArrayList(); + formIdParamList.add(employee_form_id); + sql = "select id,group_name from form_field_group where form_id=? and delete_type='0'"; + List> fieldGroupList = databaseUtils.getSqlList(sql,formIdParamList); + Map fieldGroup = fieldGroupList.stream().collect(Collectors.toMap(e->e.get("group_name").toString(),e->e.get("id").toString())); + formIdParamList.add(personCustomfieldFormid); +// sql = "select * from form_field where form_id in ("+String.join(",",formIdParamList)+") and delete_type='0'"; +// List> fieldList = databaseUtils.getSqlList(sql,formIdParamList); +// Map>> fieldGroupMapping = fieldList.stream().collect(Collectors.groupingBy(e->e.get("form_id").toString())); + + /** + * 员工信息表所有字段 + */ + FieldManageParam ownEntity = new FieldManageParam(); + ownEntity.setFormId(Long.valueOf(employee_form_id)); + ownEntity.setModule(ModuleSource.ebuilderform); + ownEntity.setNeedDataCount(true); + ownEntity.setNeedPanelField(true); + List> employeeFieldList = getFieldList(ownEntity,employee); + //员工信息主表-基本信息字段 + List> mainFormBasicFieldList = employeeFieldList.stream().filter(e->fieldGroup.get(Constants.BASIC_INFORMATION).equals(e.get("groupId")) && "".equals(CommonUtils.null2String(e.get("subFormId")))).collect(Collectors.toList()); + //员工信息主表-账户信息字段 + List> mainFormAccountFieldList = employeeFieldList.stream().filter(e->fieldGroup.get(Constants.ACCOUNT_INFORMATION).equals(e.get("groupId")) && "".equals(CommonUtils.null2String(e.get("subFormId")))).collect(Collectors.toList()); + //员工信息主表-个人信息字段 + List> mainFormPersonFieldList = employeeFieldList.stream().filter(e->fieldGroup.get(Constants.PERSONAL_INFORMATION).equals(e.get("groupId")) && "".equals(CommonUtils.null2String(e.get("subFormId")))).collect(Collectors.toList()); + + /** + * 人力资源-基本信息自定义字段 + */ + FieldManageParam personCustomEntity = new FieldManageParam(); + personCustomEntity.setFormId(Long.valueOf(personCustomfieldFormid)); + personCustomEntity.setModule(ModuleSource.hrm); + personCustomEntity.setNeedDataCount(true); + personCustomEntity.setNeedPanelField(true); + + List> personCustomFieldList = getFieldList(personCustomEntity,employee); + List> customFieldList = personCustomFieldList.stream().filter(e->!e.get("componentKey").equals("BaseField")).collect(Collectors.toList()); + + for (Map customField:customFieldList){ + List> list = mainFormBasicFieldList.stream().filter(e->e.get("dataKey").equals(customField.get("dataKey"))).collect(Collectors.toList()); + if (list.size() == 0){ + customField.put("formId",employeeFieldList.get(0).get("formId")); + customField.put("formTableId",employeeFieldList.get(0).get("formTableId")); + customField.put("groupId",fieldGroup.get(Constants.BASIC_INFORMATION)); + customField.put("fieldId",idGeneratorService.generatorIds(1)[0]); + employeeFieldList.add(customField); + } + } + + for (Map formBasicField:mainFormBasicFieldList){ + List> list = customFieldList.stream().filter(e->e.get("dataKey").equals(formBasicField.get("dataKey"))).collect(Collectors.toList()); + if (list.size() == 0){ + formBasicField.put("formId",personCustomFieldList.get(0).get("formId")); + formBasicField.put("formTableId",personCustomFieldList.get(0).get("formTableId")); + formBasicField.put("groupId","-1"); + formBasicField.put("fieldId",idGeneratorService.generatorIds(1)[0]); + personCustomFieldList.add(formBasicField); + } + } + Gson gson = new Gson(); + log.error("employeeFieldList : [{}]",employeeFieldList); + log.error("personCustomFieldList : [{}]",personCustomFieldList); + + /** + * 批量保存 + */ + //员工信息表 + sql = "select b.id formtableid,a.* from sub_form a left join form_table b on a.id=b.form_id where a.form_id=?"; + List> dataList = databaseUtils.getSqlList(sql,CommonUtils.getParamList(employee_form_id)); + FormFieldManageParam saveEmployeeEntity = new FormFieldManageParam(); + saveEmployeeEntity.setFormId(Long.valueOf(employee_form_id)); + saveEmployeeEntity.setModule(ModuleSource.ebuilderform); + saveEmployeeEntity.setJsonObjList(getJsonObjList(employeeFieldList)); + List forms = Lists.newArrayList(); + for (Map map:dataList){ + FormTableDto formTableDto = new FormTableDto(); + formTableDto.setDataCount(1); + formTableDto.setDataKey(map.get("data_key").toString()); + if (map.get("delete_type").equals("0")){ + formTableDto.setDelete(false); + formTableDto.setDeleteType(false); + }else { + formTableDto.setDelete(true); + formTableDto.setDeleteType(true); + } + formTableDto.setDescribe(map.get("describe").toString()); + formTableDto.setEditTable(true); + formTableDto.setFormTableId(Long.valueOf(map.get("formtableid").toString())); + formTableDto.setId(Long.valueOf(map.get("id").toString())); + formTableDto.setFormId(Long.valueOf(map.get("id").toString())); + formTableDto.setName(CommonUtils.null2String(map.get("title"))); + formTableDto.setTableName(map.get("data_key").toString()); + formTableDto.setTableType(FormTableType.MAIN); + formTableDto.setOrder(CommonUtils.null2String(map.get("show_order"))); + forms.add(formTableDto); + } + saveEmployeeEntity.setForms(forms); + WeaResult>result = batchSaveFormField(saveEmployeeEntity); + + log.error("save saveEmployeeEntity : [{}]",gson.toJson(result)); + + //保存人力资源-基本信息 + FormFieldManageParam savePersonCustomEntiy = new FormFieldManageParam(); + savePersonCustomEntiy.setFormId(Long.valueOf(personCustomfieldFormid)); + savePersonCustomEntiy.setModule(ModuleSource.hrm); + savePersonCustomEntiy.setJsonObjList(getJsonObjList(personCustomFieldList)); + Map customParam = Maps.newHashMap(); + customParam.put("formId",personCustomfieldFormid); + savePersonCustomEntiy.setCustomParam(customParam); + WeaResult> result2 = batchSaveFormField(savePersonCustomEntiy); + log.error("save PersonCustom : [{}]",gson.toJson(result2)); + + } + + @Override + public List> getFieldList(FieldManageParam entity,SimpleEmployee employee) { + + // List> fieldList = (CommonUtils.getRealService(module.name(), "FormFieldManageService", FormFieldManageService.class)).getFormFieldJsonByFormId(entity, employee); + WeaResult> result = fieldManageController.getFormFieldList(entity); + Gson gson = new Gson(); + log.error("getFieldList :[{}]",gson.toJson(result)); + Map resultMap = result.getData(); + return (List>)resultMap.get("data"); + } + + /** + * 批量保存 + * @param entity + * @return + */ + public WeaResult> batchSaveFormField(FormFieldManageParam entity) { + return fieldManageController.batchSaveFormField(entity); + } + + public List getJsonObjList(List> list){ + Gson gson = new Gson(); + List josnObjList = Lists.newArrayList(); + for (Map map:list){ + josnObjList.add(gson.toJson(map)); + } + return josnObjList; + } } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/CommonUtils.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/CommonUtils.java index 8af3fce..d3a762d 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/CommonUtils.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/CommonUtils.java @@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.weaver.common.form.context.SpringContext; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; @@ -455,5 +457,24 @@ public class CommonUtils { return dataMap; } + public static T getRealService(String module, String serviceName, Class tClass) { + try { + module = SpringContext.convertModule(module); + return SpringContext.getBean(module + "_" + serviceName, tClass); + } catch (BeansException var9) { + try { + module = SpringContext.convertModule(module); + return SpringContext.getBean(module + serviceName, tClass); + } catch (BeansException var8) { + if (serviceName != null && serviceName.length() > 1) { + String start = serviceName.substring(0, 1).toLowerCase(Locale.ROOT); + String end = serviceName.substring(1); + return SpringContext.getBean(start + end, tClass); + } else { + throw new RuntimeException("未找到名为" + serviceName + "的实例对象,请实现" + tClass.getName() + "接口并添加@Service(\"" + module + "_" + serviceName + "\")注解"); + } + } + } + } } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/Constants.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/Constants.java index 572894f..2157f38 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/Constants.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/Constants.java @@ -2,5 +2,17 @@ package com.weaver.seconddev.jcl.organization.util; public class Constants { public static final String SOURCE_TYPE="LOGIC"; + public static final String GROUP_ID="weaver-ebuilder-form-service"; + + public static final String BASIC_INFORMATION="基本信息"; + + public static final String ACCOUNT_INFORMATION="账户信息"; + + public static final String PERSONAL_INFORMATION="个人信息"; + + /** + * 员工信息表 + */ + public static final String EMPLOYEE_INFORMATION="uf_ygxxglfzcswd"; } diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/DatabaseUtils.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/DatabaseUtils.java index abaaecd..c62469d 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/DatabaseUtils.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/util/DatabaseUtils.java @@ -337,6 +337,11 @@ public class DatabaseUtils { List> recordList = getDataSourceList(result); return recordList; } + public List> getSqlList(String dataSql){ + Map result = execute(dataSql); + List> recordList = getDataSourceList(result); + return recordList; + } /*** *