Jelajahi Sumber

Merge branch 'master' into feat-20230402-zhongzhi

# Conflicts:
#	hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectLocation.java
李学松 2 tahun lalu
induk
melakukan
5a9f140f31
21 mengubah file dengan 1091 tambahan dan 238 penghapusan
  1. 11 0
      db/v2.0/230330.sql
  2. 82 63
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java
  3. 13 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java
  4. 175 18
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java
  5. 50 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageSettleNoteController.java
  6. 0 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageStatusController.java
  7. 58 7
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java
  8. 24 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmTask.java
  9. 36 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/output/WmTaskSettleNoteOutput.java
  10. 5 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/PackageTypeEnum.java
  11. 2 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectLocation.java
  12. 11 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageSettleNoteMapper.java
  13. 8 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmPayOffService.java
  14. 28 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageSettleNoteService.java
  15. 169 16
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPayOffServiceImpl.java
  16. 33 3
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java
  17. 248 94
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageSettleNoteServiceImpl.java
  18. 52 28
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java
  19. 8 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScoreTaskTypeServiceImpl.java
  20. 9 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java
  21. 69 0
      hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml

+ 11 - 0
db/v2.0/230330.sql

@@ -0,0 +1,11 @@
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp32', '关联积分包', 1, 'domain', 1, 200, null, '', 'package_list', '1', null, '0', '0', 1, '2023-03-16 15:59:15', null, null, null);
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp12', '药品', 2, 'domain', 1, 200, null, '', 'package_drug_list', '1', null, '0', '0', 1, '2023-03-16 15:59:15', null, null, null);
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp13', '数量', 4, 'number', 1, 20, null, '', '', '1', null, '0', '0', 1, '2023-03-16 15:59:15', null, null, null);
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp4', '时间', 5, 'datetime', 1, 200, null, '', '', '1', null, '0', '0', 1, '2023-03-16 15:59:15', null, null, null);
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp7', '现场照片', 6, 'img', 1, 5, null, '', '', '1', null, '0', '0', 1, '2023-03-16 15:59:15', null, null, null);
+INSERT INTO wm_task_content_config ( base_type_id, task_type_id, task_filed_key, task_filed_value, seq, task_filed_type, task_filed_minsize, task_filed_maxsize, task_filed_alert, dict_url, dict_group_name, is_mustfill, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user, update_time, update_user) VALUES ('47', '47', 'temp23', '推广类型', 3, 'select', 1, 2, '', '', 'drugstore_promotion_type', '1', null, '0', '0', 1, '2021-06-11 16:29:17', null, '2021-06-11 16:29:16', null);
+
+
+
+alter table wm_team
+    modify member varchar(2048) null comment '团队成员';

+ 82 - 63
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -242,6 +242,13 @@ public class ApiController {
 		} 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");
+			// 查询积分值
+			List<WmTaskType> taskTypes = wmTaskTypeService.listByIds(CollUtil.toList("47", "48", "49", "50"));
+			Map<String, Integer> taskTypeScoreMap = taskTypes.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getScore));
+			connfigMap.put("taskTypeScore", taskTypeScoreMap);
 		} else {
 			connfigMap = getTaskContentConfigByTaskTypeId(taskTypeId);
 		}
@@ -350,62 +357,65 @@ public class ApiController {
 						query.setEnableFlag("0");
 
 						List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(Wrappers.lambdaQuery(query));
-						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()));
-						// 批量查询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")))));
-
-						for (WmScorePackageStatus item : statusList) {
-							WmScorePackage wmScorePackage = scorePackageMap.get(item.getPackageId());
-							if (null != wmScorePackage) {
-								if ("0".equals(wmScorePackage.getTaskAddFlag())) {
-									continue;
-								}
-								if ("1".equals(wmScorePackage.getEnableFlag())) {
-									continue;
-								}
-								if ("2".equals(wmScorePackage.getPackageType2())) {
-									continue;
-								}
-
-								if ("28".equals(taskTypeId)) {
-									if ("3".equals(wmScorePackage.getPackageType1())) {
-										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());
-										map.put("drugProducer", drugProducer);
-										listMap.add(map);
+						if (CollUtil.isNotEmpty(statusList)) {
+							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()));
+							// 批量查询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")))));
+
+							for (WmScorePackageStatus item : statusList) {
+								WmScorePackage wmScorePackage = scorePackageMap.get(item.getPackageId());
+								if (null != wmScorePackage) {
+									if ("0".equals(wmScorePackage.getTaskAddFlag())) {
+										continue;
 									}
-
-								} else {
-									if ("3".equals(wmScorePackage.getPackageType1())) {
+									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;
 									}
-									/**
-									 * 过滤有效任务类型
-									 */
-									WmScoreTaskType taskType = new WmScoreTaskType();
-									taskType.setTaskTypeId(taskTypeId);
-									taskType.setScoreId(wmScorePackage.getId());
-
-									int total = scoreTaskTypeCountMap.getOrDefault(wmScorePackage.getId(), 0);
 
-									if (total != 0) {
-										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());
-										map.put("drugProducer", drugProducer);
-										listMap.add(map);
+									if ("28".equals(taskTypeId)) {
+										if ("3".equals(wmScorePackage.getPackageType1())) {
+											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());
+											map.put("drugProducer", drugProducer);
+											listMap.add(map);
+										}
+
+									} else {
+										if ("3".equals(wmScorePackage.getPackageType1())) {
+											continue;
+										}
+										/**
+										 * 过滤有效任务类型
+										 */
+										WmScoreTaskType taskType = new WmScoreTaskType();
+										taskType.setTaskTypeId(taskTypeId);
+										taskType.setScoreId(wmScorePackage.getId());
+
+										int total = scoreTaskTypeCountMap.getOrDefault(wmScorePackage.getId(), 0);
+
+										if (total != 0) {
+											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());
+											map.put("drugProducer", drugProducer);
+											listMap.add(map);
+										}
 									}
 								}
 							}
