|
@@ -0,0 +1,929 @@
|
|
|
+/**
|
|
|
+ * Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
|
|
|
+ */
|
|
|
+package com.jeeplus.modules.workstaff.service;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.lang.reflect.Field;
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.NumberFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.jeeplus.common.bos.BOSClientUtil;
|
|
|
+import com.jeeplus.common.config.Global;
|
|
|
+import com.jeeplus.common.oss.OSSClientUtil;
|
|
|
+import com.jeeplus.common.utils.FileUtils;
|
|
|
+import com.jeeplus.common.utils.IdGen;
|
|
|
+import com.jeeplus.common.utils.MenuStatusEnum;
|
|
|
+import com.jeeplus.common.utils.StringUtils;
|
|
|
+import com.jeeplus.modules.sys.dao.AreaDao;
|
|
|
+import com.jeeplus.modules.sys.dao.UserDao;
|
|
|
+import com.jeeplus.modules.sys.entity.Area;
|
|
|
+import com.jeeplus.modules.sys.entity.Office;
|
|
|
+import com.jeeplus.modules.sys.entity.Role;
|
|
|
+import com.jeeplus.modules.sys.entity.User;
|
|
|
+import com.jeeplus.modules.sys.service.OfficeService;
|
|
|
+import com.jeeplus.modules.sys.service.RoleService;
|
|
|
+import com.jeeplus.modules.sys.service.SystemService;
|
|
|
+import com.jeeplus.modules.sys.service.UserService;
|
|
|
+import com.jeeplus.modules.sys.utils.DictUtils;
|
|
|
+import com.jeeplus.modules.sys.utils.UserUtils;
|
|
|
+import com.jeeplus.modules.sysuseroffice.entity.Useroffice;
|
|
|
+import com.jeeplus.modules.sysuseroffice.service.UserofficeService;
|
|
|
+import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
|
|
|
+import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
|
|
|
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
|
|
|
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
|
|
|
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
|
|
|
+import com.jeeplus.modules.workrelationship.dao.WorkRelationshipDao;
|
|
|
+import com.jeeplus.modules.workrelationship.entity.WorkRelationship;
|
|
|
+import com.jeeplus.modules.workstaff.dao.*;
|
|
|
+import com.jeeplus.modules.workstaff.entity.*;
|
|
|
+import com.jeeplus.modules.workstaffachiveslog.dao.WorkStaffAchivesLogDao;
|
|
|
+import com.jeeplus.modules.workstaffachiveslog.entity.WorkStaffAchivesLog;
|
|
|
+import com.jeeplus.modules.workstaffachiveslog.service.WorkStaffAchivesLogService;
|
|
|
+import com.sun.corba.se.spi.orbutil.threadpool.Work;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import com.jeeplus.common.persistence.Page;
|
|
|
+import com.jeeplus.common.service.CrudService;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 员工基本信息Service
|
|
|
+ * @author ssrh
|
|
|
+ * @version 2018-07-26
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Transactional(readOnly = true)
|
|
|
+public class WorkStaffBasicInfoService extends CrudService<WorkStaffBasicInfoDao, WorkStaffBasicInfo> {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RoleService roleService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffAchievementService achievementService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffCertificateService certificateService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffEducationService educationService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffExperienceService experienceService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffFamilyService familyService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffLanguagesService languagesService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffRecordService recordService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffRewardsService rewardsService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffSocialPositionService socialPositionService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffTitleService titleService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffTrainingService trainingService;
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffBasicInfoDao workStaffBasicInfoDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkRelationshipDao workRelationshipDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkProjectNotifyService workProjectNotifyService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffAchivesDao workStaffAchivesDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkClientAttachmentDao workClientAttachmentDao;
|
|
|
+ @Autowired
|
|
|
+ private UserofficeService userofficeService;
|
|
|
+ @Autowired
|
|
|
+ private SystemService systemService;
|
|
|
+ @Autowired
|
|
|
+ private OfficeService officeService;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffAchivesLogDao workStaffAchivesLogDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffAchivesLogService workStaffAchivesLogService;
|
|
|
+ @Autowired
|
|
|
+ private AreaDao areaDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffEducationDao educationDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffLanguagesDao languagesDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffAchievementDao achievementDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffCertificateDao certificateDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffExperienceDao experienceDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffFamilyDao familyDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffRecordDao recordDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffRewardsDao rewardsDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffSocialPositionDao socialPositionDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffTitleDao titleDao;
|
|
|
+ @Autowired
|
|
|
+ private WorkStaffTrainingDao trainingDao;
|
|
|
+
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo get(String id) {
|
|
|
+ return super.get(id);
|
|
|
+ }
|
|
|
+ public Integer getByCompany(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ return workStaffAchivesDao.getByCompany(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ public List<WorkStaffBasicInfo> getByCompanyInfo(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ return workStaffAchivesDao.getByCompanyInfo(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<WorkStaffBasicInfo> findByMob(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ return workStaffBasicInfoDao.findByMob(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<WorkStaffBasicInfo> findByName(String name) {
|
|
|
+ return workStaffBasicInfoDao.findByName(name);
|
|
|
+ }
|
|
|
+ public WorkStaffBasicInfo getByUserOffice(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ return workStaffAchivesDao.getByUserOffice(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ //根据工号及名称获取信息
|
|
|
+ public WorkStaffBasicInfo getByNoName(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ return workStaffAchivesDao.getByNoName(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ //档案表
|
|
|
+ public WorkStaffBasicInfo getAchives(String id) {
|
|
|
+ return workStaffAchivesDao.get(id);
|
|
|
+ }
|
|
|
+ public List<WorkStaffBasicInfo> findList(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ if(!UserUtils.getUser().isAdmin()) {
|
|
|
+ String dataScopeSql = dataScopeFilterOR(workStaffBasicInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_STAFFBASICINFO.getValue());
|
|
|
+ workStaffBasicInfo.getSqlMap().put("dsf", dataScopeSql);
|
|
|
+ if(workStaffBasicInfo.getCurrentUser().getBranchOffice()==null){
|
|
|
+ workStaffBasicInfo.getCurrentUser().setBranchOffice(workStaffBasicInfo.getCurrentUser().getCompany());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return super.findList(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Page<WorkStaffBasicInfo> findPage(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ if(!UserUtils.getUser().isAdmin()) {
|
|
|
+ String dataScopeSql = dataScopeFilterOR(workStaffBasicInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_STAFFBASICINFO.getValue());
|
|
|
+ workStaffBasicInfo.getSqlMap().put("dsf", dataScopeSql);
|
|
|
+ if(workStaffBasicInfo.getCurrentUser().getBranchOffice()==null){
|
|
|
+ workStaffBasicInfo.getCurrentUser().setBranchOffice(workStaffBasicInfo.getCurrentUser().getCompany());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return super.findPage(page, workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ //微信
|
|
|
+ public List<WorkStaffBasicInfo> wxFindAddressBook(WorkStaffBasicInfo workStaffBasicInfo){
|
|
|
+ String companyId = UserUtils.getUser().getComId();
|
|
|
+ Office office = new Office();
|
|
|
+ office.setId(companyId);
|
|
|
+ workStaffBasicInfo.setCompany(office);
|
|
|
+ return dao.findAddressBook(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ public Page<WorkStaffBasicInfo> findAddressBook(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+// if(!UserUtils.getUser().isAdmin()) {
|
|
|
+// String dataScopeSql = dataScopeFilterOR(workStaffBasicInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_STAFFBASICINFO.getValue());
|
|
|
+// workStaffBasicInfo.getSqlMap().put("dsf", dataScopeSql);
|
|
|
+// if(workStaffBasicInfo.getCurrentUser().getBranchOffice()==null){
|
|
|
+// workStaffBasicInfo.getCurrentUser().setBranchOffice(workStaffBasicInfo.getCurrentUser().getCompany());
|
|
|
+// }
|
|
|
+// }
|
|
|
+ String companyId = UserUtils.getUser().getComId();
|
|
|
+ Office office = new Office();
|
|
|
+ office.setId(companyId);
|
|
|
+ workStaffBasicInfo.setCompany(office);
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(dao.findAddressBook(workStaffBasicInfo));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void save(WorkStaffBasicInfo workStaffBasicInfo,HttpServletRequest request) throws IOException {
|
|
|
+ String baseId = workStaffBasicInfo.getId();
|
|
|
+ workStaffBasicInfo.setId(workStaffBasicInfo.getAchiveId());
|
|
|
+ this.saveAchive(workStaffBasicInfo,request);
|
|
|
+ workStaffBasicInfo.setAchiveId(workStaffBasicInfo.getId());
|
|
|
+ workStaffBasicInfo.setId(baseId);
|
|
|
+ super.save(workStaffBasicInfo);
|
|
|
+ //同步修改sys_user表中的name
|
|
|
+ if(roleService.getRoleIdByUserId(workStaffBasicInfo.getUserId())!=null){
|
|
|
+ //更新信息
|
|
|
+ User user = new User();
|
|
|
+ user.setId(workStaffBasicInfo.getUserId());
|
|
|
+ user.setName(workStaffBasicInfo.getName());
|
|
|
+ user.setMobile(workStaffBasicInfo.getMobile());
|
|
|
+ user.setPhone(workStaffBasicInfo.getPhone());
|
|
|
+ user.setLoginName(workStaffBasicInfo.getMobile());
|
|
|
+ user.setComId(workStaffBasicInfo.getCompany().getId());
|
|
|
+ user.setCompany(workStaffBasicInfo.getCompany());
|
|
|
+ user.setOffice(workStaffBasicInfo.getOffice());
|
|
|
+ userService.updateUser(user);
|
|
|
+ userService.updateRole(workStaffBasicInfo);
|
|
|
+ }else{
|
|
|
+ userService.insertRole(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我的信息-用户维护档案信息,
|
|
|
+ * @param workStaffBasicInfo
|
|
|
+ * @param request
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void updateAchieveDirectly(WorkStaffBasicInfo workStaffBasicInfo,HttpServletRequest request) throws IOException {
|
|
|
+ String staffId = workStaffBasicInfo.getId();
|
|
|
+ workStaffBasicInfo.setId(workStaffBasicInfo.getAchiveId());
|
|
|
+ this.saveAchive(workStaffBasicInfo,request);
|
|
|
+ workStaffBasicInfo.setAchiveId(workStaffBasicInfo.getId());
|
|
|
+ workStaffBasicInfo.setId(staffId);
|
|
|
+ super.save(workStaffBasicInfo);
|
|
|
+
|
|
|
+ //同步修改用户座机
|
|
|
+ User user = new User();
|
|
|
+ user.setId(workStaffBasicInfo.getUserId());
|
|
|
+ user.setPhone(workStaffBasicInfo.getPhone());
|
|
|
+ userService.updateUser(user);
|
|
|
+ UserUtils.clearCache();
|
|
|
+
|
|
|
+ }
|
|
|
+ public void preSave(WorkStaffBasicInfo workStaffBasicInfo, HttpServletRequest request) throws IOException {
|
|
|
+ if(workStaffBasicInfo.getCompany()==null){
|
|
|
+ workStaffBasicInfo.setCompany(UserUtils.getSelectCompany());
|
|
|
+ }
|
|
|
+ if(workStaffBasicInfo.getBranchOffice()==null|| StringUtils.isBlank(workStaffBasicInfo.getBranchOffice().getId())){
|
|
|
+ Office branchOffice = officeService.get(workStaffBasicInfo.getOffice().getId());
|
|
|
+ if(branchOffice==null||StringUtils.isBlank(branchOffice.getBranchOffice())){
|
|
|
+ workStaffBasicInfo.setBranchOffice(workStaffBasicInfo.getCompany());
|
|
|
+ }else {
|
|
|
+ workStaffBasicInfo.setBranchOffice(new Office(branchOffice.getBranchOffice()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(workStaffBasicInfo.getNo())){
|
|
|
+ workStaffBasicInfo.setNo(this.createNo(workStaffBasicInfo));
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(workStaffBasicInfo.getUserId())){
|
|
|
+ //根据手机号查询用户
|
|
|
+ User user = userService.findUniqueByProperty("mobile", workStaffBasicInfo.getMobile());
|
|
|
+ if(user==null){
|
|
|
+ //创建新的用户
|
|
|
+ user = this.createUser(workStaffBasicInfo);
|
|
|
+ userService.save(user,request);
|
|
|
+ }else {
|
|
|
+ user = UserUtils.get(user.getId());
|
|
|
+ this.saveUserOffice(user,workStaffBasicInfo);
|
|
|
+ if(workStaffBasicInfo.getCompany().getId().equals(user.getCompany().getId())){
|
|
|
+ user.setOffice(workStaffBasicInfo.getOffice());
|
|
|
+ userService.updateOfficeById(user);
|
|
|
+ systemService.removeSession(user);
|
|
|
+ UserUtils.clearCache(user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ workStaffBasicInfo.setUserId(user.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void uploadFile(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ MultipartFile pictureFile = workStaffBasicInfo.getPictureFile();
|
|
|
+ if (pictureFile != null && !pictureFile.isEmpty() &&pictureFile.getSize()>0) {
|
|
|
+ String oldPhoto = workStaffBasicInfo.getPicture();
|
|
|
+ BOSClientUtil bosClientUtil = new BOSClientUtil();
|
|
|
+ /*if (StringUtils.isNotBlank(oldPhoto)) {
|
|
|
+ String aliyunUrl = Global.getAliyunUrl();
|
|
|
+ String aliDownloadUrl = Global.getAliDownloadUrl();
|
|
|
+ String cons = "";
|
|
|
+ if (oldPhoto.contains(aliyunUrl)) {
|
|
|
+ cons = aliyunUrl;
|
|
|
+ } else if (oldPhoto.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")) {
|
|
|
+ cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
|
|
|
+ } else {
|
|
|
+ cons = aliDownloadUrl;
|
|
|
+ }
|
|
|
+ String[] arr = oldPhoto.split(cons + "/");
|
|
|
+ key = arr[1];
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ OSSClientUtil ossUtil1 = new OSSClientUtil();
|
|
|
+ if (StringUtils.isNotBlank(key)) {
|
|
|
+ ossUtil1.deleteSingleObject(key);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("oss删除文件失败!");
|
|
|
+ }*/
|
|
|
+ try {
|
|
|
+ if(StringUtils.isNotBlank(oldPhoto)){
|
|
|
+ bosClientUtil.deleteObject(oldPhoto);
|
|
|
+ }
|
|
|
+ String path = new StringBuilder("/headImg/")
|
|
|
+ .append(workStaffBasicInfo.getName()+System.currentTimeMillis()).append(".png").toString();
|
|
|
+ String uploadPath = bosClientUtil.upload(path, pictureFile.getInputStream());
|
|
|
+ workStaffBasicInfo.setPicture(uploadPath);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("oss上传文件失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Page<WorkStaffBasicInfo> getByRoleId(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo, String roleId){
|
|
|
+ if (workStaffBasicInfo==null){
|
|
|
+ workStaffBasicInfo = new WorkStaffBasicInfo();
|
|
|
+ }
|
|
|
+ workStaffBasicInfo.setRoleId(roleId);
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ List<WorkStaffBasicInfo> list = workStaffAchivesDao.findListByRoleList(workStaffBasicInfo);
|
|
|
+ page.setList(list);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String cacuPercent(int cou) {
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(cou).divide(new BigDecimal("39"),2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ NumberFormat percent = NumberFormat.getPercentInstance();
|
|
|
+ return percent.format(bigDecimal.doubleValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveUserOffice(User user,WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ Useroffice useroffice = new Useroffice();
|
|
|
+ useroffice.setUserId(user.getId());
|
|
|
+ useroffice.setStatus("3");
|
|
|
+ useroffice.setMaster(UserUtils.getUser().getId());
|
|
|
+ useroffice.setCompanyId(workStaffBasicInfo.getCompany().getId());
|
|
|
+ useroffice.setOfficeId(workStaffBasicInfo.getOffice().getId());
|
|
|
+ List<Useroffice> listOffice = userofficeService.findList(useroffice);
|
|
|
+ if(listOffice==null || listOffice.size()==0){
|
|
|
+ userofficeService.save(useroffice);
|
|
|
+ }else {
|
|
|
+ Useroffice oldUseroffice = listOffice.get(0);
|
|
|
+ oldUseroffice.setOfficeId(workStaffBasicInfo.getOffice().getId());
|
|
|
+ userofficeService.save(oldUseroffice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveAchive(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ if (workStaffBasicInfo.getIsNewRecord()){
|
|
|
+ workStaffBasicInfo.preInsert();
|
|
|
+ workStaffAchivesDao.insert(workStaffBasicInfo);
|
|
|
+ }else{
|
|
|
+ workStaffBasicInfo.preUpdate();
|
|
|
+ workStaffAchivesDao.update(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private int cacuField(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ int count = 0;
|
|
|
+ Class<? extends WorkStaffBasicInfo> basicInfoClass = workStaffBasicInfo.getClass();
|
|
|
+ Field[] declaredFields = basicInfoClass.getDeclaredFields();
|
|
|
+ for (Field field : declaredFields) {
|
|
|
+ String name = field.getName();
|
|
|
+ if("userId".equals(name)||"sqlStr".equals(name)||"branchOffice".equals(name)||"company".equals(name)||"dimissionDate".equals(name)
|
|
|
+ || "percent".equals(name)||"freeEndDate".equals(name)||"workEndDate".equals(name)||"pictureFile".equals(name)||"achiveId".equals(name)
|
|
|
+ ||"relationshipStatus".equals(name)||"labourList".equals(name)||"notifyFlag".equals(name)||"serialVersionUID".equals(name)||"tryEndTime".equals(name)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String methodName = "get"+name.substring(0,1).toUpperCase()+name.substring(1);
|
|
|
+ try {
|
|
|
+ Object invoke = basicInfoClass.getMethod(methodName).invoke(workStaffBasicInfo);
|
|
|
+ if(invoke==null)continue;
|
|
|
+ if(invoke instanceof List)continue;
|
|
|
+ if(invoke instanceof String && StringUtils.isBlank((String) invoke)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (invoke instanceof Area && StringUtils.isBlank(((Area) invoke).getId())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ count++;
|
|
|
+ } catch (NoSuchMethodException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (InvocationTargetException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return count;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendMessage(WorkStaffBasicInfo workStaffBasicInfo, String contentStr, String titleStr, String remark) {
|
|
|
+ if (workStaffBasicInfo==null||StringUtils.isBlank(workStaffBasicInfo.getId())||StringUtils.isBlank(workStaffBasicInfo.getUserId())){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ WorkProjectNotify workProjectNotify = UtilNotify.saveNotify(workStaffBasicInfo.getId(),null, workStaffBasicInfo.getCompany().getId(),
|
|
|
+ titleStr, contentStr,"69","0",remark,"");
|
|
|
+ List<String> userIds = new ArrayList<>();
|
|
|
+ userIds.add(workStaffBasicInfo.getUserId());
|
|
|
+ workProjectNotify.setUser(new User(workStaffBasicInfo.getUserId()));
|
|
|
+ workProjectNotify.setId("");
|
|
|
+ workProjectNotify.setNotifyRole("");
|
|
|
+ workProjectNotifyService .save(workProjectNotify);
|
|
|
+ UserUtils.pushIm(userIds,contentStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String createNo(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ String newNo="0001";
|
|
|
+ String no = dao.queryMaxNoWithCompany(workStaffBasicInfo);
|
|
|
+ if(StringUtils.isNotBlank(no)){
|
|
|
+ Integer integer = Integer.valueOf(no);
|
|
|
+ integer+=1;
|
|
|
+ newNo = String.valueOf(integer);
|
|
|
+ }
|
|
|
+ no = UserUtils.getSysParam("company_number",UserUtils.getUser());
|
|
|
+ if(StringUtils.isBlank(no)){
|
|
|
+ no = "0000";
|
|
|
+ }
|
|
|
+ for(int i = newNo.length(); i<4; i++){
|
|
|
+ newNo = "0"+newNo;
|
|
|
+ }
|
|
|
+ return no+newNo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private User createUser(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ User user = new User();
|
|
|
+ user.setOffice(workStaffBasicInfo.getOffice());
|
|
|
+ user.setCompany(workStaffBasicInfo.getCompany());
|
|
|
+ user.setComId(workStaffBasicInfo.getCompany().getId());
|
|
|
+ user.setNo(workStaffBasicInfo.getNo());
|
|
|
+ user.setName(workStaffBasicInfo.getName());
|
|
|
+ user.setMobile(workStaffBasicInfo.getMobile());
|
|
|
+ user.setNewPassword("123456");
|
|
|
+ user.setLoginName(workStaffBasicInfo.getMobile());
|
|
|
+ user.setEmail(workStaffBasicInfo.getEmail());
|
|
|
+ user.setSex(workStaffBasicInfo.getGender());
|
|
|
+ user.setLoginFlag("1");
|
|
|
+ user.setFirstFlag("1");
|
|
|
+ //微信标识
|
|
|
+ user.setWeChatId(workStaffBasicInfo.getNo());
|
|
|
+ return user;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int saveDetails(WorkStaffBasicInfo workStaffBasicInfo,boolean first) {
|
|
|
+ int count = 0;
|
|
|
+ if(achievementService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(certificateService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(educationService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(experienceService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(familyService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(languagesService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(recordService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(rewardsService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(socialPositionService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(titleService.save(workStaffBasicInfo,first))count++;
|
|
|
+ if(trainingService.save(workStaffBasicInfo,first))count++;
|
|
|
+ return count;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void queryDetails(WorkStaffBasicInfo workStaffBasicInfo){
|
|
|
+ //按照achieveId查询
|
|
|
+ String id = workStaffBasicInfo.getId();
|
|
|
+ if (StringUtils.isNotBlank(id) && StringUtils.isNotBlank(workStaffBasicInfo.getAchiveId())){
|
|
|
+ workStaffBasicInfo.setId(workStaffBasicInfo.getAchiveId());
|
|
|
+ }
|
|
|
+ achievementService.query(workStaffBasicInfo);
|
|
|
+ certificateService.query(workStaffBasicInfo);
|
|
|
+ educationService.query(workStaffBasicInfo);
|
|
|
+ experienceService.query(workStaffBasicInfo);
|
|
|
+ familyService.query(workStaffBasicInfo);
|
|
|
+ languagesService.query(workStaffBasicInfo);
|
|
|
+ recordService.query(workStaffBasicInfo);
|
|
|
+ rewardsService.query(workStaffBasicInfo);
|
|
|
+ socialPositionService.query(workStaffBasicInfo);
|
|
|
+ titleService.query(workStaffBasicInfo);
|
|
|
+ trainingService.query(workStaffBasicInfo);
|
|
|
+ queryRelationShips(workStaffBasicInfo);
|
|
|
+ workStaffBasicInfo.setId(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void queryRelationShips(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ List<WorkRelationship> workRelationships = workRelationshipDao.getWorkRelationships(null, workStaffBasicInfo.getId());
|
|
|
+ workStaffBasicInfo.setLabourList(workRelationships);
|
|
|
+ if(workRelationships!=null&&workRelationships.size()>0){
|
|
|
+ for (WorkRelationship workRelationship : workRelationships) {
|
|
|
+ if(workRelationship!=null && workRelationship.getWorkStaffBasicInfo()!=null && StringUtils.isNotBlank(workRelationship.getWorkStaffBasicInfo().getId())) {
|
|
|
+ WorkClientAttachment workClientAttachment = new WorkClientAttachment();
|
|
|
+ workClientAttachment.setAttachmentId(workRelationship.getId());
|
|
|
+ workClientAttachment.setAttachmentFlag("108");
|
|
|
+ workRelationship.setWorkAttachments(workClientAttachmentDao.findList(workClientAttachment));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void delete(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+// super.delete(workStaffBasicInfo);
|
|
|
+ workStaffBasicInfoDao.deleteByLogic(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo findNo(String no){
|
|
|
+ return workStaffBasicInfoDao.getNo(no);
|
|
|
+ }
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo findByIdCardAndCom(String idCard) {
|
|
|
+ WorkStaffBasicInfo select = new WorkStaffBasicInfo();
|
|
|
+ select.setIdCard(idCard);
|
|
|
+ select.setCompany(UserUtils.getSelectCompany());
|
|
|
+ List<WorkStaffBasicInfo> list = workStaffAchivesDao.findListByIdCard(select);
|
|
|
+ if(list==null||list.size()<=0){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ //判断是否存在在职
|
|
|
+ for (WorkStaffBasicInfo workStaffBasicInfo : list) {
|
|
|
+ if(!("离职".equals(workStaffBasicInfo.getStatus())||"退休".equals(workStaffBasicInfo.getStatus()))){
|
|
|
+ return workStaffBasicInfo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WorkStaffBasicInfo workStaffBasicInfo = list.get(0);
|
|
|
+ return workStaffBasicInfo;
|
|
|
+ }
|
|
|
+ public Page<WorkStaffBasicInfo> findUserListPage(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(workStaffAchivesDao.findUserList(workStaffBasicInfo));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ public Page<WorkStaffBasicInfo> findUserApplyPage(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(workStaffAchivesDao.findUserApplyList(workStaffBasicInfo));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ public Page<WorkStaffBasicInfo> findUserShipList(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(workStaffAchivesDao.findUserShipList(workStaffBasicInfo));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ public Page<WorkStaffBasicInfo> findTemplateUser(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(workStaffAchivesDao.findTemplateUser(workStaffBasicInfo));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ public WorkStaffBasicInfo queryAchive(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ WorkStaffBasicInfo staffBasicInfo = workStaffAchivesDao.get(workStaffBasicInfo.getAchiveId());
|
|
|
+ staffBasicInfo.setNo(null);
|
|
|
+ staffBasicInfo.setAchiveId(null);
|
|
|
+ //设置工号
|
|
|
+ Office branchOffice = officeService.get(workStaffBasicInfo.getOffice().getId());
|
|
|
+ if(branchOffice==null||StringUtils.isBlank(branchOffice.getBranchOffice())){
|
|
|
+ branchOffice=workStaffBasicInfo.getCompany();
|
|
|
+ }
|
|
|
+ workStaffBasicInfo.setBranchOffice(new Office(branchOffice.getBranchOffice()));
|
|
|
+ //userId
|
|
|
+ List<WorkStaffBasicInfo> list = dao.findListByUserId(workStaffBasicInfo);
|
|
|
+ if(list!=null&&list.size()>0){
|
|
|
+ WorkStaffBasicInfo basicInfo = list.get(0);
|
|
|
+ staffBasicInfo.setNo(basicInfo.getNo());
|
|
|
+ //设置当前分公司档案信息
|
|
|
+ staffBasicInfo.setAchiveId(basicInfo.getAchiveId());
|
|
|
+ }
|
|
|
+ return staffBasicInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Page<WorkStaffBasicInfo> findAchivePage(Page<WorkStaffBasicInfo> page, WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ if(!UserUtils.getUser().isAdmin()) {
|
|
|
+ String dataScopeSql = dataScopeFilterOR(workStaffBasicInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_STAFFBASICINFO.getValue());
|
|
|
+ workStaffBasicInfo.getSqlMap().put("dsf", dataScopeSql);
|
|
|
+ if(workStaffBasicInfo.getCurrentUser().getBranchOffice()==null){
|
|
|
+ workStaffBasicInfo.getCurrentUser().setBranchOffice(workStaffBasicInfo.getCurrentUser().getCompany());
|
|
|
+ }
|
|
|
+ workStaffBasicInfo.setPage(page);
|
|
|
+ page.setList(workStaffAchivesDao.findList(workStaffBasicInfo));
|
|
|
+ }else {
|
|
|
+ page.setList(new ArrayList<WorkStaffBasicInfo>());
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo getByAchiveId(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ Office branchOffice = officeService.get(workStaffBasicInfo.getOffice().getId());
|
|
|
+ if(branchOffice==null||StringUtils.isBlank(branchOffice.getBranchOffice())){
|
|
|
+ branchOffice=workStaffBasicInfo.getCompany();
|
|
|
+ }
|
|
|
+ workStaffBasicInfo.setBranchOffice(new Office(branchOffice.getBranchOffice()));
|
|
|
+ List<WorkStaffBasicInfo> list = this.findList(workStaffBasicInfo);
|
|
|
+ if (list==null||list.size()<=0){
|
|
|
+ return workStaffBasicInfo;
|
|
|
+ }
|
|
|
+ return list.get(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void complete(String achiveIds) {
|
|
|
+ if(StringUtils.isBlank(achiveIds)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String[] split = achiveIds.split(",");
|
|
|
+ String contentStr = "待处理,请及时完善员工档案信息。";
|
|
|
+ String titleStr = "完善档案信息,待处理";
|
|
|
+ String remark = "待处理";
|
|
|
+ for (String s : split) {
|
|
|
+ WorkStaffBasicInfo workStaffBasicInfo = workStaffAchivesDao.get(s);
|
|
|
+ this.sendMessage(workStaffBasicInfo,contentStr,titleStr,remark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void saveAchive(WorkStaffBasicInfo workStaffBasicInfo, HttpServletRequest request) throws IOException {
|
|
|
+ Office branchOffice = officeService.get(workStaffBasicInfo.getOffice().getId());
|
|
|
+ if(branchOffice!=null&&StringUtils.isNotBlank(branchOffice.getBranchOffice())){
|
|
|
+ workStaffBasicInfo.setBranchOffice(new Office(branchOffice.getBranchOffice()));
|
|
|
+ }
|
|
|
+ this.preSave(workStaffBasicInfo, request);
|
|
|
+// this.uploadFile(workStaffBasicInfo);
|
|
|
+ this.saveAchive(workStaffBasicInfo);
|
|
|
+ workStaffBasicInfo.setAchiveId(workStaffBasicInfo.getId());
|
|
|
+ int cou = this.saveDetails(workStaffBasicInfo,true);
|
|
|
+ //计算信息完成度
|
|
|
+ cou +=this.cacuField(workStaffBasicInfo);
|
|
|
+ workStaffAchivesDao.updatePercent(workStaffBasicInfo.getId(),this.cacuPercent(cou));
|
|
|
+ if (StringUtils.isNotBlank(workStaffBasicInfo.getHome()) && "home".equals(workStaffBasicInfo.getHome())){
|
|
|
+ WorkProjectNotify workProjectNotify = new WorkProjectNotify();
|
|
|
+ workProjectNotify.setNotifyId(workStaffBasicInfo.getId());
|
|
|
+ workProjectNotifyService.readByNotifyId(workProjectNotify);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if("1".equals(workStaffBasicInfo.getNotifyFlag())){
|
|
|
+ String contentStr = "待处理,请及时完善员工档案信息。";
|
|
|
+ String titleStr = "完善档案信息,待处理";
|
|
|
+ String remark = "待处理";
|
|
|
+ this.sendMessage(workStaffBasicInfo,contentStr,titleStr,remark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo getAchive(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ workStaffBasicInfo.setId(workStaffBasicInfo.getAchiveId());
|
|
|
+ return workStaffAchivesDao.get(workStaffBasicInfo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean validateStaff(WorkStaffBasicInfo workStaffBasicInfo,StringBuilder errInfo) {
|
|
|
+ boolean flag = true;
|
|
|
+ if(workStaffBasicInfo==null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(workStaffBasicInfo.getCompany()==null){
|
|
|
+ workStaffBasicInfo.setCompany(UserUtils.getSelectCompany());
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(workStaffBasicInfo.getName())){
|
|
|
+ errInfo.append("员工姓名不能为空");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ if(workStaffBasicInfo.getOffice()==null||StringUtils.isBlank(workStaffBasicInfo.getOffice().getId())){
|
|
|
+ errInfo.append("所属部门不能为空");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(workStaffBasicInfo.getIdCard())){
|
|
|
+ errInfo.append("身份证号不能为空");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(workStaffBasicInfo.getMobile())){
|
|
|
+ errInfo.append("手机号不能为空");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(workStaffBasicInfo.getNo())) {
|
|
|
+ int cou = workStaffAchivesDao.countByNo(workStaffBasicInfo);
|
|
|
+ if(cou>0){
|
|
|
+ errInfo.append("重复的工号");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(workStaffBasicInfo.getIdCard())){
|
|
|
+ WorkStaffBasicInfo staffBasicInfo = this.findByIdCardAndCom(workStaffBasicInfo.getIdCard());
|
|
|
+ if(staffBasicInfo!=null&&StringUtils.isNotBlank(staffBasicInfo.getId())){
|
|
|
+ if(!("离职".equals(staffBasicInfo.getStatus())||"退休".equals(staffBasicInfo.getStatus()))){
|
|
|
+ errInfo.append("重复的身份证号");
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+ public void queryDetailsApply(WorkStaffBasicInfo workStaffBasicInfo){
|
|
|
+ achievementService.querys(workStaffBasicInfo);
|
|
|
+ certificateService.querys(workStaffBasicInfo);
|
|
|
+ educationService.querys(workStaffBasicInfo);
|
|
|
+ experienceService.querys(workStaffBasicInfo);
|
|
|
+ familyService.querys(workStaffBasicInfo);
|
|
|
+ languagesService.querys(workStaffBasicInfo);
|
|
|
+ recordService.querys(workStaffBasicInfo);
|
|
|
+ rewardsService.querys(workStaffBasicInfo);
|
|
|
+ socialPositionService.querys(workStaffBasicInfo);
|
|
|
+ titleService.querys(workStaffBasicInfo);
|
|
|
+ trainingService.querys(workStaffBasicInfo);
|
|
|
+ queryRelationShips(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ private int saveDetailsApply(WorkStaffBasicInfo workStaffBasicInfo,boolean first) {
|
|
|
+ int count = 0;
|
|
|
+ if(achievementService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(certificateService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(educationService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(experienceService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(familyService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(languagesService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(recordService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(rewardsService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(socialPositionService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(titleService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ if(trainingService.saveApply(workStaffBasicInfo,first))count++;
|
|
|
+ return count;
|
|
|
+ }
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public String completeApply(String achiveIds) {
|
|
|
+ if(StringUtils.isBlank(achiveIds)){
|
|
|
+ return"";
|
|
|
+ }
|
|
|
+ String contentStr = "待处理,请及时审核修改档案信息申请。";
|
|
|
+ String titleStr = "修改档案信息申请,待处理";
|
|
|
+ String remark = "待处理";
|
|
|
+ WorkStaffBasicInfo workStaffBasicInfo = workStaffAchivesDao.get(achiveIds);
|
|
|
+ WorkProjectNotify workProjectNotify = UtilNotify.saveNotify(workStaffBasicInfo.getId(),null, workStaffBasicInfo.getCompany().getId(),
|
|
|
+ titleStr, contentStr,"86","0",remark,"");
|
|
|
+ List<String> userIds = new ArrayList<>();
|
|
|
+ List<User> rlzyList = UserUtils.getByRoleActivityEnname("rlzy",3,UserUtils.getSelectOffice().getId(),"22",UserUtils.getUser());
|
|
|
+ List<User> rszrList = UserUtils.findRszrList(UserUtils.getUser());
|
|
|
+ rlzyList.addAll(rszrList);
|
|
|
+ if (rlzyList.size()==0 ){
|
|
|
+ return "流程审批人不能为空,请联系管理员!";
|
|
|
+ }
|
|
|
+ for(User u:rlzyList){
|
|
|
+ userIds.add(u.getId());
|
|
|
+ workProjectNotify.setUser(u);
|
|
|
+ workProjectNotify.setId("");
|
|
|
+ workProjectNotify.setNotifyRole("");
|
|
|
+ workProjectNotifyService .save(workProjectNotify);
|
|
|
+ }
|
|
|
+ UserUtils.pushIm(userIds,contentStr);
|
|
|
+ return"";
|
|
|
+ }
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void saveAchiveApply(WorkStaffBasicInfo workStaffBasicInfo, HttpServletRequest request) throws IOException {
|
|
|
+ this.saveAchive(workStaffBasicInfo);
|
|
|
+ workStaffBasicInfo.setAchiveId(workStaffBasicInfo.getId());
|
|
|
+ int cou = this.saveDetailsApply(workStaffBasicInfo,true);
|
|
|
+ //计算信息完成度
|
|
|
+ cou +=this.cacuField(workStaffBasicInfo);
|
|
|
+ workStaffAchivesDao.updatePercent(workStaffBasicInfo.getId(),this.cacuPercent(cou));
|
|
|
+ workStaffAchivesLogDao.updateState(workStaffBasicInfo.getId(),UserUtils.getUser().getId(),new Date());
|
|
|
+ if (StringUtils.isNotBlank(workStaffBasicInfo.getHome()) && "home".equals(workStaffBasicInfo.getHome())){
|
|
|
+ WorkProjectNotify workProjectNotify = new WorkProjectNotify();
|
|
|
+ workProjectNotify.setNotifyId(workStaffBasicInfo.getId());
|
|
|
+ workProjectNotifyService.readByNotifyId(workProjectNotify);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if("1".equals(workStaffBasicInfo.getNotifyFlag())){
|
|
|
+ String contentStr = "待处理,请及时完善员工档案信息。";
|
|
|
+ String titleStr = "完善档案信息,待处理";
|
|
|
+ String remark = "待处理";
|
|
|
+ this.sendMessage(workStaffBasicInfo,contentStr,titleStr,remark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private static Map<String,String> CODE_MAP = Maps.newHashMap();//基本信息
|
|
|
+ static{//基本信息
|
|
|
+ CODE_MAP.put("exSoldier", "是否退伍军人");
|
|
|
+ CODE_MAP.put("marriage", "婚姻状况");
|
|
|
+ CODE_MAP.put("politics", "政治面貌");
|
|
|
+ CODE_MAP.put("address", "常住地址");
|
|
|
+ CODE_MAP.put("household", "户口所在地");
|
|
|
+ CODE_MAP.put("nativePlace", "籍贯");
|
|
|
+ CODE_MAP.put("picture", "头像");
|
|
|
+ CODE_MAP.put("industryDate", "从事本行业日期");
|
|
|
+ }
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void saveLog(WorkStaffBasicInfo workStaffBasicInfo) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
+ WorkStaffBasicInfo select1 = new WorkStaffBasicInfo();
|
|
|
+ select1.setAchiveId(workStaffBasicInfo.getId());
|
|
|
+ WorkStaffBasicInfo w = this.getAchive(select1);//从数据库取出记录的值
|
|
|
+ Class<? extends WorkStaffBasicInfo> basicInfoClass = workStaffBasicInfo.getClass();
|
|
|
+ Class<? extends WorkStaffBasicInfo> wClass = w.getClass();
|
|
|
+ Field[] declaredFields = basicInfoClass.getDeclaredFields();
|
|
|
+ if(workStaffBasicInfo.getPictureFile()!=null&&!workStaffBasicInfo.getPictureFile().isEmpty()&&workStaffBasicInfo.getPictureFile().getSize()>0){
|
|
|
+ MultipartFile file = workStaffBasicInfo.getPictureFile();
|
|
|
+ this.uploadFile(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+ for (Field field : declaredFields) {
|
|
|
+ String name = field.getName();
|
|
|
+ if("picture".equals(name)||"marriage".equals(name)||"politics".equals(name)||"exSoldier".equals(name)||"address".equals(name)
|
|
|
+ || "nativePlace".equals(name)||"household".equals(name)||"industryDate".equals(name)){
|
|
|
+ String methodName = "get"+name.substring(0,1).toUpperCase()+name.substring(1);
|
|
|
+ WorkStaffAchivesLog workStaffAchivesLog=new WorkStaffAchivesLog();
|
|
|
+ workStaffAchivesLog.setStaffId(workStaffBasicInfo.getId());
|
|
|
+ workStaffAchivesLog.setModule("基本信息");
|
|
|
+ workStaffAchivesLog.setFields(name);
|
|
|
+ workStaffAchivesLog.setState("1");
|
|
|
+ try {
|
|
|
+ Object newInvoke = basicInfoClass.getMethod(methodName).invoke(workStaffBasicInfo);//修改后
|
|
|
+ Object oldInvoke = wClass.getMethod(methodName).invoke(w);//修改前
|
|
|
+ String describes=CODE_MAP.get(name);
|
|
|
+ if(newInvoke==null)continue;
|
|
|
+ if(newInvoke instanceof String){
|
|
|
+ String newValue=newInvoke.toString();
|
|
|
+ String oldValue = "";
|
|
|
+ if (oldInvoke!=null)
|
|
|
+ oldValue = oldInvoke.toString();
|
|
|
+ if(!newValue.equals(oldValue)){
|
|
|
+ if("exSoldier".equals(name)){
|
|
|
+ workStaffAchivesLogService.saveStaffLog(workStaffAchivesLog,workStaffBasicInfo.getId(),
|
|
|
+ "基本信息",describes,name,
|
|
|
+ DictUtils.getDictLabel(oldValue,"yes_no",""),
|
|
|
+ DictUtils.getDictLabel(newValue,"yes_no",""),
|
|
|
+ oldValue,
|
|
|
+ newValue,
|
|
|
+ "","修改");
|
|
|
+ }else{
|
|
|
+ workStaffAchivesLogService.saveStaffLog(workStaffAchivesLog,workStaffBasicInfo.getId(),
|
|
|
+ "基本信息",describes,name,
|
|
|
+ oldValue,newValue,oldValue,newValue,"","修改");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(newInvoke instanceof Date){//日期
|
|
|
+ String newDate="";
|
|
|
+ String oldDate="";
|
|
|
+ if(newInvoke!=null){
|
|
|
+ newDate=sdf.format(newInvoke);
|
|
|
+ }
|
|
|
+ if(oldInvoke!=null){
|
|
|
+ oldDate=sdf.format(oldInvoke);
|
|
|
+ }
|
|
|
+ if(!newDate.equals(oldDate)){
|
|
|
+ workStaffAchivesLogService.saveStaffLog(workStaffAchivesLog,workStaffBasicInfo.getId(),
|
|
|
+ "基本信息",describes,name,
|
|
|
+ oldDate,newDate,oldDate,newDate,"","修改");
|
|
|
+ }
|
|
|
+ };
|
|
|
+ if (newInvoke instanceof Area){
|
|
|
+ String id=((Area) newInvoke).getId();
|
|
|
+ Area a=areaDao.get(id);
|
|
|
+ if(!((Area) newInvoke).getId().equals(((Area) oldInvoke).getId())){
|
|
|
+ workStaffAchivesLogService.saveStaffLog(workStaffAchivesLog,workStaffBasicInfo.getId(),
|
|
|
+ "基本信息",describes,name,
|
|
|
+ ((Area) oldInvoke).getName(),a.getName(),
|
|
|
+ ((Area) oldInvoke).getId(),id,"","修改");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (NoSuchMethodException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (InvocationTargetException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ educationService.saveEdu(workStaffBasicInfo);//教育经历
|
|
|
+ languagesService.saveEdu(workStaffBasicInfo);//外语语种
|
|
|
+ experienceService.saveEdu(workStaffBasicInfo);//工作经历
|
|
|
+ achievementService.saveEdu(workStaffBasicInfo);//工作业绩
|
|
|
+ certificateService.saveEdu(workStaffBasicInfo);//执业资格证书
|
|
|
+ familyService.saveEdu(workStaffBasicInfo);//家庭情况
|
|
|
+ recordService.saveEdu(workStaffBasicInfo);//电子档案
|
|
|
+ rewardsService.saveEdu(workStaffBasicInfo);//奖惩情况
|
|
|
+ socialPositionService.saveEdu(workStaffBasicInfo);//社会及行业职务
|
|
|
+ titleService.saveEdu(workStaffBasicInfo);//职称
|
|
|
+ trainingService.saveEdu(workStaffBasicInfo);//培训经历
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改员工状态
|
|
|
+ */
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void updateStatus(String id){
|
|
|
+ String status = "正式";
|
|
|
+ workStaffBasicInfoDao.updateStatus(id,status);
|
|
|
+ workStaffAchivesDao.updateStatus(id,status);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步修改work_staff_basic_info和work_staff_achives
|
|
|
+ * @param workStaffBasicInfo
|
|
|
+ */
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void updateWorkStaffBasicInfo(WorkStaffBasicInfo workStaffBasicInfo){
|
|
|
+ workStaffBasicInfoDao.updateWorkStaffBasicInfo(workStaffBasicInfo);
|
|
|
+ workStaffAchivesDao.updateWorkStaffAchieves(workStaffBasicInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public WorkStaffBasicInfo getBasicInfoByAchiveId(String achiveId){
|
|
|
+ return workStaffBasicInfoDao.getByAchieveId(achiveId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|