Browse Source

feat:entity serializable

shc 1 year ago
parent
commit
18f37ae1c3

+ 4 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQuestion.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -70,7 +71,9 @@ public final class WmQuestion {
 	 * @date 2023-10-16 15:13
 	 */
 	@Data
-	public static class Option {
+	public static class Option implements Serializable {
+
+		private static final long serialVersionUID = -3212524654632400045L;
 
 		/**
 		 * 选项编号

+ 3 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQuiz.java

@@ -23,7 +23,9 @@ import java.time.LocalDateTime;
  */
 @Data
 @TableName(value = "wm_quiz", autoResultMap = true)
-public final class WmQuiz {
+public final class WmQuiz implements Serializable {
+
+	private static final long serialVersionUID = -4251199161109646452L;
 
 	/**
 	 * 试卷ID

+ 4 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQuizItem.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -19,7 +20,9 @@ import java.time.LocalDateTime;
  */
 @Data
 @TableName(value = "wm_quiz_item", autoResultMap = true)
-public final class WmQuizItem {
+public final class WmQuizItem implements Serializable {
+
+	private static final long serialVersionUID = -2548220720337564269L;
 
 	@TableId(value = "item_id", type = IdType.AUTO)
 	private Integer itemId;

+ 128 - 191
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -1,20 +1,3 @@
-/*
- *    Copyright (c) 2018-2025, hnqz All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * Neither the name of the pig4cloud.com developer nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * Author: hnqz
- */
-
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
@@ -56,6 +39,7 @@ import com.qunzhixinxi.hnqz.admin.recharge.mapper.SysDeptRechargeMapper;
 import com.qunzhixinxi.hnqz.admin.recharge.mapper.SysDeptRechargeRecordMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
@@ -1729,117 +1713,128 @@ public class WmScorePackageController {
 		return R.ok(answerList);
 	}
 
+
 	/**
-	 * 新增分配积分包  二期  业务平台
+	 * 新增积分包(大包)
+	 * <p>
+	 * 满足以下任一条件,则可以发包
+	 * 1.存在积分充值配置,并且 发包积分 < 积分充值分配的积分
+	 * 2.关联了上级积分包
 	 *
-	 * @param wmScorePackage 积分包
-	 * @return R
+	 * @param wmScorePackage 积分包信息
+	 * @return 新增结果
 	 */
-	@ApiOperation(value = "新增积分包", notes = "新增积分包")
 	@SysLog("新增积分包(大包)")
-	@PostMapping("saves")
+	@PostMapping("/saves")
 	@Transactional(rollbackFor = Exception.class)
-	public R saves(@RequestBody WmScorePackage wmScorePackage) {
+	public R<?> saves(@RequestBody WmScorePackage wmScorePackage) {
+
 		log.info("新增积分包(大包)入参:{}", wmScorePackage);
+
+		HnqzUser operator = SecurityUtils.getUser();
+		LocalDateTime now = LocalDateTime.now();
+		List<Integer> roles = SecurityUtils.getRoles();
+		Integer deptId = operator.getDeptId();
+		Integer userId = operator.getId();
+
+
+		String relPkgId = wmScorePackage.getRelationScoreId();
+		boolean relatedScoreId = StrUtil.isNotBlank(relPkgId) && Integer.parseInt(relPkgId) > 0;
+		SysDeptRecharge deptRecharge = null;
+
+		// 校验积分值
 		if (wmScorePackage.getScore() <= 0) {
 			return R.failed("积分包分值必须大于0");
 		}
 
-		Integer deptId = SecurityUtils.getUser().getDeptId();
-		Integer userId = SecurityUtils.getUser().getId();
+		// 校验积分包名称是否存在
+		if (StrUtil.isNotBlank(wmScorePackage.getScorePackageName())) {
 
-		// 校验 满足以下任一条件,则可以发包
-		// 1.存在积分充值配置,并且 发包积分 < 积分充值分配的积分
-		// 2.关联了上级积分包
-		boolean relatedScoreId = StrUtil.isNotBlank(wmScorePackage.getRelationScoreId()) && Integer.parseInt(wmScorePackage.getRelationScoreId()) > 0;
-		LocalDateTime now = LocalDateTime.now();
-		SysDeptRecharge deptRecharge = null;
+			int existed = wmScorePackageService.count(Wrappers.<WmScorePackage>lambdaQuery()
+					.eq(WmScorePackage::getDelFlag, "0")
+					.eq(WmScorePackage::getScorePackageName, wmScorePackage.getScorePackageName())
+					.eq(WmScorePackage::getDeptId, wmScorePackage.getDeptId()));
 
+			if (existed != 0) {
+				return R.failed("积分包名称已存在");
+			}
+		}
+
+		// 校验积分值
 		if (!relatedScoreId) {
 			// 校验 发包积分 < 积分充值分配的积分 则可以发包
-			deptRecharge = sysDeptRechargeMapper.selectOne(Wrappers.<SysDeptRecharge>lambdaQuery()
-					.eq(SysDeptRecharge::getDeptId, deptId));
+			deptRecharge = sysDeptRechargeMapper.selectOne(Wrappers.<SysDeptRecharge>lambdaQuery().eq(SysDeptRecharge::getDeptId, deptId));
 			if (deptRecharge == null) {
-				log.warn("未配置积分充值信息");
-				throw new RuntimeException("积分余额:0。积分不足");
+				log.error("未配置积分充值信息");
+				throw new BizException("积分余额:0,积分不足");
 			}
 			int limitScore = deptRecharge.getScore() + deptRecharge.getOverdrawScore();
 			if (wmScorePackage.getScore() > limitScore) {
-				log.warn("已分配积分不足,发包积分={},剩余积分={},透支额度={}",
-						wmScorePackage.getScore(), deptRecharge.getScore(), limitScore);
-				throw new RuntimeException(String.format("积分余额:%s。积分不足", deptRecharge.getScore()));
+				log.error("已分配积分不足,发包积分={},剩余积分={},透支额度={}", wmScorePackage.getScore(), deptRecharge.getScore(), limitScore);
+				throw new BizException(String.format("积分余额:%s,积分不足", deptRecharge.getScore()));
 			}
 		} else {
 			// 校验上级可分配积分值
-			List<WmScorePackage> scorePackagekfpjf = wmScorePackageService.getScorePackagekfpjf(null, null, new String[]{"0", "1", "2"},
-					new String[]{wmScorePackage.getRelationScoreId()});
+			List<WmScorePackage> scorePackagekfpjf =
+					wmScorePackageService.getScorePackagekfpjf(
+							null,
+							null,
+							new String[]{"0", "1", "2"},
+							new String[]{wmScorePackage.getRelationScoreId()});
 
 			if (CollUtil.isNotEmpty(scorePackagekfpjf)) {
 				int kfpjf = scorePackagekfpjf.get(0).getKfpjf();
 				if (wmScorePackage.getScore() > kfpjf) {
-					throw new RuntimeException("可分配积分值不足");
+					log.error("可分配积分值不足");
+					throw new BizException("可分配积分值不足");
 				}
 			}
 		}
 
-		wmScorePackage.setTypeid("");
 		wmScorePackage.setPackageType1("1");
 		wmScorePackage.setDelFlag("0");
 		wmScorePackage.setEnableFlag("0");
 		wmScorePackage.setPackageIsConduct("0");
-		wmScorePackage.setDrugEntId("");//药企ID
-		wmScorePackage.setCreateUser(userId);//用户ID
-//		SysDept sysDeptId = new SysDept();
-//		sysDeptId.setDeptId(SecurityUtils.getUser().getDeptId());
-//		SysDept sysDept = sysDeptMapper.selectDeptId(sysDeptId);
-		SysDept sysDept = sysDeptService.getById(deptId);
-
-//		SysDept sysDeptRelatedServiceId = new SysDept();
-//		sysDeptRelatedServiceId.setDeptId(Integer.valueOf(wmScorePackage.getRelatedService()));
-//		SysDept sysDeptRelatedService = sysDeptMapper.selectDeptId(sysDeptRelatedServiceId);
-
-		if (StringUtils.isNotEmpty(wmScorePackage.getRelationScoreId()) && ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList())) {
-			WmScorePackage relateSp = wmScorePackageService.getById(wmScorePackage.getRelationScoreId());
+		wmScorePackage.setDrugEntId("");
+		wmScorePackage.setCreateUser(userId);
+		wmScorePackage.setCreateTime(now);
+		wmScorePackage.setUpdateTime(now);
+		wmScorePackage.setPackageFinishStatus("0");
+		wmScorePackage.setPackageAuditStatus("0");
+		wmScorePackage.setSendPackageDeptId(deptId.toString());
+		wmScorePackage.setAllocationDate(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(now));
+
+		if (StringUtils.isNotEmpty(relPkgId) && ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList())) {
+			WmScorePackage relateSp = wmScorePackageService.getById(relPkgId);
 			if (relateSp != null) {
-				Set<String> producerNames = wmDaDrugEntDrugtableService.listDrugProducerByDeptId(Integer.parseInt(relateSp
-						.getDeptId()));
-				wmScorePackage.setDrugProducerList(producerNames.toArray(new String[producerNames.size()]));
+				Set<String> producerNames = wmDaDrugEntDrugtableService.listDrugProducerByDeptId(Integer.parseInt(relateSp.getDeptId()));
+				wmScorePackage.setDrugProducerList(producerNames.toArray(new String[0]));
 			}
 		}
 
 		SysDept sysDeptRelatedService = sysDeptService.getById(Integer.valueOf(wmScorePackage.getRelatedService()));
-		if ("".equals(wmScorePackage.getTypeid())) {
-			WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.selectByDeptId(sysDept.getDeptId());
+		if (StrUtil.isBlank(wmScorePackage.getTypeid())) {
+			WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.selectByDeptId(deptId);
 			if (wmDaDrugEnt != null) {
-				if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug()
-						.equals(wmDaDrugEnt.getId())) {
+				if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug().equals(wmDaDrugEnt.getId())) {
 					WmDaAgent wmDaAgent = wmDaAgentService.getById(wmScorePackage.getAcceptSug());
-//					SysDept sysDept2 = new SysDept();
-//					sysDept2.setDeptId(Integer.valueOf(wmDaAgent.getDeptId()));
-//					SysDept sysDepts = sysDeptMapper.selectDeptId(sysDept2);
-
 					SysDept sysDepts = sysDeptService.getById(Integer.valueOf(wmDaAgent.getDeptId()));
 					if (sysDepts.getLevel() == 3) {
 						wmScorePackage.setLevel1Id(wmDaAgent.getId());
 					} else if (sysDepts.getLevel() == 4) {
 						wmScorePackage.setLevel2Id(wmDaAgent.getId());
 					}
-					wmScorePackage.setDeptId(wmDaAgent.getDeptId() + "");
+					wmScorePackage.setDeptId(wmDaAgent.getDeptId());
 					wmScorePackage.setKfpjf(wmScorePackage.getScore());
-				} else if (wmScorePackage.getAcceptSug().equals(wmDaDrugEnt.getId())) {
-					wmScorePackage.setDeptId(String.valueOf(SecurityUtils.getUser().getDeptId()));
+				} else if (wmDaDrugEnt.getId().equals(wmScorePackage.getAcceptSug())) {
+					wmScorePackage.setDeptId(deptId.toString());
 					wmScorePackage.setKfpjf(wmScorePackage.getScore());
 				}
 			} else {
 				if (sysDeptRelatedService.getLevel() == 2) {
 					WmDaDrugEnt wmDaDrugEnts = wmDaDrugEntService.selectByDeptId(Integer.valueOf(wmScorePackage.getRelatedService()));
-					if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug()
-							.equals(wmDaDrugEnts.getId())) {
+					if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug().equals(wmDaDrugEnts.getId())) {
 						WmDaAgent wmDaAgent = wmDaAgentService.getById(wmScorePackage.getAcceptSug());
-//						SysDept sysDept2 = new SysDept();
-//						sysDept2.setDeptId(Integer.valueOf(wmDaAgent.getDeptId()));
-//						SysDept sysDepts = sysDeptMapper.selectDeptId(sysDept2);
-
 						SysDept sysDepts = sysDeptService.getById(Integer.valueOf(wmDaAgent.getDeptId()));
 
 						if (sysDepts.getLevel() == 3) {
@@ -1847,7 +1842,7 @@ public class WmScorePackageController {
 						} else if (sysDepts.getLevel() == 4) {
 							wmScorePackage.setLevel2Id(wmDaAgent.getId());
 						}
-						wmScorePackage.setDeptId(wmDaAgent.getDeptId() + "");
+						wmScorePackage.setDeptId(wmDaAgent.getDeptId());
 						wmScorePackage.setKfpjf(wmScorePackage.getScore());
 					} else if (wmScorePackage.getAcceptSug().equals(wmDaDrugEnt.getId())) {
 						wmScorePackage.setDeptId(String.valueOf(SecurityUtils.getUser().getDeptId()));
@@ -1855,57 +1850,29 @@ public class WmScorePackageController {
 					}
 				} else if (sysDeptRelatedService.getLevel() == 3) {
 					WmDaAgent wmDaAgent1 = wmDaAgentService.selectByDeptId(Integer.valueOf(wmScorePackage.getRelatedService()));
-					if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug()
-							.equals(wmDaAgent1.getId())) {
+					if (null != wmScorePackage.getAcceptSug() && !wmScorePackage.getAcceptSug().equals(wmDaAgent1.getId())) {
 						WmDaAgent wmDaAgent = wmDaAgentService.getById(wmScorePackage.getAcceptSug());
-
-//						SysDept sysDept2 = new SysDept();
-//						sysDept2.setDeptId(Integer.valueOf(wmDaAgent.getDeptId()));
-//						SysDept sysDepts = sysDeptMapper.selectDeptId(sysDept2);
-
 						SysDept sysDepts = sysDeptService.getById(Integer.valueOf(wmDaAgent.getDeptId()));
-
 						if (sysDepts.getLevel() == 3) {
 							wmScorePackage.setLevel1Id(wmDaAgent.getId());
 						} else if (sysDepts.getLevel() == 4) {
 							wmScorePackage.setLevel2Id(wmDaAgent.getId());
 						}
-						wmScorePackage.setDeptId(wmDaAgent.getDeptId() + "");
+						wmScorePackage.setDeptId(wmDaAgent.getDeptId());
 						wmScorePackage.setKfpjf(wmScorePackage.getScore());
-					} else if (wmScorePackage.getAcceptSug().equals(wmDaAgent1.getId())) {
-						wmScorePackage.setDeptId(String.valueOf(SecurityUtils.getUser().getDeptId()));
+					} else if (wmDaAgent1.getId().equals(wmScorePackage.getAcceptSug())) {
+						wmScorePackage.setDeptId(deptId.toString());
 						wmScorePackage.setKfpjf(wmScorePackage.getScore());
 					}
 				}
 			}
 		}
 
-		if (null != wmScorePackage.getScorePackageName() && !"".equals(wmScorePackage.getScorePackageName())) {
-			WmScorePackage wmScorePackage1 = new WmScorePackage();
-			wmScorePackage1.setDelFlag("0");
-			wmScorePackage1.setScorePackageName(wmScorePackage.getScorePackageName());
-			wmScorePackage1.setDeptId(wmScorePackage.getDeptId());
-			List<WmScorePackage> wmScorePackageList = wmScorePackageService.list(Wrappers.query(wmScorePackage1));
-			if (wmScorePackageList.size() > 0) {
-				return R.failed("积分包名称已存在");
-			}
-		}
-
-		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		wmScorePackage.setCreateTime(LocalDateTime.now());
-		wmScorePackage.setPackageFinishStatus("0");
-		wmScorePackage.setPackageAuditStatus("0");
-		wmScorePackage.setSendPackageDeptId(SecurityUtils.getUser().getDeptId() + "");
-		wmScorePackage.setAllocationDate(df.format(new Date()));
-
 		//药企规则ID
-//		SysDept sysDept2 = new SysDept();
-//		sysDept2.setDeptId(SecurityUtils.getUser().getDeptId());
-//		SysDept sysDeptRuleId = sysDeptMapper.selectDeptId(sysDept2);
+		SysDept sysDeptRuleId = sysDeptService.getById(deptId);
+		Integer deptLevel = sysDeptRuleId.getLevel();
 
-		SysDept sysDeptRuleId = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
-
-		if (sysDeptRuleId.getLevel() == 2) {
+		if (deptLevel == 2) {
 			WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.selectByDeptId(sysDeptRuleId.getDeptId());
 			if (wmScorePackage.getAcceptSug().equals(wmDaDrugEnt.getId())) {
 				wmScorePackage.setRuleId(wmScorePackage.getAcceptSug());
@@ -1914,15 +1881,16 @@ public class WmScorePackageController {
 				WmTaskType wmTaskType = new WmTaskType();
 				wmTaskType.setRuleId(wmDaDrugEnt.getId() + wmScorePackage.getAcceptSug());
 				List<WmTaskType> wmTaskTypeList = wmTaskTypeService.selectByRuleId(wmTaskType);
-				if (wmTaskTypeList.size() > 0) {
+				if (CollUtil.isNotEmpty(wmTaskTypeList)) {
 					wmScorePackage.setRuleId(wmDaDrugEnt.getId() + wmScorePackage.getAcceptSug());
 					wmScorePackage.setDrugEntId(wmDaDrugEnt.getId());
 				} else {
+					log.error("请药企给下级cso分配积分规则");
 					return R.failed("请药企给下级cso分配积分规则");
 				}
 
 			}
-		} else if (sysDeptRuleId.getLevel() == 3) {
+		} else if (deptLevel == 3) {
 			//一级cso规则ID
 			WmDaAgent daAgent = wmDaAgentService.getOne(Wrappers.<WmDaAgent>lambdaQuery()
 					.eq(WmDaAgent::getEnableFlag, EnableEnum.ENABLE.val())
@@ -1935,6 +1903,7 @@ public class WmScorePackageController {
 					wmScorePackage.setRuleId(relationScorePackage.getRuleId());
 					wmScorePackage.setDrugEntId(relationScorePackage.getDrugEntId());
 				} else {
+					log.error("cso没有分配积分规则");
 					return R.failed("cso没有分配积分规则");
 				}
 			} else {
@@ -1945,100 +1914,66 @@ public class WmScorePackageController {
 					wmScorePackage.setRuleId(daAgent.getId());
 					wmScorePackage.setDrugEntId("");
 				} else {
+					log.error("cso没有分配积分规则");
 					return R.failed("cso没有分配积分规则");
 				}
 			}
 		}
 
-		boolean isAnswer = wmScorePackageService.save(wmScorePackage);
-
-		if (null != wmScorePackage.getWmScoreTaskTypeList() && wmScorePackage.getWmScoreTaskTypeList().size() > 0) {
-			List<WmScoreTaskType> wmScoreTaskTypess = new ArrayList<>();
-			for (WmScoreTaskType wmScoreTaskTypes : wmScorePackage.getWmScoreTaskTypeList()) {
-				WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
-				SysDept sysDept1 = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
-				if ("".equals(wmScorePackage.getRelationScoreId())) {
-					wmScoreTaskType.setScoreId(wmScorePackage.getId());
-					wmScoreTaskType.setType("1");
-					wmScoreTaskType.setTaskTypeId(wmScoreTaskTypes.getTaskTypeId());
-					wmScoreTaskTypess.add(wmScoreTaskType);
-				} else if (!"".equals(wmScorePackage.getRelationScoreId()) && sysDept1.getLevel() == 3) {
-					wmScoreTaskType.setScoreId(wmScorePackage.getId());
-					wmScoreTaskType.setType("1");
-					wmScoreTaskType.setTaskTypeId(wmScoreTaskTypes.getTaskTypeId());
-					wmScoreTaskTypess.add(wmScoreTaskType);
-				}
+		// 保存积分包
+		String typeId = "";
+		if (roles.contains(4) || roles.contains(3)) {
+			if (deptLevel == 2) {
+				typeId = wmScorePackage.getDeptId().equals(deptId.toString()) ? "0" : "1";
+			} else if (deptLevel == 3) {
+				typeId = wmScorePackage.getDeptId().equals(deptId.toString()) ? "1" : "2";
 			}
-			wmScoreTaskTypeService.deleteByScoreId(wmScorePackage.getId());
-			wmScoreTaskTypeService.batchInsertType(wmScoreTaskTypess);
 		}
-		if (isAnswer) {
-
-			if (SecurityUtils.getRoles().contains(4) || SecurityUtils.getRoles().contains(3)) {
-
-				//赋值typeid
-//				SysDept sysDept1 = new SysDept();
-//				sysDept1.setDeptId(SecurityUtils.getUser().getDeptId());
-//				SysDept sysDeptTypeId = sysDeptMapper.selectDeptId(sysDept1);
-
-				SysDept sysDeptTypeId = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
-
-				if (sysDeptTypeId.getLevel() == 2 && wmScorePackage.getDeptId()
-						.equals(String.valueOf(sysDeptTypeId.getDeptId()))) {
-					wmScorePackage.setTypeid("0");
-				} else if (sysDeptTypeId.getLevel() == 2) {
-					wmScorePackage.setTypeid("1");
-				} else if (sysDeptTypeId.getLevel() == 3 && wmScorePackage.getDeptId()
-						.equals(String.valueOf(sysDeptTypeId.getDeptId()))) {
-					wmScorePackage.setTypeid("1");
-				} else if (sysDeptTypeId.getLevel() == 3) {
-					wmScorePackage.setTypeid("2");
-				}
-				wmScorePackageService.updateById(wmScorePackage);
-				WmScorePackage queryWm = new WmScorePackage();
-
-//				SysDept sysDept4 = new SysDept();
-//				sysDept4.setDeptId(SecurityUtils.getUser().getDeptId());
-//				SysDept sysDept3 = sysDeptMapper.selectDeptId(sysDept4);
+		wmScorePackage.setTypeid(typeId);
+		boolean isAnswer = wmScorePackageService.save(wmScorePackage);
 
-				SysDept sysDept3 = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
-				if (sysDept3.getLevel() == 3) {
-					queryWm.setDeptId(SecurityUtils.getUser().getDeptId() + "");
-				} else {
-					queryWm.setId("-1");
-				}
+		// 发包成功 更新 上级包
+		if (isAnswer) {
+			if ((roles.contains(4) || roles.contains(3)) && deptLevel == 3) {
+				WmScorePackage relPkg = wmScorePackageService.getById(relPkgId);
+				// 是当前操作人所在企业的的关联包
+				if (relPkg != null && deptId.toString().equals(relPkg.getDeptId())) {
+					relPkg.setKfpjf((int) Math.ceil(relPkg.getKfpjf() - wmScorePackage.getScore()));
+					// 判断积分包是否被发放 (原有外包业务逻辑,不知道为什么)
+					int count = wmScorePackageService.count(Wrappers.<WmScorePackage>lambdaQuery()
+							.ne(WmScorePackage::getId, wmScorePackage.getId())
+							.eq(WmScorePackage::getId, relPkgId)
+							.eq(WmScorePackage::getEnableFlag, "0")
+							.notIn(WmScorePackage::getTypeid, 3, 4));
 
-				List<WmScorePackage> wmScorePackageList = wmScorePackageService.list(Wrappers.query(queryWm));
-				WmScorePackage wmId = wmScorePackageService.getById(wmScorePackage.getId());
-				if (wmScorePackageList.size() > 0) {
-					for (WmScorePackage wms : wmScorePackageList) {
-						if (wms.getId().equals(wmId.getRelationScoreId())) {
-							wms.setKfpjf(new Double(Math.ceil(wms.getKfpjf() - wmId.getScore())).intValue());
-							wmScorePackage.setPackageIsConduct("0");
-							wmScorePackage.setPackageType1(wmScorePackage.getPackageType1());
-							//判断积分包是否被发放
-							List<WmScorePackage> wmScorePackages = wmScorePackageService.selectRelationScoreId(wmScorePackage
-									.getId());
-							if (wmScorePackages.size() > 0) {
-								for (WmScorePackage wmScorePackage1 : wmScorePackages) {
-									if (wmScorePackage1.getId().equals(wmScorePackage.getRelationScoreId())) {
-										wms.setPackageIsConduct("1");
-										break;
-									} else {
-										wms.setPackageIsConduct("0");
-									}
-								}
-							}
-						}
-					}
+					relPkg.setPackageIsConduct(count == 0 ? "0" : "1");
 				}
+				wmScorePackageService.updateById(relPkg);
+			}
+		}
+		// 失败了
+		else {
+			return R.failed("下发积分包失败");
+		}
 
-				wmScorePackageService.updateBatchById(wmScorePackageList);
+		List<WmScoreTaskType> taskTypeList = wmScorePackage.getWmScoreTaskTypeList();
+		if (CollUtil.isNotEmpty(taskTypeList)) {
 
+			if (StrUtil.isBlank(relPkgId) || (StrUtil.isNotBlank(relPkgId) && deptLevel == 3)) {
+				List<WmScoreTaskType> scoreTaskTypes = taskTypeList.stream().map(taskType -> {
+					WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
+					wmScoreTaskType.setScoreId(wmScorePackage.getId());
+					wmScoreTaskType.setType("1");
+					wmScoreTaskType.setTaskTypeId(taskType.getTaskTypeId());
 
+					return wmScoreTaskType;
+				}).collect(Collectors.toList());
+				wmScoreTaskTypeService.deleteByScoreId(wmScorePackage.getId());
+				wmScoreTaskTypeService.batchInsertType(scoreTaskTypes);
 			}
 		}
 
+
 		if (!relatedScoreId) {
 			// 更新积分充值信息
 			int currentScore = deptRecharge.getScore() - wmScorePackage.getScore();
@@ -2070,6 +2005,7 @@ public class WmScorePackageController {
 		return R.ok();
 	}
 
+
 	/**
 	 * 终止积分包(大包)
 	 *
@@ -2079,6 +2015,7 @@ public class WmScorePackageController {
 	@SysLog("终止积分包(大包)")
 	@PostMapping("/stopWmScorePackage")
 	@Transactional(rollbackFor = Exception.class)
+
 	public R stopWmScorePackage(@RequestBody WmScorePackage wmScorePackage) {
 		log.info("终止积分包(大包)入参:{}", wmScorePackage);
 		if (StrUtil.isBlank(wmScorePackage.getId()) || !StrUtil.equalsAny(wmScorePackage.getEnableType(), "1", "2")) {