Browse Source

Merge branch 'feat-20221024-entapprovebytask'

lixuesong 2 years ago
parent
commit
36094ce289

+ 31 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmReportController.java

@@ -17,12 +17,15 @@
 
 
 package com.qunzhixinxi.hnqz.admin.controller;
 package com.qunzhixinxi.hnqz.admin.controller;
 
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -233,6 +236,22 @@ public class WmReportController {
 		return wmReportService.approvalReport(wmReport1,taskIds,approvalOpinion,approvalInfo);
 		return wmReportService.approvalReport(wmReport1,taskIds,approvalOpinion,approvalInfo);
 	}
 	}
 
 
+	/**
+	 * 结算报告--审批
+	 * reportStatus 1:待提交,2:已提交待审批 3:已部分审批  4:已退回 5:已审批待结单 6:已结单
+	 * @param taskIds 所选任务id
+	 * @return R
+	 */
+	@SysLog("批量任务类型结算报告--审批" )
+	@PostMapping("/approval-report-by-task")
+	public R approvalReportByTask(@RequestParam(value = "taskIds") List<String> taskIds,
+							String approvalOpinion,String approvalInfo) {
+		if(CollUtil.isEmpty(taskIds)){
+			return R.failed("taskIds必填");
+		}
+		return wmReportService.approvalReportByTaskType(taskIds,  approvalOpinion, approvalInfo);
+	}
+
 
 
 
 
 	/**
 	/**
@@ -252,7 +271,19 @@ public class WmReportController {
 		return wmReportService.getTaskListPage(page,wmReport1, isApprovalPage);
 		return wmReportService.getTaskListPage(page,wmReport1, isApprovalPage);
 	}
 	}
 
 
+	/**
+	 * 根据任务类型查询任务
+	 *
+	 * @param page 分页参数
+	 * @param taskTypeName 任务类型名称
+	 * @param entTaskStatus 企业审核状态
+	 * @return
+	 */
+	@GetMapping("/task-page-by-type")
+	public R<?> taskPageByTaskType(Page<WmTaskVO> page, String taskTypeName, String[] entTaskStatus) {
 
 
+		return wmReportService.taskPageByTaskType(page, taskTypeName, entTaskStatus);
+	}
 
 
 
 
 
 

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmReport.java

@@ -28,6 +28,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.List;
 
 
 /**
 /**
  * 报告审核表
  * 报告审核表
@@ -153,4 +154,16 @@ public class WmReport extends Model<WmReport> {
 	 */
 	 */
 	@TableField(exist = false)
 	@TableField(exist = false)
 	private WmReportOpt reportOpt;
 	private WmReportOpt reportOpt;
+
+	/**
+	 * 任务类型id
+	 */
+	@TableField(exist = false)
+	private List<String> taskTypeIdList;
+
+	/**
+	 * 报告审批状态:0待审核 1通过,2不通过
+	 */
+	@TableField(exist = false)
+	private List<String> entTaskStatus;
 }
 }

+ 276 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/vo/WmTaskVO.java

