shc 3 anni fa
parent
commit
d51d69a45b

+ 58 - 32
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -24,6 +24,7 @@ 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;
+import com.google.common.collect.ImmutableMap;
 import com.qunzhixinxi.hnqz.admin.api.dto.UserDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
@@ -61,6 +62,7 @@ import javax.validation.Valid;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -97,6 +99,7 @@ public class WmScorePackageController {
 	private final WmDaDrugEntMapper wmDaDrugEntMapper;
 	private final WmDaAgentMapper wmDaAgentMapper;
 	private final SysUserMapper sysUserMapper;
+	private final WmReportMapper wmReportMapper;
 
 
 	/**
@@ -1288,52 +1291,75 @@ public class WmScorePackageController {
 	}
 
 
+	// /**
+	//  * 分页查询积分管理信息 二期   业务平台
+	//  */
+	// @GetMapping("/selectWmScorePackageLists")
+	// public R selectWmScorePackageList(Page page, WmScorePackage wmScorePackage) {
+	//
+	//
+	// 	//查询积分包相关信息
+	// 	wmScorePackage.setOldPackage("0");
+	//
+	// 	IPage<WmScorePackage> pageAnswer = wmScorePackageService.selectWmScorePackageLists(page, wmScorePackage);
+	//
+	// 	//根据积分包id查询计算完成积分值 已付积分值
+	// 	List<WmScorePackage> wmList = pageAnswer.getRecords();
+	// 	for (WmScorePackage wmS : wmList) {
+	// 		WmScorePackage scorePackage = wmScorePackageMapper.finishRate(wmS);
+	// 		BigDecimal payRate = new BigDecimal(scorePackage.getPayScore()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(wmS.getScore()), 2, BigDecimal.ROUND_HALF_UP);
+	// 		if (payRate.compareTo(new BigDecimal("100")) >= 0) {
+	// 			wmS.setPayRate(100 + ".00");
+	// 		} else {
+	// 			wmS.setPayRate(payRate + "");
+	// 		}
+	// 		BigDecimal fin = new BigDecimal(scorePackage.getYsh()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(wmS.getScore()), 2, BigDecimal.ROUND_HALF_UP);
+	// 		if (fin.compareTo(new BigDecimal("100")) > 0) {
+	// 			wmS.setFinishRate(100 + ".00");
+	// 			if ("0".equals(wmS.getPackageFinishStatus())) {
+	// 				wmS.setPackageFinishStatus("1");
+	// 			}
+	// 		} else {
+	// 			wmS.setFinishRate(fin + "");
+	// 		}
+	// 		if (wmS.getFinishRate().equals("100.00")) {
+	// 			if ("0".equals(wmS.getPackageFinishStatus())) {
+	// 				wmS.setPackageFinishStatus("1");
+	// 			}
+	// 		}
+	// 		wmS.setPayScore(scorePackage.getPayScore());
+	// 		wmS.setYsh(scorePackage.getYsh());
+	// 	}
+	// 	pageAnswer.setRecords(wmList);
+	// 	return R.ok(pageAnswer);
+	// }
+
 	/**
 	 * 分页查询积分管理信息 二期   业务平台
 	 */
 	@GetMapping("/selectWmScorePackageLists")
-	public R selectWmScorePackageList(Page page, WmScorePackage wmScorePackage) {
-//		List<WmScorePackage> listExt = new ArrayList<>();
-//
-//		listExt = wmScorePackageService.listWmScorePackageAndTaskExt(wmScorePackage);
+	public R selectWmScorePackageList(@RequestParam(value = "current") Integer current,
+									  @RequestParam(value = "size") Integer size,
+									  @RequestParam(value = "scorePackageName",required = false) String scorePackageName,
+									  @RequestParam(value = "acceptSug",required = false) String acceptSug,
+									  @RequestParam(value = "allocationDate",required = false)LocalDate allocationDate,
+									  @RequestParam(value = "endLabelDate",required = false) LocalDate endLabelDate) {
 
+		Page<WmScorePackage> pageAnswer = wmScorePackageService.selectWmScorePackageLists(new Page<WmScorePackage>(current,size),
+				scorePackageName,acceptSug,allocationDate,endLabelDate);
 
-		//查询积分包相关信息
-		wmScorePackage.setOldPackage("0");
-
-		IPage<WmScorePackage> pageAnswer = wmScorePackageService.selectWmScorePackageLists(page, wmScorePackage);
 		//根据积分包id查询计算完成积分值 已付积分值
-
 		List<WmScorePackage> wmList = pageAnswer.getRecords();
 		for (WmScorePackage wmS : wmList) {
-			WmScorePackage scorePackage = wmScorePackageMapper.finishRate(wmS);
-			BigDecimal payRate = new BigDecimal(scorePackage.getPayScore()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(wmS.getScore()), 2, BigDecimal.ROUND_HALF_UP);
-			if (payRate.compareTo(new BigDecimal("100")) >= 0) {
-				wmS.setPayRate(100 + ".00");
-			} else {
-				wmS.setPayRate(payRate + "");
-			}
-			BigDecimal fin = new BigDecimal(scorePackage.getYsh()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(wmS.getScore()), 2, BigDecimal.ROUND_HALF_UP);
-			if (fin.compareTo(new BigDecimal("100")) > 0) {
-				wmS.setFinishRate(100 + ".00");
-				if ("0".equals(wmS.getPackageFinishStatus())) {
-					wmS.setPackageFinishStatus("1");
-				}
-			} else {
-				wmS.setFinishRate(fin + "");
-			}
-			if (wmS.getFinishRate().equals("100.00")) {
-				if ("0".equals(wmS.getPackageFinishStatus())) {
-					wmS.setPackageFinishStatus("1");
-				}
-			}
-			wmS.setPayScore(scorePackage.getPayScore());
-			wmS.setYsh(scorePackage.getYsh());
+			wmScorePackageService.finishRate(wmS);
 		}
+
 		pageAnswer.setRecords(wmList);
 		return R.ok(pageAnswer);
 	}
 
+
+
 	/**
 	 * 获取关联积分包名称 二期  业务平台
 	 *

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

@@ -29,6 +29,7 @@ import com.qunzhixinxi.hnqz.common.data.datascope.DataScopeMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -79,6 +80,8 @@ public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 
 	WmScorePackage finishRate(@Param("query") WmScorePackage wmScorePackage);
 
+	WmScorePackage newFinishRate(@Param("query") WmScorePackage wmScorePackage);
+
 	WmScorePackage selectkfpjf(String scoreId);
 
 	List<WmScorePackage> listWmScorePackages(WmScorePackage wmScorePackage);
@@ -97,7 +100,14 @@ public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 
 	List<WmScorePackage> selectWmScorePackageByCode(Map<String, Object> map);
 
-	public IPage<WmScorePackage> selectWmScorePackageLists(Page page,@Param("query") WmScorePackage wmScorePackage);
+	IPage<WmScorePackage> selectWmScorePackageLists(Page page,@Param("query") WmScorePackage wmScorePackage);
+
+	Page<WmScorePackage> newSelectWmScorePackageLists(Page<WmScorePackage> page,
+													  @Param(value = "sendDeptId") String sendDeptId,
+													  @Param(value = "scorePackageName") String scorePackageName,
+													  @Param(value = "acceptSug") String acceptSug,
+													  @Param(value = "allocationDate") LocalDate allocationDate,
+													  @Param(value = "endLabelDate") LocalDate endLabelDate);
 
 	WmScorePackage selectByRelationScoreId(String relationScoreId);
 

+ 7 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -32,6 +32,7 @@ import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -91,8 +92,7 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 
 	WmScorePackage selectWmScorePackage(WmScorePackage wmScorePackage);
 
-	//	public IPage<Map<String,Object>> selectWmScorePackageLists(Page page, WmScorePackage wmScorePackage);
-	public IPage<WmScorePackage> selectWmScorePackageLists(Page page, WmScorePackage wmScorePackage);
+	IPage<WmScorePackage> selectWmScorePackageLists(Page page, WmScorePackage wmScorePackage);
 
 	WmScorePackage selectKfpjf(String scoreId);
 
@@ -158,4 +158,9 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 	 * @return 药品列表
 	 */
 	IPage<WmDaDrugEntDrugtable> listDrugsByPackageId(Page page, Integer packageId, String drugName);
+
+	Page<WmScorePackage> selectWmScorePackageLists(Page<WmScorePackage> page, String scorePackageName, String acceptSug,
+												   LocalDate allocationDate, LocalDate endLabelDate);
+
+	void finishRate(WmScorePackage wmScorePackage);
 }

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

@@ -18,15 +18,18 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.ImmutableMap;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
@@ -49,13 +52,16 @@ import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import lombok.val;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.xssf.extractor.XSSFExportToXml;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -176,7 +182,12 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		wmScorePackage.setAgentTypeId("2");
 		wmScorePackage.setDelFlag("0");
 		wmScorePackage.setEnableFlag("0");
-		List<WmScorePackage> wmScorePackages = super.list(Wrappers.query(wmScorePackage).lambda().isNotNull(WmScorePackage::getLevel2Id).ne(WmScorePackage::getLevel2Id, "").orderByDesc(WmScorePackage::getIsConduct).orderByAsc(WmScorePackage::getReceiveDate));
+		List<WmScorePackage> wmScorePackages = super.list(Wrappers.query(wmScorePackage)
+				.lambda()
+				.isNotNull(WmScorePackage::getLevel2Id)
+				.ne(WmScorePackage::getLevel2Id, "")
+				.orderByDesc(WmScorePackage::getIsConduct)
+				.orderByAsc(WmScorePackage::getReceiveDate));
 
 		if (wmScorePackages.size() > 0) {
 			for (int i = 0; i < wmScorePackages.size(); i++) {
@@ -186,7 +197,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 				List<String> taskStatus = new ArrayList<>();
 				taskStatus.add("5");
 				//TODO 需要确认已审核的逻辑
-				List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.query(wmTask).lambda().notIn(WmTask::getTaskStatus, taskStatus));
+				List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.query(wmTask)
+						.lambda()
+						.notIn(WmTask::getTaskStatus, taskStatus));
 				int socre = 0;
 				for (WmTask wmT :
 						wmTaskList) {
@@ -431,15 +444,25 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		return wmScorePackage;
 	}
 
+	// @Override
+	// public IPage<WmScorePackage> selectWmScorePackageLists(Page page, WmScorePackage wmScorePackage) {
+	// 	OrderItem orderItem = new OrderItem();
+	// 	orderItem.setColumn("create_time");
+	// 	orderItem.setAsc(false);
+	// 	page.addOrder(orderItem);
+	//
+	// 	SysDept sysDept = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
+	// 	wmScorePackage.setSendPackageDeptId(String.valueOf(sysDept.getDeptId()));
+	// 	return wmScorePackageMapper.selectWmScorePackageLists(page, wmScorePackage);
+	// }
+
 	@Override
 	public IPage<WmScorePackage> selectWmScorePackageLists(Page page, WmScorePackage wmScorePackage) {
 		OrderItem orderItem = new OrderItem();
 		orderItem.setColumn("create_time");
 		orderItem.setAsc(false);
 		page.addOrder(orderItem);
-//		SysDept sysDept1 = new SysDept();
-//		sysDept1.setDeptId(SecurityUtils.getUser().getDeptId());
-//		SysDept sysDept = sysDeptMapper.selectDeptId(sysDept1);
+
 		SysDept sysDept = sysDeptService.getById(SecurityUtils.getUser().getDeptId());
 		wmScorePackage.setSendPackageDeptId(String.valueOf(sysDept.getDeptId()));
 		return wmScorePackageMapper.selectWmScorePackageLists(page, wmScorePackage);
@@ -578,7 +601,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			if (!StringUtil.isEmpty(wmScorePackage.getUserScore())) {
 				if (PackageTypeEnum.TYPE1_HCP_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 					// 如果是患者教育,积分值转换为以'分'为单位保存
-					int scoreFen = new BigDecimal(wmScorePackage.getUserScore()).multiply(new BigDecimal("100")).intValue();
+					int scoreFen = new BigDecimal(wmScorePackage.getUserScore()).multiply(new BigDecimal("100"))
+							.intValue();
 					wmScorePackage.setScore(scoreFen);
 					wmScorePackage.setUserScore(String.valueOf(scoreFen));
 				} else {
@@ -589,7 +613,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 		WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
 		//判断预积分包值不能大于可分配积分值
-		if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId().equals("-1")) {
+		if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId()
+				.equals("-1")) {
 			WmScorePackage wmScorePackage1 = new WmScorePackage();
 			wmScorePackage1.setId(wmScorePackage.getRelationScoreId());
 			WmScorePackage wmScorePackage2 = wmScorePackageMapper.selectById(wmScorePackage1.getId());
@@ -614,7 +639,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		}
 
 		//关联积分包为空时
-		if (wmScorePackage.getRelationScoreId() == null || (wmScorePackage.getRelationScoreId() != null && wmScorePackage.getRelationScoreId().equals("-1"))) {
+		if (wmScorePackage.getRelationScoreId() == null || (wmScorePackage.getRelationScoreId() != null && wmScorePackage
+				.getRelationScoreId()
+				.equals("-1"))) {
 
 			wmScorePackage.setRelationScoreId(null);
 			SysDept dept = new SysDept();
@@ -822,7 +849,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			wmScorePackage1.setUserListNum(0);
 			List<WmScorePackageStatus> staList = wmScorePackageStatusService.getByPackageId(wmScorePackageStatus);
 			if (staList != null && staList.size() > 0) {
-				List<String> userList = staList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.toList());
+				List<String> userList = staList.stream()
+						.map(WmScorePackageStatus::getUserId)
+						.collect(Collectors.toList());
 				wmScorePackage1.setUserList(userList);
 				wmScorePackage1.setUserListNum(userList.size());
 			}
@@ -844,8 +873,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 						.count();
 
 				// 统计cso未审核 和审核通过的还未提交到药企的任务数
-				long csoNeedToCheckCount = tasks.stream().filter(t -> "2".equals(t.getTaskStatus()) ||
-						("3".equals(t.getTaskStatus()) && reportWaitingCheckStatus.contains(t.getReportOneApprovalStatus()))).count();
+				long csoNeedToCheckCount = tasks.stream()
+						.filter(t -> "2".equals(t.getTaskStatus()) ||
+								("3".equals(t.getTaskStatus()) && reportWaitingCheckStatus.contains(t.getReportOneApprovalStatus())))
+						.count();
 
 				// 如果有发包方未审核的不能中止
 				if (drugNeedToCheckCount != 0L) {
@@ -942,7 +973,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					Integer res = 0;
 					boolean all = false;
 					if (CollUtil.isEmpty(taskList1)) {
-						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1().equals("5")) {//定额
+						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1()
+								.equals("5")) {//定额
 							//这个用户还没有做任务时,积分值设为0
 							int userScore = Integer.parseInt(wmScorePackageStatus.getUserScore());
 							wmScorePackageStatus.setUserScore("0");
@@ -959,7 +991,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 						wmScorePackage.setPackageFinishStatus("1");//已完成
 
 					} else {
-						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1().equals("5")) {//定额
+						if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1()
+								.equals("5")) {//定额
 							int sum;
 							if (wmScorePackage.getRelationScoreId() == null) {
 								sum = taskList1.stream().mapToInt(WmTask::getScore).sum();
@@ -1013,7 +1046,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 							wmScorePackageStatus.setTaskNum(taskList1.size());
 						}
 
-						List<String> statusList = taskList1.stream().map(WmTask::getTaskStatus).collect(Collectors.toList());
+						List<String> statusList = taskList1.stream()
+								.map(WmTask::getTaskStatus)
+								.collect(Collectors.toList());
 						if (statusList.contains("2")) {//有未审核通过的任务,积分包状态还是进行中
 							wmScorePackage.setScorePackageStatus("3");//进行中
 						} else {//没有未审核通过的任务,已完成
@@ -1034,7 +1069,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 				}
 				//更新积分包的积分总值
 				if (resSum > 0) {
-					if (!pickedButNotSubmitted){
+					if (!pickedButNotSubmitted) {
 						wmScorePackage.setScore(wmScorePackage.getScore() - resSum);
 					}
 					if (wmScorePackage.getPackageType1().equals("5")) {
@@ -1102,7 +1137,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 					.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId())
 					.eq(WmScorePackageStatus::getDelFlag, "0"));
 			if (staList != null && staList.size() > 0) {
-				List<String> userList = staList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.toList());
+				List<String> userList = staList.stream()
+						.map(WmScorePackageStatus::getUserId)
+						.collect(Collectors.toList());
 				wmScorePackage.setUserList(userList);
 			}
 		}
@@ -1132,7 +1169,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 				}
 			}
 			wmScorePackageStatusService.delStatusByPackageId(wmScorePackage.getId());
-			wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery().eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
+			wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery()
+					.eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
 
 		}
 		this.updateById(wmScorePackage);
@@ -1151,7 +1189,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			if (!StringUtil.isEmpty(wmScorePackage.getUserScore())) {
 				if (PackageTypeEnum.TYPE1_HCP_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
 					// 如果是患者教育,积分值转换为以'分'为单位保存
-					int scoreFen = new BigDecimal(wmScorePackage.getUserScore()).multiply(new BigDecimal("100")).intValue();
+					int scoreFen = new BigDecimal(wmScorePackage.getUserScore()).multiply(new BigDecimal("100"))
+							.intValue();
 					wmScorePackage.setScore(scoreFen);
 					wmScorePackage.setUserScore(String.valueOf(scoreFen));
 				} else {
@@ -1161,7 +1200,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		}
 		WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
 		//判断预积分包值不能大于可分配积分值
-		if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId().equals("-1")) {
+		if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId()
+				.equals("-1")) {
 			WmScorePackage wmScorePackage1 = new WmScorePackage();
 			wmScorePackage1.setId(wmScorePackage.getRelationScoreId());
 			WmScorePackage wmScorePackage2 = wmScorePackageMapper.selectById(wmScorePackage1.getId());
@@ -1188,7 +1228,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 		}
 		HnqzUser currentUser = SecurityUtils.getUser();
-		if (wmScorePackage.getRelationScoreId() == null || (wmScorePackage.getRelationScoreId() != null && wmScorePackage.getRelationScoreId().equals("-1"))) {
+		if (wmScorePackage.getRelationScoreId() == null || (wmScorePackage.getRelationScoreId() != null && wmScorePackage
+				.getRelationScoreId()
+				.equals("-1"))) {
 
 			wmScorePackage.setRelationScoreId(null);
 			SysDept dept = new SysDept();
@@ -1265,7 +1307,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 		if (wmScorePackage.getPackageType1().equals("5") || wmScorePackage.getPackageType1().equals("4")
 				|| wmScorePackage.getPackageType2().equals("2")) {
-			wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery().eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
+			wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery()
+					.eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
 			//结算包
 			WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
 			wmScoreTaskType.setScoreId(wmScorePackage.getId());
@@ -1276,7 +1319,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			//保存有效任务类型
 			List<WmTaskTypeTree> tasktypeList = wmScorePackage.getTaskTypeList();
 			if (tasktypeList != null && tasktypeList.size() > 0) {
-				wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery().eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
+				wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery()
+						.eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
 				for (WmTaskTypeTree type : tasktypeList) {
 					WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
 					wmScoreTaskType.setScoreId(wmScorePackage.getId());
@@ -1368,7 +1412,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			statusQuery.setPackageId(ouPut.getId());
 			statusQuery.setStatus("2");
 			List<WmScorePackageStatus> statusList = wmScorePackageStatusService.getByPackageId(statusQuery);
-			String userNames = statusList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.joining(","));
+			String userNames = statusList.stream()
+					.map(WmScorePackageStatus::getUserId)
+					.collect(Collectors.joining(","));
 			ouPut.setUserNames(userNames);
 			// 查询结算成功时间
 			List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
@@ -1421,7 +1467,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			statusQuery.setPackageId(ouPut.getId());
 			statusQuery.setStatus("2");
 			List<WmScorePackageStatus> statusList = wmScorePackageStatusService.getByPackageId(statusQuery);
-			String userNames = statusList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.joining(","));
+			String userNames = statusList.stream()
+					.map(WmScorePackageStatus::getUserId)
+					.collect(Collectors.joining(","));
 			ouPut.setUserNames(userNames);
 			// 查询结算成功时间
 			List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
@@ -1523,4 +1571,178 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 
 	}
+
+	@Override
+	public Page<WmScorePackage> selectWmScorePackageLists(Page<WmScorePackage> page, String scorePackageName, String acceptSug, LocalDate allocationDate, LocalDate endLabelDate) {
+
+		Integer deptId = SecurityUtils.getUser().getDeptId();
+		return wmScorePackageMapper.newSelectWmScorePackageLists(page, String.valueOf(deptId),
+				scorePackageName, acceptSug, allocationDate, endLabelDate);
+	}
+
+
+	@Override
+	// @Async("doSelectWmScorePackageListsPool")
+	public void finishRate(WmScorePackage wmScorePackage) {
+		String packageId = wmScorePackage.getId();
+		Set<String> scorePackageIdSet = stepA(packageId);
+		List<Map<String, Object>> stepB_1 = stepB_1(scorePackageIdSet);
+		List<Map<String, Object>> stepB_2 = stepB_2(packageId);
+
+		List<Map<String, Object>> m = new ArrayList<>(stepB_1.size() + stepB_2.size());
+		m.addAll(stepB_1);
+		m.addAll(stepB_2);
+		Map<String, Integer> result = step3(m);
+		step4(result, wmScorePackage);
+	}
+
+
+	private Set<String> stepA(String packageId) {
+
+		Set<String> scorePackageIdSet = new HashSet<>();
+		scorePackageIdSet.add(packageId);
+
+
+		List<WmScorePackage> relationScoreList = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getRelationScoreId, packageId));
+
+		Set<String> relationScoreIdSet = relationScoreList.stream().map(WmScorePackage::getId)
+				.collect(Collectors.toSet());
+
+		if (CollUtil.isNotEmpty(relationScoreIdSet)) {
+			scorePackageIdSet.addAll(relationScoreIdSet);
+			List<WmScorePackage> relationRelationScoreIdList = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+					.in(WmScorePackage::getRelationScoreId, relationScoreIdSet));
+			Set<String> relationRelationScoreIdSet = relationRelationScoreIdList.stream()
+					.map(WmScorePackage::getScoreId)
+					.collect(Collectors.toSet());
+			if (CollUtil.isNotEmpty(relationRelationScoreIdSet)) {
+				scorePackageIdSet.addAll(relationRelationScoreIdSet);
+			}
+		}
+
+		return scorePackageIdSet;
+	}
+
+
+	private List<Map<String, Object>> stepB_1(Set<String> scorePackageIdSet) {
+
+		List<Map<String, Object>> mapList = wmTaskMapper.selectMaps(Wrappers.<WmTask>query()
+				.select("0 AS payScore", "SUM(IF(task_status = 3, score, 0)) ysh")
+				.in("score_package_id", scorePackageIdSet)
+				.eq("enable_flag", "0")
+				.eq("real_flag", "0")
+				.eq("del_flag", "0")
+				.groupBy("score_package_id")
+
+		);
+
+		return mapList;
+
+	}
+
+	private List<Map<String, Object>> stepB_2(String scoreId) {
+
+
+		List<WmReport> wmReportList = wmReportMapper.selectList(Wrappers.<WmReport>lambdaQuery()
+				.eq(WmReport::getReportStatus, "6")
+				.eq(WmReport::getScoreId, scoreId)
+		);
+
+		Set<Integer> reportIdSet = wmReportList.stream().mapToInt(WmReport::getId).boxed().collect(Collectors.toSet());
+
+		if (CollUtil.isNotEmpty(reportIdSet)) {
+			List<Map<String, Object>> mapList = wmTaskMapper.selectMaps(Wrappers.<WmTask>query()
+					.select("SUM(score) AS payScore", "0 AS ysh")
+					.and(i -> i.eq("report_drug_approval_opinion", "1").or().eq("report_one_approval_opinion", 1))
+					.and(i -> i.in("report_one_id", reportIdSet)
+							.or()
+							.in("report_second_id", reportIdSet)
+							.or()
+							.in("report_drug_id", reportIdSet))
+
+			);
+			return mapList;
+
+		} else {
+			Map<String, Object> map = ImmutableMap.of("payScore", 0, "ysh", 0);
+			return Collections.singletonList(map);
+		}
+
+
+	}
+
+
+	public Map<String, Integer> step3(List<Map<String, Object>> m) {
+		int payScore = 0;
+		int ysh = 0;
+
+		for (Map<String, Object> tmp : m) {
+			for (Map.Entry<String, Object> entry : tmp.entrySet()) {
+				String key = entry.getKey();
+				Object value = entry.getValue();
+				if (StrUtil.equals(key, "payScore")) {
+					if (value instanceof Long) {
+						Long val = (Long) entry.getValue();
+						payScore += val.intValue();
+					} else if (value instanceof Integer) {
+						Integer val = (Integer) entry.getValue();
+						payScore += val;
+					} else if (value instanceof BigDecimal) {
+						BigDecimal val = (BigDecimal) entry.getValue();
+						payScore += val.intValue();
+					}
+				} else if (StrUtil.equals(key, "ysh")) {
+					if (value instanceof Long) {
+						Long val = (Long) entry.getValue();
+						ysh += val.intValue();
+					} else if (value instanceof Integer) {
+						Integer val = (Integer) entry.getValue();
+						ysh += val;
+					} else if (value instanceof BigDecimal) {
+						BigDecimal val = (BigDecimal) entry.getValue();
+						ysh += val.intValue();
+					}
+				}
+			}
+
+		}
+
+		return ImmutableMap.of("payScore", payScore, "ysh", ysh);
+
+	}
+
+
+	public void step4(Map<String, Integer> payScoreAndYsh, WmScorePackage wmScorePackage) {
+		int payScore = payScoreAndYsh.get("payScore");
+		int ysh = payScoreAndYsh.get("ysh");
+
+		BigDecimal payRate = new BigDecimal(payScore).multiply(BigDecimal.valueOf(100))
+				.divide(new BigDecimal(wmScorePackage.getScore()), 2, BigDecimal.ROUND_HALF_UP);
+		if (payRate.compareTo(new BigDecimal("100")) >= 0) {
+			wmScorePackage.setPayRate(100 + ".00");
+		} else {
+			wmScorePackage.setPayRate(payRate + "");
+		}
+
+		BigDecimal fin = new BigDecimal(ysh).multiply(BigDecimal.valueOf(100))
+				.divide(new BigDecimal(wmScorePackage.getScore()), 2, BigDecimal.ROUND_HALF_UP);
+		if (fin.compareTo(new BigDecimal("100")) > 0) {
+			wmScorePackage.setFinishRate(100 + ".00");
+			if ("0".equals(wmScorePackage.getPackageFinishStatus())) {
+				wmScorePackage.setPackageFinishStatus("1");
+			}
+		} else {
+			wmScorePackage.setFinishRate(fin + "");
+		}
+
+		if (wmScorePackage.getFinishRate().equals("100.00")) {
+			if ("0".equals(wmScorePackage.getPackageFinishStatus())) {
+				wmScorePackage.setPackageFinishStatus("1");
+			}
+		}
+
+		wmScorePackage.setPayScore(payScoreAndYsh.get("payScore"));
+		wmScorePackage.setYsh(payScoreAndYsh.get("ysh"));
+	}
 }

