Bläddra i källkod

fix: 1.优化相册转发关联积分包查询;2.新增积分包关联上级推广药品/兼容历史推广药品企业问题修改

lixuesong 1 år sedan
förälder
incheckning
8e60325054

+ 33 - 36
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -2937,50 +2937,47 @@ public class ApiController {
 
 		List<Map<String, Object>> listMap = new ArrayList<>();
 
-		for (WmScorePackageStatus item : statusList) {
-			WmScorePackage wmScorePackage = wmScorePackageService.getOne(Wrappers.<WmScorePackage>lambdaQuery()
-					.eq(WmScorePackage::getId, item.getPackageId()));
-			if (null != wmScorePackage) {
-				if ("0".equals(wmScorePackage.getTaskAddFlag())) {
-					continue;
-				}
-				if ("1".equals(wmScorePackage.getEnableFlag())) {
-					continue;
-				}
-				if (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2())
-						&& !PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
-					continue;
-				}
-				if ("3".equals(wmScorePackage.getPackageType1())) {
-					continue;
-				}
+		// 获取领包记录对应的积分包ID && 获取积分包信息
+		Set<String> pkgIds = statusList.stream().map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
+		// 过滤有效任务类型
+		List<WmScoreTaskType> scoreTaskTypes = wmScoreTaskTypeService.list(Wrappers.<WmScoreTaskType>lambdaQuery()
+				.eq(WmScoreTaskType::getTaskTypeId, type)
+				.in(WmScoreTaskType::getScoreId, pkgIds));
 
-				// 推广药品企业drugProducerList不为空, 则走推广药品企业的判断(历史数据判断), 否则判断推广药品是否包含(新数据判断)
-				if (ArrayUtil.isEmpty(wmScorePackage.getDrugProducerList())) {
-					// 过滤只要关联了推广药品的积分包
-					if (!ArrayUtil.contains(wmScorePackage.getDrugtable(), album.getGlyp())) {
-						continue;
-					}
-				} else {
-					// 推广药品企业的过滤条件(兼容历史数据)
-					if (!ArrayUtil.contains(wmScorePackage.getDrugProducerList(), drugProducer)) {
-						continue;
-					}
-				}
+		Set<String> availPkgIds = scoreTaskTypes.stream().map(WmScoreTaskType::getScoreId).collect(Collectors.toSet());
+		if (CollUtil.isEmpty(availPkgIds)) {
+			return R.ok(Collections.emptyList());
+		}
 
-				// 过滤有效任务类型
-				WmScoreTaskType taskType = new WmScoreTaskType();
-				taskType.setTaskTypeId(type);
-				taskType.setScoreId(wmScorePackage.getId());
-				int total = wmScoreTaskTypeService.count(Wrappers.query(taskType));
+		List<WmScorePackage> packages = wmScorePackageService.listByIds(availPkgIds);
+
+		for (WmScorePackage wmScorePackage : packages) {
+
+			if ("0".equals(wmScorePackage.getTaskAddFlag())
+					|| "1".equals(wmScorePackage.getEnableFlag())
+					|| "3".equals(wmScorePackage.getPackageType1())
+					|| (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2())
+					&& !PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1()))) {
+				continue;
+			}
 
-				if (total != 0) {
+			// 推广药品企业drugProducerList不为空, 则走推广药品企业的判断(历史数据判断), 否则判断推广药品是否包含(新数据判断)
+			if (ArrayUtil.isEmpty(wmScorePackage.getDrugProducerList())) {
+				// 只要关联了推广药品的积分包
+				if (ArrayUtil.contains(wmScorePackage.getDrugtable(), album.getGlyp())) {
+					Map<String, Object> map = new HashMap<>();
+					map.put("label", wmScorePackage.getScorePackageName());
+					map.put("value", wmScorePackage.getId());
+					listMap.add(map);
+				}
+			} else {
+				// 只要关联了推广药品企业的积分包(兼容历史数据)
+				if (ArrayUtil.contains(wmScorePackage.getDrugProducerList(), drugProducer)) {
 					Map<String, Object> map = new HashMap<>();
 					map.put("label", wmScorePackage.getScorePackageName());
 					map.put("value", wmScorePackage.getId());
 					listMap.add(map);
 				}
-
 			}
 		}
 		return R.ok(listMap);

+ 9 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -1669,13 +1669,21 @@ public class WmScorePackageController {
 		wmScorePackage.setSendPackageDeptId(deptId.toString());
 		wmScorePackage.setAllocationDate(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(now));
 
-		if (StringUtils.isNotEmpty(relPkgId) && ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList())) {
+		// 关联上级推广药品企业(兼容历史)
+		if (StringUtils.isNotEmpty(relPkgId)) {
 			WmScorePackage relateSp = wmScorePackageService.getById(relPkgId);
 			if (relateSp != null) {
 				Set<String> producerNames = wmDaDrugEntDrugtableService.listDrugProducerByDeptId(Integer.parseInt(relateSp.getDeptId()));
 				wmScorePackage.setDrugProducerList(producerNames.toArray(new String[0]));
 			}
 		}
+		// 关联上级推广药品
+		if (StringUtils.isNotEmpty(relPkgId) && ArrayUtils.isEmpty(wmScorePackage.getDrugtable())) {
+			WmScorePackage relateSp = wmScorePackageService.getById(relPkgId);
+			if (relateSp != null) {
+				wmScorePackage.setDrugtable(wmScorePackage.getDrugtable());
+			}
+		}
 
 		SysDept sysDeptRelatedService = sysDeptService.getById(Integer.valueOf(wmScorePackage.getRelatedService()));
 		if (StrUtil.isBlank(wmScorePackage.getTypeid())) {

+ 1 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmScorePackage.java

@@ -473,6 +473,7 @@ public class WmScorePackage extends Model<WmScorePackage> {
 	/**
 	 * 关联药品的生产厂商列表
 	 */
+	@Deprecated
 	@TableField(value = "drug_producer")
 	private String[] drugProducerList;
 

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -54,6 +54,7 @@ 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.lang.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
@@ -769,6 +770,15 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			if (relationScore == null) {
 				return R.failed("未查询到关联积分包!");
 			}
+
+			// 关联上级推广药品企业(兼容历史)
+			Set<String> producerNames = wmDaDrugEntDrugtableService.listDrugProducerByDeptId(Integer.parseInt(relationScore.getDeptId()));
+			wmScorePackage.setDrugProducerList(producerNames.toArray(new String[0]));
+			// 关联上级推广药品
+			if (ArrayUtil.isEmpty(wmScorePackage.getDrugtable())) {
+				wmScorePackage.setDrugtable(wmScorePackage.getDrugtable());
+			}
+
 			wmScorePackage.setDrugEntId(relationScore.getDrugEntId());
 			wmScorePackage.setRuleId(relationScore.getRuleId());
 			wmScorePackage.setSendPackageDeptId(currentUser.getDeptId() + "");