|
@@ -1,6 +1,7 @@
|
|
package com.github.jfcloud.gene.sample.service.biz;
|
|
package com.github.jfcloud.gene.sample.service.biz;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.date.DatePattern;
|
|
import cn.hutool.core.date.DatePattern;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.lang.Assert;
|
|
import cn.hutool.core.lang.Assert;
|
|
@@ -13,15 +14,19 @@ import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.github.jfcloud.admin.api.sys.dto.message.MessageUserDTO;
|
|
import com.github.jfcloud.gene.cache.UserIdNameCache;
|
|
import com.github.jfcloud.gene.cache.UserIdNameCache;
|
|
import com.github.jfcloud.gene.common.constant.StrConstant;
|
|
import com.github.jfcloud.gene.common.constant.StrConstant;
|
|
import com.github.jfcloud.gene.common.constant.WhetherEnum;
|
|
import com.github.jfcloud.gene.common.constant.WhetherEnum;
|
|
import com.github.jfcloud.gene.common.util.CustomIdGenerator;
|
|
import com.github.jfcloud.gene.common.util.CustomIdGenerator;
|
|
|
|
+import com.github.jfcloud.gene.common.util.UserUtil;
|
|
import com.github.jfcloud.gene.constants.GeneStatusEnum;
|
|
import com.github.jfcloud.gene.constants.GeneStatusEnum;
|
|
import com.github.jfcloud.gene.file.service.FileInfoService;
|
|
import com.github.jfcloud.gene.file.service.FileInfoService;
|
|
import com.github.jfcloud.gene.flow.entity.FlowAudit;
|
|
import com.github.jfcloud.gene.flow.entity.FlowAudit;
|
|
import com.github.jfcloud.gene.flow.service.FlowAuditService;
|
|
import com.github.jfcloud.gene.flow.service.FlowAuditService;
|
|
|
|
+import com.github.jfcloud.gene.flow.service.NotifyService;
|
|
import com.github.jfcloud.gene.sample.entity.*;
|
|
import com.github.jfcloud.gene.sample.entity.*;
|
|
|
|
+import com.github.jfcloud.gene.sample.enums.SampleTypeEnum;
|
|
import com.github.jfcloud.gene.sample.mapper.InspectionCommissionMapper;
|
|
import com.github.jfcloud.gene.sample.mapper.InspectionCommissionMapper;
|
|
import com.github.jfcloud.gene.sample.mapper.SampleAnimalMapper;
|
|
import com.github.jfcloud.gene.sample.mapper.SampleAnimalMapper;
|
|
import com.github.jfcloud.gene.sample.mapper.SampleCheckOrderMapper;
|
|
import com.github.jfcloud.gene.sample.mapper.SampleCheckOrderMapper;
|
|
@@ -31,6 +36,7 @@ import com.github.jfcloud.gene.sample.service.SampleAnimalService;
|
|
import com.github.jfcloud.gene.sample.service.SampleCheckItemService;
|
|
import com.github.jfcloud.gene.sample.service.SampleCheckItemService;
|
|
import com.github.jfcloud.gene.sample.service.SampleEditService;
|
|
import com.github.jfcloud.gene.sample.service.SampleEditService;
|
|
import com.github.jfcloud.gene.sample.vo.*;
|
|
import com.github.jfcloud.gene.sample.vo.*;
|
|
|
|
+import com.github.jfcloud.gene.sys.service.DBSystemPropertiesService;
|
|
import com.github.jfcloud.gene.util.WordDataService;
|
|
import com.github.jfcloud.gene.util.WordDataService;
|
|
import com.github.jfcloud.gene.util.WordUtil;
|
|
import com.github.jfcloud.gene.util.WordUtil;
|
|
import com.github.jfcloud.rich.vo.HtmlParseVo;
|
|
import com.github.jfcloud.rich.vo.HtmlParseVo;
|
|
@@ -42,7 +48,9 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
|
|
+import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -60,6 +68,8 @@ public class SampleAnimalServiceImpl extends ServiceImpl<SampleAnimalMapper, Sam
|
|
private final FileInfoService fileInfoService;
|
|
private final FileInfoService fileInfoService;
|
|
private final UserIdNameCache userIdNameCache;
|
|
private final UserIdNameCache userIdNameCache;
|
|
private final FlowAuditService flowAuditService;
|
|
private final FlowAuditService flowAuditService;
|
|
|
|
+ private final DBSystemPropertiesService systemPropertiesService;
|
|
|
|
+ private final NotifyService notifyService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void removeBySampleId(Long sampleId) {
|
|
public void removeBySampleId(Long sampleId) {
|
|
@@ -257,6 +267,69 @@ public class SampleAnimalServiceImpl extends ServiceImpl<SampleAnimalMapper, Sam
|
|
fileInfoService.uploadFileWithFileName(modelName, fileName, sampleInfo.getId(), sampleInfo.getStatus(), dataMap);
|
|
fileInfoService.uploadFileWithFileName(modelName, fileName, sampleInfo.getId(), sampleInfo.getStatus(), dataMap);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void afterExecute(Long sampleId) {
|
|
|
|
+ //钉钉消息通知申请人、送检人、样本接收人、检测人员
|
|
|
|
+ if (!systemPropertiesService.getBooleanValue("sample.afterExecute.dingding.enable")) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ SampleInfo sampleInfo = sampleInfoMapper.selectById(sampleId);
|
|
|
|
+
|
|
|
|
+ String projectType = "样本送检/" + Objects.requireNonNull(SampleTypeEnum.resolve(sampleInfo.getType())).getLabel();
|
|
|
|
+ if (StrUtil.isNotBlank(sampleInfo.getProjectNo())) {
|
|
|
|
+ projectType += "/" + sampleInfo.getProjectNo();
|
|
|
|
+ }
|
|
|
|
+ if (StrUtil.isNotBlank(sampleInfo.getProjectName())) {
|
|
|
|
+ projectType += "/" + sampleInfo.getProjectName();
|
|
|
|
+ }
|
|
|
|
+ String dingMsg = String.format("【%s】【%s】已执行项目", projectType, UserUtil.getNickName());
|
|
|
|
+
|
|
|
|
+ Set<Long> userIds = new HashSet<>();
|
|
|
|
+
|
|
|
|
+ //申请人
|
|
|
|
+ userIds.add(sampleInfo.getApplicantId());
|
|
|
|
+ //检测人员
|
|
|
|
+ if (StrUtil.isNotBlank(sampleInfo.getInspector())) {
|
|
|
|
+ JSON.parseArray(sampleInfo.getInspector()).forEach(item -> {
|
|
|
|
+ JSONObject obj = (JSONObject) item;
|
|
|
|
+ if (obj.containsKey("id")) {
|
|
|
|
+ userIds.add(obj.getLong("id"));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ //委托单接收人
|
|
|
|
+ List<CommissionVo> commissionList = inspectionCommissionMapper.getCommissionList(sampleId);
|
|
|
|
+ if (CollUtil.isNotEmpty(commissionList)) {
|
|
|
|
+ commissionList.forEach(commission -> {
|
|
|
|
+ if (commission.getSubmitUserId() != null) {
|
|
|
|
+ userIds.add(commission.getSubmitUserId());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ //送检单接收人、送检人
|
|
|
|
+ List<SampleCheckOrderVo> orderList = checkOrderMapper.getOrderList(sampleId);
|
|
|
|
+ if (CollUtil.isNotEmpty(orderList)) {
|
|
|
|
+ orderList.forEach(order -> {
|
|
|
|
+ if (order.getReceiveUserId() != null) {
|
|
|
|
+ userIds.add(order.getReceiveUserId());
|
|
|
|
+ }
|
|
|
|
+ if (order.getSendUserId() != null) {
|
|
|
|
+ userIds.add(order.getSendUserId());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<MessageUserDTO> users = userIds.stream()
|
|
|
|
+ .map(x -> {
|
|
|
|
+ MessageUserDTO messageUserDTO = new MessageUserDTO();
|
|
|
|
+ messageUserDTO.setUserId(x);
|
|
|
|
+ return messageUserDTO;
|
|
|
|
+ })
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ notifyService.sendDingding("样本送检", dingMsg, users);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public SampleAnimalVo getDetail(Long sampleId) {
|
|
public SampleAnimalVo getDetail(Long sampleId) {
|
|
SampleAnimal sampleAnimal = getOne(new LambdaQueryWrapper<>(SampleAnimal.class)
|
|
SampleAnimal sampleAnimal = getOne(new LambdaQueryWrapper<>(SampleAnimal.class)
|