@@ -0,0 +1,276 @@
+/*
+ *    Copyright (c) 2018-2025, hnqz All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: hnqz
+ */
+
+package com.qunzhixinxi.hnqz.admin.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 任务表
+ *
+ * @author gaoyanng
+ * @date 2020-06-25 23:35:25
+ */
+@Data
+@ApiModel(value = "任务表")
+public class WmTaskVO implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 *
+	 */
+	@TableId
+	@ApiModelProperty(value="")
+	private String id;
+	/**
+	 * 任务类型ID
+	 */
+	@ApiModelProperty(value="任务类型ID")
+	private String taskTypeId;
+
+	@ApiModelProperty(value="任务得分")
+	Integer score;
+
+	@ApiModelProperty(value="任务提交到的积分包ID")
+	String scorePackageDrugId;
+
+	@ApiModelProperty(value="任务提交到的积分包ID")
+	String scorePackageLevel1Id;
+
+	@ApiModelProperty(value="任务类型ID")
+	String scorePackageId;
+
+	@ApiModelProperty(value="积分分配")
+	String taskRuleId;
+
+	/**
+	 * 调研时间
+	 */
+	@ApiModelProperty(value="调研时间")
+	private LocalDateTime lookintoDate;
+	/**
+	 * 省
+	 */
+	@ApiModelProperty(value="省")
+	private String province;
+	/**
+	 * 市
+	 */
+	@ApiModelProperty(value="市")
+	private String city;
+	/**
+	 * 区
+	 */
+	@ApiModelProperty(value="区")
+	private String area;
+	/**
+	 * 地址
+	 */
+	@ApiModelProperty(value="地址")
+	private String address;
+	/**
+	 * 调研类型ID
+	 */
+	@ApiModelProperty(value="调研类型ID")
+	private String lookintoTypeId;
+	/**
+	 * 任务内容ID
+	 */
+	@ApiModelProperty(value="任务内容ID")
+	private String taskContentId;
+	/**
+	 * 任务状态
+	 */
+	@ApiModelProperty(value="任务状态")
+	private String taskStatus;
+
+	/**
+	 * 提交审核状态
+	 */
+	@ApiModelProperty(value="提交审核状态")
+	private String submitStatus;
+
+	/**
+	 * 任务用户ID
+	 */
+	@ApiModelProperty(value="任务用户ID")
+	private String taskUserId;
+
+	/**
+	 * 用户类型ID
+	 */
+	@ApiModelProperty(value="用户类型ID")
+	private String taskUserType;
+
+	/**
+	 * 服务药企
+	 */
+	@ApiModelProperty(value="服务药企")
+	private String drugEntId;
+
+	/**
+	 * 分享图片地址
+	 */
+	@ApiModelProperty(value="服务药企")
+	private String shareImgUrl;
+
+	/**
+	 * 组织机构ID
+	 */
+	@ApiModelProperty(value="组织机构ID")
+	private String deptId;
+	/**
+	 * 是否删除
+	 */
+	@ApiModelProperty(value="是否删除")
+	private String delFlag;
+	/**
+	 * 是否禁用
+	 */
+	@ApiModelProperty(value="是否禁用")
+	private String enableFlag;
+	/**
+	 * 所属租户
+	 */
+	@ApiModelProperty(value="所属租户",hidden=true)
+	private Integer tenantId;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value="创建时间")
+	private LocalDateTime createTime;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value="创建人")
+	private Integer createUser;
+	/**
+	 * 更新时间
+	 */
+	@ApiModelProperty(value="更新时间")
+	private LocalDateTime updateTime;
+	/**
+	 * 更新人
+	 */
+	@ApiModelProperty(value="更新人")
+	private String updateUser;
+
+	private String platAuditStatus;
+
+	private List<String> extIds;
+
+	private String taskInfoImg;
+
+	/**
+	 * 对比结果
+	 */
+	@ApiModelProperty(value="对比结果")
+	private String compareResult;
+	/**
+	 * 审批意见
+	 */
+	@ApiModelProperty(value="审批意见")
+	private String approvalOpinion;
+	/**
+	 * 审批说明
+	 */
+	@ApiModelProperty(value="审批说明")
+	private String approvalInfo;
+
+	private String realFlag;
+
+	@ApiModelProperty(value="任务提交到一级cso的报告ID")
+	private Integer reportOneId;
+	@ApiModelProperty(value="任务提交到一级cso的报告审核状态")
+	private String reportOneApprovalStatus;
+	@ApiModelProperty(value="任务提交到一级cso的报告审批意见")
+	private String reportOneApprovalOpinion;
+	@ApiModelProperty(value="任务提交到一级cso的报告审批说明")
+	private String reportOneApprovalInfo;
+
+	@ApiModelProperty(value="任务提交到二级cso的报告ID")
+	private Integer reportSecondId;
+	@ApiModelProperty(value="任务提交到二级cso的报告审核状态")
+	private String reportSecondApprovalStatus;
+	@ApiModelProperty(value="任务提交到二级cso的报告审批意见")
+	private String reportSecondApprovalOpinion;
+	@ApiModelProperty(value="任务提交到二级cso的报告审批说明")
+	private String reportSecondApprovalInfo;
+
+	@ApiModelProperty(value="任务提交到药企的报告ID")
+	private Integer reportDrugId;
+	@ApiModelProperty(value="任务提交到药企的报告审核状态")
+	private String reportDrugApprovalStatus;
+	@ApiModelProperty(value="任务提交到药企的报告审批意见")
+	private String reportDrugApprovalOpinion;
+	@ApiModelProperty(value="任务提交到药企的报告审批说明")
+	private String reportDrugApprovalInfo;
+
+	/**
+	 * 接单对象list
+	 */
+	private WmTaskContent wmTaskContent;
+
+	private String type;
+
+	/**
+	 * cso审批说明
+	 */
+	@ApiModelProperty(value="cso审批说明")
+	private String taskStatusInfo;
+
+
+	private String taskFrom;
+
+	/**
+	 * 任务用户用户名
+	 */
+	private String taskUsername;
+
+	/**
+	 * 关联的用户手机号
+	 */
+	private String username;
+
+	/**
+	 * 报告单号
+	 */
+	private String reportNo;
+
+	/**
+	 * 源头包积分包id
+	 */
+	private String scoreId;
+
+	/**
+	 * 分配对象类型(0-药企,1-一级CSO,2-二级CSO)
+	 */
+	private String typeid;
+
+	/**
+	 * 积分包名称
+	 */
+	private String scorePackageName;
+}

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScopeMapper;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScopeMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -201,4 +202,13 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
 	 */
 	 */
 	Long countMeetingTask(@Param("taskTypeList") List<String> taskTypeList, @Param("taskUserId") String taskUserId,
 	Long countMeetingTask(@Param("taskTypeList") List<String> taskTypeList, @Param("taskUserId") String taskUserId,
 						  @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 						  @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
+
+	/**
+	 * 企业审核查询任务列表
+	 *
+	 * @param page
+	 * @param wmReport
+	 * @return
+	 */
+	IPage<WmTaskVO> entTaskPageByTaskType(Page<WmTaskVO> page, @Param("query") WmReport wmReport);
 }
 }

