shc 3 роки тому
батько
коміт
9a458cd4b5

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

@@ -2322,6 +2322,24 @@ public class WmScorePackageController {
 		return wmScorePackageService.getScorePackagePage(page, wmScorePackage);
 	}
 
+	// /**
+	//  * 分配积分列表查询--派工平台
+	//  *
+	//  */
+	// @ApiOperation(value = "分页查询", notes = "分页查询")
+	// @GetMapping("/getScorePackagePage")
+	// public R getScorePackagePage(@RequestParam(value = "current") Integer current,
+	// 							 @RequestParam(value = "size") Integer size,
+	// 							 @RequestParam(value = "packageType1") Integer 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
+	// ) {
+	// 	return wmScorePackageService.getScorePackagePage(new Page<WmScorePackage>(current,size),
+	// 			packageType1,packageType2,scorePackageName,scorePackageStatus,typeId);
+	// }
+
 	/**
 	 * 根据id查询积分包信息
 	 *

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

@@ -119,7 +119,14 @@ public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 
 	public List<WmScorePackage> getScorePackagekfpjf(@Param("query") WmScorePackage wmScorePackage);
 
-	IPage<WmScorePackage> getScorePackagekList(Page page,@Param("query") WmScorePackage wmScorePackage);
+	IPage<WmScorePackage> getScorePackageList(Page page,@Param("query") WmScorePackage wmScorePackage);
+
+	IPage<WmScorePackage> newGetScorePackageList(Page<WmScorePackage> page,
+											  @Param(value = "packageType1") Integer packageType1,
+											  @Param(value = "packageType2") Integer packageType2,
+											  @Param(value = "scorePackageName") String scorePackageName,
+											  @Param(value = "scorePackageStatus") Integer scorePackageStatus,
+											  @Param(value = "sendDeptId") Integer sendDeptId);
 
     WmScorePackage selectRelationScoreIdList(String id);
 

+ 3 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -163,4 +163,7 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 												   LocalDate allocationDate, LocalDate endLabelDate);
 
 	void finishRate(WmScorePackage wmScorePackage);
+
+	R getScorePackagePage(Page<WmScorePackage> page, Integer packageType1, Integer packageType2,
+						  String scorePackageName, Integer scorePackageStatus, String typeId);
 }

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

@@ -32,6 +32,7 @@ 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.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.api.vo.WmScorePackageVO;
@@ -95,6 +96,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 	private final WmScorePackageSettleNoteMapper settleNoteMapper;
 	private final WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
 	private final WmReportMapper wmReportMapper;
+	private final SysDictItemService sysDictItemService;
 
 	@Override
 	public List<WmScorePackage> listWmScorePackageAndTask(WmScorePackage wmScorePackage) {
@@ -789,7 +791,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		if (StringUtil.isEmpty(wmScorePackage.getTypeid())) {
 			wmScorePackage.setTypeid("3,4");
 		}
-		IPage<WmScorePackage> pages = wmScorePackageMapper.getScorePackagekList(page, wmScorePackage);
+		IPage<WmScorePackage> pages = wmScorePackageMapper.getScorePackageList(page, wmScorePackage);
 		List<WmScorePackage> records = pages.getRecords();
 
 		List<String> reportWaitingCheckStatus = Arrays.asList("0", "1");
@@ -1596,6 +1598,254 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		step4(result, wmScorePackage);
 	}
 
+	@Override
+	public R getScorePackagePage(Page<WmScorePackage> page, Integer packageType1, Integer packageType2, String scorePackageName, Integer scorePackageStatus, String typeId) {
+
+		List<String> reportWaitingCheckStatus = Arrays.asList("0", "1");
+
+		Integer sendDeptId = SecurityUtils.getUser().getDeptId();
+
+		LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getPackageType1, packageType1)
+				.eq(WmScorePackage::getPackageType1, packageType1)
+				.like(StrUtil.isNotEmpty(scorePackageName), WmScorePackage::getScorePackageName, scorePackageName)
+				.eq(scorePackageStatus != null, WmScorePackage::getScorePackageStatus, scorePackageStatus)
+				.eq(WmScorePackage::getSendPackageDeptId, sendDeptId);
+
+		if (StringUtil.isEmpty(typeId)) {
+			queryWrapper.in(WmScorePackage::getTypeid, "3", "4");
+		} else {
+			List<String> split = StrUtil.split(typeId, StrUtil.C_COMMA);
+			queryWrapper.in(WmScorePackage::getTypeid, split);
+		}
+
+		Page<WmScorePackage> wmScorePackagePage = wmScorePackageMapper.selectPage(page, queryWrapper.orderByDesc(WmScorePackage::getCreateTime));
+
+		List<WmScorePackage> pageRecords = wmScorePackagePage.getRecords();
+
+		for (WmScorePackage scorePackage : pageRecords) {
+
+			// 任务统计
+			List<WmTask> taskList = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+					.eq(WmTask::getRealFlag, "0")
+					.eq(WmTask::getEnableFlag, "0")
+					.eq(WmTask::getDelFlag, "0")
+					.eq(WmTask::getScorePackageId, scorePackage.getId())
+			);
+
+			// 审核通过
+			int shtg = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getReportDrugApprovalOpinion(), "1") || StrUtil.equals(t.getReportOneApprovalOpinion(), "1"))
+					.mapToInt(WmTask::getScore)
+					.sum();
+			// 审核 不通过
+			int shbtg = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getReportDrugApprovalOpinion(), "2") || StrUtil.equals(t.getReportOneApprovalOpinion(), "2"))
+					.mapToInt(WmTask::getScore)
+					.sum();
+			// 审核通过数
+			long shtgnum = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getReportDrugApprovalOpinion(), "1") || StrUtil.equals(t.getReportOneApprovalOpinion(), "1"))
+					.count();
+			// 审核不通过数
+			long shbtgnum = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getReportDrugApprovalOpinion(), "2") || StrUtil.equals(t.getReportOneApprovalOpinion(), "2"))
+					.count();
+			// 平台未审核
+			int temp = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getTaskStatus(), "1"))
+					.mapToInt(WmTask::getScore)
+					.sum();
+			// 待审核
+			int dsh = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getTaskStatus(), "2"))
+					.mapToInt(WmTask::getScore)
+					.sum();
+			// 已审核
+			int ysh = taskList.parallelStream()
+					.filter(t -> StrUtil.equals(t.getTaskStatus(), "3"))
+					.mapToInt(WmTask::getScore)
+					.sum();
+			// 已审核数
+			long yshnum = taskList.parallelStream().filter(t -> StrUtil.equals(t.getTaskStatus(), "3")).count();
+			// 已提交
+			int ytj = temp + dsh + ysh;
+
+			// 已审核百分比
+			long yshtt = 0;
+			// 审核通过百分比
+			long shtgtt = 0;
+			// 审核不通过百分比
+			long shbtgtt = 0;
+			if (StrUtil.equals(scorePackage.getPackageType1(), "1")) {
+				int score = scorePackage.getScore();
+				yshtt = ysh * 100L / score;
+				yshtt = yshtt > 100 ? 100 : yshtt;
+
+				shtgtt = shtg * 100L / score;
+				shtgtt = shtgtt > 100 ? 100 : shtgtt;
+
+				shbtgtt = shbtg * 100L / score;
+				shbtgtt = shbtgtt > 100 ? 100 : shbtgtt;
+			} else {
+				int score = scorePackage.getUserNum() * scorePackage.getTaskNum();
+				yshtt = yshnum * 100 / score;
+				shtgtt = shtgnum * 100 / score;
+				shbtgtt = shbtgnum * 100 / score;
+			}
+
+
+			// 领取积分包记录
+			List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+					.eq(WmScorePackageStatus::getPackageId, scorePackage.getId())
+			);
+
+			List<WmScorePackageStatus> packageStatusList = scorePackageStatusList.stream()
+					.filter(s -> StrUtil.equals(s.getEnableFlag(), "0") && StrUtil.equals(s.getDelFlag(), "0"))
+					.collect(Collectors.toList());
+
+
+			List<WmScorePackageStatus> staList = scorePackageStatusList.stream()
+					.filter(record -> StrUtil.equals(record.getStatus(), "2"))
+					.collect(Collectors.toList());;
+
+			if (CollUtil.isNotEmpty(staList)) {
+				List<String> userIdList = staList.stream()
+						.map(WmScorePackageStatus::getUserId)
+						.collect(Collectors.toList());
+
+				List<String> userNameList = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
+						.in(SysUser::getUserId, userIdList))
+						.stream()
+						.map(SysUser::getRealname)
+						.collect(Collectors.toList());
+				scorePackage.setUserList(userNameList);
+				scorePackage.setUserListNum(userNameList.size());
+			} else {
+				scorePackage.setUserListNum(0);
+			}
+
+			// 已结单
+			long yjd = packageStatusList.stream()
+					.filter(s -> StrUtil.equalsAny(s.getStatus(), "1", "2"))
+					.count();
+			// 已结单待审核
+			long yjddsh = packageStatusList.stream()
+					.filter(s -> StrUtil.equals(s.getStatus(), "1"))
+					.count();
+
+
+			//获取上级包
+			WmScorePackage relationScorePackage = wmScorePackageMapper.selectOne(Wrappers.<WmScorePackage>lambdaQuery()
+					.eq(WmScorePackage::getId, scorePackage.getRelationScoreId()).last("limit 1"));
+
+
+			// 类型标签
+			SysDictItem package_type1 = sysDictItemService.getOne(Wrappers.<SysDictItem>lambdaQuery()
+					.eq(SysDictItem::getType, "package_type1")
+					.eq(SysDictItem::getValue, packageType1));
+			SysDictItem package_type2 = sysDictItemService.getOne(Wrappers.<SysDictItem>lambdaQuery()
+					.eq(SysDictItem::getType, "package_type2")
+					.eq(SysDictItem::getValue, packageType2));
+
+			String type1Lable = package_type1.getLabel();
+			String type2Lable = package_type2.getLabel();
+
+
+			// 设置
+			scorePackage.setYsh(yshtt >= 100 ? scorePackage.getScore() : ysh);
+			scorePackage.setYjd((int) yjd);
+			scorePackage.setYjddsh((int) yjddsh);
+			scorePackage.setDsh(dsh);
+			scorePackage.setShtg(shtg);
+			scorePackage.setShbtg(shbtg);
+			scorePackage.setShbtgnum((int) shbtgnum);
+			scorePackage.setShtgnum((int) shtgnum);
+			scorePackage.setDsh(dsh);
+			scorePackage.setIsTask(scorePackage.getId());
+			scorePackage.setYtj(ytj);
+			scorePackage.setYshtt((int) yshtt);
+			scorePackage.setShtgtt((int) shtgtt);
+			scorePackage.setShbtgtt((int) shbtgtt);
+			scorePackage.setPackageType1(type1Lable);
+			scorePackage.setPackageType2(type2Lable);
+			scorePackage.setRelationScoreId(relationScorePackage != null ? relationScorePackage.getScorePackageName(): null);
+
+
+			// 结算记录
+			WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+					.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId()).last("limit 1"));
+
+			if (note != null) {
+				scorePackage.setNotifyDate(note.getNotifyTime());
+			}
+
+			if ("2".equals(scorePackage.getPackageType2())) {
+
+				LambdaQueryWrapper<WmScorePackageSettleNote> wrapper = Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+						.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId());
+
+				int wsNum = settleNoteMapper.selectCount(wrapper.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
+				int asNum = settleNoteMapper.selectCount(wrapper.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 (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);
+			}
+
+
+			// 设置中止状态
+			WmScorePackage.PackageStopStatus stopStatus;
+
+			if (scorePackage.getRelationScoreId() == null) {
+				stopStatus = WmScorePackage.PackageStopStatus.ALL_IN;
+			} else {
+
+				//统计发包方还未审核的
+				long drugNeedToCheckCount = taskList.stream()
+						.filter(t -> "3".equals(t.getTaskStatus()) && "2".equals(t.getReportOneApprovalStatus()))
+						.count();
+
+				// 统计cso未审核 和审核通过的还未提交到药企的任务数
+				long csoNeedToCheckCount = taskList.stream()
+						.filter(t -> "2".equals(t.getTaskStatus()) ||
+								("3".equals(t.getTaskStatus()) && reportWaitingCheckStatus.contains(t.getReportOneApprovalStatus())))
+						.count();
+
+				// 如果有发包方未审核的不能中止
+				if (drugNeedToCheckCount != 0L) {
+					stopStatus = WmScorePackage.PackageStopStatus.NOTHING;
+				} else if (csoNeedToCheckCount != 0L) {
+					// 如果有cso未审核的提示信息
+					stopStatus = WmScorePackage.PackageStopStatus.REMAIN_MSG;
+				} else {
+					// 无提示信息
+					stopStatus = WmScorePackage.PackageStopStatus.REMAIN;
+				}
+			}
+
+			scorePackage.setStopStatus(stopStatus);
+
+		}
+
+		return R.ok(wmScorePackagePage);
+	}
+
 
 	private Set<String> stepA(String packageId) {
 

+ 91 - 9
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -453,14 +453,24 @@
 	</select>
 
 	<select id="getExportPackageTotalList1" resultMap="wmScorePackageMap">
-		select bb.ysh,p.* from wm_score_package p
-		left join (
-		select score_package_id,sum(if(task_status=3,score,0)) ysh from wm_task
-		where score_package_id is not null and wm_task.del_flag=0 and wm_task.enable_flag=0
-		group by score_package_id)
-		bb on p.id =bb.score_package_id
-		where p.del_flag='0' and p.enable_flag='0'
-		and p.package_type2='1'
+		select
+		       bb.ysh,
+		       p.*
+		from wm_score_package p
+			left join (
+				select
+				       score_package_id,
+				       sum(if(task_status=3,score,0)) ysh
+				from wm_task
+				where
+				      score_package_id is not null
+				  and wm_task.del_flag=0
+				  and wm_task.enable_flag=0
+				  group by score_package_id) bb on p.id =bb.score_package_id
+		where
+		      p.del_flag='0'
+		  and p.enable_flag='0'
+		  and p.package_type2='1'
 		<if test="query.sendPackageDeptId != null and query.sendPackageDeptId != ''">
 			AND p.send_package_dept_id= #{query.sendPackageDeptId}
 		</if>
@@ -1042,7 +1052,7 @@
 	</select>
 
 
-	<select id="getScorePackagekList" resultMap="wmScorePackageMap">
+	<select id="getScorePackageList" resultMap="wmScorePackageMap">
 		select aa.id,bb.ysh,cc.yjd,cc.yjddsh,bb.dsh,bb.shtg,bb.shbtg,bb.shtgnum,bb.shbtgnum,
 		bb.score_package_id as isTask, aa.is_receive,
 		bb.ytj,
@@ -1124,6 +1134,78 @@
 		</where>
 		order by aa.create_time desc
 	</select>
+
+
+	<select id="newGetScorePackageList" resultMap="wmScorePackageMap">
+		select aa.id,bb.ysh,cc.yjd,cc.yjddsh,bb.dsh,bb.shtg,bb.shbtg,bb.shtgnum,bb.shbtgnum,
+		bb.score_package_id as isTask, aa.is_receive,
+		bb.ytj,
+		CASE WHEN aa.package_type1 = 1 THEN( bb.ysh * 100 / aa.score )
+		else ( bb.yshnum * 100 / (aa.user_num*aa.task_num) )END AS yshtt,
+		CASE WHEN aa.package_type1 = 1 THEN( bb.shtg * 100 / aa.score )
+		else ( bb.shtgnum * 100 / (aa.user_num*aa.task_num) )END AS shtgtt,
+		CASE WHEN aa.package_type1 = 1 THEN( bb.shbtg * 100 / aa.score )
+		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.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,
+		aa.user_num,aa.task_num,aa.related_service,aa.package_finish_status,aa.user_score,
+		aa.enable_type,aa.settle_flag,aa.score_package_status,aa.belong_date,aa.description,
+		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(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)
+		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,
+		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
+		<where>
+			aa.del_flag='0'
+
+			<if test="query.sendPackageDeptId != null ">
+				AND aa.send_package_dept_id= #{sendDeptId}
+			</if>
+
+			<if test="query.typeid != null and query.typeid != ''">
+				AND aa.typeid in (${query.typeid})
+			</if>
+
+			<if test="query.scorePackageName != null and query.scorePackageName != ''">
+				AND aa.score_package_name like CONCAT('%',#{scorePackageName},'%')
+			</if>
+			<if test="query.packageType1 != null ">
+				AND aa.package_type1= #{packageType1}
+			</if>
+			<if test="query.packageType2 != null">
+				AND aa.package_type2= #{packageType2}
+			</if>
+			<if test="query.scorePackageStatus != null ">
+				AND aa.score_package_status= #{scorePackageStatus}
+			</if>
+		</where>
+		order by aa.create_time desc
+	</select>
+
+
+
+
 	<select id="selectRelationScoreIdList" resultMap="wmScorePackageMap">
 		SELECT *
 		FROM wm_score_package