Quellcode durchsuchen

feat: 中止积分包值计算逻辑v1

shc vor 3 Jahren
Ursprung
Commit
8e237ee392

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

@@ -39,6 +39,7 @@ import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.*;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -827,28 +828,31 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			// 设置中止状态
 			WmScorePackage.PackageStopStatus stopStatus;
 
-
-			List<WmTask> tasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
-					.eq(WmTask::getScorePackageId, String.valueOf(wmScorePackage1.getId())));
-
-			//统计发包方还未审核的
-			long drugNeedToCheckCount = tasks.stream()
-					.filter(t -> "3".equals(t.getTaskStatus()) && "2".equals(t.getReportDrugApprovalStatus()))
-					.count();
-
-			// 统计cso未审核 和审核通过的还未提交到药企的任务数
-			long csoNeedToCheckCount = tasks.stream().filter(t -> "2".equals(t.getTaskStatus()) ||
-					("3".equals(t.getTaskStatus()) && reportWaitingCheckStatus.contains(t.getReportDrugApprovalStatus()))).count();
-
-			// 如果有发包方未审核的不能中止
-			if (drugNeedToCheckCount != 0L){
-				stopStatus = WmScorePackage.PackageStopStatus.NOTHING;
-			} else if (csoNeedToCheckCount != 0){
-				// 如果有cso未审核的提示信息
-				stopStatus = WmScorePackage.PackageStopStatus.REMAIN_MSG;
+			if (wmScorePackage1.getRelationScoreId() == null){
+				stopStatus = WmScorePackage.PackageStopStatus.ALL_IN;
 			} else {
-				// 无提示信息
-				stopStatus = WmScorePackage.PackageStopStatus.REMAIN;
+				List<WmTask> tasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+						.eq(WmTask::getScorePackageId, String.valueOf(wmScorePackage1.getId())));
+
+				//统计发包方还未审核的
+				long drugNeedToCheckCount = tasks.stream()
+						.filter(t -> "3".equals(t.getTaskStatus()) && "2".equals(t.getReportDrugApprovalStatus()))
+						.count();
+
+				// 统计cso未审核 和审核通过的还未提交到药企的任务数
+				long csoNeedToCheckCount = tasks.stream().filter(t -> "2".equals(t.getTaskStatus()) ||
+						("3".equals(t.getTaskStatus()) && reportWaitingCheckStatus.contains(t.getReportDrugApprovalStatus()))).count();
+
+				// 如果有发包方未审核的不能中止
+				if (drugNeedToCheckCount != 0L){
+					stopStatus = WmScorePackage.PackageStopStatus.NOTHING;
+				} else if (csoNeedToCheckCount != 0){
+					// 如果有cso未审核的提示信息
+					stopStatus = WmScorePackage.PackageStopStatus.REMAIN_MSG;
+				} else {
+					// 无提示信息
+					stopStatus = WmScorePackage.PackageStopStatus.REMAIN;
+				}
 			}
 
 			wmScorePackage1.setStopStatus(stopStatus);
@@ -931,6 +935,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					wmTask1.setTaskStatus("1,2,3");
 					List<WmTask> taskList1 = wmTaskMapper.selectByTask(wmTask1);
 					Integer res = 0;
+					boolean all = false;
 					if ( CollUtil.isEmpty(taskList1)) {
 						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1().equals("5")) {//定额
 							//这个用户还没有做任务时,积分值设为0
@@ -947,17 +952,36 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 					} else {
 						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1().equals("5")) {//定额
-							int sum = taskList1.stream().mapToInt(WmTask::getScore).sum();
-							if (StringUtils.equals(wmScorePackage.getDeptId(),wmScorePackage.getSendPackageDeptId())){
+							int sum;
+							if (wmScorePackage.getRelatedService() == null){
+								sum = taskList1.stream().mapToInt(WmTask::getScore).sum();
 								res = Integer.parseInt(wmScorePackageStatus.getUserScore()) - sum;
+								if (res > 0) {//个人积分包值大于任务积分值
+									wmScorePackageStatus.setUserScore(sum + "");
+									resSum += res;
+								}
 							} else {
-								res =  sum;
+								int passed = taskList1.stream()
+										.filter(task -> ReportEnum.APPROVAL_OPINION_YES.getType()
+												.equals(task.getReportDrugApprovalOpinion()))
+										.mapToInt(WmTask::getScore)
+										.sum();
+								if (passed == 0){
+									wmScorePackage.setScorePackageStatus("6");//已终止
+									wmScorePackage.setEnableFlag("1");
+									taskList1.forEach(task -> {task.setEnableFlag("1");
+									wmTaskMapper.updateById(task);});
+									all = true;
+								}
+								res = sum = passed;
+								if (res > 0) {//个人积分包值大于任务积分值
+									wmScorePackageStatus.setUserScore(sum + "");
+									resSum += (wmScorePackage.getScore() -  res);
+								} else {
+									resSum = wmScorePackage.getScore();
+								}
 							}
 
-							if (res > 0) {//个人积分包值大于任务积分值
-								wmScorePackageStatus.setUserScore(sum + "");
-								resSum += res;
-							}
 
 						} else {//2,3 定量
 							//定量收回任务个数
@@ -972,10 +996,17 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 						}
 
 					}
-					//更新接单数据
+
 					wmScorePackageStatus.setTaskAddFlag("0");
-					wmScorePackageStatus.setEnableType("2");
+					if (all){
+						wmScorePackageStatus.setEnableType("1");
+						wmScorePackageStatus.setEnableType("1");
+					} else {
+						//更新接单数据
+						wmScorePackageStatus.setEnableType("2");
+					}
 					wmScorePackageStatusService.updateById(wmScorePackageStatus);
+
 				}
 				//更新积分包的积分总值
 				if (resSum > 0) {