lixing hace 4 años
padre
commit
704334f03f

+ 10 - 6
fm-person/src/main/java/com/persagy/fm/department/jms/handler/GroupMsgHandler.java

@@ -18,6 +18,7 @@ import com.persagy.fm.department.model.dto.QueryDepartmentDTO;
 import com.persagy.fm.department.service.IDepartmentService;
 import com.persagy.fm.mybatis.handler.DynamicDataSourceHandler;
 import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,7 @@ import java.util.List;
  * @version V1.0 2021/3/18 6:18 下午
  **/
 @Configuration
+@Slf4j
 public class GroupMsgHandler{
     @Autowired
     IDepartmentService departmentService;
@@ -51,6 +53,7 @@ public class GroupMsgHandler{
      */
     @RabbitListener(queues = "${dep.amqp.queue.saas}")
     public void process(String message, Channel channel, Message msg) {
+        log.info("接收到运维平台集团消息:{}", message);
         try {
             // 切换数据源
             msgBaseHandler.resetDataSourceByMsg(message);
@@ -74,13 +77,14 @@ public class GroupMsgHandler{
             channel.basicAck(msg.getMessageProperties().getDeliveryTag(),false);
         } catch (Exception e) {
             try {
+                log.error("处理运维平台集团消息发生异常", e);
                 // 将消费失败的消息移除消息队列,避免重复消费
-                channel.basicReject(msg.getMessageProperties().getDeliveryTag(),false);
-                throw new BusinessException(ResponseCode.C0001.getCode(),
-                        "部门消息消费失败," + e.getMessage());
-            } catch (IOException ex) {
-                throw new BusinessException(ResponseCode.C0001.getCode(),
-                        "部门消息从队列中移除失败," + ex.getMessage());
+//                channel.basicReject(msg.getMessageProperties().getDeliveryTag(),false);
+//                throw new BusinessException(ResponseCode.C0001.getCode(),
+//                        "部门消息消费失败," + e.getMessage());
+            } catch (Exception ex) {
+//                throw new BusinessException(ResponseCode.C0001.getCode(),
+//                        "部门消息从队列中移除失败," + ex.getMessage());
             }
         }
     }

+ 9 - 0
fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java

@@ -192,5 +192,14 @@ public class PersonController {
         }
         return ResultHelper.single(duplicateVO);
     }
+
+    @ApiOperation(value = "根据账号id查询人员信息")
+    @PostMapping("/queryByAccountId")
+    public CommonResult<SimplePersonListItemVO> queryByAccountId(
+            @Valid @RequestBody QueryByAccountIdDTO queryByAccountIdDTO) {
+        Person person = personService.queryByAccountId(queryByAccountIdDTO.getAccountId());
+        SimplePersonListItemVO simplePersonListItemVO = ConvertPersonTool.INSTANCE.convert2SimpleListItem(person);
+        return ResultHelper.single(simplePersonListItemVO);
+    }
 }
 

+ 11 - 8
fm-person/src/main/java/com/persagy/fm/person/jms/handler/AccountMsgHandler.java

@@ -17,6 +17,7 @@ import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
 import com.persagy.fm.workresume.service.IWorkResumeService;
 import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,7 @@ import java.util.List;
  * @version V1.0 2021/3/18 11:38 上午
  **/
 @Service
+@Slf4j
 public class AccountMsgHandler {
     @Autowired
     private IPersonService personService;
@@ -57,7 +59,7 @@ public class AccountMsgHandler {
         queryDepartmentDTO.setType(DepTypeEnum.GROUP.getType());
         List<Department> departments = departmentService.queryDepartmentList(queryDepartmentDTO);
         if (CollectionUtils.isEmpty(departments)) {
-            throw new IllegalArgumentException("尚未创建集团");
+            log.error("创建集团管理员发生异常,尚未创建集团");
         }
         Department group = departments.get(0);
 
@@ -82,10 +84,9 @@ public class AccountMsgHandler {
      */
     public void updateAccount(AccountUpdateMsg accountUpdateMsg) {
         // 根据账号id找到对应的人员信息
-        List<Person> people = personService.queryByAccountId(accountUpdateMsg.getId());
+        Person person = personService.queryByAccountId(accountUpdateMsg.getId());
         // 更新人员的账号信息
-        if (!CollectionUtils.isEmpty(people)) {
-            Person person = people.get(0);
+        if (person != null) {
             person.setUsername(accountUpdateMsg.getUsername());
             person.setName(accountUpdateMsg.getUsername());
             person.setNamePinyin(accountUpdateMsg.getUsername());
@@ -104,6 +105,7 @@ public class AccountMsgHandler {
      */
     @RabbitListener(queues = "${person.amqp.queue.saas}")
     public void process(String message, Channel channel, Message msg) {
+        log.info("接收到运维平台账号消息:{}", message);
         try {
             // 切换数据源
             msgBaseHandler.resetDataSourceByMsg(message);
@@ -126,11 +128,12 @@ public class AccountMsgHandler {
             channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
         } catch (Exception e) {
             try {
+                log.error("处理运维平台账号消息异常", e);
                 // 将消费失败的消息移除消息队列,避免重复消费
-                channel.basicReject(msg.getMessageProperties().getDeliveryTag(), false);
-            } catch (IOException ex) {
-                throw new BusinessException(ResponseCode.C0001.getCode(),
-                        "账号消息从队列中移除失败," + ex.getMessage());
+//                channel.basicReject(msg.getMessageProperties().getDeliveryTag(), false);
+            } catch (Exception ex) {
+//                throw new BusinessException(ResponseCode.C0001.getCode(),
+//                        "账号消息从队列中移除失败," + ex.getMessage());
             }
         }
     }

+ 19 - 0
fm-person/src/main/java/com/persagy/fm/person/model/dto/QueryByAccountIdDTO.java

@@ -0,0 +1,19 @@
+package com.persagy.fm.person.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/4/8 8:27 下午
+ **/
+@Data
+@ApiModel(value = "根据账号id查询账号信息入参")
+public class QueryByAccountIdDTO {
+    @ApiModelProperty(value = "账号id", required = true)
+    @NotNull(message = "账号id不能为空")
+    private String accountId;
+}

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java

@@ -25,7 +25,7 @@ public class UpsertPersonDTO {
     @Pattern(regexp = RegexConstants.TEXT_REGEX, message = "姓名" + RegexConstants.TEXT_REGEX_WARNING)
     private String name;
 
-    @Pattern(regexp = RegexConstants.EN_NUM_REGEX, message = "工号" + RegexConstants.EN_NUM_REGEX_WARNING)
+    @Pattern(regexp = RegexConstants.EN_NUM_BLANK_REGEX, message = "工号" + RegexConstants.EN_NUM_REGEX_WARNING)
     @Length(max = 50, message = "工号长度不能大于50")
     @ApiModelProperty(value = "工号")
     private String jobNumber;
@@ -39,7 +39,7 @@ public class UpsertPersonDTO {
     @ApiModelProperty(value = "员工类型")
     private String personType;
 
-    @Pattern(regexp = RegexConstants.PHONE_REGEX, message = RegexConstants.PHONE_REGEX_WARNING)
+    @Pattern(regexp = RegexConstants.PHONE_OR_BLANK_REGEX, message = RegexConstants.PHONE_REGEX_WARNING)
     @Length(max = 11, message = "手机号码长度不能大于11")
     @ApiModelProperty(value = "手机号码")
     private String phoneNum;
@@ -47,7 +47,7 @@ public class UpsertPersonDTO {
     @ApiModelProperty(value = "证件类型")
     private String certificateType;
 
-    @Pattern(regexp = RegexConstants.ID_CARD_REGEX, message = RegexConstants.ID_CARD_REGEX_WARNING)
+    @Pattern(regexp = RegexConstants.ID_CARD_OR_BLANK_REGEX, message = RegexConstants.ID_CARD_REGEX_WARNING)
     @Length(max = 18, message = "证件号码长度不能大于18")
     @ApiModelProperty(value = "证件号码")
     private String idNumber;

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java

@@ -128,4 +128,7 @@ public class ResponsePersonItemVO {
     @ApiModelProperty("启用状态")
     private String enableState;
 
+    public SimpleObjVO getMainDuty() {
+        return mainDuty == null ? new SimpleObjVO("", "") : mainDuty;
+    }
 }

+ 4 - 1
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -1,13 +1,13 @@
 package com.persagy.fm.person.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.persagy.fm.common.model.vo.SimpleObjVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonInclude;
 
 import java.util.List;
 
@@ -56,4 +56,7 @@ public class ResponsePersonListItemVO {
     @ApiModelProperty("登录权限(年.月.日/永久)")
     private String expireDate;
 
+    public SimpleObjVO getMainDuty() {
+        return mainDuty == null ? new SimpleObjVO("", "") : mainDuty;
+    }
 }

+ 3 - 3
fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java

@@ -114,14 +114,14 @@ public interface IPersonService {
     IPage<ResponsePersonListItemVO> pageQueryPerson(PageQueryPersonDTO pageQueryPersonDTO);
 
     /**
-     * 根据账号id,查询人员列表
+     * 根据账号id,查询人员信息
      *
      * @param accountId 账号id
-     * @return 人员列表
+     * @return 人员
      * @author lixing
      * @version V1.0 2021/3/30 5:00 下午
      */
-    List<Person> queryByAccountId(String accountId);
+    Person queryByAccountId(String accountId);
 
     //    /**
     //     * 重置人员账号的密码

+ 36 - 10
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -22,6 +22,7 @@ import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.profession.service.IProfessionService;
+import com.persagy.fm.saas.account.constant.enums.ExpireTypeEnum;
 import com.persagy.fm.saas.account.model.dto.*;
 import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
 import com.persagy.fm.saas.account.service.ISaasAccountService;
@@ -46,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -222,10 +224,23 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     private String createAccount(AddPersonDTO addPersonDTO) {
         AddSaasAccountDTO addSaasAccountDTO = ConvertPersonTool.INSTANCE.convert2AddSaasAccountDTO(addPersonDTO);
+        addSaasAccountDTO.setValidLast(getAccountExpireType(addPersonDTO.getExpireDate()));
         return saasAccountService.createSaasAccount(addSaasAccountDTO);
     }
 
     /**
+     * 获取账号过期类型
+     *
+     * @param expireDate 过期时间
+     * @return java.lang.String 过期类型
+     * @author lixing
+     * @version V1.0 2021/4/8 9:10 下午
+     */
+    private String getAccountExpireType(Date expireDate) {
+        return expireDate == null ? ExpireTypeEnum.FOREVER.getType() : ExpireTypeEnum.EXPIRY_DATE.getType();
+    }
+
+    /**
      * 检查账号有没有被使用
      *
      * @param username 账号
@@ -442,6 +457,12 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         String personId = updatePersonDTO.getId();
         Person person = getById(personId);
         person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePersonDTO);
+        List<String> professions = updatePersonDTO.getProfessions();
+        if (CollectionUtils.isEmpty(professions)) {
+            person.setProfession("");
+        } else {
+            person.setProfession(String.join(",", professions));
+        }
         person.setModifier(DefaultAppContext.getContext().getAccountId());
         updateById(person);
         // 账号基本信息发生改变,更新账号信息
@@ -453,6 +474,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         if (accountInfoChanged(updatePersonDTO, account)) {
             UpdateSaasAccountDTO updateSaasAccountDTO = ConvertPersonTool.INSTANCE.
                     convert2UpdateSaasAccountDTO(account, updatePersonDTO);
+            updateSaasAccountDTO.setValidLast(getAccountExpireType(updatePersonDTO.getExpireDate()));
             saasAccountService.updateSaasAccount(updateSaasAccountDTO);
         }
 
@@ -480,7 +502,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 重置账号与角色的关联关系
      *
      * @param updatePersonDTO 更新人员入参
-     * @param accountId 账号id
+     * @param accountId       账号id
      * @author lixing
      * @version V1.0 2021/4/8 3:07 下午
      */
@@ -518,7 +540,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 判断账号关联的项目是否发生变化
      *
      * @param saasAccountProjects 账号之前关联的项目
-     * @param projectIds 更新后账号关联的项目
+     * @param projectIds          更新后账号关联的项目
      * @return 是否发生变化
      * @author lixing
      * @version V1.0 2021/4/8 9:40 上午
@@ -532,14 +554,14 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
             return ListUtil.listChanged(projectIdsBeforeUpdate, projectIds);
         }
     }
-    
+
     /**
      * 判断账号关联的角色是否发生变化
      *
      * @param saasAccountRoles 账号之前关联的角色
-     * @param mainDuty 更新后,账号关联的主岗
-     * @param otherDuties 更新后,账号关联的副岗
-     * @param otherRoles 更新后,账号关联的附加角色
+     * @param mainDuty         更新后,账号关联的主岗
+     * @param otherDuties      更新后,账号关联的副岗
+     * @param otherRoles       更新后,账号关联的附加角色
      * @return 是否发生变化
      * @author lixing
      * @version V1.0 2021/4/8 9:37 上午
@@ -582,7 +604,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 判断账号基本信息是否发生变化
      *
      * @param updatePersonDTO 更新人员入参
-     * @param account 账号实例
+     * @param account         账号实例
      * @return 是否发生变化
      * @author lixing
      * @version V1.0 2021/4/8 9:38 上午
@@ -631,14 +653,18 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     @Override
-    public List<Person> queryByAccountId(String accountId) {
+    public Person queryByAccountId(String accountId) {
         if (StringUtils.isBlank(accountId)) {
             throw new IllegalArgumentException("根据账号id查询人员,账号id为空");
         }
         QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
         queryWrapper.eq(Person.PROP_ACCOUNT_ID, accountId);
-        return list(queryWrapper);
+        List<Person> people = list(queryWrapper);
+        if (!CollectionUtils.isEmpty(people)) {
+            return people.get(0);
+        }
+        return null;
     }
 
     /**
@@ -800,7 +826,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         }
         personIds.forEach(personId -> {
             UpdatePersonDTO updatePersonDTO = new UpdatePersonDTO();
-//            updatePerson();
+            //            updatePerson();
         });
 
     }

+ 27 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/constant/enums/ExpireTypeEnum.java

@@ -0,0 +1,27 @@
+package com.persagy.fm.saas.account.constant.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 过期类型枚举类
+ *
+ * @author lixing
+ * @version V1.0 2021/4/8 8:43 下午
+ **/
+public enum ExpireTypeEnum {
+    EXPIRY_DATE("0", "期内有效"),
+    FOREVER("1", "永久有效");
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    ExpireTypeEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+}

+ 2 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/model/dto/AddSaasAccountDTO.java

@@ -24,5 +24,7 @@ public class AddSaasAccountDTO extends SaasBaseDTO {
     private String headPortrait;
     private Date validStartTime;
     private Date validEndTime;
+    private String validLast;
     private String remark;
+
 }

+ 1 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/model/dto/UpdateSaasAccountDTO.java

@@ -25,6 +25,7 @@ public class UpdateSaasAccountDTO extends SaasBaseDTO {
     private String headPortrait;
     private Date validStartTime;
     private Date validEndTime;
+    private String validLast;
     private String remark;
 
 }