@@ -457,10 +467,14 @@ public class ApiController {
 		if ("39".equals(taskTypeId) || "40".equals(taskTypeId) || "41".equals(taskTypeId)) {
 			taskTypeId = "39";
 		}
-		if ("42".equals(taskTypeId) || "43".equals(taskTypeId) || "44".equals(taskTypeId)) {
+		else if ("42".equals(taskTypeId) || "43".equals(taskTypeId) || "44".equals(taskTypeId)) {
 			// 手术跟台-一级/手术跟台-二级/手术跟台-三级 都取42
 			taskTypeId = "42";
 		}
+		else if ("47".equals(taskTypeId) || "48".equals(taskTypeId) || "49".equals(taskTypeId) || "50".equals(taskTypeId)) {
+			// 库存调研、竞品调研、培训、使用情况调查
+			taskTypeId = "47";
+		}
 
 		queryConn.setTaskTypeId(taskTypeId);
 		queryConn.setDelFlag("0");
@@ -550,7 +564,8 @@ public class ApiController {
 								if ("1".equals(wmScorePackage.getEnableFlag())) {
 									continue;
 								}
-								if ("2".equals(wmScorePackage.getPackageType2())) {
+								if (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2())
+										&& !PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 									continue;
 								}
 
@@ -1657,9 +1672,9 @@ public class ApiController {
 	}
 
 	/**
-	 * 获取药企列表
+	 * 小程序领取任务包(积分包)列表
 	 *
-	 * @return 角色列表
+	 * @return 积分包列表
 	 */
 	@ApiOperation(value = "积分包-获取用户积分包", notes = "积分包-获取用户积分包,selType  众包用户传值,1 可领取  2 已领取")
 	@GetMapping("/getUserScorePackageList2")
@@ -1857,7 +1872,8 @@ public class ApiController {
 						continue;
 					}
 
-					if ("1".equals(item.getPackageType1())) {
+					if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), item.getPackageType1())
+							|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), item.getPackageType1())) {
 						Integer finishScore = 0;
 						Integer waitApprovalScore = 0;
 						for (WmTask task : wmTaskList) {
@@ -2411,9 +2427,9 @@ public class ApiController {
 
 
 	/**
-	 * 通过id查询积分包
+	 * 小程序领取积分包
 	 *
-	 * @param packageId
+	 * @param packageId 积分包id
 	 * @return R
 	 */
 	@ApiOperation(value = "积分包-领取", notes = "积分包-领取")
@@ -2461,7 +2477,8 @@ public class ApiController {
 
 		wmScorePackageStatus.setStatus("1");
 		wmScorePackageStatus.setTaskAddFlag("1");
-		if ("1".equals(wmScorePackage.getPackageType1())) {
+		if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(wmScorePackage.getPackageType1())
+				|| PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 			wmScorePackageStatus.setUserScore(wmScorePackage.getScore() + "");
 		} else {
 			wmScorePackageStatus.setUserScore(wmScorePackage.getUserScore());
@@ -3636,7 +3653,8 @@ public class ApiController {
 					}
 				}
 
-				if ("1".equals(tWmScorePackage.getPackageType1())) {
+				if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), tWmScorePackage.getPackageType1())
+						|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), tWmScorePackage.getPackageType1())) {
 
 					String limitValue = "30000";
 					// 查询当前企业配置的积分限制
@@ -3899,8 +3917,9 @@ public class ApiController {
 								// 查询出 审核通过和审核中的任务
 								.ne(WmTask::getTaskStatus, "4")
 								.eq(WmTask::getRealFlag, "0"));
-						// 判断定量还是定额 1- 定额   2-定量
-						if ("1".equals(wmScorePackage1.getPackageType1())) {
+						// 判断定量还是定额 1- 定额   2-定量 6-定额+定量
+						if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())
+								|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
 
 							int totalCount = 0;
 							for (WmTask wmtask : wmTaskList) {

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java

@@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
@@ -202,6 +203,18 @@ public class WmPayOffController {
 		return wmPayOffService.settleById(input.getId());
 	}
 
+	/**
+	 * 多人承接-按积分值业务结算-查询
+	 *
+	 * @param taskIds 任务id
+	 * @return 待提交的信息
+	 */
+	@SysLog("多人承接-按积分值业务结算-查询")
+	@GetMapping("/settle-info-by-taskIds")
+	public R<?> settleInfoByTaskIds(@RequestParam("taskIds") String[] taskIds) {
+
+		return wmPayOffService.settleInfoByTaskIds(taskIds);
+	}
 
 	/**
 	 * 财务审核页面

+ 175 - 18
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -70,7 +70,6 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.time.temporal.TemporalAccessor;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
@@ -109,6 +108,7 @@ public class WmScorePackageController {
 	private final WmDaDrugEntMapper wmDaDrugEntMapper;
 	private final WmDaAgentMapper wmDaAgentMapper;
 	private final WmTeamService wmTeamService;
+	private final WmScorePackageSettleNoteMapper settleNoteMapper;
 	private final StringRedisTemplate redisTemplate;
 
 
@@ -1493,7 +1493,7 @@ public class WmScorePackageController {
 
 			pageAnswer.setRecords(finalRecords);
 		} catch (ExecutionException | InterruptedException e) {
-			log.error("获取分页信息失败");
+			log.error("获取分页信息失败", e);
 			return R.failed("获取分页信息失败");
 		}
 
@@ -2451,6 +2451,21 @@ public class WmScorePackageController {
 						wmScorePackage.getWmScoreTaskTypeList().add(addTaskType43);
 						wmScorePackage.getWmScoreTaskTypeList().add(addTaskType44);
 					}
+					// 如果存在taskTypeId=47 47,库存调研 48,竞品调研  49,培训 50,使用情况调查
+					if (wmScorePackage.getWmScoreTaskTypeList().stream().anyMatch(wmTaskTypeTree -> "47".equals(wmTaskTypeTree.getTaskTypeId()))) {
+						WmScoreTaskType addTaskTypeTree48 = new WmScoreTaskType();
+						addTaskTypeTree48.setTaskTypeId("48");
+						addTaskTypeTree48.setType("1");
+						WmScoreTaskType addTaskTypeTree49 = new WmScoreTaskType();
+						addTaskTypeTree49.setTaskTypeId("49");
+						addTaskTypeTree49.setType("1");
+						WmScoreTaskType addTaskTypeTree50 = new WmScoreTaskType();
+						addTaskTypeTree50.setTaskTypeId("50");
+						addTaskTypeTree50.setType("1");
+						wmScorePackage.getWmScoreTaskTypeList().add(addTaskTypeTree48);
+						wmScorePackage.getWmScoreTaskTypeList().add(addTaskTypeTree49);
+						wmScorePackage.getWmScoreTaskTypeList().add(addTaskTypeTree50);
+					}
 
 					List<WmScoreTaskType> wmScoreTaskTypess = new ArrayList<>();
 					for (WmScoreTaskType wmScoreTaskTypes : wmScorePackage.getWmScoreTaskTypeList()) {
@@ -2574,9 +2589,13 @@ public class WmScorePackageController {
 			List<String> split = StrUtil.split(typeId, StrUtil.COMMA);
 			queryWrapper.in(WmScorePackage::getTypeid, split);
 		}
-		if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(String.valueOf(packageType1))
-				&& PackageTypeEnum.TYPE2_TASK_PACKAGE.val().equals(String.valueOf(packageType2))) {
-			// 如果是个人承接-按积分值,判断当前用户是否配置了团队负责人
+
+		boolean onePersonScorePackageFlag = PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(String.valueOf(packageType1))
+				&& PackageTypeEnum.TYPE2_TASK_PACKAGE.val().equals(String.valueOf(packageType2));
+		boolean multiPersonScorePackageFlag = PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(String.valueOf(packageType1))
+				&& PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(String.valueOf(packageType2));
+		if (onePersonScorePackageFlag || multiPersonScorePackageFlag) {
+			// 如果是个人承接-按积分值/多人承接-按积分值,判断当前用户是否配置了团队负责人
 			List<WmTeam> teamList = wmTeamService.list(Wrappers.<WmTeam>lambdaQuery()
 					.eq(WmTeam::getDeptId, sendDeptId)
 					.eq(WmTeam::getEnableFlag, EnableEnum.ENABLE.val())
@@ -2600,25 +2619,163 @@ public class WmScorePackageController {
 
 		List<WmScorePackage> pageRecords = wmScorePackagePage.getRecords();
 
-		List<Future<WmScorePackage>> futureList = new ArrayList<>(pageRecords.size());
+		if (CollUtil.isNotEmpty(pageRecords)) {
+			List<Future<WmScorePackage>> futureList = new ArrayList<>(pageRecords.size());
+
+			for (WmScorePackage scorePackage : pageRecords) {
+				Future<WmScorePackage> wmScorePackageFuture = wmScorePackageService.buildScorePackage(scorePackage, packageType1, packageType2);
+				futureList.add(wmScorePackageFuture);
+			}
+
+			List<WmScorePackage> finalRecords = new ArrayList<>(pageRecords.size());
+			try {
+				for (Future<WmScorePackage> future : futureList) {
+					WmScorePackage wmScorePackage = future.get();
+					finalRecords.add(wmScorePackage);
+
+				}
 
-		for (WmScorePackage scorePackage : pageRecords) {
-			Future<WmScorePackage> wmScorePackageFuture = wmScorePackageService.buildScorePackage(scorePackage, packageType1, packageType2);
-			futureList.add(wmScorePackageFuture);
+				wmScorePackagePage.setRecords(finalRecords);
+			} catch (ExecutionException | InterruptedException e) {
+				log.error("获取分页信息失败", e);
+				return R.failed("获取分页信息失败");
+			}
 		}
 
-		List<WmScorePackage> finalRecords = new ArrayList<>(pageRecords.size());
-		try {
-			for (Future<WmScorePackage> future : futureList) {
-				WmScorePackage wmScorePackage = future.get();
-				finalRecords.add(wmScorePackage);
+		return R.ok(wmScorePackagePage);
+	}
 
+	/**
+	 * 积分包列表(结算包管理列表、无团队限制)
+	 *
+	 * @param packageType1 多个逗号分隔
+	 * @param acceptUser 接单对象,模糊查询
+	 */
+	@ApiOperation(value = "分页查询", notes = "分页查询")
+	@GetMapping("/page-settle-package")
+	public R pageSettlePackage(@RequestParam(value = "current") Integer current,
+								 @RequestParam(value = "size") Integer size,
+								 @RequestParam(value = "packageType1") String packageType1,
+								 @RequestParam(value = "packageType2") Integer packageType2,
+								 @RequestParam(value = "scorePackageName", required = false) String scorePackageName,
+								 @RequestParam(value = "scorePackageStatus", required = false) Integer scorePackageStatus,
+								 @RequestParam(value = "typeid", required = false) String typeId,
+								 @RequestParam(value = "monthStart", required = false) String monthStart,
+								 @RequestParam(value = "monthEnd", required = false) String monthEnd,
+								 @RequestParam(value = "acceptUser", required = false) String acceptUser
+	) {
+
+		Integer sendDeptId = SecurityUtils.getUser().getDeptId();
+		Integer userId = SecurityUtils.getUser().getId();
+
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+
+		if (StrUtil.isNotEmpty(monthStart) && StrUtil.isNotEmpty(monthEnd)) {
+			start = LocalDateTime.of(LocalDate.parse(monthStart + "-01", DatePattern.NORM_DATE_FORMATTER), LocalTime.MIN);
+			LocalDate e = LocalDate.parse(monthEnd + "-01", DatePattern.NORM_DATE_FORMATTER);
+			end = LocalDateTime.of(e.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+
+		}
+
+		LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getPackageType2, packageType2)
+				.like(StrUtil.isNotEmpty(scorePackageName), WmScorePackage::getScorePackageName, scorePackageName)
+				.eq(scorePackageStatus != null, WmScorePackage::getScorePackageStatus, scorePackageStatus)
+				.eq(WmScorePackage::getSendPackageDeptId, sendDeptId)
+				.between(start != null && end != null, WmScorePackage::getCreateTime, start, end);
+
+		List<String> packageType1List = StrUtil.split(packageType1, StrUtil.COMMA);
+		if (StrUtil.contains(packageType1, StrUtil.COMMA)) {
+			queryWrapper.in(WmScorePackage::getPackageType1, packageType1List);
+		} else {
+			queryWrapper.eq(WmScorePackage::getPackageType1, packageType1);
+		}
+
+
+		if (StringUtil.isEmpty(typeId)) {
+			queryWrapper.in(WmScorePackage::getTypeid, "3", "4");
+		} else {
+			List<String> split = StrUtil.split(typeId, StrUtil.COMMA);
+			queryWrapper.in(WmScorePackage::getTypeid, split);
+		}
+
+//		boolean onePersonScorePackageFlag = packageType1List.contains(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())
+//				&& PackageTypeEnum.TYPE2_TASK_PACKAGE.val().equals(String.valueOf(packageType2));
+//		boolean multiPersonScorePackageFlag = packageType1List.contains(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())
+//				&& PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(String.valueOf(packageType2));
+//		if (onePersonScorePackageFlag || multiPersonScorePackageFlag) {
+//			// 如果是个人承接-按积分值/多人承接-按积分值,判断当前用户是否配置了团队负责人
+//			List<WmTeam> teamList = wmTeamService.list(Wrappers.<WmTeam>lambdaQuery()
+//					.eq(WmTeam::getDeptId, sendDeptId)
+//					.eq(WmTeam::getEnableFlag, EnableEnum.ENABLE.val())
+//					.eq(WmTeam::getDelFlag, DelEnum.NOT_DEL.val())
+//					.apply("FIND_IN_SET({0}, leader)", String.valueOf(userId)));
+//			if (CollectionUtil.isNotEmpty(teamList)) {
+//				// 如果配置了,则只查询所在团队下发的积分包
+//				List<String> teamIdList = teamList.stream().map(wmTeam -> String.valueOf(wmTeam.getId())).collect(Collectors.toList());
+//				queryWrapper.in(WmScorePackage::getPackageUserScope, teamIdList);
+//			}
+//		}
+
+		Page<WmScorePackage> wmScorePackagePage = null;
+		if (StrUtil.isNotBlank(acceptUser)) {
+			// 带有接单对象acceptUser模糊查询的查询
+			wmScorePackagePage = wmScorePackageMapper.listScorePackage(new Page<>(current, size), queryWrapper.orderByDesc(WmScorePackage::getCreateTime), acceptUser);
+		} else {
+			wmScorePackagePage = wmScorePackageMapper.selectPage(new Page<>(current, size), queryWrapper
+					.orderByDesc(WmScorePackage::getCreateTime));
+		}
+
+		List<WmScorePackage> pageRecords = wmScorePackagePage.getRecords();
+
+		if (CollUtil.isNotEmpty(pageRecords)) {
+//			List<Future<WmScorePackage>> futureList = new ArrayList<>(pageRecords.size());
+
+			for (WmScorePackage scorePackage : pageRecords) {
+				if (packageType2 == 2) {
+
+					int wsNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+							.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
+							.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
+					int asNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+							.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
+							.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
+					scorePackage.setWsTaskNum(wsNum);
+					scorePackage.setAsTaskNum(asNum);
+
+				}
+
+				if (PackageTypeEnum.TYPE1_HCP_PACKAGE.getName().equals(scorePackage.getPackageType1())) {
+					// 如果是患者教育,则转换积分值 '分'-> '元'
+					Integer score = scorePackage.getScore();
+					String userScore = scorePackage.getUserScore();
+					if (org.apache.commons.lang3.StringUtils.isNumeric(userScore)) {
+						scorePackage.setUserScore(String.format("%.2f", Integer.parseInt(userScore) / 100.0));
+					}
+				}
+
+				List<WmScoreTaskType> taskTypeList = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(scorePackage.getId());
+				if (CollUtil.isNotEmpty(taskTypeList)) {
+					String taskTypes = taskTypeList.stream().map(
+							WmScoreTaskType::getTaskTypeName).collect(Collectors.joining(","));
+					scorePackage.setTaskTypes(taskTypes);
+				}
 			}
 
-			wmScorePackagePage.setRecords(finalRecords);
-		} catch (ExecutionException | InterruptedException e) {
-			log.error("获取分页信息失败");
-			return R.failed("获取分页信息失败");
+//			List<WmScorePackage> finalRecords = new ArrayList<>(pageRecords.size());
+//			try {
+//				for (Future<WmScorePackage> future : futureList) {
+//					WmScorePackage wmScorePackage = future.get();
+//					finalRecords.add(wmScorePackage);
+//
+//				}
+//
+//				wmScorePackagePage.setRecords(finalRecords);
+//			} catch (ExecutionException | InterruptedException e) {
+//				log.error("获取分页信息失败", e);
+//				return R.failed("获取分页信息失败");
+//			}
 		}
 
 		return R.ok(wmScorePackagePage);

+ 50 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageSettleNoteController.java

@@ -1,6 +1,8 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,6 +11,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.model.excel.WmSettlePackageSettleExcelModel;
 import com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput;
+import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
@@ -75,7 +78,7 @@ public class WmScorePackageSettleNoteController {
 	 */
 	@ApiOperation(value = "分页查询任务+结算信息", notes = "分页查询任务+结算信息")
 	@GetMapping("/settle/page")
-	public R getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note) {
+	public R getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note, String[] settleStatusArr) {
 		if (StringUtils.isEmpty(note.getPackageId())) {
 			return R.failed("参数异常");
 		}
@@ -87,7 +90,25 @@ public class WmScorePackageSettleNoteController {
 			note.setStartSubTime(startSubTime);
 			note.setEndSubTime(endSubTime);
 		}
-		return R.ok(wmScorePackageSettleNoteService.getWmTaskForSettlePage(page, note));
+
+		WmScorePackage scorePackage = wmScorePackageService.getById(note.getPackageId());
+		if (PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(scorePackage.getPackageType1())) {
+			IPage<WmTaskSettleNoteOutput> settlePage2 = wmScorePackageSettleNoteService.getWmTaskForSettlePage2(page, note, settleStatusArr);
+			settlePage2.getRecords().forEach(output -> {
+				if (output.getSubjectLocation() != null) {
+					output.setSubjectLocationName(output.getSubjectLocation().getDescription());
+				}
+			});
+			return R.ok(settlePage2);
+		}
+
+		IPage<WmTaskSettleNoteOutput> settlePage = wmScorePackageSettleNoteService.getWmTaskForSettlePage(page, note, settleStatusArr);
+		settlePage.getRecords().forEach(output -> {
+			if (output.getSubjectLocation() != null) {
+				output.setSubjectLocationName(output.getSubjectLocation().getDescription());
+			}
+		});
+		return R.ok(settlePage);
 	}
 
 	/**
@@ -159,6 +180,7 @@ public class WmScorePackageSettleNoteController {
 	 * @param note
 	 * @return R
 	 */
+	@SysLog("settleNote保存结算")
 	@ApiOperation(value = "保存", notes = "保存")
 	@PostMapping("/saveSettleInfo")
 	public R saveSettleInfo(@RequestBody WmScorePackageSettleNote note) {
@@ -168,12 +190,25 @@ public class WmScorePackageSettleNoteController {
 		return wmScorePackageSettleNoteService.saveSettleInfo(note);
 	}
 
+	/**
+	 * 批量保存业务结算
+	 *
+	 * @param notes note列表
+	 * @return 结果
+	 */
+	@SysLog("批量保存业务结算")
+	@PostMapping("/batch-save-settle")
+	public R<?> batchSaveSettleInfo(@RequestBody List<WmScorePackageSettleNote> notes) {
+		return wmScorePackageSettleNoteService.batchSaveSettleInfo(notes);
+	}
+
 	/**
 	 * 提交结算申请
 	 *
 	 * @param note
 	 * @return R
 	 */
+	@SysLog("提交结算申请")
 	@ApiOperation(value = "提交结算申请", notes = "提交结算申请")
 	@PostMapping("/subSettleInfo")
 	public R subSettleInfo(@RequestBody WmScorePackageSettleNote note) {
@@ -181,6 +216,19 @@ public class WmScorePackageSettleNoteController {
 		return wmScorePackageSettleNoteService.subSettleInfo(note);
 	}
 
+	/**
+	 * 批量提交业务结算申请
+	 *
+	 * @param notes note列表
+	 * @return R
+	 */
+	@SysLog("批量提交业务结算申请")
+	@PostMapping("/batch-sub-settle")
+	public R<?> batchSubSettleInfo(@RequestBody List<WmScorePackageSettleNote> notes) {
+
+		return wmScorePackageSettleNoteService.batchSubSettleInfo(notes);
+	}
+
 	/**
 	 * 撤销结算申请
 	 *

+ 0 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageStatusController.java

@@ -32,7 +32,6 @@ import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 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.WmTeamService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -64,7 +63,6 @@ import java.util.stream.Collectors;
 public class WmScorePackageStatusController {
 
     private final  WmScorePackageStatusService wmScorePackageStatusService;
-	private final WmTaskService wmTaskService;
 	private final WmScorePackageService wmScorePackageService;
 	private final WmTeamService wmTeamService;
 

+ 58 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java

@@ -45,6 +45,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaHospital;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskRule;
@@ -53,8 +54,10 @@ import com.qunzhixinxi.hnqz.admin.entity.XlsPackageInfo;
 import com.qunzhixinxi.hnqz.admin.entity.XlsTask;
 import com.qunzhixinxi.hnqz.admin.entity.dto.CommonEvidenceDTO;
 import com.qunzhixinxi.hnqz.admin.entity.model.excel.CommonTaskExcelModel;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
+import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
-import com.qunzhixinxi.hnqz.admin.service.ReportExportService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
@@ -62,8 +65,8 @@ import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
-import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
@@ -123,8 +126,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -147,6 +150,8 @@ public class WmTaskController {
 
 	private final WmScorePackageService wmScorePackageService;
 
+	private final WmScorePackageSettleNoteService wmScorePackageSettleNoteService;
+
 	private final SysDeptService sysDeptService;
 
 	private final SysUserService sysUserService;
@@ -165,10 +170,6 @@ public class WmTaskController {
 
 	private final WmTaskContentService wmTaskContentService;
 
-	private final ReportExportService reportExportService;
-
-	private final WmDaPharmacyService wmDaPharmacyService;
-
 	private final SysFileService sysFileService;
 
 	private final RabbitMqClient rabbitMqClient;
@@ -1150,6 +1151,56 @@ public class WmTaskController {
 		return wmTaskService.getWmTaskList(page, wmTask);
 	}
 
+	/**
+	 * 根据积分包id查询任务
+	 *
+	 * @param page       分页参数
+	 * @param packageId  积分包id
+	 * @param taskStatus 任务审核状态
+	 * @param realName   姓名
+	 * @return 分页结果
+	 */
+	@GetMapping("/list-score-package-task")
+	public R<?> listScorePackageTask(Page<WmTask> page, @RequestParam("packageId") String packageId,
+									 TaskStatusEnum taskStatus, @RequestParam(value = "taskUserId", required = false) String realName) {
+		QueryWrapper<WmTask> queryWrapper = Wrappers.query();
+		if (StrUtil.isNotBlank(realName)) {
+			queryWrapper.like("u.realname", realName);
+		}
+		if (taskStatus != null) {
+			queryWrapper.eq("t.task_status", taskStatus.val());
+		}
+		queryWrapper.eq("t.score_package_id", packageId);
+		queryWrapper.eq("t.del_flag", DelEnum.NOT_DEL.val());
+		queryWrapper.eq("t.real_flag", "0");
+		queryWrapper.orderByDesc("t.lookinto_date");
+		IPage<WmTask> taskIPage = wmTaskMapper.listWmTaskByWrapper(new Page<>(page.getCurrent(), page.getSize()), queryWrapper);
+
+		// 结算列表加个结算状态
+		if (TaskStatusEnum.APPROVED.equals(taskStatus)) {
+			if (CollUtil.isNotEmpty(taskIPage.getRecords())) {
+				List<WmScorePackageSettleNote> settleNoteList = wmScorePackageSettleNoteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+						.eq(WmScorePackageSettleNote::getPackageId, packageId));
+				Map<String, WmScorePackageSettleNote> settleNoteMap = settleNoteList.stream()
+						.filter(note -> StrUtil.isNotBlank(note.getTaskId()))
+						.collect(Collectors.toMap(WmScorePackageSettleNote::getTaskId, Function.identity()));
+				taskIPage.getRecords().forEach(wmTask -> {
+					WmScorePackageSettleNote settleNote = settleNoteMap.get(wmTask.getId());
+					if (settleNote != null) {
+						wmTask.setSettleStatus(settleNote.getSettleNoteStatus());
+						wmTask.setSubToGigTime(settleNote.getSubToGigTime());
+						wmTask.setNotifyDate(settleNote.getNotifyTime());
+						wmTask.setSubTime(settleNote.getSubTime());
+					} else {
+						wmTask.setSettleStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
+					}
+				});
+			}
+		}
+
+		return R.ok(taskIPage);
+	}
+
 	/**
 	 * 任务审核
 	 *

+ 24 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmTask.java

@@ -261,4 +261,28 @@ public class WmTask extends Model<WmTask> {
 	 */
 	@TableField(exist = false)
 	private String username;
+
+	/**
+	 * 结算状态
+	 */
+	@TableField(exist = false)
+	private Integer settleStatus;
+
+	/**
+	 * 提交时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime subTime;
+
+	/**
+	 * 提交到零工时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime subToGigTime;
+
+	/**
+	 * 结算时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime notifyDate;
 }

+ 36 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/output/WmTaskSettleNoteOutput.java

@@ -17,6 +17,7 @@
 
 package com.qunzhixinxi.hnqz.admin.entity.output;
 
+import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -49,6 +50,11 @@ public class WmTaskSettleNoteOutput {
 	 */
 	private String scorePackageId;
 
+	/**
+	 * 积分包名称
+	 */
+	private String scorePackageName;
+
 	/**
 	 * 创建时间
 	 */
@@ -109,6 +115,16 @@ public class WmTaskSettleNoteOutput {
 	 */
 	private String subType;
 
+	/**
+	 * 税源地
+	 */
+	private SubjectLocation subjectLocation;
+
+	/**
+	 * 税源地名称
+	 */
+	private String subjectLocationName;
+
 	/**
 	 * 发票类目名称
 	 */
@@ -119,6 +135,11 @@ public class WmTaskSettleNoteOutput {
 	 */
 	private LocalDateTime subTime;
 
+	/**
+	 * 提交到零工平台的时间
+	 */
+	private LocalDateTime subToGigTime;
+
 	/**
 	 * 回调时间
 	 */
@@ -133,4 +154,19 @@ public class WmTaskSettleNoteOutput {
 	 * 用户手机号
 	 */
 	private String username;
+
+	/**
+	 * 任务的完成时间
+	 */
+	private LocalDateTime lookintoDate;
+
+	/**
+	 * 实际结算金额
+	 */
+	private BigDecimal actualAmount;
+
+	/**
+	 * 任务积分
+	 */
+	private Integer score;
 }

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/PackageTypeEnum.java

@@ -27,6 +27,11 @@ public enum PackageTypeEnum {
 	 * type1问诊包(患者教育)
 	 */
 	TYPE1_HCP_PACKAGE("5", "患者教育", "问诊包"),
+	/**
+	 * type1积分包+任务包
+	 */
+	TYPE1_SCORE_AND_TASK_PACKAGE("6", "定额定量", "积分任务包"),
+
 	/**
 	 * type2任务包(定额、定量、通用)
 	 */

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectLocation.java

@@ -46,7 +46,8 @@ public enum SubjectLocation {
 	// 汉唐
 //	HAN_TANG("HAN_TANG", GigTypeEnum.HAN_TANG, "汉唐", 12),
 	// 中智
-	ZHONG_ZHI("ZHONG_ZHI", GigTypeEnum.ZHONG_ZHI, "中智", 12);
+	ZHONG_ZHI("ZHONG_ZHI", GigTypeEnum.ZHONG_ZHI, "中智", 12),
+	ZHAO_YU("ZHAO_YU", GigTypeEnum.OLADING, "钉灵工-河南兆宇", 13);
 
 	@EnumValue
 	private final String type;

+ 11 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageSettleNoteMapper.java

@@ -48,7 +48,17 @@ public interface WmScorePackageSettleNoteMapper extends BaseMapper<WmScorePackag
 	 * @param note
 	 * @return
 	 */
-	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, @Param("query") WmScorePackageSettleNote note);
+	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, @Param("query") WmScorePackageSettleNote note, @Param("settleStatusArr") String[] settleStatusArr);
+
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @param settleStatusArr
+	 * @return
+	 */
+	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage2(Page page, @Param("query") WmScorePackageSettleNote note, @Param("settleStatusArr") String[] settleStatusArr);
 
 	/**
 	 * 结算包结算列表

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmPayOffService.java

@@ -32,6 +32,14 @@ public interface WmPayOffService extends IService<WmPayOff> {
 	 */
 	R<?> settleById(String pkgId);
 
+	/**
+	 * 多人承接-按积分值业务结算-查询
+	 *
+	 * @param taskIds 任务id
+	 * @return 结算信息
+	 */
+	R<?> settleInfoByTaskIds(String[] taskIds);
+
 	/**
 	 * 业务保存操作
 	 *

+ 28 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageSettleNoteService.java

@@ -40,9 +40,20 @@ public interface WmScorePackageSettleNoteService extends IService<WmScorePackage
 	 *
 	 * @param page
 	 * @param note
+	 * @param settleStatusArr
 	 * @return
 	 */
-	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note);
+	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note, String[] settleStatusArr);
+
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @param settleStatusArr
+	 * @return
+	 */
+	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage2(Page page, WmScorePackageSettleNote note, String[] settleStatusArr);
 
 	/**
 	 * 结算包结算列表
@@ -58,8 +69,24 @@ public interface WmScorePackageSettleNoteService extends IService<WmScorePackage
 
 	R saveSettleInfo(WmScorePackageSettleNote note);
 
+	/**
+	 * 批量业务结算保存
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	R<?> batchSaveSettleInfo(List<WmScorePackageSettleNote> noteList);
+
 	R subSettleInfo(WmScorePackageSettleNote note);
 
+	/**
+	 * 批量业务结算提交
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	R<?> batchSubSettleInfo(List<WmScorePackageSettleNote> noteList);
+
 	R revokeSettle(WmScorePackageSettleNote note);
 
 	/**

+ 169 - 16
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPayOffServiceImpl.java

@@ -14,7 +14,9 @@ import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.*;
 import com.qunzhixinxi.hnqz.admin.entity.input.SettleNoteStatusOutput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
+import com.qunzhixinxi.hnqz.admin.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
@@ -56,6 +58,7 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -157,7 +160,7 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 				note.setPackageStatusId(String.valueOf(status.getId()));
 				note.setPackageId(status.getPackageId());
 
-				if ("1".equals(wmScorePackage.getPackageType1())) {
+				if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage.getPackageType1())) {
 
 					note.setSettleAmount(StringUtils.isEmpty(status.getUserScore()) ? BigDecimal.ZERO : new BigDecimal(status.getUserScore(), mc));
 
@@ -235,6 +238,119 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		return R.ok(resultMap);
 	}
 
+	/**
+	 * 多人承接-按积分值业务结算-查询
+	 *
+	 * @param taskIds 任务id
+	 * @return 结算信息
+	 */
+	@Override
+	public R<?> settleInfoByTaskIds(String[] taskIds) {
+		// 查询任务
+		List<WmTask> taskList = wmTaskService.listByIds(Arrays.asList(taskIds));
+		Set<String> taskIdSet = taskList.stream().map(WmTask::getScorePackageId).collect(Collectors.toSet());
+		if (taskIdSet.size() > 1) {
+			return R.failed("所选任务不属于同一个积分包");
+		}
+
+		String scorePackageId = taskList.get(0).getScorePackageId();
+		WmScorePackage wmScorePackage = wmScorePackageService.getById(scorePackageId);
+
+		// user-taskList map
+		Map<String, List<WmTask>> userTaskMap = taskList.stream().collect(Collectors.groupingBy(WmTask::getTaskUserId));
+		// taskId-task Map
+		Map<String, WmTask> taskMap = taskList.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
+
+		// 查询settleNote
+		List<WmScorePackageSettleNote> notes = noteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getTaskId, Arrays.asList(taskIds))
+				.eq(WmScorePackageSettleNote::getPackageId, scorePackageId));
+		Map<String, WmScorePackageSettleNote> taskSettleNoteMap = notes.stream()
+				.filter(note -> StrUtil.isNotBlank(note.getTaskId()))
+				.collect(Collectors.toMap(WmScorePackageSettleNote::getTaskId, Function.identity()));
+
+		// 查询user
+		Set<String> allUserIdSet = new HashSet<>();
+		allUserIdSet.addAll(userTaskMap.keySet());
+		allUserIdSet.addAll(notes.stream().map(WmScorePackageSettleNote::getUserId).collect(Collectors.toSet()));
+		List<SysUser> sysUsers = sysUserMapper.selectBatchIds(allUserIdSet);
+		Map<Integer, SysUser> userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+
+		// 页面回显的结算对象列表
+		List<WmScorePackageSettleNote> userNotes = new ArrayList<>();
+		// 用于结算的note参数
+		List<WmScorePackageSettleNote> toSettleNotes = new ArrayList<>();
+
+		if (wmScorePackage.getLocation() != null) {
+			wmScorePackage.setSubjectLocation(wmScorePackage.getLocation().name());
+		}
+//		if (StrUtil.isBlank(wmScorePackage.getSubjectLocation())){
+//			return R.failed("结算积分包未勾选税源地");
+//		}
+
+		// 按结算对象分组,统计分别对应的结算信息
+		for (String userId : userTaskMap.keySet()) {
+			WmScorePackageSettleNote oneUserNote = new WmScorePackageSettleNote();
+			List<WmTask> userTasks = userTaskMap.get(userId);
+
+			// 计算每个人的总任务积分
+			BigDecimal userTotalSettleAmount = BigDecimal.ZERO;
+			for (WmTask task : userTasks) {
+				WmScorePackageSettleNote settleNote = taskSettleNoteMap.get(task.getId());
+				// 存在note,则取note金额,否则取task的积分
+				if (settleNote != null) {
+					userTotalSettleAmount = userTotalSettleAmount.add(settleNote.getSettleAmount());
+				} else {
+					userTotalSettleAmount = userTotalSettleAmount.add(BigDecimal.valueOf(task.getScore()));
+				}
+			}
+
+			oneUserNote.setPackageId(scorePackageId);
+			oneUserNote.setSettleAmount(userTotalSettleAmount);
+			oneUserNote.setDiscount(BigDecimal.ONE);
+			oneUserNote.setUserId(userId);
+			oneUserNote.setSettleNoteStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
+
+			SysUser noteUser = userMap.get(Integer.parseInt(userId));
+			oneUserNote.setRealName(noteUser.getRealname());
+			oneUserNote.setIdCardNumber(noteUser.getIdCardNumber());
+			userNotes.add(oneUserNote);
+		}
+
+		// 添加用于结算的note参数
+		for (String taskId : taskIds) {
+			WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+			// note存在则直接获取
+			WmScorePackageSettleNote settleNote = taskSettleNoteMap.get(taskId);
+			if (settleNote != null) {
+				toSettleNotes.add(settleNote);
+				continue;
+			}
+
+			// note不存在,取task中的信息作为结算信息
+			WmTask task = taskMap.get(taskId);
+			note.setSettleAmount(BigDecimal.valueOf(task.getScore()));
+			note.setSettleNo(IdUtil.fastSimpleUUID());
+			note.setPackageId(scorePackageId);
+			note.setTaskId(taskId);
+			note.setDiscount(BigDecimal.ONE);
+			note.setUserId(task.getTaskUserId());
+			note.setSettleNoteStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
+			// user信息
+			SysUser noteUser = userMap.get(Integer.parseInt(task.getTaskUserId()));
+			note.setRealName(noteUser.getRealname());
+			note.setIdCardNumber(noteUser.getIdCardNumber());
+			toSettleNotes.add(note);
+		}
+
+		Map<String, Object> resultMap = new HashMap<>(3);
+		resultMap.put("wsp", wmScorePackage);
+		resultMap.put("notes", toSettleNotes);
+		resultMap.put("userNotes", userNotes);
+
+		return R.ok(resultMap);
+	}
+
 	/**
 	 * 业务提交结算信息到财务
 	 *
@@ -289,17 +405,24 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		updateEntity.setId(input.getId());
 		updateEntity.setSettleStatus(DingEnum.SETTLE_STATUS_WAIT.getType());
 		updateEntity.setScorePackageStatus("5");
-		updateEntity.setSettleFlag("1");
 		updateEntity.setDescription(input.getDescription());
 		updateEntity.setSubType(String.valueOf(location.getGigType().getCode()));
 		updateEntity.setLocation(input.getSubjectLocation());
 		updateEntity.setSettlementDate(LocalDateTime.now());
 
-		if ("2".equals(wmScorePackage.getPackageType2())) {
+		if (PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val().equals(wmScorePackage.getPackageType2())
+				&& !StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
 			updateEntity.setPackageFinishStatus("1");
 			updateEntity.setTaskAddFlag("0");
 		}
 
+		if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
+			// 多人承接积分包可以一直结算
+			updateEntity.setSettleFlag("0");
+		} else {
+			updateEntity.setSettleFlag("1");
+		}
+
 		wmScorePackageService.updateById(updateEntity);
 		noteService.saveOrUpdateBatch(notes);
 
@@ -611,11 +734,15 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 							note.setStreamId(requestId);
 							noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
 						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 							noticeInfo.append(sysUser.getRealname()).append(":" + dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 						}
 					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						log.warn("众蚁云结算提交成功 data 获取不到: {}", note.getSettleNo());
 						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 					}
 				} else {
 					log.warn("众蚁云结算失败: {}", note.getSettleNo());
@@ -806,11 +933,14 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 							note.setStreamId(requestId);
 							noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
 						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 							noticeInfo.append(sysUser.getRealname()).append(":" + dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 						}
 					} else {
 						log.warn("汇企云结算提交成功 data 获取不到: {}", note.getSettleNo());
 						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 					}
 				} else {
 					log.warn("汇企云结算失败: {}", note.getSettleNo());
@@ -994,10 +1124,18 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
 					}
 					note.setUpdateTime(LocalDateTime.now());
-					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-					// 新增字段streamId
-					note.setStreamId(dataJsonObj.getStr("requestId"));
-					noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+
+					String requestId = dataJsonObj.getStr("requestId");
+					if (StrUtil.isNotBlank(requestId)) {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						// 新增字段streamId
+						note.setStreamId(requestId);
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
 				} else {
 					log.warn("浪潮结算失败: {}", note.getSettleNo());
 					note.setUpdateTime(LocalDateTime.now());
@@ -1174,11 +1312,14 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 							note.setStreamId(requestId);
 							noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
 						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 							noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 						}
 					} else {
 						log.warn("政企之星结算提交成功 data 获取不到: {}", note.getSettleNo());
 						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 					}
 				} else {
 					log.warn("政企之星结算失败: {}", note.getSettleNo());
@@ -1362,14 +1503,23 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 					if (dataJsonObj == null) {
 						log.warn("自由职家结算提交成功 data 获取不到: {}", note.getSettleNo());
 						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 					}
 					note.setUpdateTime(LocalDateTime.now());
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-					// 新增字段streamId
-					note.setStreamId(dataJsonObj.getStr("requestId"));
-					// 第三方任务id
-					note.setThirdTaskId(dataJsonObj.getStr("taskId"));
-					noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+
+					String requestId = dataJsonObj.getStr("requestId");
+					if (StrUtil.isNotBlank(requestId)) {
+						// 新增字段streamId
+						note.setStreamId(requestId);
+						// 第三方任务id
+						note.setThirdTaskId(dataJsonObj.getStr("taskId"));
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
 				} else {
 					log.warn("自由职家结算提交失败: {}", note.getSettleNo());
 					note.setUpdateTime(LocalDateTime.now());
@@ -1510,14 +1660,17 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 				log.info("税邦云结算提交成功: {}", note.getSettleNo());
 				//streamId 获取不到
 				if (StringUtils.isEmpty(response.getMessage())) {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.info("税邦云结算提交成功 streamId 获取不到: {}", note.getSettleNo());
 					noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+				} else {
+					// 新增字段streamId
+					note.setStreamId(response.getMessage());
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+					noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
 				}
 				note.setUpdateTime(LocalDateTime.now());
-				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-				// 新增字段streamId
-				note.setStreamId(response.getMessage());
-				noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
 			} else {
 				log.info("税邦云结算提交失败: {}", note.getSettleNo());
 				note.setUpdateTime(LocalDateTime.now());

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

@@ -713,6 +713,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		if (PackageTypeEnum.TYPE1_HCP_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 			// 患者教育,固定只能一人领取
 			wmScorePackage.setUserNum(1);
+		} else if (PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
+			// 多人承接-按积分值
+			wmScorePackage.setUserNum(9999);
 		}
 		wmScorePackage.setCreateUser(currentUser.getId());
 		wmScorePackage.setCreateTime(LocalDateTime.now());
@@ -770,6 +773,18 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					tasktypeList.add(addTaskTypeTree43);
 					tasktypeList.add(addTaskTypeTree44);
 				}
+				// 如果存在taskTypeId=47 47,库存调研 48,竞品调研  49,培训 50,使用情况调查
+				if (tasktypeList.stream().anyMatch(wmTaskTypeTree -> "47".equals(wmTaskTypeTree.getTaskTypeId()))) {
+					WmTaskTypeTree addTaskTypeTree48 = new WmTaskTypeTree();
+					addTaskTypeTree48.setTaskTypeId("48");
+					WmTaskTypeTree addTaskTypeTree49 = new WmTaskTypeTree();
+					addTaskTypeTree49.setTaskTypeId("49");
+					WmTaskTypeTree addTaskTypeTree50 = new WmTaskTypeTree();
+					addTaskTypeTree50.setTaskTypeId("50");
+					tasktypeList.add(addTaskTypeTree48);
+					tasktypeList.add(addTaskTypeTree49);
+					tasktypeList.add(addTaskTypeTree50);
+				}
 
 				for (WmTaskTypeTree type : tasktypeList) {
 					WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
@@ -792,8 +807,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					}
 				}
 			} else {
-				if (wmScorePackage.getPackageType1().equals("5") || wmScorePackage.getPackageType1().equals("4")
-						|| wmScorePackage.getPackageType2().equals("2")) {
+				if (wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())
+						|| wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_HCP_PACKAGE.val())
+						|| wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SETTLE_PACKAGE.val())
+						|| wmScorePackage.getPackageType2().equals(PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val())) {
 					//结算包
 					WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
 					wmScoreTaskType.setScoreId(wmScorePackage.getId());
@@ -1385,6 +1402,18 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					wmScorePackage.getTaskTypeList().add(addTaskTypeTree43);
 					wmScorePackage.getTaskTypeList().add(addTaskTypeTree44);
 				}
+				// 如果存在taskTypeId=47 47,库存调研 48,竞品调研  49,培训 50,使用情况调查
+				if (tasktypeList.stream().anyMatch(wmTaskTypeTree -> "47".equals(wmTaskTypeTree.getTaskTypeId()))) {
+					WmTaskTypeTree addTaskTypeTree48 = new WmTaskTypeTree();
+					addTaskTypeTree48.setTaskTypeId("48");
+					WmTaskTypeTree addTaskTypeTree49 = new WmTaskTypeTree();
+					addTaskTypeTree49.setTaskTypeId("49");
+					WmTaskTypeTree addTaskTypeTree50 = new WmTaskTypeTree();
+					addTaskTypeTree50.setTaskTypeId("50");
+					tasktypeList.add(addTaskTypeTree48);
+					tasktypeList.add(addTaskTypeTree49);
+					tasktypeList.add(addTaskTypeTree50);
+				}
 
 				for (WmTaskTypeTree type : tasktypeList) {
 					WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
@@ -1985,7 +2014,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		long shtgtt = 0;
 		// 审核不通过百分比
 		long shbtgtt = 0;
-		if (StrUtil.equals(scorePackage.getPackageType1(), "1")) {
+		if (StrUtil.equals(scorePackage.getPackageType1(), PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())
+				|| StrUtil.equals(scorePackage.getPackageType1(), PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())) {
 			int score = scorePackage.getScore();
 			if (score != 0) {
 				yshtt = ysh * 100L / score;

+ 248 - 94
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -70,6 +70,7 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
@@ -117,8 +118,21 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 	 * @return
 	 */
 	@Override
-	public IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note) {
-		return noteMapper.getWmTaskForSettlePage(page, note);
+	public IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note, String[] settleStatusArr) {
+		return noteMapper.getWmTaskForSettlePage(page, note, settleStatusArr);
+	}
+
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @param settleStatusArr
+	 * @return
+	 */
+	@Override
+	public IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage2(Page page, WmScorePackageSettleNote note, String[] settleStatusArr) {
+		return noteMapper.getWmTaskForSettlePage2(page, note, settleStatusArr);
 	}
 
 	/**
@@ -290,9 +304,11 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			this.baseMapper.insert(entity);
 		} else {
 			WmScorePackageSettleNote oldData = this.baseMapper.selectById(note.getId());
+			if (oldData == null) {
+				return R.failed("结算数据不存在,不能修改");
+			}
 
 			if (0 != oldData.getSettleNoteStatus()) {
-
 				return R.failed("状态异常,不能修改");
 			}
 			WmScorePackageSettleNote updateEntity = new WmScorePackageSettleNote();
@@ -310,6 +326,24 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return R.ok();
 	}
 
+	/**
+	 * 批量业务结算保存
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<?> batchSaveSettleInfo(List<WmScorePackageSettleNote> noteList) {
+		for (WmScorePackageSettleNote note : noteList) {
+			R settleResult = this.saveSettleInfo(note);
+			if (settleResult.getCode() != 0) {
+				throw new RuntimeException(settleResult.getMsg());
+			}
+		}
+		return R.ok();
+	}
+
 	@Override
 	public R subSettleInfo(WmScorePackageSettleNote note) {
 
@@ -412,7 +446,6 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		if (null != note.getId()) {
 			WmScorePackageSettleNote oldData = this.baseMapper.selectById(note.getId());
 			if (0 != oldData.getSettleNoteStatus()) {
-
 				return R.failed("状态异常,不能提交");
 			}
 			updateEntity = new WmScorePackageSettleNote();
@@ -420,8 +453,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			updateEntity.setSubType(subType);
 			updateEntity.setSubjectLocation(note.getSubjectLocation());
 			updateEntity.setInvoiceType(note.getInvoiceType());
-			updateEntity.setCategoryName(note.toCategoryName());
+			updateEntity.setCategoryName(note.getCategoryName());
 			updateEntity.setSettleAmount(note.getSettleAmount());
+			updateEntity.setActualAmount(note.getActualAmount());
 			updateEntity.setSettleNoteStatus(9);
 			updateEntity.setSubTime(localDateTime);
 			updateEntity.setUpdateTime(localDateTime);
@@ -438,8 +472,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			entity.setSubType(subType);
 			entity.setSubjectLocation(note.getSubjectLocation());
 			entity.setInvoiceType(note.getInvoiceType());
-			entity.setCategoryName(note.toCategoryName());
+			entity.setCategoryName(note.getCategoryName());
 			entity.setSettleAmount(note.getSettleAmount());
+			entity.setActualAmount(note.getActualAmount());
 			entity.setDiscount(new BigDecimal(1));
 			entity.setPackageId(note.getPackageId());
 			entity.setTaskId(note.getTaskId());
@@ -459,6 +494,24 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return R.ok();
 	}
 
+	/**
+	 * 批量业务结算提交
+	 *
+	 * @param noteList note列表
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<?> batchSubSettleInfo(List<WmScorePackageSettleNote> noteList) {
+		for (WmScorePackageSettleNote note : noteList) {
+			R settleResult = this.subSettleInfo(note);
+			if (settleResult.getCode() != 0) {
+				throw new RuntimeException(settleResult.getMsg());
+			}
+		}
+		return R.ok();
+	}
+
 	@Override
 	public R revokeSettle(WmScorePackageSettleNote note) {
 		WmScorePackageSettleNote updateEntity;
@@ -510,13 +563,13 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 
 		SysUser sysUser = sysUserService.getById(note.getUserId());
 
-		if (input.getSubjectLocation() == null) {
+		if (note.getSubjectLocation() == null) {
 			return R.failed(sysUser.getRealname() + "人员结算渠道不存在,不能结算");
 		}
 
 		// 获取结算零工
-		GigTypeEnum gigTypeEnum = input.getSubjectLocation().getGigType();
-		String subType = String.valueOf(input.getSubjectLocation().getGigType().getCode());
+		GigTypeEnum gigTypeEnum = note.getSubjectLocation().getGigType();
+		String subType = String.valueOf(note.getSubjectLocation().getGigType().getCode());
 
 		/**
 		 * 结算配置信息
@@ -524,6 +577,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		SysDeptSub condition = new SysDeptSub();
 		condition.setDeptId(sysDept.getDeptId());
 		condition.setSubjectType(subType);
+		condition.setSubjectLocation(note.getSubjectLocation());
 		condition.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
 		SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.query(condition));
 
@@ -532,7 +586,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		}
 
 		SysUserSub userSub = sysUserSubMapper.selectOne(Wrappers.<SysUserSub>lambdaQuery()
-				.eq(SysUserSub::getSubjectLocation, input.getSubjectLocation())
+				.eq(SysUserSub::getSubjectLocation, note.getSubjectLocation())
 				.eq(SysUserSub::getDeptId, sysUser.getDeptId())
 				.eq(SysUserSub::getUserId, sysUser.getUserId())
 		);
@@ -550,6 +604,8 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			case OLADING:
 			case ZHENG_QI_ZHI_XING:
 			case LANG_CHAO:
+			case HUI_QI_YUN:
+			case ZHONG_YI_YUN:
 				if (!Objects.equals(userSub.getCertStatus(), DingEnum.CER_STATUS_1.getType())) {
 					return R.failed(sysUser.getRealname() + "未认证,不能发起结算");
 				}
@@ -662,16 +718,16 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 
 			SysUser sysUser = sysUserService.getById(note.getUserId());
 
-			if (input.getSubjectLocation() == null) {
+			if (note.getSubjectLocation() == null) {
 				return R.failed(sysUser.getRealname() + "人员结算渠道不存在,不能结算");
 			}
 
 			// 获取结算零工
-			GigTypeEnum gigTypeEnum = input.getSubjectLocation().getGigType();
-			String subType = String.valueOf(input.getSubjectLocation().getGigType().getCode());
+			GigTypeEnum gigTypeEnum = note.getSubjectLocation().getGigType();
+			String subType = String.valueOf(note.getSubjectLocation().getGigType().getCode());
 
 			SysUserSub userSub = sysUserSubMapper.selectOne(Wrappers.<SysUserSub>lambdaQuery()
-					.eq(SysUserSub::getSubjectLocation, input.getSubjectLocation())
+					.eq(SysUserSub::getSubjectLocation, note.getSubjectLocation())
 					.eq(SysUserSub::getDeptId, sysUser.getDeptId())
 					.eq(SysUserSub::getUserId, sysUser.getUserId())
 			);
@@ -689,6 +745,8 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				case OLADING:
 				case ZHENG_QI_ZHI_XING:
 				case LANG_CHAO:
+				case HUI_QI_YUN:
+				case ZHONG_YI_YUN:
 					if (!Objects.equals(userSub.getCertStatus(), DingEnum.CER_STATUS_1.getType())) {
 						return R.failed(sysUser.getRealname() + "未认证,不能发起结算");
 					}
@@ -950,20 +1008,23 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 							return;
 						}
 
+						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+						LocalDateTime now = LocalDateTime.now();
+						note.setId(id);
+						note.setUpdateTime(now);
+						note.setSubToGigTime(now);
+
 						String requestId = dataJsonObj.getStr("requestId");
 						if (StrUtil.isNotBlank(requestId)) {
-							WmScorePackageSettleNote note = new WmScorePackageSettleNote();
-							LocalDateTime now = LocalDateTime.now();
-							note.setId(id);
-							note.setUpdateTime(LocalDateTime.now());
-							note.setSubToGigTime(now);
 							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 							// 新增字段streamId
 							note.setStreamId(requestId);
-							this.baseMapper.updateById(note);
 						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 							log.info("众蚁云提交成功 message:{}", dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
 						}
+						this.baseMapper.updateById(note);
 					});
 
 				} else {
@@ -972,7 +1033,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						note.setId(id);
 						log.info("众蚁云结算提交失败: {}", note.getSettleNo());
 						LocalDateTime now = LocalDateTime.now();
-						note.setUpdateTime(LocalDateTime.now());
+						note.setUpdateTime(now);
 						note.setSubToGigTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						this.baseMapper.updateById(note);
@@ -990,7 +1051,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 					note.setId(id);
 					log.info("众蚁云结算提交失败: {}", note.getSettleNo());
 					LocalDateTime now = LocalDateTime.now();
-					note.setUpdateTime(LocalDateTime.now());
+					note.setUpdateTime(now);
 					note.setSubToGigTime(now);
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					this.baseMapper.updateById(note);
@@ -1158,20 +1219,22 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 							return;
 						}
 
+						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+						LocalDateTime now = LocalDateTime.now();
+						note.setId(id);
+						note.setSubToGigTime(now);
+						note.setUpdateTime(now);
 						String requestId = dataJsonObj.getStr("requestId");
 						if (StrUtil.isNotBlank(requestId)) {
-							WmScorePackageSettleNote note = new WmScorePackageSettleNote();
-							LocalDateTime now = LocalDateTime.now();
-							note.setId(id);
-							note.setUpdateTime(LocalDateTime.now());
-							note.setSubToGigTime(now);
 							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 							// 新增字段streamId
 							note.setStreamId(requestId);
-							this.baseMapper.updateById(note);
 						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 							log.info("汇企云提交成功 message:{}", dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
 						}
+						this.baseMapper.updateById(note);
 					});
 
 				} else {
@@ -1180,7 +1243,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						note.setId(id);
 						log.info("汇企云结算提交失败: {}", note.getSettleNo());
 						LocalDateTime now = LocalDateTime.now();
-						note.setUpdateTime(LocalDateTime.now());
+						note.setUpdateTime(now);
 						note.setSubToGigTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						this.baseMapper.updateById(note);
@@ -1198,7 +1261,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 					note.setId(id);
 					log.info("汇企云结算提交失败: {}", note.getSettleNo());
 					LocalDateTime now = LocalDateTime.now();
-					note.setUpdateTime(LocalDateTime.now());
+					note.setUpdateTime(now);
 					note.setSubToGigTime(now);
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					this.baseMapper.updateById(note);
@@ -1352,11 +1415,18 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 						LocalDateTime now = LocalDateTime.now();
 						note.setId(id);
-						note.setUpdateTime(LocalDateTime.now());
+						note.setUpdateTime(now);
 						note.setSubToGigTime(now);
-						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-						// 新增字段streamId
-						note.setStreamId(dataJsonObj.getStr("requestId"));
+
+						String requestId = dataJsonObj.getStr("requestId");
+						if (StrUtil.isNotBlank(requestId)) {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+							// 新增字段streamId
+							note.setStreamId(requestId);
+						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+						}
 						this.baseMapper.updateById(note);
 					});
 
@@ -1528,20 +1598,23 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + id);
 							return;
 						}
-						String requestId = dataJsonObj.getStr("requestId");
-						if (StrUtil.isBlank(requestId)) {
-							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + id);
-							return;
-						}
 
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 						LocalDateTime now = LocalDateTime.now();
 						note.setId(id);
-						note.setUpdateTime(LocalDateTime.now());
+						note.setUpdateTime(now);
 						note.setSubToGigTime(now);
-						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-						// 新增字段streamId
-						note.setStreamId(requestId);
+
+						String requestId = dataJsonObj.getStr("requestId");
+						if (StrUtil.isNotBlank(requestId)) {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+							// 新增字段streamId
+							note.setStreamId(requestId);
+						} else {
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + id);
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						}
+
 						this.baseMapper.updateById(note);
 					});
 
@@ -1551,7 +1624,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						note.setId(id);
 						log.info("政企之星结算提交失败: {}", note.getSettleNo());
 						LocalDateTime now = LocalDateTime.now();
-						note.setUpdateTime(LocalDateTime.now());
+						note.setUpdateTime(now);
 						note.setSubToGigTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						this.baseMapper.updateById(note);
@@ -1569,7 +1642,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 					note.setId(id);
 					log.info("政企之星结算提交失败: {}", note.getSettleNo());
 					LocalDateTime now = LocalDateTime.now();
-					note.setUpdateTime(LocalDateTime.now());
+					note.setUpdateTime(now);
 					note.setSubToGigTime(now);
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					this.baseMapper.updateById(note);
@@ -1736,12 +1809,20 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						}
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 						note.setId(id);
-						note.setUpdateTime(LocalDateTime.now());
-						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-						// 新增字段streamId
-						note.setStreamId(dataJsonObj.getStr("requestId"));
-						// 第三方任务id
-						note.setThirdTaskId(dataJsonObj.getStr("taskId"));
+						LocalDateTime now = LocalDateTime.now();
+						note.setSubToGigTime(now);
+						note.setUpdateTime(now);
+						String requestId = dataJsonObj.getStr("requestId");
+						if (StrUtil.isNotBlank(requestId)) {
+							// 新增字段streamId
+							note.setStreamId(requestId);
+							// 第三方任务id
+							note.setThirdTaskId(dataJsonObj.getStr("taskId"));
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+						}
 						this.baseMapper.updateById(note);
 					});
 
@@ -1750,7 +1831,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 						note.setId(id);
 						log.info("自由职家结算提交失败: {}", note.getSettleNo());
-						note.setUpdateTime(LocalDateTime.now());
+						LocalDateTime now = LocalDateTime.now();
+						note.setSubToGigTime(now);
+						note.setUpdateTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						this.baseMapper.updateById(note);
 						log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -1765,7 +1848,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 					WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 					note.setId(id);
 					log.info("自由职家结算提交失败: {}", note.getSettleNo());
-					note.setUpdateTime(LocalDateTime.now());
+					LocalDateTime now = LocalDateTime.now();
+					note.setUpdateTime(now);
+					note.setSubToGigTime(now);
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					this.baseMapper.updateById(note);
 					log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -1853,21 +1938,30 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				log.info("税邦云结算提交成功: {}", note.getSettleNo());
 				//streamId 获取不到
 				if (StringUtils.isEmpty(response.getMessage())) {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.info("税邦云结算提交成功 streamId 获取不到: {}", note.getSettleNo());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+				} else {
+					// 新增字段streamId
+					note.setStreamId(response.getMessage());
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 				}
-				note.setUpdateTime(LocalDateTime.now());
-				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-				// 新增字段streamId
-				note.setStreamId(response.getMessage());
+				LocalDateTime now = LocalDateTime.now();
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
+
 				this.baseMapper.updateById(note);
 			});
 			return R.ok("提交结算成功");
 		} else {
 			noteList.forEach(note -> {
 				log.info("税邦云结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				LocalDateTime now = LocalDateTime.now();
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 				this.baseMapper.updateById(note);
+				redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
 			});
 			return R.ok("结算失败");
 
@@ -1962,24 +2056,32 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
 
-
+			LocalDateTime now = LocalDateTime.now();
 			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
 				JSONObject dataJsonObj = settelObj.getJSONObject("data");
 
 				log.info("众蚁云结算提交成功: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				//data 获取不到
 				if (dataJsonObj != null) {
 					String requestId = dataJsonObj.getStr("requestId");
-					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-					// 新增字段streamId
-					note.setStreamId(requestId);
+					if (StrUtil.isNotBlank(requestId)) {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						// 新增字段streamId
+						note.setStreamId(requestId);
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
 				} else {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.warn("众蚁云结算提交成功 data 获取不到: {}", note.getSettleNo());
 				}
 			} else {
 				log.warn("众蚁云结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setSubToGigTime(now);
+				note.setUpdateTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -1989,7 +2091,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		} catch (Exception e) {
 			log.error("", e);
 			log.warn("众蚁云结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2099,24 +2203,33 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
 
-
+			LocalDateTime now = LocalDateTime.now();
 			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
 				JSONObject dataJsonObj = settelObj.getJSONObject("data");
 
 				log.info("汇企云结算提交成功: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				//data 获取不到
 				if (dataJsonObj != null) {
 					String requestId = dataJsonObj.getStr("requestId");
-					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-					// 新增字段streamId
-					note.setStreamId(requestId);
+					if (StrUtil.isNotBlank(requestId)) {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						// 新增字段streamId
+						note.setStreamId(requestId);
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
 				} else {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.warn("汇企云结算提交成功 data 获取不到: {}", note.getSettleNo());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 				}
 			} else {
 				log.warn("汇企云结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2126,7 +2239,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		} catch (Exception e) {
 			log.error("", e);
 			log.warn("汇企云结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setUpdateTime(now);
+			note.setSubToGigTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2231,7 +2346,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
 
-
+			LocalDateTime now = LocalDateTime.now();
 			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
 				JSONObject dataJsonObj = settelObj.getJSONObject("data");
 
@@ -2243,13 +2358,21 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				if (!StrUtil.equals("200", dataJsonObj.getStr("code"))) {
 					log.info("浪潮提交成功 code 状态异常");
 				}
-				note.setUpdateTime(LocalDateTime.now());
-				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-				// 新增字段streamId
-				note.setStreamId(dataJsonObj.getStr("requestId"));
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
+				String requestId = dataJsonObj.getStr("requestId");
+				if (StrUtil.isNotBlank(requestId)) {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+					// 新增字段streamId
+					note.setStreamId(requestId);
+				} else {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+				}
 			} else {
 				log.warn("浪潮结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2259,7 +2382,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		} catch (Exception e) {
 			log.error("", e);
 			log.warn("浪潮结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setUpdateTime(now);
+			note.setSubToGigTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2350,28 +2475,34 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
 
-
+			LocalDateTime now = LocalDateTime.now();
 			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
 				JSONObject dataJsonObj = settelObj.getJSONObject("data");
 
 				log.info("政企之星结算提交成功: {}", note.getSettleNo());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				//data 获取不到
 				if (dataJsonObj != null) {
 					String requestId = dataJsonObj.getStr("requestId");
 					if (StrUtil.isNotBlank(requestId)) {
-						note.setUpdateTime(LocalDateTime.now());
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 						// 新增字段streamId
 						note.setStreamId(requestId);
 					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						log.warn("政企之星结算提交成功 requestId 获取不到: {}", note.getSettleNo());
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 					}
 				} else {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.warn("政企之星结算提交成功 data 获取不到: {}", note.getSettleNo());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
 				}
 			} else {
 				log.warn("政企之星结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2381,7 +2512,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		} catch (Exception e) {
 			log.error("", e);
 			log.warn("政企之星结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setUpdateTime(now);
+			note.setSubToGigTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2481,24 +2614,34 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
 
-
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
 			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
 				JSONObject dataJsonObj = settelObj.getJSONObject("data");
 				log.info("自由职家结算提交成功: {}", note.getSettleNo());
 				//streamId 获取不到
 				if (dataJsonObj == null) {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					log.warn("自由职家结算提交成功 data 获取不到: {}", note.getSettleNo());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
 				} else {
-					note.setUpdateTime(LocalDateTime.now());
-					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
-					// 新增字段streamId
-					note.setStreamId(dataJsonObj.getStr("requestId"));
-					// 第三方任务id
-					note.setThirdTaskId(dataJsonObj.getStr("taskId"));
+					String requestId = dataJsonObj.getStr("requestId");
+					if (StrUtil.isNotBlank(requestId)) {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						// 新增字段streamId
+						note.setStreamId(requestId);
+						// 第三方任务id
+						note.setThirdTaskId(dataJsonObj.getStr("taskId"));
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
 				}
 			} else {
 				log.warn("自由职家结算提交失败: {}", note.getSettleNo());
-				note.setUpdateTime(LocalDateTime.now());
+				note.setSubToGigTime(now);
+				note.setUpdateTime(now);
 				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2507,7 +2650,10 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			}
 		} catch (Exception e) {
 			log.warn("自由职家结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			log.error("自由职家结算异常", e);
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2577,13 +2723,17 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			if (StringUtils.isEmpty(response.getMessage())) {
 				log.info("税邦云结算提交成功 streamId 获取不到: {}", note.getSettleNo());
 			}
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 			// 新增字段streamId
 			note.setStreamId(response.getMessage());
 		} else {
 			log.info("税邦云结算提交失败: {}", note.getSettleNo());
-			note.setUpdateTime(LocalDateTime.now());
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
 			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 
 			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -2632,6 +2782,10 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				note.getSettleNo(), wmScorePackage.getScorePackageName(),
 				note.getInvoiceType(), jsdList);
 
+		LocalDateTime now = LocalDateTime.now();
+		note.setSubToGigTime(now);
+		note.setUpdateTime(now);
+
 		//提交结算接口失败
 		if (!employPayResponse.isSuccess()) {
 			log.info("人力家接口调用失败,结算解锁settleNoteId:{}", note.getId());

+ 52 - 28
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java

@@ -32,6 +32,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiInput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiOutput;
+import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
@@ -80,11 +81,15 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 		wmScorePackageStatus.setPackageId(packageStatus1.getPackageId());
 		//审批
 		WmScorePackage wmScorePackage=wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
-		if(wmScorePackage.getPackageType1().equals("1")){//定额
+		if(wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())) {
 			//定额包一人一包,所以score=userscore
 			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
 			wmScorePackageStatus.setTaskNum(0);
-		}else {
+		} else if(wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())) {
+			//定额+定量(多人承接-按积分值)
+			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
+			wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
+		}  else {
 			wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
 			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
 		}
@@ -93,24 +98,29 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 		wmScorePackageStatus.setUserId(null);
 		this.updateById(wmScorePackageStatus);
 
-		if("2".equals(wmScorePackageStatus.getStatus())) {//同意
-			wmScorePackage.setScorePackageStatus("3");//进行中
+		// 同意
+		if ("2".equals(wmScorePackageStatus.getStatus())) {
+			// 进行中
+			wmScorePackage.setScorePackageStatus("3");
 			//判断该积分包是否审核满员,如果是,其他接单对象自动改为审核不通过
-			WmScorePackageStatus wmScorePackageStatus1=new WmScorePackageStatus();
+			WmScorePackageStatus wmScorePackageStatus1 = new WmScorePackageStatus();
 			wmScorePackageStatus1.setPackageId(wmScorePackageStatus.getPackageId());
 			wmScorePackageStatus1.setStatus("2");//审核通过
 			wmScorePackageStatus1.setDelFlag("0");
 			wmScorePackageStatus1.setEnableFlag("0");
-			List<WmScorePackageStatus> sList=this.list(Wrappers.query(wmScorePackageStatus1));
-			Integer usernum=wmScorePackage.getUserNum()==null?1:wmScorePackage.getUserNum();
-			if(sList.size()>=usernum){//接单审核通过人数等于积分包需求人数
-				LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper=new LambdaUpdateWrapper();
-				updateWrapper.set(WmScorePackageStatus::getStatus,"3");//审核不通过
-				updateWrapper.set(WmScorePackageStatus::getTaskAddFlag,"0");//不允许新增任务
-				updateWrapper.eq(WmScorePackageStatus::getPackageId,wmScorePackageStatus.getPackageId());
-				updateWrapper.eq(WmScorePackageStatus::getStatus,"1");
-				updateWrapper.eq(WmScorePackageStatus::getDelFlag,"0");
-				updateWrapper.eq(WmScorePackageStatus::getEnableFlag,"0");
+			List<WmScorePackageStatus> sList = this.list(Wrappers.query(wmScorePackageStatus1));
+			int usernum = wmScorePackage.getUserNum() == null ? 1 : wmScorePackage.getUserNum();
+			// 接单审核通过人数等于积分包需求人数
+			if (sList.size() >= usernum) {
+				LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper = new LambdaUpdateWrapper<>();
+				// 审核不通过
+				updateWrapper.set(WmScorePackageStatus::getStatus, "3");
+				// 不允许新增任务
+				updateWrapper.set(WmScorePackageStatus::getTaskAddFlag, "0");
+				updateWrapper.eq(WmScorePackageStatus::getPackageId, wmScorePackageStatus.getPackageId());
+				updateWrapper.eq(WmScorePackageStatus::getStatus, "1");
+				updateWrapper.eq(WmScorePackageStatus::getDelFlag, "0");
+				updateWrapper.eq(WmScorePackageStatus::getEnableFlag, "0");
 				this.update(updateWrapper);
 				//wmScorePackage.setPackageStatus("2");
 				wmScorePackage.setUpdateTime(LocalDateTime.now());
@@ -119,8 +129,10 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 				wmScorePackageMapper.updateById(wmScorePackage);
 			}
 
-		}else {//不同意
-			wmScorePackageStatus.setTaskAddFlag("0");//不可以新增任务
+		} else {
+			// 不同意
+			// 不可以新增任务
+			wmScorePackageStatus.setTaskAddFlag("0");
 			wmScorePackageStatus.setUserId(null);
 			this.updateById(wmScorePackageStatus);
 		}
@@ -131,20 +143,27 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 		query.setDelFlag("0");
 		query.setEnableFlag("0");
 		int total = this.count(Wrappers.query(query));
-		if(total>=1){//有人接单成功
-			wmScorePackage.setScorePackageStatus("3");//进行中
-			if(total>=wmScorePackage.getUserNum()){//人数已满
-				wmScorePackage.setIsReceive("1");//不允许接单
+		// 有人接单成功
+		if (total >= 1) {
+			// 进行中
+			wmScorePackage.setScorePackageStatus("3");
+			// 人数已满
+			if (total >= wmScorePackage.getUserNum()) {
+				// 不允许接单
+				wmScorePackage.setIsReceive("1");
 			}
-		}else {//没有人接单成功
+		} else {
+			// 没有人接单成功
 			WmScorePackageStatus query1 = new WmScorePackageStatus();
 			query1.setPackageId(wmScorePackageStatus.getPackageId());
 			query1.setStatus("1");
 			int total1 = this.count(Wrappers.query(query1));
-			if(total1==0){
-				wmScorePackage.setScorePackageStatus("1");//已分派待申领
-			}else {
-				wmScorePackage.setScorePackageStatus("2");//已申领待审批
+			if (total1 == 0) {
+				// 已分派待申领
+				wmScorePackage.setScorePackageStatus("1");
+			} else {
+				// 已申领待审批
+				wmScorePackage.setScorePackageStatus("2");
 			}
 
 		}
@@ -357,7 +376,8 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 		/**
 		 * 判断定量还是定额 1- 定额   2-定量
 		 */
-		if ("1".equals(wmScorePackage.getPackageType1())) {
+		if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(wmScorePackage.getPackageType1())
+				|| PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 
 			int totalCount = 0;
 			for (WmTask wmtask : wmTaskList) {
@@ -491,10 +511,14 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 
 		log.warn("开始审批,id:[{}], packageId:[{}]", status, wmScorePackage.getId());
 		//定额
-		if (StrUtil.equals("1", wmScorePackage.getPackageType1())) {
+		if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage.getPackageType1())) {
 			//定额包一人一包,所以score=userscore
 			status.setUserScore(String.valueOf(wmScorePackage.getScore()));
 			status.setTaskNum(0);
+		} else if(StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
+			//定额+定量(多人承接-按积分值)
+			status.setUserScore(String.valueOf(wmScorePackage.getScore()));
+			status.setTaskNum(wmScorePackage.getTaskNum());
 		} else {
 			status.setTaskNum(wmScorePackage.getTaskNum());
 			status.setUserScore(String.valueOf(wmScorePackage.getUserScore()));

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

@@ -100,6 +100,14 @@ public class WmScoreTaskTypeServiceImpl extends ServiceImpl<WmScoreTaskTypeMappe
 				continue;
 			}
 
+			if (StrUtil.equals("47", type.getId())) {
+				type.setTaskTypeName("药店推广");
+			}
+			if (StrUtil.equals("48", type.getId()) || StrUtil.equals("49", type.getId()) || StrUtil.equals("50", type.getId())) {
+				// 47,库存调研 48,竞品调研  49,培训 50,使用情况调查 统一回显为一个‘药店推广’
+				continue;
+			}
+
 			if(resultMap.containsKey(type.getParentId())){
 				String typeName = resultMap.get(type.getParentId());
 				typeName = typeName +";"+ type.getTaskTypeName();

+ 9 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -38,6 +38,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.entity.WmUserSign;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaHospitalMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
@@ -653,15 +654,20 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 
 				// 药店推广-47 积分值设置
 				if ("47".equals(wmTaskContent.getTemp30())) {
+					// 根据选择的推广类型 查任务类型模板
+					WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
 					// 查询当前企业的任务类型积分
 					WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
 					WmTaskType queryTaskType = new WmTaskType();
 					queryTaskType.setRuleId(wmScorePackage1.getRuleId());
-					queryTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
+					queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
 					queryTaskType.setRuleId(wmScorePackage1.getRuleId());
 					score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
 					// 计算实际任务积分(数量*企业这个任务类型的积分值)
 					score = score * Integer.parseInt(wmTaskContent.getTemp13());
+					// 设置实际的任务类型
+					wmTaskContent.setTemp30(wmTaskContent.getTemp23());
+					wmTask.setTaskTypeId(wmTaskContent.getTemp23());
 				}
 
 				// 校验任务类型是否启用
@@ -756,7 +762,8 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 						List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
 
 						// 判断定量还是定额 1- 定额   2-定量
-						if ("1".equals(wmScorePackage1.getPackageType1())) {
+						if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())
+								|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
 
 							int totalCount = 0;
 							for (WmTask wmtask : wmTaskList) {

+ 69 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml

@@ -94,19 +94,23 @@
 		t.create_time,
 		t.score_package_id,
 		t.task_user_id,
+		t.lookinto_date,
 		u.realname real_name,
 		u.username,
 		c.temp3 xmbm,
 		e.id noteId,
 		e.invoice_type,
 		e.sub_type,
+		e.subject_location,
 		e.category_name,
 		e.discount,
 		e.stream_id,
 		e.settle_no,
 		e.settle_amount,
+		e.actual_amount,
 		e.settle_note_status,
 		e.sub_time,
+		e.sub_to_gig_time,
 		e.notify_time
 		FROM wm_task t
 		LEFT JOIN wm_task_content c on t.task_content_id = c.id
@@ -125,6 +129,71 @@
 		<if test="query.settleNoteStatus != null">
 			AND e.settle_note_status = #{query.settleNoteStatus}
 		</if>
+		<if test="query.realName != null">
+			AND u.realname like concat('%',#{query.realName},'%')
+		</if>
+		<if test="settleStatusArr != null">
+			AND e.settle_note_status in
+			<foreach collection="settleStatusArr" item="settleStatus" index="index" open="(" close=")" separator=",">
+				#{settleStatus}
+			</foreach>
+		</if>
+		ORDER BY e.sub_time DESC, t.id
+	</select>
+
+	<!-- 结算包结算列表(分页) -->
+	<select id="getWmTaskForSettlePage2" resultType="com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput">
+		SELECT
+		t.id,
+		t.task_type_id,
+		t.create_time,
+		t.score_package_id,
+		p.score_package_name,
+		t.task_user_id,
+		t.lookinto_date,
+		t.score,
+		u.realname real_name,
+		u.username,
+		e.id noteId,
+		e.invoice_type,
+		e.sub_type,
+		e.subject_location,
+		e.category_name,
+		e.discount,
+		e.stream_id,
+		e.settle_no,
+		e.settle_amount,
+		e.actual_amount,
+		e.settle_note_status,
+		e.sub_time,
+		e.sub_to_gig_time,
+		e.notify_time
+		FROM wm_task t
+		LEFT JOIN wm_score_package p on p.id = t.score_package_id
+		LEFT JOIN wm_score_package_settle_note e on t.id = e.task_id
+		LEFT JOIN sys_user u on t.task_user_id = u.user_id
+		WHERE 1= 1
+		<if test="query.userId!=null and query.userId!=''">
+			AND t.task_user_id =#{query.userId}
+		</if>
+		<if test="query.packageId!=null and query.packageId!=''">
+			AND t.score_package_id =#{query.packageId}
+		</if>
+		<if test="query.startSubTime != null and query.endSubTime != null">
+			AND e.sub_time BETWEEN #{query.startSubTime} AND #{query.endSubTime}
+		</if>
+		<if test="query.settleNoteStatus != null">
+			AND e.settle_note_status = #{query.settleNoteStatus}
+		</if>
+		<if test="query.realName != null">
+			AND u.realname like concat('%',#{query.realName},'%')
+		</if>
+		<if test="settleStatusArr != null">
+			AND e.settle_note_status in
+			<foreach collection="settleStatusArr" item="settleStatus" index="index" open="(" close=")" separator=",">
+				#{settleStatus}
+			</foreach>
+		</if>
 		ORDER BY e.sub_time DESC, t.id
 	</select>