فهرست منبع

feat: shegnuo quiz 2

shc 1 سال پیش
والد
کامیت
d2c6fdf6ea
1فایلهای تغییر یافته به همراه132 افزوده شده و 121 حذف شده
  1. 132 121
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

+ 132 - 121
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -179,7 +179,6 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -241,50 +240,78 @@ public class ApiController {
 	private final WmQuizService quizService;
 	private final WmPlatformQuizTestResultService platformQuizTestResultService;
 
+	private static final String[] RANDOM_QUIZ_URL = {"https://lit.yaoyi.net/s/785f65dc549b4b99b5a26da5b4dbcc15"};
+
 	@SysLog("通过任务类型获取表单配置")
 	@GetMapping("/getTaskContentConfigByTaskTypeId/{taskTypeId}")
-	public R getById(@PathVariable String taskTypeId) {
+	public R<?> getById(@PathVariable String taskTypeId) {
 		if (null == taskTypeId) {
 			return R.failed("taskTypeId不能为空");
-
 		}
 
-		Map<String, Object> connfigMap = new LinkedHashMap<>();
+		Map<String, Object> configMap = new LinkedHashMap<>();
 
 		// 库存调查需要调查常规的/首次的/库存盘点-中药颗粒剂的
-		if ("14".equals(taskTypeId) || "31".equals(taskTypeId) || "37".equals(taskTypeId)) {
-			// 常规调查
-			connfigMap.put("14", getTaskContentConfigByTaskTypeId("14"));
-			// 首次调查
-			connfigMap.put("31", getTaskContentConfigByTaskTypeId("31"));
-			// 库存盘点-中药颗粒剂
-			connfigMap.put("37", getTaskContentConfigByTaskTypeId("37"));
-		} else if ("39".equals(taskTypeId) || "40".equals(taskTypeId) || "41".equals(taskTypeId)) {
-			// 应收账款回款-A类、应收账款回款-B类、应收账款回款-C类 都取39
-			connfigMap = getTaskContentConfigByTaskTypeId("39");
-		} else if ("42".equals(taskTypeId) || "43".equals(taskTypeId) || "44".equals(taskTypeId)) {
-			// 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
-			connfigMap = getTaskContentConfigByTaskTypeId("42");
-		} else if ("47".equals(taskTypeId) || "48".equals(taskTypeId) || "49".equals(taskTypeId) || "50".equals(taskTypeId)) {
-			// 库存调研、竞品调研、培训、使用情况调查 都取47
-			connfigMap = getTaskContentConfigByTaskTypeId("47");
-		} else if ("56".equals(taskTypeId) || "57".equals(taskTypeId)) {
-			// 56首营管理-诊所
-			connfigMap.put("56", getTaskContentConfigByTaskTypeId("56"));
-			// 57首营管理-药店
-			connfigMap.put("57", getTaskContentConfigByTaskTypeId("57"));
-		} else if ("1".equals(taskTypeId) || "2".equals(taskTypeId) || "3".equals(taskTypeId) || "4".equals(taskTypeId) || "64".equals(taskTypeId)) {
-			// 1,医院科室推广会 2,区域学术沙龙 3,城市卫星会 4,省级学科年会 64,线上科室会
-			connfigMap.put("1", getTaskContentConfigByTaskTypeId("1"));
-			connfigMap.put("2", getTaskContentConfigByTaskTypeId("2"));
-			connfigMap.put("3", getTaskContentConfigByTaskTypeId("3"));
-			connfigMap.put("4", getTaskContentConfigByTaskTypeId("4"));
-			connfigMap.put("64", getTaskContentConfigByTaskTypeId("64"));
-		} else {
-			connfigMap = getTaskContentConfigByTaskTypeId(taskTypeId);
+		switch (taskTypeId) {
+			case "14":
+			case "31":
+			case "37":
+				// 常规调查
+				configMap.put("14", getTaskContentConfigByTaskTypeId("14"));
+				// 首次调查
+				configMap.put("31", getTaskContentConfigByTaskTypeId("31"));
+				// 库存盘点-中药颗粒剂
+				configMap.put("37", getTaskContentConfigByTaskTypeId("37"));
+				break;
+			case "39":
+			case "40":
+			case "41":
+				// 应收账款回款-A类、应收账款回款-B类、应收账款回款-C类 都取39
+				configMap = getTaskContentConfigByTaskTypeId("39");
+				break;
+			case "42":
+			case "43":
+			case "44":
+				// 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
+				configMap = getTaskContentConfigByTaskTypeId("42");
+				break;
+			case "47":
+			case "48":
+			case "49":
+			case "50":
+				// 库存调研、竞品调研、培训、使用情况调查 都取47
+				configMap = getTaskContentConfigByTaskTypeId("47");
+				break;
+			case "56":
+			case "57":
+				// 56首营管理-诊所
+				configMap.put("56", getTaskContentConfigByTaskTypeId("56"));
+				// 57首营管理-药店
+				configMap.put("57", getTaskContentConfigByTaskTypeId("57"));
+				break;
+			case "1":
+			case "2":
+			case "3":
+			case "4":
+			case "64":
+				// 1,医院科室推广会 2,区域学术沙龙 3,城市卫星会 4,省级学科年会 64,线上科室会
+				configMap.put("1", getTaskContentConfigByTaskTypeId("1"));
+				configMap.put("2", getTaskContentConfigByTaskTypeId("2"));
+				configMap.put("3", getTaskContentConfigByTaskTypeId("3"));
+				configMap.put("4", getTaskContentConfigByTaskTypeId("4"));
+				configMap.put("64", getTaskContentConfigByTaskTypeId("64"));
+				break;
+			case "801":
+				configMap.put("801", getTaskContentConfigByTaskTypeId("64"));
+				int random = new Random(RANDOM_QUIZ_URL.length).nextInt();
+				configMap.put("randomUrl", RANDOM_QUIZ_URL[random]);
+				break;
+			default:
+				configMap = getTaskContentConfigByTaskTypeId(taskTypeId);
+				break;
 		}
 
-		return R.ok(connfigMap);
+		return R.ok(configMap);
 	}
 
 	/**
@@ -294,109 +321,92 @@ public class ApiController {
 	 * @return 任务内容配置信息
 	 */
 	private Map<String, Object> getTaskContentConfigByTaskTypeId(String taskTypeId) {
-		Map<String, Object> connfigMap = new LinkedHashMap<>();
+		Map<String, Object> configMap = new LinkedHashMap<>();
 		Map<String, Object> dictMap = new LinkedHashMap<>();
 
-		WmTaskContentConfig queryConn = new WmTaskContentConfig();
-		queryConn.setTaskTypeId(taskTypeId);
-		queryConn.setDelFlag("0");
-		queryConn.setEnableFlag("0");
 		List<WmTaskContentConfig> listConfig = wmTaskContentConfigService.list(
-				new QueryWrapper<>(queryConn).orderByAsc("seq"));
-		for (WmTaskContentConfig config :
-				listConfig) {
+				Wrappers.<WmTaskContentConfig>lambdaQuery().eq(WmTaskContentConfig::getDelFlag, CommonConstants.STATUS_NORMAL)
+						.eq(WmTaskContentConfig::getEnableFlag, CommonConstants.STATUS_NORMAL)
+						.eq(WmTaskContentConfig::getTaskTypeId, taskTypeId)
+						.orderByAsc(WmTaskContentConfig::getSeq));
+
+		HnqzUser user = SecurityUtils.getUser();
+		for (WmTaskContentConfig config : listConfig) {
 			if ("select".equals(config.getTaskFiledType())) {
-				SysDictItem sysDictItemConn = new SysDictItem();
-				sysDictItemConn.setType(config.getDictGroupName());
-				List<SysDictItem> dictItems = sysDictItemService.list(new QueryWrapper<>(sysDictItemConn));
+				List<SysDictItem> dictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery().eq(SysDictItem::getType, config.getDictGroupName()));
 				dictMap.put(config.getDictGroupName(), dictItems);
 			}
 
 			if ("domain".equals(config.getTaskFiledType())) {
 				if ("ent_service".equals(config.getDictGroupName())) {
-					List<WmDaDrugEnt> wmDaDrugEnts = new ArrayList<>();
-					if (null == SecurityUtils.getUser()) {
-						wmDaDrugEnts = wmDaDrugEntService.list();
-					} else {
-						wmDaDrugEnts = getDrugListBySecUser(SecurityUtils.getUser().getPlatId());
-					}
-					List<Map<String, Object>> listMap = new ArrayList<>();
-					for (int i = 0; i < wmDaDrugEnts.size(); i++) {
-						Map<String, Object> map = new HashMap<>();
-						map.put("label", wmDaDrugEnts.get(i).getEntname());
-						map.put("value", wmDaDrugEnts.get(i).getId());
+					List<WmDaDrugEnt> wmDaDrugEnts = Objects.isNull(user) ? wmDaDrugEntService.list() : getDrugListBySecUser(user.getPlatId());
+
+					List<Map<String, Object>> listMap = wmDaDrugEnts.stream().map(ent -> {
+						Map<String, Object> map = new HashMap<>(3);
+						map.put("label", ent.getEntname());
+						map.put("value", ent.getId());
 						map.put("type", "drug");
-						listMap.add(map);
-					}
+						return map;
+					}).collect(Collectors.toList());
+
 					dictMap.put(config.getDictGroupName(), listMap);
 
 				} else if ("ent_bus".equals(config.getDictGroupName())) {
 					List<WmDaDistribution> wmDaDrugEnts = wmDaDistributionService.list();
-					List<Map<String, Object>> listMap = new ArrayList<>();
-					for (int i = 0; i < wmDaDrugEnts.size(); i++) {
-						Map<String, Object> map = new HashMap<>();
-						map.put("label", wmDaDrugEnts.get(i).getGsmc());
-						map.put("value", wmDaDrugEnts.get(i).getId());
-						listMap.add(map);
-					}
+
+					List<Map<String, Object>> listMap = wmDaDrugEnts.stream().map(ent -> {
+						Map<String, Object> map = new HashMap<>(2);
+						map.put("label", ent.getGsmc());
+						map.put("value", ent.getId());
+						return map;
+					}).collect(Collectors.toList());
 					dictMap.put(config.getDictGroupName(), listMap);
-				} else if ("ent_dclx".equals(config.getDictGroupName())) {
-					List<WmDaHospital> wmDaHospitalList = new ArrayList<>();
-					List<Map<String, Object>> wmDaHospitalListList = new ArrayList<>();
-					for (int i = 0; i < wmDaHospitalList.size(); i++) {
-						Map<String, Object> map = new HashMap<>();
-						map.put("label", wmDaHospitalList.get(i).getYymc());
-						map.put("value", wmDaHospitalList.get(i).getId());
-						wmDaHospitalListList.add(map);
-					}
-					dictMap.put("hospital_service", wmDaHospitalListList);
 
+				} else if ("ent_dclx".equals(config.getDictGroupName())) {
+					dictMap.put("hospital_service", Collections.emptyList());
 
 					List<WmDaDistribution> wmDaDistributions = wmDaDistributionService.list();
-					List<Map<String, Object>> wmDaDistributionList = new ArrayList<>();
-					for (int i = 0; i < wmDaDistributions.size(); i++) {
-						Map<String, Object> map = new HashMap<>();
-						map.put("label", wmDaDistributions.get(i).getGsmc());
-						map.put("value", wmDaDistributions.get(i).getId());
-						wmDaDistributionList.add(map);
-					}
+					List<Map<String, Object>> wmDaDistributionList = wmDaDistributions.stream().map(dis -> {
+						Map<String, Object> map = new HashMap<>(2);
+						map.put("label", dis.getGsmc());
+						map.put("value", dis.getId());
+						return map;
+					}).collect(Collectors.toList());
 					dictMap.put("distribution_service", wmDaDistributionList);
+
 				} else if ("ent_pharmacy".equals(config.getDictGroupName())) {
+
 					List<WmDaPharmacy> wmDaDrugEnts = wmDaPharmacyService.list();
-					List<Map<String, Object>> listMap = new ArrayList<>();
-					for (int i = 0; i < wmDaDrugEnts.size(); i++) {
-						Map<String, Object> map = new HashMap<>();
-						map.put("label", wmDaDrugEnts.get(i).getPharmacyName());
-						map.put("value", wmDaDrugEnts.get(i).getId());
-						listMap.add(map);
-					}
+					List<Map<String, Object>> listMap = wmDaDrugEnts.stream().map(ent -> {
+						Map<String, Object> map = new HashMap<>(2);
+						map.put("label", ent.getPharmacyName());
+						map.put("value", ent.getId());
+						return map;
+					}).collect(Collectors.toList());
 					dictMap.put(config.getDictGroupName(), listMap);
+
 				} else if ("package_list".equals(config.getDictGroupName())) {
 					// 查询可以关联的积分包
-					List<Map<String, Object>> listMap = new ArrayList<>();
-					if (null == SecurityUtils.getUser()) {
+					List<Map<String, Object>> listMap;
+					if (user != null) {
+						List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(
+								Wrappers.<WmScorePackageStatus>lambdaQuery().eq(WmScorePackageStatus::getUserId, user.getId().toString())
+										.eq(WmScorePackageStatus::getStatus, "2")
+										.eq(WmScorePackageStatus::getTaskAddFlag, "1")
+										.eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
+										.eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL));
 
-					} else {
-						WmScorePackageStatus query = new WmScorePackageStatus();
-						query.setUserId(String.valueOf(SecurityUtils.getUser().getId()));
-						query.setStatus("2");
-						query.setTaskAddFlag("1");
-						query.setDelFlag("0");
-						query.setEnableFlag("0");
 
-						List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(Wrappers.lambdaQuery(query));
 						if (CollUtil.isNotEmpty(statusList)) {
-							Set<String> scoreIds = statusList.stream()
-									.map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
+							Set<String> scoreIds = statusList.stream().map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
 							// 批量查询积分包
 							List<WmScorePackage> wmScorePackages = wmScorePackageService.listByIds(scoreIds);
-							Map<String, WmScorePackage> scorePackageMap = wmScorePackages.stream()
-									.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
+							Map<String, WmScorePackage> scorePackageMap = wmScorePackages.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
 							// 批量查询scoreTaskType
 							List<Map<String, Object>> scoreTaskTypeCountList = wmScoreTaskTypeMapper.countByScoreId(taskTypeId, scoreIds);
-							Map<String, Integer> scoreTaskTypeCountMap = scoreTaskTypeCountList.stream()
-									.collect(Collectors.toMap(o -> String.valueOf(o.get("score_id")), o -> Integer.parseInt(String.valueOf(o.get("count")))));
+							Map<String, Integer> scoreTaskTypeCountMap = scoreTaskTypeCountList.stream().collect(Collectors.toMap(o -> String.valueOf(o.get("score_id")), o -> Integer.parseInt(String.valueOf(o.get("count")))));
 
+							listMap = new ArrayList<>(statusList.size());
 							for (WmScorePackageStatus item : statusList) {
 								WmScorePackage wmScorePackage = scorePackageMap.get(item.getPackageId());
 								if (null != wmScorePackage) {
@@ -406,8 +416,7 @@ public class ApiController {
 									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())) {
+									if (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2()) && !PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 										continue;
 									}
 
@@ -416,8 +425,7 @@ public class ApiController {
 											Map<String, Object> map = new HashMap<>();
 											map.put("label", wmScorePackage.getScorePackageName());
 											map.put("value", wmScorePackage.getId());
-											String drugProducer = ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList()) ? "" : String.join(StrUtil.COMMA, wmScorePackage
-													.getDrugProducerList());
+											String drugProducer = ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList()) ? "" : String.join(StrUtil.COMMA, wmScorePackage.getDrugProducerList());
 											map.put("drugProducer", drugProducer);
 											listMap.add(map);
 										}
@@ -426,9 +434,7 @@ public class ApiController {
 										if ("3".equals(wmScorePackage.getPackageType1())) {
 											continue;
 										}
-										/**
-										 * 过滤有效任务类型
-										 */
+										// 过滤有效任务类型
 										WmScoreTaskType taskType = new WmScoreTaskType();
 										taskType.setTaskTypeId(taskTypeId);
 										taskType.setScoreId(wmScorePackage.getId());
@@ -439,25 +445,28 @@ public class ApiController {
 											Map<String, Object> map = new HashMap<>();
 											map.put("label", wmScorePackage.getScorePackageName());
 											map.put("value", wmScorePackage.getId());
-											String drugProducer = ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList()) ? "" : String.join(StrUtil.COMMA, wmScorePackage
-													.getDrugProducerList());
+											String drugProducer = ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList()) ? "" : String.join(StrUtil.COMMA, wmScorePackage.getDrugProducerList());
 											map.put("drugProducer", drugProducer);
 											listMap.add(map);
 										}
 									}
 								}
 							}
+						} else {
+							listMap = Collections.emptyList();
 						}
+					} else {
+						listMap = Collections.emptyList();
 					}
-
 					dictMap.put(config.getDictGroupName(), listMap);
+
 				} else if ("package_drug_list".equals(config.getDictGroupName())) {
 					// 前端自动获取
 					dictMap.put(config.getDictGroupName(), "package_drug_list");
 				} else if ("medical_equipment_list".equals(config.getDictGroupName())) {
-					List<Map<String, Object>> listMap = new ArrayList<>();
+					List<Map<String, Object>> listMap;
 					// 手术跟台任务类型-推广产品
-					List<MedicalEquipment> medicalEquipmentList = medicalEquipmentService.listByDrugId(SecurityUtils.getUser().getDeptId());
+					List<MedicalEquipment> medicalEquipmentList = medicalEquipmentService.listByDrugId(user.getDeptId());
 					if (CollUtil.isNotEmpty(medicalEquipmentList)) {
 						listMap = medicalEquipmentList.stream().map(medicalEquipment -> {
 							Map<String, Object> equipmentMap = new HashMap<>();
@@ -465,15 +474,17 @@ public class ApiController {
 							equipmentMap.put("label", medicalEquipment.getName());
 							return equipmentMap;
 						}).collect(Collectors.toList());
+					} else {
+						listMap = Collections.emptyList();
 					}
 					dictMap.put(config.getDictGroupName(), listMap);
 				}
 
 			}
 		}
-		connfigMap.put("config", listConfig);
-		connfigMap.put("dict", dictMap);
-		return connfigMap;
+		configMap.put("config", listConfig);
+		configMap.put("dict", dictMap);
+		return configMap;
 	}
 
 	@SysLog("通过任务类型获取表单配置")