+ 21 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmReportService.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
+import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
 
 import java.util.List;
 import java.util.List;
@@ -39,9 +40,29 @@ public interface WmReportService extends IService<WmReport> {
 
 
 	R approvalReport(WmReport wmReport, List<String> taskIds, String approvalOpinion, String approvalInfo);
 	R approvalReport(WmReport wmReport, List<String> taskIds, String approvalOpinion, String approvalInfo);
 
 
+	/**
+	 * 企业根据任务类型审核任务
+	 *
+	 * @param taskIds
+	 * @param approvalOpinion
+	 * @param approvalInfo
+	 * @return
+	 */
+	R<?> approvalReportByTaskType(List<String> taskIds, String approvalOpinion, String approvalInfo);
+
 	R getTaskListPage(Page page, WmReport wmReport, Integer isApprovalPage);
 	R getTaskListPage(Page page, WmReport wmReport, Integer isApprovalPage);
 
 
 	IPage<WmReport> getReportListPage(Page page, WmReport wmReport, String scoreId, String name);
 	IPage<WmReport> getReportListPage(Page page, WmReport wmReport, String scoreId, String name);
 
 
+	/**
+	 * 根据任务类型查询任务
+	 *
+	 * @param page
+	 * @param taskTypeName
+	 * @param entTaskStatus
+	 * @return
+	 */
+	R<?> taskPageByTaskType(Page<WmTaskVO> page, String taskTypeName, String[] entTaskStatus);
+
 
 
 }
 }

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

@@ -17,7 +17,9 @@
 package com.qunzhixinxi.hnqz.admin.service.impl;
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -35,22 +37,31 @@ import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.entity.dto.WmDeptTaskTypeConfigDTO;
+import com.qunzhixinxi.hnqz.admin.entity.dto.WmDeptTaskTypeConfigJsonDTO;
+import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
+import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmReportMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmReportMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
+import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskTypeConfigService;
 import com.qunzhixinxi.hnqz.admin.service.WmReportService;
 import com.qunzhixinxi.hnqz.admin.service.WmReportService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -58,9 +69,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -69,18 +82,22 @@ import java.util.stream.Collectors;
  * @author pigx code generator
  * @author pigx code generator
  * @date 2020-12-21 20:57:26
  * @date 2020-12-21 20:57:26
  */
  */