+ 264 - 161
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -76,9 +76,9 @@
 		<result property="kfpjf" column="kfpjf"/>
 		<result property="relatedService" column="related_service"/>
 		<result property="scorePackageName" column="score_package_name"/>
-		<result property="endLabelDate" column="end_label_date"  />
-		<result property="packageIsConduct" column="package_is_conduct"  />
-		<result property="ruleId" column="rule_id"  />
+		<result property="endLabelDate" column="end_label_date"/>
+		<result property="packageIsConduct" column="package_is_conduct"/>
+		<result property="ruleId" column="rule_id"/>
 		<result property="packageFinishTime" column="package_finish_time"/>
 		<result property="packageType2" column="package_type2"/>
 		<result property="userNum" column="user_num"/>
@@ -97,7 +97,8 @@
 
 	<select id="listWmScorePackageAndTask" resultMap="wmScorePackageMap">
 		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,
-		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,settlement_date,
+		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,settlement_date,
 		update_time, update_user
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package,(
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
@@ -117,17 +118,18 @@
 	</select>
 
 	<select id="selectByRelationScoreIdList" resultMap="wmScorePackageMap">
-		select
-		*
-		from wm_score_package
-		where
-		relation_score_id = #{relationScoreId,jdbcType=VARCHAR}
+		SELECT *
+		FROM wm_score_package
+		WHERE relation_score_id = #{relationScoreId,jdbcType=VARCHAR}
 	</select>
 
 	<select id="listWmScorePackageAndTaskExt" resultMap="wmScorePackageMap">
-		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,score_package_status,settlement_date,
-		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,send_package_dept_id,old_package,
-		update_time, update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
+		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id,
+		zb_id,score_package_status,settlement_date,
+		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,send_package_dept_id,old_package,
+		update_time,
+		update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package LEFT JOIN (
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
 		ysh,sum(if(task_status=2,score,0)) dsh from wm_task where score_package_id is not null and wm_task.del_flag=0
@@ -187,9 +189,12 @@
 
 
 	<select id="listWmScorePackageAndTaskExtOld" resultMap="wmScorePackageMap">
-		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,score_package_status,settlement_date,
-		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,send_package_dept_id,old_package,
-		update_time, update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
+		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id,
+		zb_id,score_package_status,settlement_date,
+		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,send_package_dept_id,old_package,
+		update_time,
+		update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package LEFT JOIN (
 		select score_package_drug_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
 		ysh,sum(if(task_status=2,score,0)) dsh from wm_task where score_package_id is not null and wm_task.del_flag=0
@@ -248,11 +253,13 @@
 	</select>
 
 
-
 	<select id="listWmScorePackageAndTaskExt2" resultMap="wmScorePackageMap">
-		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,score_package_status,settlement_date,
-		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,send_package_dept_id,old_package,
-		update_time, update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
+		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id,
+		zb_id,score_package_status,settlement_date,
+		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,send_package_dept_id,old_package,
+		update_time,
+		update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package LEFT JOIN (
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
 		ysh,sum(if(task_status=2,score,0)) dsh from wm_task where score_package_id is not null and wm_task.del_flag=0
@@ -304,9 +311,12 @@
 
 
 	<select id="listWmScorePackageAndTaskExt2Old" resultMap="wmScorePackageMap">
-		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,score_package_status,settlement_date,
-		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,send_package_dept_id,old_package,
-		update_time, update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
+		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id,
+		zb_id,score_package_status,settlement_date,
+		xxdb_id, typeid, package_finish_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,send_package_dept_id,old_package,
+		update_time,
+		update_user,belong_date,allocation_date,score_package_name,package_type1,relation_score_id,ywctt,settle_status,finish_rate
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package LEFT JOIN (
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
 		ysh,sum(if(task_status=2,score,0)) dsh from wm_task where score_package_id is not null and wm_task.del_flag=0
@@ -358,7 +368,8 @@
 
 	<select id="listWmScorePackageAndTaskLevel1" resultMap="wmScorePackageMap">
 		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,
-		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,settlement_date,
+		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,settlement_date,
 		update_time, update_user
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package,(
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
@@ -386,7 +397,8 @@
 
 	<select id="listWmScorePackageAndTaskLevel3" resultMap="wmScorePackageMap">
 		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,
-		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,settlement_date,
+		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,settlement_date,
 		update_time, update_user
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package,(
 		select score_package_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
@@ -414,7 +426,8 @@
 		union
 
 		select id, task_rule_id, drug_ent_id, score_id, score_name, score, agent_type_id, level1_id, level2_id, zb_id,
-		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time, create_user,settlement_date,
+		xxdb_id, typeid, package_status, dept_id, del_flag, enable_flag, tenant_id, create_time,
+		create_user,settlement_date,
 		update_time, update_user
 		,bb.ytj,bb.ysh,bb.dsh from wm_score_package,(
 		select score_package_level1_id,sum(if(task_status>0,score,0)) ytj,sum(if(task_status=3,score,0))
@@ -662,34 +675,53 @@
 		order by id desc
 	</select>
 
-	<select id="selectByScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
-		select o.*,u.name as acceptSug
-		from wm_score_package o
-		left join  sys_dept u on u.dept_id=o.accept_sug
-		where o.id = #{id,jdbcType=INTEGER}
+	<select id="selectByScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT o.*, u.name AS acceptsug
+		FROM wm_score_package o
+				 LEFT JOIN sys_dept u ON u.dept_id = o.accept_sug
+		WHERE o.id = #{id,jdbcType=INTEGER}
 	</select>
 
-	<select id="selectByScoreIds" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
-		select
-		*
-		from wm_score_package
-		where relation_score_id = #{relationScoreId,jdbcType=VARCHAR}
+	<select id="selectByScoreIds" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT *
+		FROM wm_score_package
+		WHERE relation_score_id = #{relationScoreId,jdbcType=VARCHAR}
+	</select>
+
+	<select id="selectByName" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT *
+		FROM wm_score_package
+		WHERE score_package_name = #{scorePackageName,jdbcType=VARCHAR}
+		  AND dept_id = #{deptId,jdbcType=VARCHAR}
 	</select>
 
-	<select id="selectByName" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
+	<select id="newSelectWmScorePackageLists" resultMap="wmScorePackageMap" parameterType="java.util.HashMap">
 		select
-		*
-		from wm_score_package
-		where
-		score_package_name = #{scorePackageName,jdbcType=VARCHAR}
-		and
-		dept_id = #{deptId,jdbcType=VARCHAR}
+		o.*,
+		u.name as acceptSug
+		from wm_score_package o
+		left join sys_dept u on u.dept_id = o.accept_sug
+		<where>
+			o.typeid not in ('3','4')
+			and o.old_package = '0'
+			AND o.send_package_dept_id = #{sendDeptId}
+			<if test="scorePackageName != null">
+				AND o.score_package_name like CONCAT('%',#{scorePackageName},'%')
+			</if>
+			<if test="allocationDate != null and endLabelDate != null">
+				AND (o.allocation_date BETWEEN #{allocationDate} AND #{endLabelDate})
+			</if>
+			<if test="acceptSug != null">
+				AND o.accept_sug = #{acceptSug}
+			</if>
+		</where>
+		order by id desc, create_time DESC
 	</select>
 
 	<select id="selectWmScorePackageLists" resultMap="wmScorePackageMap" parameterType="java.util.HashMap">
 		select o.*,u.name as acceptSug
 		from wm_score_package o
-		left join  sys_dept u on u.dept_id=o.accept_sug
+		left join sys_dept u on u.dept_id=o.accept_sug
 		where 1 = 1 and o.typeid not in (3,4)
 		<if test="query.id != null">
 			AND o.id != #{query.id,jdbcType=INTEGER}
@@ -755,7 +787,7 @@
 	<select id="listWmScorePackages" resultMap="wmScorePackageMap" parameterType="java.util.HashMap">
 		select o.*,u.name as acceptSug
 		from wm_score_package o
-		left join  sys_dept u on u.dept_id=o.accept_sug
+		left join sys_dept u on u.dept_id=o.accept_sug
 		where 1 = 1 and enable_flag='0'
 		<if test="id != null">
 			AND o.id != #{id,jdbcType=INTEGER}
@@ -817,28 +849,27 @@
 		order by id desc
 	</select>
 
-	<select id="selectBywmId" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
-		select
-		*
-		from wm_score_package
-		where id = #{id,jdbcType=VARCHAR}
+	<select id="selectBywmId" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT *
+		FROM wm_score_package
+		WHERE id = #{id,jdbcType=VARCHAR}
 	</select>
 
-	<select id="selectByRelationScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
-		select
-		*
-		from wm_score_package
-		where score_id = #{scoreId,jdbcType=VARCHAR}
+	<select id="selectByRelationScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT *
+		FROM wm_score_package
+		WHERE score_id = #{scoreId,jdbcType=VARCHAR}
 	</select>
 
-	<select id="selectRelationScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
-		select
-		*
-		from wm_score_package
-		where id != #{id,jdbcType=VARCHAR} and enable_flag='0' and typeid not in(3,4)
+	<select id="selectRelationScoreId" resultMap="wmScorePackageMap" parameterType="java.lang.String">
+		SELECT *
+		FROM wm_score_package
+		WHERE id != #{id,jdbcType=VARCHAR}
+		  AND enable_flag = '0'
+		  AND typeid NOT IN (3, 4)
 		ORDER BY id DESC
 	</select>
-	<select id="selectByReRelatedService" resultMap="wmScorePackageMap" parameterType="java.lang.String" >
+	<select id="selectByReRelatedService" resultMap="wmScorePackageMap" parameterType="java.lang.String">
 		select
 		*
 		from wm_score_package
@@ -853,91 +884,159 @@
 	</select>
 
 
-
 	<select id="selectByPackage" resultMap="wmScorePackageMap">
-	select
-	*
-	from wm_score_package
-	where id = #{id,jdbcType=VARCHAR}
+		SELECT *
+		FROM wm_score_package
+		WHERE id = #{id,jdbcType=VARCHAR}
 	</select>
 
 	<select id="selectListById" resultType="java.util.HashMap">
-	select
-	*
-	from
-	wm_score_package
-	where
-	id = #{query.id,jdbcType=VARCHAR}
-	and
-	settle_status = #{query.settleStatus,jdbcType=BIGINT}
+		SELECT *
+		FROM wm_score_package
+		WHERE id = #{query.id,jdbcType=VARCHAR}
+		  AND settle_status = #{query.settleStatus,jdbcType=BIGINT}
 	</select>
 
 	<select id="selectLists" resultMap="wmScorePackageMap">
-		select
-		*
-		from
-		wm_score_package
-		where
-		relation_score_id = #{query.relationScoreId,jdbcType=VARCHAR}
+		SELECT *
+		FROM wm_score_package
+		WHERE relation_score_id = #{query.relationScoreId,jdbcType=VARCHAR}
 	</select>
 	<select id="finishRate" resultMap="wmScorePackageMap">
-		select sum(ifnull(c.payScore,0)) pay_score ,sum(c.ysh) ysh
-		from (
-			select 0 as payScore, a.ysh  from (
-				select score_package_id,sum(if(task_status=3,score,0)) ysh from wm_task where wm_task.score_package_id in
-					(
-						select id from wm_score_package where id=#{query.id}
-						union all
-						select id from wm_score_package where relation_score_id in (select id from wm_score_package where id=#{query.id})
-						union all
-						select id from wm_score_package   where relation_score_id in (
-							select id from wm_score_package where relation_score_id in (select id from wm_score_package where id=#{query.id})
-						)
-					)
-				 and  wm_task.enable_flag=0 and wm_task.real_flag = '0' and score_package_id is not null and wm_task.del_flag=0
-				 group by score_package_id
-			 )a,wm_score_package b, wm_score_package c where a.score_package_id=b.id and b.relation_score_id=c.id and
-				(b.relation_score_id = #{query.id} or c.relation_score_id = #{query.id})
-			 union all
-				select sum(score) as payScore,0 as ysh from wm_task  where
-				    (report_drug_approval_opinion=1 or report_one_approval_opinion=1) and (report_one_id in (
-				    	select id from wm_report where report_status=6 and score_id=#{query.id})
-					or report_second_id in (select id from wm_report where report_status=6 and score_id=#{query.id})
-					or report_drug_id in (select id from wm_report where report_status=6 and score_id=#{query.id})
-				)
-		) c
+		SELECT SUM(IFNULL(c.payscore, 0)) pay_score, SUM(c.ysh) ysh
+		FROM (
+				 SELECT 0 AS payscore, a.ysh
+				 FROM (
+						  SELECT score_package_id, SUM(IF(task_status = 3, score, 0)) ysh
+						  FROM wm_task
+						  WHERE wm_task.score_package_id IN
+								(
+									SELECT id
+									FROM wm_score_package
+									WHERE id = #{query.id}
+									UNION ALL
+									SELECT id
+									FROM wm_score_package
+									WHERE relation_score_id IN (SELECT id FROM wm_score_package WHERE id = #{query.id})
+									UNION ALL
+									SELECT id
+									FROM wm_score_package
+									WHERE relation_score_id IN (
+										SELECT id
+										FROM wm_score_package
+										WHERE relation_score_id IN
+											  (SELECT id FROM wm_score_package WHERE id = #{query.id})
+									)
+								)
+							AND wm_task.enable_flag = 0
+							AND wm_task.real_flag = '0'
+							AND score_package_id IS NOT NULL
+							AND wm_task.del_flag = 0
+						  GROUP BY score_package_id
+					  ) a,
+					  wm_score_package b,
+					  wm_score_package c
+				 WHERE a.score_package_id = b.id
+				   AND b.relation_score_id = c.id
+				   AND (b.relation_score_id = #{query.id} OR c.relation_score_id = #{query.id})
+				 UNION ALL
+				 SELECT SUM(score) AS payscore, 0 AS ysh
+				 FROM wm_task
+				 WHERE (report_drug_approval_opinion = 1 OR report_one_approval_opinion = 1)
+				   AND (report_one_id IN (
+					 SELECT id
+					 FROM wm_report
+					 WHERE report_status = 6 AND score_id = #{query.id})
+					 OR report_second_id IN
+						(SELECT id FROM wm_report WHERE report_status = 6 AND score_id = #{query.id})
+					 OR report_drug_id IN (SELECT id FROM wm_report WHERE report_status = 6 AND score_id = #{query.id})
+					 )
+			 ) c
 	</select>
+
+	<select id="newFinishRate" resultMap="wmScorePackageMap">
+		SELECT SUM(IFNULL(c.payscore, 0)) pay_score, SUM(c.ysh) ysh
+		FROM (
+				 SELECT 0 AS payscore, a.ysh
+				 FROM (
+						  SELECT score_package_id, SUM(IF(task_status = 3, score, 0)) ysh
+						  FROM wm_task
+						  WHERE wm_task.score_package_id IN
+								(
+									SELECT id
+									FROM wm_score_package
+									WHERE id = #{query.id}
+									UNION ALL
+									SELECT id
+									FROM wm_score_package
+									WHERE relation_score_id IN (SELECT id FROM wm_score_package WHERE id = #{query.id})
+									UNION ALL
+									SELECT id
+									FROM wm_score_package
+									WHERE relation_score_id IN (
+										SELECT id
+										FROM wm_score_package
+										WHERE relation_score_id IN
+											  (SELECT id FROM wm_score_package WHERE id = #{query.id})
+									)
+								)
+							AND wm_task.enable_flag = 0
+							AND wm_task.real_flag = '0'
+							AND wm_task.del_flag = 0
+						  GROUP BY score_package_id
+					  ) a,
+					  wm_score_package b,
+					  wm_score_package c
+				 WHERE a.score_package_id = b.id
+				   AND b.relation_score_id = c.id
+				   AND (b.relation_score_id = #{query.id} OR c.relation_score_id = #{query.id})
+				 UNION ALL
+				 SELECT SUM(score) AS payscore, 0 AS ysh
+				 FROM wm_task
+				 WHERE (report_drug_approval_opinion = 1 OR report_one_approval_opinion = 1)
+				   AND (report_one_id IN (
+					 SELECT id
+					 FROM wm_report
+					 WHERE report_status = 6 AND score_id = #{query.id})
+					 OR report_second_id IN
+						(SELECT id FROM wm_report WHERE report_status = 6 AND score_id = #{query.id})
+					 OR report_drug_id IN (SELECT id FROM wm_report WHERE report_status = 6 AND score_id = #{query.id})
+					 )
+			 ) c
+	</select>
+
+
 	<select id="getScorePackagekfpjf" resultMap="wmScorePackageMap">
 		select
-		       dd.*
+		dd.*
 		from (
-			select
-			       p.id,
-			       p.score,
-			       p.score_package_name,
-			       p.score_id,
-			       p.package_type1,
-			       p.drug_producer,
-				   p.score-sum(if(p1.del_flag='0' and p1.enable_flag='0' and p1.score_package_status != '6',p1.score,0)) as kfpjf
-			from wm_score_package p
-			left join wm_score_package p1 on p.id=p1.relation_score_id and p1.del_flag='0' and p1.enable_flag='0'
-
-			<where>
-				p.del_flag='0' and p.enable_flag='0' and p.old_package='0'
-				<if test="query.deptId != null and query.deptId != ''">
-					AND p.dept_id= #{query.deptId}
-				</if>
-				<if test="query.sendPackageDeptId != null and query.sendPackageDeptId != ''">
-					AND p.send_package_dept_id= #{query.sendPackageDeptId}
-				</if>
-				<if test="query.typeid != null and query.typeid != ''">
-					AND p.typeid IN(${query.typeid})
-				</if>
-				<if test="query.id != null and query.id != ''">
-					AND p.id IN(${query.id})
-				</if>
-			</where>
-			group by p.id,p.score,p.score_package_name,p.score_id,p.package_type1
+		select
+		p.id,
+		p.score,
+		p.score_package_name,
+		p.score_id,
+		p.package_type1,
+		p.drug_producer,
+		p.score-sum(if(p1.del_flag='0' and p1.enable_flag='0' and p1.score_package_status != '6',p1.score,0)) as kfpjf
+		from wm_score_package p
+		left join wm_score_package p1 on p.id=p1.relation_score_id and p1.del_flag='0' and p1.enable_flag='0'
+
+		<where>
+			p.del_flag='0' and p.enable_flag='0' and p.old_package='0'
+			<if test="query.deptId != null and query.deptId != ''">
+				AND p.dept_id= #{query.deptId}
+			</if>
+			<if test="query.sendPackageDeptId != null and query.sendPackageDeptId != ''">
+				AND p.send_package_dept_id= #{query.sendPackageDeptId}
+			</if>
+			<if test="query.typeid != null and query.typeid != ''">
+				AND p.typeid IN(${query.typeid})
+			</if>
+			<if test="query.id != null and query.id != ''">
+				AND p.id IN(${query.id})
+			</if>
+		</where>
+		group by p.id,p.score,p.score_package_name,p.score_id,p.package_type1
 		) dd where dd.kfpjf>0
 		order by dd.id
 	</select>
@@ -955,7 +1054,7 @@
 		else ( bb.shbtgnum * 100 / (aa.user_num*aa.task_num) )END AS shbtgtt,
 		d1.label as package_type1,d2.label as package_type2,
 		aa.task_rule_id, aa.drug_ent_id, aa.score_id, aa.score_name,
-		aa.score,  aa.zb_id, aa.xxdb_id, aa.typeid,aa.settlement_date,
+		aa.score, aa.zb_id, aa.xxdb_id, aa.typeid,aa.settlement_date,
 		aa.package_status, aa.dept_id, aa.del_flag, aa.enable_flag, aa.tenant_id, aa.create_time,
 		aa.create_user, aa.update_time, aa.update_user,aa.send_package_dept_id,aa.settle_status,
 		aa.score_package_name,p.score_package_name as relation_score_id,aa.package_user_scope,
@@ -964,25 +1063,25 @@
 		aa.sub_type, aa.drug_producer
 		from wm_score_package aa left join (
 		select score_package_id,
-		sum(if(report_drug_approval_opinion =1 or report_one_approval_opinion = 1, score, 0))   shtg,
-		sum(if(report_drug_approval_opinion =2 or report_one_approval_opinion = 2, score, 0))   shbtg,
-		sum(if(report_drug_approval_opinion =1 or report_one_approval_opinion = 1, 1, 0))   shtgnum,
-		sum(if(report_drug_approval_opinion =2 or report_one_approval_opinion = 2, 1, 0))   shbtgnum,
+		sum(if(report_drug_approval_opinion =1 or report_one_approval_opinion = 1, score, 0)) shtg,
+		sum(if(report_drug_approval_opinion =2 or report_one_approval_opinion = 2, score, 0)) shbtg,
+		sum(if(report_drug_approval_opinion =1 or report_one_approval_opinion = 1, 1, 0)) shtgnum,
+		sum(if(report_drug_approval_opinion =2 or report_one_approval_opinion = 2, 1, 0)) shbtgnum,
 		sum(if(task_status in (1,2,3),score,0)) ytj,sum(if(task_status=3,score,0)) ysh,
 		sum(IF( task_status = 3, 1, 0 )) yshnum,sum(if(task_status=2,score,0)) dsh
 		from wm_task
 		where score_package_id is not null
 		and wm_task.del_flag=0 and wm_task.enable_flag=0
 		and wm_task.real_flag=0
-		  group by score_package_id)
+		group by score_package_id)
 		bb on aa.id =bb.score_package_id
-		left join  (select sum(if(`status` IN ('1', '2'), 1, 0)) as yjd,sum(if(`status`=1, 1, 0)) as yjddsh,
+		left join (select sum(if(`status` IN ('1', '2'), 1, 0)) as yjd,sum(if(`status`=1, 1, 0)) as yjddsh,
 		package_id, user_id from wm_score_package_status
 		where wm_score_package_status.del_flag='0' and wm_score_package_status.enable_flag='0' group by package_id)
 		cc on aa.id=cc.package_id
-		left join sys_dict_item d1  on d1.type='package_type1' and d1.`value`=aa.package_type1
-		left join sys_dict_item d2  on d2.type='package_type2' and d2.`value`=aa.package_type2
-		left join wm_score_package p  on  p.id=aa.relation_score_id
+		left join sys_dict_item d1 on d1.type='package_type1' and d1.`value`=aa.package_type1
+		left join sys_dict_item d2 on d2.type='package_type2' and d2.`value`=aa.package_type2
+		left join wm_score_package p on p.id=aa.relation_score_id
 		<where>
 			aa.del_flag='0'
 			--and aa.enable_flag='0'
@@ -1026,25 +1125,26 @@
 		order by aa.create_time desc
 	</select>
 	<select id="selectRelationScoreIdList" resultMap="wmScorePackageMap">
-		select *
-		from wm_score_package
-		where
-		relation_score_id= #{relationScoreId}
+		SELECT *
+		FROM wm_score_package
+		WHERE relation_score_id = #{relationScoreId}
 	</select>
 
 
 	<select id="getScorePackagePageById" resultMap="wmScorePackageMap">
-	select (b.kfpjf)as kfpjf,a.* from wm_score_package a
-			left join
-			(select p.id,
-			p.score-sum(if(p1.del_flag='0' and p1.enable_flag='0',p1.score,0)) as kfpjf
-			from wm_score_package p
-			left join wm_score_package p1 on p.id=p1.relation_score_id and p1.del_flag='0' and p1.enable_flag='0'
-			where
-				p.del_flag='0' and p.enable_flag='0'
-			group by p.id) b
-			on b.id=a.relation_score_id
-			where a.id=#{id}
+		SELECT (b.kfpjf) AS kfpjf, a.*
+		FROM wm_score_package a
+				 LEFT JOIN
+			 (SELECT p.id,
+					 p.score - SUM(IF(p1.del_flag = '0' AND p1.enable_flag = '0', p1.score, 0)) AS kfpjf
+			  FROM wm_score_package p
+					   LEFT JOIN wm_score_package p1
+								 ON p.id = p1.relation_score_id AND p1.del_flag = '0' AND p1.enable_flag = '0'
+			  WHERE p.del_flag = '0'
+				AND p.enable_flag = '0'
+			  GROUP BY p.id) b
+			 ON b.id = a.relation_score_id
+		WHERE a.id = #{id}
 
 	</select>
 	<select id="getPackageListForReceive" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiOutput">
@@ -1098,11 +1198,12 @@
 		select s.package_id from wm_score_package_status s where s.user_id = #{query.zbId} and s.status != 3
 		)
 		)
-		order  by p.create_time desc
+		order by p.create_time desc
 	</select>
 
 	<select id="listPackageSettleList2" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput">
-		SELECT p.id, d. NAME packageEntName, p.score_package_name, p.create_time, p.package_status, p.package_finish_status,
+		SELECT p.id, d. NAME packageEntName, p.score_package_name, p.create_time, p.package_status,
+		p.package_finish_status,
 		p.settle_status,p.invoice_category, p.settle_amount ,p.package_type1, p.score, wk.ytj, wk.ysh, wk.dsh
 		FROM wm_score_package p, sys_dept d,
 		(
@@ -1158,7 +1259,8 @@
 
 	<!-- 积分包结算(分页) -->
 	<select id="listPackageSettleList" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput">
-		SELECT p.id, d.name packageEntName, p.score_package_name, p.create_time, p.package_status, p.package_finish_status,
+		SELECT p.id, d.name packageEntName, p.score_package_name, p.create_time, p.package_status,
+		p.package_finish_status,
 		p.settle_status,p.invoice_category, p.settle_amount ,p.package_type1, p.score, p.package_type2, p.sub_type
 		FROM wm_score_package p, sys_dept d
 		WHERE
@@ -1196,7 +1298,8 @@
 
 	<!-- 积分包结算列表 -->
 	<select id="listAllPackageSettle" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput">
-		SELECT p.id, d.name packageEntName, p.score_package_name, p.create_time, p.package_status, p.package_finish_status,
+		SELECT p.id, d.name packageEntName, p.score_package_name, p.create_time, p.package_status,
+		p.package_finish_status,
 		p.settle_status, p.invoice_category, p.settle_amount ,p.package_type1, p.score, p.package_type2, p.sub_type
 		FROM wm_score_package p, sys_dept d
 		WHERE