|
@@ -4,20 +4,31 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmDeptTaskTypeConfig;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
+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.enums.EnableEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDeptTaskTypeConfigMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskTypeConfigService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
+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.util.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -42,6 +53,10 @@ public class WmDeptTaskTypeConfigServiceImpl extends ServiceImpl<WmDeptTaskTypeC
|
|
|
|
|
|
private final WmTaskTypeService wmTaskTypeService;
|
|
|
|
|
|
+ private final WmTaskService wmTaskService;
|
|
|
+
|
|
|
+ private final WmScorePackageService wmScorePackageService;
|
|
|
+
|
|
|
private final SysDeptRelationMapper sysDeptRelationMapper;
|
|
|
|
|
|
private final WmDaDrugEntMapper wmDaDrugEntMapper;
|
|
@@ -145,4 +160,104 @@ public class WmDeptTaskTypeConfigServiceImpl extends ServiceImpl<WmDeptTaskTypeC
|
|
|
|
|
|
return deptTaskTypeConfigDTO;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据企业的任务类型配置查询任务列表
|
|
|
+ *
|
|
|
+ * @param taskTypeName 任务类型名称
|
|
|
+ * @param taskStatus 任务状态
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public IPage<WmTask> listTaskByDeptTaskType(Page<WmTask> page, String taskTypeName, String[] taskStatus) {
|
|
|
+ Integer deptId = SecurityUtils.getUser().getDeptId();
|
|
|
+ WmDeptTaskTypeConfig deptTaskTypeConfig = this.getOne(Wrappers.<WmDeptTaskTypeConfig>lambdaQuery()
|
|
|
+ .eq(WmDeptTaskTypeConfig::getDeptId, deptId));
|
|
|
+ if (deptTaskTypeConfig != null) {
|
|
|
+ // 查询该企业当前任务类型下 的任务类型配置数据
|
|
|
+ List<WmDeptTaskTypeConfigJsonDTO> configJsonDTOList =
|
|
|
+ JSON.parseArray(deptTaskTypeConfig.getTaskTypeJson(), WmDeptTaskTypeConfigJsonDTO.class);
|
|
|
+ WmDeptTaskTypeConfigJsonDTO taskTypeConfigJsonDTO = configJsonDTOList.stream()
|
|
|
+ .filter(configJsonDTO -> configJsonDTO.getTaskTypeName().equals(taskTypeName))
|
|
|
+ .findFirst()
|
|
|
+ .get();
|
|
|
+ // 查询任务名称对应的基础任务类型id
|
|
|
+ WmTaskType baseTaskType = wmTaskTypeService.getOne(Wrappers.<WmTaskType>lambdaQuery()
|
|
|
+ .eq(WmTaskType::getTaskTypeLevel, "1")
|
|
|
+ .eq(WmTaskType::getTaskTypeName, taskTypeName)
|
|
|
+ .eq(WmTaskType::getEnableFlag, EnableEnum.ENABLE.val()));
|
|
|
+ // 根据是否勾选了关联下级,查询当前企业对应的积分包
|
|
|
+ List<String> scorePackageIdList = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<WmScorePackage> scorePackageWrapper = Wrappers.lambdaQuery();
|
|
|
+ scorePackageWrapper.eq(WmScorePackage::getSendPackageDeptId, deptId);
|
|
|
+ scorePackageWrapper.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val());
|
|
|
+ scorePackageWrapper.eq(WmScorePackage::getPackageType1, PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val());
|
|
|
+ scorePackageWrapper.eq(WmScorePackage::getPackageType2, PackageTypeEnum.TYPE2_TASK_PACKAGE.val());
|
|
|
+ scorePackageWrapper.ge(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.IN_PROGRESS.val());
|
|
|
+ scorePackageWrapper.in(WmScorePackage::getTypeid, "3", "4");
|
|
|
+ if (taskTypeConfigJsonDTO.getAssociateLower()) {
|
|
|
+ // 配置了关联下级,则同时查询'对应机构下发的企业承接的任务,再下发给个人的积分包'
|
|
|
+// scorePackageWrapper.isNotNull(WmScorePackage::getAcceptSug);
|
|
|
+// scorePackageWrapper.apply("length(accept_sug) > 0");
|
|
|
+ List<WmScorePackage> scorePackageList = wmScorePackageService.list(scorePackageWrapper);
|
|
|
+ if (CollectionUtil.isNotEmpty(scorePackageList)) {
|
|
|
+ // 遍历查找所有下级积分包
|
|
|
+ scorePackageList.forEach(scorePackage -> getAllLowerScorePackages(scorePackage.getId(), scorePackageList));
|
|
|
+ scorePackageIdList = scorePackageList.stream().map(WmScorePackage::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 未勾选关联下级,则全部任务中只显示未关联积分包的任务,就是从企业直接下发给医药代表的任务 是未关联积分包吗?代理商可以有吧???
|
|
|
+ scorePackageWrapper.and(wrapper -> wrapper.isNull(WmScorePackage::getAcceptSug)
|
|
|
+ .or()
|
|
|
+ .apply("length(accept_sug) = 0"));
|
|
|
+ List<WmScorePackage> scorePackageList = wmScorePackageService.list(scorePackageWrapper);
|
|
|
+ if (CollectionUtil.isNotEmpty(scorePackageList)) {
|
|
|
+ scorePackageIdList = scorePackageList.stream().map(WmScorePackage::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 用户类型
|
|
|
+ List<String> taskUserTypeList = new ArrayList<>();
|
|
|
+ if (taskTypeConfigJsonDTO.getZbdbStatusEnable() && taskTypeConfigJsonDTO.getZbdbStatusSelect()) {
|
|
|
+ taskUserTypeList.add("5");
|
|
|
+ }
|
|
|
+ if (taskTypeConfigJsonDTO.getYydbStatusEnable() && taskTypeConfigJsonDTO.getZbdbStatusSelect()) {
|
|
|
+ taskUserTypeList.add("6");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CollectionUtil.isNotEmpty(scorePackageIdList) && CollectionUtil.isNotEmpty(taskUserTypeList)) {
|
|
|
+ // 查询任务列表
|
|
|
+ LambdaQueryWrapper<WmTask> taskWrapper = Wrappers.lambdaQuery();
|
|
|
+ taskWrapper.eq(WmTask::getTaskTypeId, baseTaskType.getId());
|
|
|
+ taskWrapper.in(WmTask::getScorePackageId, scorePackageIdList);
|
|
|
+ taskWrapper.in(WmTask::getTaskUserType, taskUserTypeList);
|
|
|
+ if (ArrayUtil.isNotEmpty(taskStatus)) {
|
|
|
+ taskWrapper.in(WmTask::getTaskStatus, taskStatus);
|
|
|
+ } else {
|
|
|
+ taskWrapper.eq(WmTask::getTaskStatus, TaskStatusEnum.UNDER_REVIEW.val());
|
|
|
+ }
|
|
|
+ Page<WmTask> taskPage = wmTaskService.page(page, taskWrapper);
|
|
|
+ return taskPage;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询所有下级的积分包
|
|
|
+ *
|
|
|
+ * @param scorePackageId
|
|
|
+ * @param scorePackageList
|
|
|
+ */
|
|
|
+ private void getAllLowerScorePackages(String scorePackageId, List<WmScorePackage> scorePackageList) {
|
|
|
+ if (scorePackageList.size() <= 999) {
|
|
|
+ List<WmScorePackage> subList = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
|
|
|
+ .eq(WmScorePackage::getRelationScoreId, scorePackageId)
|
|
|
+ .eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val()));
|
|
|
+ if (CollectionUtil.isNotEmpty(subList)) {
|
|
|
+ scorePackageList.addAll(subList);
|
|
|
+ subList.forEach(scorePackage -> getAllLowerScorePackages(scorePackage.getId(), scorePackageList));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|