+@Slf4j
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
 public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> implements WmReportService {
 public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> implements WmReportService {
 
 
 	private final WmScorePackageService wmScorePackageService;
 	private final WmScorePackageService wmScorePackageService;
 	private final WmScorePackageStatusService wmScorePackageStatusService;
 	private final WmScorePackageStatusService wmScorePackageStatusService;
+	private final WmTaskTypeService wmTaskTypeService;
 	private final WmTaskService wmTaskService;
 	private final WmTaskService wmTaskService;
+	private final WmTaskMapper wmTaskMapper;
 	private final WmReportMapper wmReportMapper;
 	private final WmReportMapper wmReportMapper;
 	private final SysUserService sysUserService;
 	private final SysUserService sysUserService;
 	private final WmDaDistributionService wmDaDistributionService;
 	private final WmDaDistributionService wmDaDistributionService;
 	private final WmDaPharmacyService wmDaPharmacyService;
 	private final WmDaPharmacyService wmDaPharmacyService;
 	private final WmDaHospitalService wmDaHospitalService;
 	private final WmDaHospitalService wmDaHospitalService;
+	private final WmDeptTaskTypeConfigService wmDeptTaskTypeConfigService;
 	private final RedisTemplate<String,String> redisTemplate;
 	private final RedisTemplate<String,String> redisTemplate;
 
 
 	@Override
 	@Override
@@ -385,6 +402,45 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 		return R.ok("审批成功");
 		return R.ok("审批成功");
 	}
 	}
 
 
+	/**
+	 * 企业根据任务类型审核任务
+	 *
+	 * @param taskIds
+	 * @param approvalOpinion
+	 * @param approvalInfo
+	 * @return
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<?> approvalReportByTaskType(List<String> taskIds, String approvalOpinion, String approvalInfo) {
+		LambdaQueryWrapper<WmTask> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.in(WmTask::getId, taskIds);
+		List<WmTask> wmTaskList = wmTaskService.list(queryWrapper);
+
+		// 根据task任务表 反查report报告表
+		// 以reportId(reportDrugId或reportOneId字段)为key进行分类
+		Map<Integer, List<WmTask>> reportIdMap = wmTaskList.stream()
+				.filter(wmTask -> wmTask.getReportDrugId() != null || wmTask.getReportOneId() != null)
+				.collect(Collectors.groupingBy(wmTask -> wmTask.getReportDrugId() != null ?
+						wmTask.getReportDrugId() : wmTask.getReportOneId()));
+
+		AtomicBoolean successFlag = new AtomicBoolean(true);
+		reportIdMap.forEach((reportId, wmTasks) -> {
+			WmReport queryReport = this.getById(reportId);
+			List<String> taskIdList = wmTasks.stream().map(WmTask::getId).collect(Collectors.toList());
+			log.info("企业批量审核任务reportId={}, taskIds={}", reportId, taskIdList);
+
+			// 调用原有审核方法
+			R approvalReportResult = this.approvalReport(queryReport, taskIdList, approvalOpinion, approvalInfo);
+
+			if (approvalReportResult.getCode() != 0) {
+				successFlag.set(false);
+			}
+		});
+
+		return successFlag.get() ? R.ok("审批成功") : R.failed("审批失败");
+	}
+
 	/**
 	/**
 	 * 报告管理--查看
 	 * 报告管理--查看
 	 * @param page
 	 * @param page
@@ -453,7 +509,73 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 		return R.ok(pages);
 		return R.ok(pages);
 	}
 	}
 
 
+	/**
+	 * 根据任务类型查询任务
+	 *
+	 * @param page 分页参数
+	 * @param taskTypeName 任务类型名称
+	 * @param entTaskStatus 审核状态 0待审核 1通过,2不通过
+	 * @return
+	 */
+	@Override
+	public R<?> taskPageByTaskType(Page<WmTaskVO> page, String taskTypeName, String[] entTaskStatus) {
+
+		LambdaQueryWrapper<WmTaskType> queryWrapper = Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getEnableFlag, EnableEnum.ENABLE.val());
+				if (StrUtil.isNotBlank(taskTypeName)) {
+					queryWrapper.eq(WmTaskType::getTaskTypeName, taskTypeName);
+				} else {
+					// 查询该企业配置的任务类型
+					WmDeptTaskTypeConfigDTO deptTaskTypeConfig =
+							wmDeptTaskTypeConfigService.getDeptTaskTypeConfig(SecurityUtils.getUser().getDeptId());
+					List<String> taskTypeNames = deptTaskTypeConfig.getConfigList().stream()
+							.map(WmDeptTaskTypeConfigJsonDTO::getTaskTypeName)
+							.collect(Collectors.toList());
+					queryWrapper.in(WmTaskType::getTaskTypeName, taskTypeNames);
+				}
+		List<WmTaskType> baseTaskTypeList = wmTaskTypeService.list(queryWrapper);
+		if (CollUtil.isEmpty(baseTaskTypeList)) {
+			log.warn("任务类型不存在tastTypeName={}", baseTaskTypeList);
+			return R.failed("任务类型不存在");
+		}
+
+		WmReport queryReport = new WmReport();
+		queryReport.setDrugEntId(SecurityUtils.getUser().getDeptId());
+		queryReport.setTaskTypeIdList(baseTaskTypeList.stream().map(WmTaskType::getId).collect(Collectors.toList()));
+		if (ArrayUtil.isNotEmpty(entTaskStatus)) {
+			queryReport.setEntTaskStatus(Arrays.asList(entTaskStatus));
+		}
+		IPage<WmTaskVO> pages = wmTaskMapper.entTaskPageByTaskType(page, queryReport);
+
+		Page<Map<String, Object>> mapPage = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
+		List<WmTaskVO> taskList = pages.getRecords();
+		if (CollUtil.isNotEmpty(taskList)) {
+			List<Map<String, Object>> resList = taskList.stream().map(wmtask -> {
+				Map<String, Object> map = JSON.parseObject(JSON.toJSONString(wmtask), Map.class);
+				map.put("reportNo", wmtask.getReportNo());
+				map.put("scoreId", wmtask.getScoreId());
+				if ("0".equals(wmtask.getTypeid())) {//药企
+					map.put("reportApprovalOpinion", wmtask.getReportDrugApprovalOpinion());
+				} else if ("1".equals(wmtask.getTypeid())) {//一级代理商类型
+					map.put("reportApprovalOpinion", wmtask.getReportDrugApprovalOpinion());
+				} else if ("2".equals(wmtask.getTypeid())) {//二级代理商类型
+					map.put("reportApprovalOpinion", wmtask.getReportOneApprovalOpinion());
+				}
+				// 姓名
+				if (StringUtils.isNumeric(wmtask.getTaskUserId())) {
+					SysUser user = sysUserService.getById(Integer.parseInt(wmtask.getTaskUserId()));
+					map.put("taskUsername", user.getRealname());
+				}
+				// 积分包名称设置到scorePackageId上 适配页面
+				map.put("scorePackageId", wmtask.getScorePackageName());
+				return map;
+			}).collect(Collectors.toList());
 
 
+			mapPage.setRecords(resList);
+		}
+		return R.ok(mapPage);
+	}
 }
 }
 
 
 
 

