|
@@ -17,7 +17,9 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
@@ -35,22 +37,31 @@ import com.qunzhixinxi.hnqz.admin.entity.WmReport;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.dto.WmDeptTaskTypeConfigDTO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.dto.WmDeptTaskTypeConfigJsonDTO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmReportMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskTypeConfigService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmReportService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -58,9 +69,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -69,18 +82,22 @@ import java.util.stream.Collectors;
|
|
|
* @author pigx code generator
|
|
|
* @date 2020-12-21 20:57:26
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> implements WmReportService {
|
|
|
|
|
|
private final WmScorePackageService wmScorePackageService;
|
|
|
private final WmScorePackageStatusService wmScorePackageStatusService;
|
|
|
+ private final WmTaskTypeService wmTaskTypeService;
|
|
|
private final WmTaskService wmTaskService;
|
|
|
+ private final WmTaskMapper wmTaskMapper;
|
|
|
private final WmReportMapper wmReportMapper;
|
|
|
private final SysUserService sysUserService;
|
|
|
private final WmDaDistributionService wmDaDistributionService;
|
|
|
private final WmDaPharmacyService wmDaPharmacyService;
|
|
|
private final WmDaHospitalService wmDaHospitalService;
|
|
|
+ private final WmDeptTaskTypeConfigService wmDeptTaskTypeConfigService;
|
|
|
private final RedisTemplate<String,String> redisTemplate;
|
|
|
|
|
|
@Override
|
|
@@ -385,6 +402,45 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
return R.ok("审批成功");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 企业根据任务类型审核任务
|
|
|
+ *
|
|
|
+ * @param taskIds
|
|
|
+ * @param approvalOpinion
|
|
|
+ * @param approvalInfo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R<?> approvalReportByTaskType(List<String> taskIds, String approvalOpinion, String approvalInfo) {
|
|
|
+ LambdaQueryWrapper<WmTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(WmTask::getId, taskIds);
|
|
|
+ List<WmTask> wmTaskList = wmTaskService.list(queryWrapper);
|
|
|
+
|
|
|
+ // 根据task任务表 反查report报告表
|
|
|
+ // 以reportId(reportDrugId或reportOneId字段)为key进行分类
|
|
|
+ Map<Integer, List<WmTask>> reportIdMap = wmTaskList.stream()
|
|
|
+ .filter(wmTask -> wmTask.getReportDrugId() != null || wmTask.getReportOneId() != null)
|
|
|
+ .collect(Collectors.groupingBy(wmTask -> wmTask.getReportDrugId() != null ?
|
|
|
+ wmTask.getReportDrugId() : wmTask.getReportOneId()));
|
|
|
+
|
|
|
+ AtomicBoolean successFlag = new AtomicBoolean(true);
|
|
|
+ reportIdMap.forEach((reportId, wmTasks) -> {
|
|
|
+ WmReport queryReport = this.getById(reportId);
|
|
|
+ List<String> taskIdList = wmTasks.stream().map(WmTask::getId).collect(Collectors.toList());
|
|
|
+ log.info("企业批量审核任务reportId={}, taskIds={}", reportId, taskIdList);
|
|
|
+
|
|
|
+ // 调用原有审核方法
|
|
|
+ R approvalReportResult = this.approvalReport(queryReport, taskIdList, approvalOpinion, approvalInfo);
|
|
|
+
|
|
|
+ if (approvalReportResult.getCode() != 0) {
|
|
|
+ successFlag.set(false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return successFlag.get() ? R.ok("审批成功") : R.failed("审批失败");
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 报告管理--查看
|
|
|
* @param page
|
|
@@ -453,7 +509,73 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
return R.ok(pages);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据任务类型查询任务
|
|
|
+ *
|
|
|
+ * @param page 分页参数
|
|
|
+ * @param taskTypeName 任务类型名称
|
|
|
+ * @param entTaskStatus 审核状态 0待审核 1通过,2不通过
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R<?> taskPageByTaskType(Page<WmTaskVO> page, String taskTypeName, String[] entTaskStatus) {
|
|
|
+
|
|
|
+ LambdaQueryWrapper<WmTaskType> queryWrapper = Wrappers.<WmTaskType>lambdaQuery()
|
|
|
+ .eq(WmTaskType::getTaskTypeLevel, "1")
|
|
|
+ .eq(WmTaskType::getEnableFlag, EnableEnum.ENABLE.val());
|
|
|
+ if (StrUtil.isNotBlank(taskTypeName)) {
|
|
|
+ queryWrapper.eq(WmTaskType::getTaskTypeName, taskTypeName);
|
|
|
+ } else {
|
|
|
+ // 查询该企业配置的任务类型
|
|
|
+ WmDeptTaskTypeConfigDTO deptTaskTypeConfig =
|
|
|
+ wmDeptTaskTypeConfigService.getDeptTaskTypeConfig(SecurityUtils.getUser().getDeptId());
|
|
|
+ List<String> taskTypeNames = deptTaskTypeConfig.getConfigList().stream()
|
|
|
+ .map(WmDeptTaskTypeConfigJsonDTO::getTaskTypeName)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ queryWrapper.in(WmTaskType::getTaskTypeName, taskTypeNames);
|
|
|
+ }
|
|
|
+ List<WmTaskType> baseTaskTypeList = wmTaskTypeService.list(queryWrapper);
|
|
|
+ if (CollUtil.isEmpty(baseTaskTypeList)) {
|
|
|
+ log.warn("任务类型不存在tastTypeName={}", baseTaskTypeList);
|
|
|
+ return R.failed("任务类型不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ WmReport queryReport = new WmReport();
|
|
|
+ queryReport.setDrugEntId(SecurityUtils.getUser().getDeptId());
|
|
|
+ queryReport.setTaskTypeIdList(baseTaskTypeList.stream().map(WmTaskType::getId).collect(Collectors.toList()));
|
|
|
+ if (ArrayUtil.isNotEmpty(entTaskStatus)) {
|
|
|
+ queryReport.setEntTaskStatus(Arrays.asList(entTaskStatus));
|
|
|
+ }
|
|
|
+ IPage<WmTaskVO> pages = wmTaskMapper.entTaskPageByTaskType(page, queryReport);
|
|
|
+
|
|
|
+ Page<Map<String, Object>> mapPage = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
|
|
|
+ List<WmTaskVO> taskList = pages.getRecords();
|
|
|
+ if (CollUtil.isNotEmpty(taskList)) {
|
|
|
+ List<Map<String, Object>> resList = taskList.stream().map(wmtask -> {
|
|
|
+ Map<String, Object> map = JSON.parseObject(JSON.toJSONString(wmtask), Map.class);
|
|
|
+ map.put("reportNo", wmtask.getReportNo());
|
|
|
+ map.put("scoreId", wmtask.getScoreId());
|
|
|
+ if ("0".equals(wmtask.getTypeid())) {//药企
|
|
|
+ map.put("reportApprovalOpinion", wmtask.getReportDrugApprovalOpinion());
|
|
|
+ } else if ("1".equals(wmtask.getTypeid())) {//一级代理商类型
|
|
|
+ map.put("reportApprovalOpinion", wmtask.getReportDrugApprovalOpinion());
|
|
|
+ } else if ("2".equals(wmtask.getTypeid())) {//二级代理商类型
|
|
|
+ map.put("reportApprovalOpinion", wmtask.getReportOneApprovalOpinion());
|
|
|
+ }
|
|
|
+ // 姓名
|
|
|
+ if (StringUtils.isNumeric(wmtask.getTaskUserId())) {
|
|
|
+ SysUser user = sysUserService.getById(Integer.parseInt(wmtask.getTaskUserId()));
|
|
|
+ map.put("taskUsername", user.getRealname());
|
|
|
+ }
|
|
|
+ // 积分包名称设置到scorePackageId上 适配页面
|
|
|
+ map.put("scorePackageId", wmtask.getScorePackageName());
|
|
|
+ return map;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
|
+ mapPage.setRecords(resList);
|
|
|
+ }
|
|
|
+ return R.ok(mapPage);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|