|
@@ -32,6 +32,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
|
|
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.entity.SysUser;
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.WmScorePackageVO;
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.WmScorePackageVO;
|
|
@@ -95,6 +96,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
private final WmScorePackageSettleNoteMapper settleNoteMapper;
|
|
private final WmScorePackageSettleNoteMapper settleNoteMapper;
|
|
private final WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
|
|
private final WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
|
|
private final WmReportMapper wmReportMapper;
|
|
private final WmReportMapper wmReportMapper;
|
|
|
|
+ private final SysDictItemService sysDictItemService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<WmScorePackage> listWmScorePackageAndTask(WmScorePackage wmScorePackage) {
|
|
public List<WmScorePackage> listWmScorePackageAndTask(WmScorePackage wmScorePackage) {
|
|
@@ -789,7 +791,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
if (StringUtil.isEmpty(wmScorePackage.getTypeid())) {
|
|
if (StringUtil.isEmpty(wmScorePackage.getTypeid())) {
|
|
wmScorePackage.setTypeid("3,4");
|
|
wmScorePackage.setTypeid("3,4");
|
|
}
|
|
}
|
|
- IPage<WmScorePackage> pages = wmScorePackageMapper.getScorePackagekList(page, wmScorePackage);
|
|
|
|
|
|
+ IPage<WmScorePackage> pages = wmScorePackageMapper.getScorePackageList(page, wmScorePackage);
|
|
List<WmScorePackage> records = pages.getRecords();
|
|
List<WmScorePackage> records = pages.getRecords();
|
|
|
|
|
|
List<String> reportWaitingCheckStatus = Arrays.asList("0", "1");
|
|
List<String> reportWaitingCheckStatus = Arrays.asList("0", "1");
|
|
@@ -1596,6 +1598,254 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
step4(result, wmScorePackage);
|
|
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) {
|
|
private Set<String> stepA(String packageId) {
|
|
|
|
|