+ 30 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1332,4 +1332,34 @@ FROM
 	  	AND wm_task_content.temp4 BETWEEN #{startTime} AND #{endTime}
 	  	AND wm_task_content.temp4 BETWEEN #{startTime} AND #{endTime}
 		AND wm_task.task_status != 4
 		AND wm_task.task_status != 4
 	</select>
 	</select>
+
+	<!-- 企业审核查询任务列表 -->
+    <select id="entTaskPageByTaskType" resultType="com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO">
+		select t.*, r.report_no, r.score_id, p.typeid, p.score_package_name
+		from wm_task t
+				 left join wm_report r on t.report_one_id = r.id or t.report_second_id = r.id or t.report_drug_id = r.id
+				 left join wm_score_package p on p.id = r.score_id
+		where r.drug_ent_id = #{query.drugEntId}
+		  and t.task_type_id in
+		<foreach collection="query.taskTypeIdList" item="item" index="index" separator="," open="(" close=")">
+			#{item}
+		</foreach>
+		<foreach collection="query.entTaskStatus" item="item" index="index" separator="or" open="and (" close=")">
+			<if test="item == 1">
+			  (p.typeid = 0 and t.report_drug_approval_opinion = #{item}
+			  or p.typeid = 1 and t.report_drug_approval_opinion = #{item}
+			  or p.typeid = 2 and t.report_one_approval_opinion = #{item})
+			</if>
+			<if test="item == 2">
+				(p.typeid = 0 and t.report_drug_approval_opinion = #{item}
+				or p.typeid = 1 and t.report_drug_approval_opinion = #{item}
+				or p.typeid = 2 and t.report_one_approval_opinion = #{item})
+			</if>
+			<if test="item == 0">
+			  (p.typeid = 0 and t.report_drug_approval_opinion is null
+				or p.typeid = 1 and t.report_drug_approval_opinion is null
+				or p.typeid = 2 and t.report_one_approval_opinion is null)
+			</if>
+		</foreach>
+	</select>
 </mapper>
 </mapper>