|
@@ -52,408 +52,414 @@ import java.util.stream.Collectors;
|
|
|
@Slf4j
|
|
|
@RestController
|
|
|
@AllArgsConstructor
|
|
|
-@RequestMapping("/wmreport" )
|
|
|
+@RequestMapping("/wmreport")
|
|
|
public class WmReportController {
|
|
|
|
|
|
- private final WmReportService wmReportService;
|
|
|
- private final WmScorePackageService wmScorePackageService;
|
|
|
- private final WmTaskService wmTaskService;
|
|
|
- private final WmTaskTypeService wmTaskTypeService;
|
|
|
- private final RedisTemplate redisTemplate;
|
|
|
- /**
|
|
|
- * 分页查询
|
|
|
- * @param page 分页对象
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @return
|
|
|
- */
|
|
|
- @GetMapping("/page" )
|
|
|
- @PreAuthorize("@pms.hasPermission('admin_wmreport_view')" )
|
|
|
- public R getWmReportPage(Page page, WmReport wmReport) {
|
|
|
- return R.ok(wmReportService.page(page, Wrappers.query(wmReport)));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 通过id查询报告审核表
|
|
|
- * @param id id
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @GetMapping("/{id}" )
|
|
|
- @PreAuthorize("@pms.hasPermission('admin_wmreport_view')" )
|
|
|
- public R getById(@PathVariable("id" ) Integer id) {
|
|
|
- return R.ok(wmReportService.getById(id));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 新增报告审核表
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @SysLog("新增报告审核表" )
|
|
|
- @PostMapping
|
|
|
- @PreAuthorize("@pms.hasPermission('admin_wmreport_add')" )
|
|
|
- public R save(@RequestBody WmReport wmReport) {
|
|
|
- return R.ok(wmReportService.save(wmReport));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 修改报告审核表
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @SysLog("修改报告审核表" )
|
|
|
- @PutMapping
|
|
|
- @PreAuthorize("@pms.hasPermission('admin_wmreport_edit')" )
|
|
|
- public R updateById(@RequestBody WmReport wmReport) {
|
|
|
- return R.ok(wmReportService.updateById(wmReport));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 通过id删除报告审核表
|
|
|
- * @param id id
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @SysLog("通过id删除报告审核表" )
|
|
|
- @DeleteMapping("/{id}" )
|
|
|
- public R removeById( @PathVariable("id")Integer id) {
|
|
|
- WmReport wmReport=wmReportService.getById(id);
|
|
|
- if(null==wmReport){
|
|
|
- return R.failed("未查询到报告信息");
|
|
|
- }
|
|
|
- wmReport.setDelFlag("1");
|
|
|
- wmReportService.updateById(wmReport);
|
|
|
- WmScorePackage scorePackage=wmScorePackageService.getById(wmReport.getScoreId());
|
|
|
- //typeid 0 药企 1一级代理商 2二级代理商 3全职学术推广员 4兼职学术推广员
|
|
|
- LambdaUpdateWrapper<WmTask> updateWrapper=new LambdaUpdateWrapper<>();
|
|
|
-
|
|
|
- if("0".equals(scorePackage.getTypeid())){//药企
|
|
|
- if("1".equals(wmReport.getDelFlag())){
|
|
|
- updateWrapper.set(WmTask::getReportDrugId,null);
|
|
|
- updateWrapper.set(WmTask::getReportDrugApprovalOpinion,null);
|
|
|
- updateWrapper.set(WmTask::getReportDrugApprovalInfo,null);
|
|
|
- }
|
|
|
- updateWrapper.set(WmTask::getReportDrugApprovalStatus,"0");
|
|
|
- updateWrapper.eq(WmTask::getReportDrugId,wmReport.getId());
|
|
|
- }else if("1".equals(scorePackage.getTypeid())){//一级代理商类型
|
|
|
- if("1".equals(wmReport.getDelFlag())){
|
|
|
- updateWrapper.set(WmTask::getReportOneId,null);
|
|
|
- updateWrapper.set(WmTask::getReportOneApprovalOpinion,null);
|
|
|
- updateWrapper.set(WmTask::getReportOneApprovalInfo,null);
|
|
|
- }
|
|
|
- if(SecurityUtils.getRoles().contains(3)){//药企
|
|
|
- updateWrapper.set(WmTask::getReportDrugApprovalStatus,"0");
|
|
|
- }
|
|
|
- updateWrapper.set(WmTask::getReportOneApprovalStatus,"0");
|
|
|
- updateWrapper.eq(WmTask::getReportOneId,wmReport.getId());
|
|
|
- }else if("2".equals(scorePackage.getTypeid())){//二级代理商类型
|
|
|
- if("1".equals(wmReport.getDelFlag())){
|
|
|
- updateWrapper.set(WmTask::getReportSecondId,null);
|
|
|
- updateWrapper.set(WmTask::getReportSecondApprovalOpinion,null);
|
|
|
- updateWrapper.set(WmTask::getReportSecondApprovalInfo,null);
|
|
|
- }
|
|
|
- if(SecurityUtils.getRoles().contains(4)){// 一级CSO
|
|
|
- updateWrapper.set(WmTask::getReportOneApprovalStatus,"0");
|
|
|
- }
|
|
|
- updateWrapper.set(WmTask::getReportSecondApprovalStatus,"0");
|
|
|
- updateWrapper.eq(WmTask::getReportSecondId,wmReport.getId());
|
|
|
- }
|
|
|
- return R.ok(wmTaskService.update(updateWrapper));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 结算报告管理--列表查询
|
|
|
- * @param page 分页对象
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @param type 固定值,1结算报告管理,2结算报告审批
|
|
|
- * @return
|
|
|
- */
|
|
|
- @GetMapping("/reportPage" )
|
|
|
- public R reportPage(Page page, WmReport wmReport,String type,String queryScoreId,String queryName) {
|
|
|
- HnqzUser user=SecurityUtils.getUser();
|
|
|
- wmReport.setDelFlag("0");
|
|
|
- if("1".equals(type)){//1结算报告管理,当前用户是申请结算企业
|
|
|
- wmReport.setDrugEntId(null);
|
|
|
- wmReport.setApplyDrugEntId(user.getDeptId());
|
|
|
- }else{//2结算报告审批,当前用户是结算企业
|
|
|
- wmReport.setApplyDrugEntId(null);
|
|
|
- wmReport.setDrugEntId(user.getDeptId());
|
|
|
- }
|
|
|
-
|
|
|
- return R.ok(wmReportService.getReportListPage(page,wmReport,queryScoreId,queryName));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 报告审核状态修改--提交,结单,退回
|
|
|
- * reportStatus 1:待提交,2:已提交待审批 3:已部分审批 4:已退回 5:已审批待结单 6:已结单
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @SysLog("报告审核状态修改--提交或结单(结算报告管理-提交)" )
|
|
|
- @PostMapping("/updateReportStatus" )
|
|
|
- public R updateReportStatus(@RequestBody WmReport wmReport) {
|
|
|
- WmReport wmReport1=wmReportService.getById(wmReport.getId());
|
|
|
- if(null==wmReport1){
|
|
|
- return R.failed("未查询到报告信息");
|
|
|
- }
|
|
|
- wmReport.setScoreId(wmReport1.getScoreId());
|
|
|
- if(StringUtil.isEmpty(wmReport.getReportStatus())){
|
|
|
- return R.failed("缺少状态参数");
|
|
|
- }
|
|
|
-
|
|
|
- WmScorePackage scorePackage = wmScorePackageService.getById(wmReport1.getScoreId());
|
|
|
- if (LocalDate.now().isAfter(scorePackage.getEndTime())) {
|
|
|
- throw new BizException("当前积分包已过截止日期");
|
|
|
- }
|
|
|
-
|
|
|
- return wmReportService.updateReportStatus(wmReport);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 结算报告--审批
|
|
|
- * reportStatus 1:待提交,2:已提交待审批 3:已部分审批 4:已退回 5:已审批待结单 6:已结单
|
|
|
- * @param wmReport 报告审核表
|
|
|
- * @param taskIds 所选任务id
|
|
|
- * @return R
|
|
|
- */
|
|
|
- @SysLog("结算报告--审批" )
|
|
|
- @GetMapping("/approvalReport" )
|
|
|
- public R approvalReport(WmReport wmReport, @RequestParam(value = "taskIds") List<String> taskIds,
|
|
|
- String approvalOpinion,String approvalInfo) {
|
|
|
- log.info("结算报告--审批 请求参数:taskIds={},approvalOpinion={},approvalInfo={} 操作人:{},操作时间:{}",
|
|
|
- taskIds, approvalOpinion, approvalInfo, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
- WmReport wmReport1=wmReportService.getById(wmReport.getId());
|
|
|
- if(null==wmReport1){
|
|
|
- return R.failed("未查询到报告信息");
|
|
|
- }
|
|
|
- if(taskIds.isEmpty()){
|
|
|
- return R.failed("缺少参数:任务id");
|
|
|
- }
|
|
|
-
|
|
|
- taskIds.forEach(taskId -> {
|
|
|
- String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
- Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_approval_report_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
- if (Boolean.FALSE.equals(absent)) {
|
|
|
- throw new RuntimeException("正在处理");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- R r = wmReportService.approvalReport(wmReport1, taskIds, approvalOpinion, approvalInfo);
|
|
|
-
|
|
|
- Set<String> cahceKeys = taskIds.stream()
|
|
|
- .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
- redisTemplate.delete(cahceKeys);
|
|
|
-
|
|
|
- return r;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 快速批量任务审核
|
|
|
- *
|
|
|
- * @return 审核结果
|
|
|
- * @param1 reportId 报告id
|
|
|
- * @param1 taskIds 任务id 多个逗号分隔
|
|
|
- * @param1 approvalOpinion 审核状态(1-通过,2-不通过)
|
|
|
- * @param1 approvalInfo 审批说明
|
|
|
- */
|
|
|
- @SysLog("快速批量任务审核")
|
|
|
- @PostMapping("/batch-approval-task")
|
|
|
- public R<?> batchApprovalTask(@RequestBody Map<String, String> requestMap) {
|
|
|
- log.info("快速批量任务审核 请求参数:{}, 操作人:{},操作时间:{}",
|
|
|
- requestMap, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
- String reportId = requestMap.get("reportId");
|
|
|
- String taskIds = requestMap.get("taskIds");
|
|
|
- String approvalOpinion = requestMap.get("approvalOpinion");
|
|
|
- String approvalInfo = requestMap.get("approvalInfo");
|
|
|
-
|
|
|
- if (!StrUtil.isAllNotBlank(reportId, taskIds, approvalOpinion)) {
|
|
|
- return R.failed("必填参数为空");
|
|
|
- }
|
|
|
- if (!CollUtil.toList("1", "2").contains(approvalOpinion)) {
|
|
|
- return R.failed("approvalOpinion不正确");
|
|
|
- }
|
|
|
-
|
|
|
- List<String> sortedIdList = StrUtil.split(taskIds, StrUtil.COMMA)
|
|
|
- .stream()
|
|
|
- .sorted(Comparator.comparingInt(Integer::parseInt))
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- sortedIdList.forEach(taskId -> {
|
|
|
- String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
- Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_batch_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
- if (Boolean.FALSE.equals(absent)) {
|
|
|
- throw new RuntimeException("正在处理");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- Boolean approvalTask = wmReportService.batchApprovalTask(reportId, sortedIdList, approvalOpinion, approvalInfo);
|
|
|
-
|
|
|
- Set<String> cahceKeys = sortedIdList.stream()
|
|
|
- .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
- redisTemplate.delete(cahceKeys);
|
|
|
-
|
|
|
- return R.ok(approvalTask);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 结算报告审批-任务复审
|
|
|
- *
|
|
|
- * @param1 reportId 报告id
|
|
|
- * @param1 taskId 任务id
|
|
|
- * @param1 approvalOpinion 审核状态(1-通过,2-不通过)
|
|
|
- * @param1 approvalInfo 审批说明
|
|
|
- * @return 复审结果
|
|
|
- */
|
|
|
- @SysLog("结算报告审批-任务复审")
|
|
|
- @PostMapping("/review-task")
|
|
|
- public R<?> reviewTask(@RequestBody Map<String, String> requestMap) {
|
|
|
- log.info("结算报告审批-任务复审 请求参数:{}, 操作人:{},操作时间:{}",
|
|
|
- requestMap, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
- String reportId = requestMap.get("reportId");
|
|
|
- String taskId = requestMap.get("taskId");
|
|
|
- String approvalOpinion = requestMap.get("approvalOpinion");
|
|
|
- String approvalInfo = requestMap.get("approvalInfo");
|
|
|
-
|
|
|
- if (!StrUtil.isAllNotBlank(reportId, taskId, approvalOpinion)) {
|
|
|
- return R.failed("必填参数为空");
|
|
|
- }
|
|
|
- if (!CollUtil.toList("1", "2").contains(approvalOpinion)) {
|
|
|
- return R.failed("approvalOpinion不正确");
|
|
|
- }
|
|
|
-
|
|
|
- String cacheKey = CacheConstants.TASK_REVIEW_KEY + taskId;
|
|
|
- Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, JSONUtil.toJsonStr(requestMap), 3, TimeUnit.SECONDS);
|
|
|
- if (Boolean.FALSE.equals(absent)) {
|
|
|
- return R.failed("正在处理");
|
|
|
- }
|
|
|
-
|
|
|
- return R.ok(wmReportService.reviewTask(reportId, taskId, 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) {
|
|
|
- log.info("批量任务类型结算报告--审批 请求参数:taskIds={},approvalOpinion={},approvalInfo={} 操作人:{},操作时间:{}",
|
|
|
- taskIds, approvalOpinion, approvalInfo, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
- if(CollUtil.isEmpty(taskIds)){
|
|
|
- return R.failed("taskIds必填");
|
|
|
- }
|
|
|
-
|
|
|
- taskIds.forEach(taskId -> {
|
|
|
- String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
- Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_approval_report_by_task_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
- if (Boolean.FALSE.equals(absent)) {
|
|
|
- throw new RuntimeException("正在处理");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- R<?> r = wmReportService.approvalReportByTaskType(taskIds, approvalOpinion, approvalInfo);
|
|
|
-
|
|
|
- Set<String> cahceKeys = taskIds.stream()
|
|
|
- .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
- redisTemplate.delete(cahceKeys);
|
|
|
-
|
|
|
- return r;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 结算报告--查看
|
|
|
- *
|
|
|
- * @param page 分页对象
|
|
|
- * @param reportTaskListPageDTO 报告任务列表页面 DTO
|
|
|
- * @return {@link R}
|
|
|
- */
|
|
|
- @GetMapping("/getTaskListPage" )
|
|
|
- public R getTaskListPage(Page page, @Validated ReportTaskListPageDTO reportTaskListPageDTO) {
|
|
|
- WmReport wmReport1=wmReportService.getById(reportTaskListPageDTO.getId());
|
|
|
- if(null==wmReport1){
|
|
|
- return R.failed("未查询到报告信息");
|
|
|
- }
|
|
|
-
|
|
|
- reportTaskListPageDTO.setWmReport(wmReport1);
|
|
|
-
|
|
|
- return wmReportService.getTaskListPage(page, reportTaskListPageDTO);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据积分包id查询待审核任务详情列表
|
|
|
- *
|
|
|
- * @param1 id 报告id
|
|
|
- * @param1 scoreId 报告积分包id
|
|
|
- * @param taskTypeId 任务类型id
|
|
|
- * @return 列表结果
|
|
|
- */
|
|
|
- @GetMapping("/list-review-task-info")
|
|
|
- public R<?> listTaskInfo(WmReport wmReport, String taskTypeId) {
|
|
|
- if (wmReport.getId() == null) {
|
|
|
- return R.failed("必填参数为空");
|
|
|
- }
|
|
|
-
|
|
|
- return R.ok(wmReportService.listTaskInfo(wmReport.getId(), taskTypeId));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据任务类型查询任务
|
|
|
- *
|
|
|
- * @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);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询待审核的任务类型
|
|
|
- *
|
|
|
- * @param reportId 报告id
|
|
|
- * @return 列表数据
|
|
|
- */
|
|
|
- @GetMapping("/list-package-task-type")
|
|
|
- public R<?> listPackageTaskType(@RequestParam("id") String reportId, Integer isApprovalPage) {
|
|
|
- WmReport wmReport1 = wmReportService.getById(reportId);
|
|
|
- if(null == wmReport1){
|
|
|
- return R.failed("未查询到报告信息");
|
|
|
- }
|
|
|
- // 获取待审核的任务
|
|
|
- WmScorePackage scorePackage = wmScorePackageService.getById(wmReport1.getScoreId());
|
|
|
- LambdaQueryWrapper<WmTask> lambdaQueryWrapper= Wrappers.<WmTask>query().lambda();
|
|
|
- lambdaQueryWrapper.and(wrapper -> wrapper.eq(WmTask::getReportDrugId, reportId)
|
|
|
- .or().eq(WmTask::getReportOneId, reportId)
|
|
|
- .or().eq(WmTask::getReportSecondId, reportId));
|
|
|
- // 如果是审批页面,则过滤掉通过和不通过的数据(reportDrugApprovalOpinion或reportOneApprovalOpinion:1通过,2不通过)
|
|
|
- if (isApprovalPage != null && isApprovalPage.equals(1)) {
|
|
|
- if ("0".equals(scorePackage.getTypeid())) {//药企
|
|
|
- lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportDrugApprovalOpinion));
|
|
|
- } else if ("1".equals(scorePackage.getTypeid())) {//一级代理商类型
|
|
|
- lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportDrugApprovalOpinion));
|
|
|
- } else if ("2".equals(scorePackage.getTypeid())) {//二级代理商类型
|
|
|
- lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportOneApprovalOpinion));
|
|
|
- }
|
|
|
- }
|
|
|
- lambdaQueryWrapper.select(WmTask::getTaskTypeId);
|
|
|
- List<WmTask> wmTasks = wmTaskService.list(lambdaQueryWrapper);
|
|
|
- if (CollUtil.isEmpty(wmTasks)) {
|
|
|
- return R.ok(Collections.emptyList());
|
|
|
- }
|
|
|
- Set<String> taskTypes = wmTasks.stream().map(WmTask::getTaskTypeId).collect(Collectors.toSet());
|
|
|
- return R.ok(wmTaskTypeService.listByIds(taskTypes));
|
|
|
- }
|
|
|
+ private final WmReportService wmReportService;
|
|
|
+ private final WmScorePackageService wmScorePackageService;
|
|
|
+ private final WmTaskService wmTaskService;
|
|
|
+ private final WmTaskTypeService wmTaskTypeService;
|
|
|
+ private final RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页查询
|
|
|
+ *
|
|
|
+ * @param page 分页对象
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/page")
|
|
|
+ @PreAuthorize("@pms.hasPermission('admin_wmreport_view')")
|
|
|
+ public R getWmReportPage(Page page, WmReport wmReport) {
|
|
|
+ return R.ok(wmReportService.page(page, Wrappers.query(wmReport)));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过id查询报告审核表
|
|
|
+ *
|
|
|
+ * @param id id
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @GetMapping("/{id}")
|
|
|
+ @PreAuthorize("@pms.hasPermission('admin_wmreport_view')")
|
|
|
+ public R getById(@PathVariable("id") Integer id) {
|
|
|
+ return R.ok(wmReportService.getById(id));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增报告审核表
|
|
|
+ *
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @SysLog("新增报告审核表")
|
|
|
+ @PostMapping
|
|
|
+ @PreAuthorize("@pms.hasPermission('admin_wmreport_add')")
|
|
|
+ public R save(@RequestBody WmReport wmReport) {
|
|
|
+ return R.ok(wmReportService.save(wmReport));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改报告审核表
|
|
|
+ *
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @SysLog("修改报告审核表")
|
|
|
+ @PutMapping
|
|
|
+ @PreAuthorize("@pms.hasPermission('admin_wmreport_edit')")
|
|
|
+ public R updateById(@RequestBody WmReport wmReport) {
|
|
|
+ return R.ok(wmReportService.updateById(wmReport));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过id删除报告审核表
|
|
|
+ *
|
|
|
+ * @param id id
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @SysLog("通过id删除报告审核表")
|
|
|
+ @DeleteMapping("/{id}")
|
|
|
+ public R removeById(@PathVariable("id") Integer id) {
|
|
|
+ WmReport wmReport = wmReportService.getById(id);
|
|
|
+ if (null == wmReport) {
|
|
|
+ return R.failed("未查询到报告信息");
|
|
|
+ }
|
|
|
+ wmReport.setDelFlag("1");
|
|
|
+ wmReportService.updateById(wmReport);
|
|
|
+ WmScorePackage scorePackage = wmScorePackageService.getById(wmReport.getScoreId());
|
|
|
+ //typeid 0 药企 1一级代理商 2二级代理商 3全职学术推广员 4兼职学术推广员
|
|
|
+ LambdaUpdateWrapper<WmTask> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+
|
|
|
+ if ("0".equals(scorePackage.getTypeid())) {//药企
|
|
|
+ if ("1".equals(wmReport.getDelFlag())) {
|
|
|
+ updateWrapper.set(WmTask::getReportDrugId, null);
|
|
|
+ updateWrapper.set(WmTask::getReportDrugApprovalOpinion, null);
|
|
|
+ updateWrapper.set(WmTask::getReportDrugApprovalInfo, null);
|
|
|
+ }
|
|
|
+ updateWrapper.set(WmTask::getReportDrugApprovalStatus, "0");
|
|
|
+ updateWrapper.eq(WmTask::getReportDrugId, wmReport.getId());
|
|
|
+ } else if ("1".equals(scorePackage.getTypeid())) {//一级代理商类型
|
|
|
+ if ("1".equals(wmReport.getDelFlag())) {
|
|
|
+ updateWrapper.set(WmTask::getReportOneId, null);
|
|
|
+ updateWrapper.set(WmTask::getReportOneApprovalOpinion, null);
|
|
|
+ updateWrapper.set(WmTask::getReportOneApprovalInfo, null);
|
|
|
+ }
|
|
|
+ if (SecurityUtils.getRoles().contains(3)) {//药企
|
|
|
+ updateWrapper.set(WmTask::getReportDrugApprovalStatus, "0");
|
|
|
+ }
|
|
|
+ updateWrapper.set(WmTask::getReportOneApprovalStatus, "0");
|
|
|
+ updateWrapper.eq(WmTask::getReportOneId, wmReport.getId());
|
|
|
+ } else if ("2".equals(scorePackage.getTypeid())) {//二级代理商类型
|
|
|
+ if ("1".equals(wmReport.getDelFlag())) {
|
|
|
+ updateWrapper.set(WmTask::getReportSecondId, null);
|
|
|
+ updateWrapper.set(WmTask::getReportSecondApprovalOpinion, null);
|
|
|
+ updateWrapper.set(WmTask::getReportSecondApprovalInfo, null);
|
|
|
+ }
|
|
|
+ if (SecurityUtils.getRoles().contains(4)) {// 一级CSO
|
|
|
+ updateWrapper.set(WmTask::getReportOneApprovalStatus, "0");
|
|
|
+ }
|
|
|
+ updateWrapper.set(WmTask::getReportSecondApprovalStatus, "0");
|
|
|
+ updateWrapper.eq(WmTask::getReportSecondId, wmReport.getId());
|
|
|
+ }
|
|
|
+ return R.ok(wmTaskService.update(updateWrapper));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结算报告管理--列表查询
|
|
|
+ *
|
|
|
+ * @param page 分页对象
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @param type 固定值,1结算报告管理,2结算报告审批
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/reportPage")
|
|
|
+ public R reportPage(Page page, WmReport wmReport, String type, String queryScoreId, String queryName) {
|
|
|
+ HnqzUser user = SecurityUtils.getUser();
|
|
|
+ wmReport.setDelFlag("0");
|
|
|
+ if ("1".equals(type)) {//1结算报告管理,当前用户是申请结算企业
|
|
|
+ wmReport.setDrugEntId(null);
|
|
|
+ wmReport.setApplyDrugEntId(user.getDeptId());
|
|
|
+ } else {//2结算报告审批,当前用户是结算企业
|
|
|
+ wmReport.setApplyDrugEntId(null);
|
|
|
+ wmReport.setDrugEntId(user.getDeptId());
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok(wmReportService.getReportListPage(page, wmReport, queryScoreId, queryName));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报告审核状态修改--提交,结单,退回
|
|
|
+ * reportStatus 1:待提交,2:已提交待审批 3:已部分审批 4:已退回 5:已审批待结单 6:已结单
|
|
|
+ *
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @SysLog("报告审核状态修改--提交或结单(结算报告管理-提交)")
|
|
|
+ @PostMapping("/updateReportStatus")
|
|
|
+ public R updateReportStatus(@RequestBody WmReport wmReport) {
|
|
|
+ WmReport wmReport1 = wmReportService.getById(wmReport.getId());
|
|
|
+ if (null == wmReport1) {
|
|
|
+ return R.failed("未查询到报告信息");
|
|
|
+ }
|
|
|
+ wmReport.setScoreId(wmReport1.getScoreId());
|
|
|
+ if (StringUtil.isEmpty(wmReport.getReportStatus())) {
|
|
|
+ return R.failed("缺少状态参数");
|
|
|
+ }
|
|
|
+
|
|
|
+ WmScorePackage scorePackage = wmScorePackageService.getById(wmReport1.getScoreId());
|
|
|
+ if (LocalDate.now().isAfter(scorePackage.getEndTime())) {
|
|
|
+ throw new BizException("当前积分包已过截止日期");
|
|
|
+ }
|
|
|
+
|
|
|
+ return wmReportService.updateReportStatus(wmReport);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结算报告--审批
|
|
|
+ * reportStatus 1:待提交,2:已提交待审批 3:已部分审批 4:已退回 5:已审批待结单 6:已结单
|
|
|
+ *
|
|
|
+ * @param wmReport 报告审核表
|
|
|
+ * @param taskIds 所选任务id
|
|
|
+ * @return R
|
|
|
+ */
|
|
|
+ @SysLog("结算报告--审批")
|
|
|
+ @GetMapping("/approvalReport")
|
|
|
+ public R approvalReport(WmReport wmReport, @RequestParam(value = "taskIds") List<String> taskIds,
|
|
|
+ String approvalOpinion, String approvalInfo) {
|
|
|
+ log.info("结算报告--审批 请求参数:taskIds={},approvalOpinion={},approvalInfo={} 操作人:{},操作时间:{}",
|
|
|
+ taskIds, approvalOpinion, approvalInfo, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
+ WmReport wmReport1 = wmReportService.getById(wmReport.getId());
|
|
|
+ if (null == wmReport1) {
|
|
|
+ return R.failed("未查询到报告信息");
|
|
|
+ }
|
|
|
+ if (taskIds.isEmpty()) {
|
|
|
+ return R.failed("缺少参数:任务id");
|
|
|
+ }
|
|
|
+
|
|
|
+ taskIds.forEach(taskId -> {
|
|
|
+ String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
+ Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_approval_report_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
+ if (Boolean.FALSE.equals(absent)) {
|
|
|
+ throw new RuntimeException("正在处理");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ R r = wmReportService.approvalReport(wmReport1, taskIds, approvalOpinion, approvalInfo);
|
|
|
+
|
|
|
+ Set<String> cahceKeys = taskIds.stream()
|
|
|
+ .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
+ redisTemplate.delete(cahceKeys);
|
|
|
+
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 快速批量任务审核
|
|
|
+ *
|
|
|
+ * @return 审核结果
|
|
|
+ * @param1 reportId 报告id
|
|
|
+ * @param1 taskIds 任务id 多个逗号分隔
|
|
|
+ * @param1 approvalOpinion 审核状态(1-通过,2-不通过)
|
|
|
+ * @param1 approvalInfo 审批说明
|
|
|
+ */
|
|
|
+ @SysLog("快速批量任务审核")
|
|
|
+ @PostMapping("/batch-approval-task")
|
|
|
+ public R<?> batchApprovalTask(@RequestBody Map<String, String> requestMap) {
|
|
|
+ log.info("快速批量任务审核 请求参数:{}, 操作人:{},操作时间:{}",
|
|
|
+ requestMap, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
+ String reportId = requestMap.get("reportId");
|
|
|
+ String taskIds = requestMap.get("taskIds");
|
|
|
+ String approvalOpinion = requestMap.get("approvalOpinion");
|
|
|
+ String approvalInfo = requestMap.get("approvalInfo");
|
|
|
+
|
|
|
+ if (!StrUtil.isAllNotBlank(reportId, taskIds, approvalOpinion)) {
|
|
|
+ return R.failed("必填参数为空");
|
|
|
+ }
|
|
|
+ if (!CollUtil.toList("1", "2").contains(approvalOpinion)) {
|
|
|
+ return R.failed("approvalOpinion不正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> sortedIdList = StrUtil.split(taskIds, StrUtil.COMMA)
|
|
|
+ .stream()
|
|
|
+ .sorted(Comparator.comparingInt(Integer::parseInt))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ sortedIdList.forEach(taskId -> {
|
|
|
+ String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
+ Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_batch_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
+ if (Boolean.FALSE.equals(absent)) {
|
|
|
+ throw new RuntimeException("正在处理");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Boolean approvalTask = wmReportService.batchApprovalTask(reportId, sortedIdList, approvalOpinion, approvalInfo);
|
|
|
+
|
|
|
+ Set<String> cahceKeys = sortedIdList.stream()
|
|
|
+ .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
+ redisTemplate.delete(cahceKeys);
|
|
|
+
|
|
|
+ return R.ok(approvalTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结算报告审批-任务复审
|
|
|
+ *
|
|
|
+ * @return 复审结果
|
|
|
+ * @param1 reportId 报告id
|
|
|
+ * @param1 taskId 任务id
|
|
|
+ * @param1 approvalOpinion 审核状态(1-通过,2-不通过)
|
|
|
+ * @param1 approvalInfo 审批说明
|
|
|
+ */
|
|
|
+ @SysLog("结算报告审批-任务复审")
|
|
|
+ @PostMapping("/review-task")
|
|
|
+ public R<?> reviewTask(@RequestBody Map<String, String> requestMap) {
|
|
|
+ log.info("结算报告审批-任务复审 请求参数:{}, 操作人:{},操作时间:{}",
|
|
|
+ requestMap, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
+ String reportId = requestMap.get("reportId");
|
|
|
+ String taskId = requestMap.get("taskId");
|
|
|
+ String approvalOpinion = requestMap.get("approvalOpinion");
|
|
|
+ String approvalInfo = requestMap.get("approvalInfo");
|
|
|
+
|
|
|
+ if (!StrUtil.isAllNotBlank(reportId, taskId, approvalOpinion)) {
|
|
|
+ return R.failed("必填参数为空");
|
|
|
+ }
|
|
|
+ if (!CollUtil.toList("1", "2").contains(approvalOpinion)) {
|
|
|
+ return R.failed("approvalOpinion不正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ String cacheKey = CacheConstants.TASK_REVIEW_KEY + taskId;
|
|
|
+ Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, JSONUtil.toJsonStr(requestMap), 3, TimeUnit.SECONDS);
|
|
|
+ if (Boolean.FALSE.equals(absent)) {
|
|
|
+ return R.failed("正在处理");
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok(wmReportService.reviewTask(reportId, taskId, 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) {
|
|
|
+ log.info("批量任务类型结算报告--审批 请求参数:taskIds={},approvalOpinion={},approvalInfo={} 操作人:{},操作时间:{}",
|
|
|
+ taskIds, approvalOpinion, approvalInfo, SecurityUtils.getUser().getId(), LocalDateTime.now());
|
|
|
+ if (CollUtil.isEmpty(taskIds)) {
|
|
|
+ return R.failed("taskIds必填");
|
|
|
+ }
|
|
|
+
|
|
|
+ taskIds.forEach(taskId -> {
|
|
|
+ String cacheKey = CacheConstants.TASK_APPROVAL_KEY + taskId;
|
|
|
+ Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, String.format("report_approval_report_by_task_%s", taskId), 3, TimeUnit.SECONDS);
|
|
|
+ if (Boolean.FALSE.equals(absent)) {
|
|
|
+ throw new RuntimeException("正在处理");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ R<?> r = wmReportService.approvalReportByTaskType(taskIds, approvalOpinion, approvalInfo);
|
|
|
+
|
|
|
+ Set<String> cahceKeys = taskIds.stream()
|
|
|
+ .map(taskId -> CacheConstants.TASK_APPROVAL_KEY + taskId).collect(Collectors.toSet());
|
|
|
+ redisTemplate.delete(cahceKeys);
|
|
|
+
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结算报告--查看
|
|
|
+ *
|
|
|
+ * @param page 分页对象
|
|
|
+ * @param reportTaskListPageDTO 报告任务列表页面 DTO
|
|
|
+ * @return {@link R}
|
|
|
+ */
|
|
|
+ @GetMapping("/getTaskListPage")
|
|
|
+ public R<?> getTaskListPage(Page page, @Validated ReportTaskListPageDTO reportTaskListPageDTO) {
|
|
|
+ WmReport wmReport1 = wmReportService.getById(reportTaskListPageDTO.getId());
|
|
|
+ if (null == wmReport1) {
|
|
|
+ return R.failed("未查询到报告信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ reportTaskListPageDTO.setWmReport(wmReport1);
|
|
|
+
|
|
|
+ return wmReportService.getTaskListPage(page, reportTaskListPageDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据积分包id查询待审核任务详情列表
|
|
|
+ *
|
|
|
+ * @param taskTypeId 任务类型id
|
|
|
+ * @return 列表结果
|
|
|
+ * @param1 id 报告id
|
|
|
+ * @param1 scoreId 报告积分包id
|
|
|
+ */
|
|
|
+ @GetMapping("/list-review-task-info")
|
|
|
+ public R<?> listTaskInfo(WmReport wmReport, String taskTypeId) {
|
|
|
+ if (wmReport.getId() == null) {
|
|
|
+ return R.failed("必填参数为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok(wmReportService.listTaskInfo(wmReport.getId(), taskTypeId));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据任务类型查询任务
|
|
|
+ *
|
|
|
+ * @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);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询待审核的任务类型
|
|
|
+ *
|
|
|
+ * @param reportId 报告id
|
|
|
+ * @return 列表数据
|
|
|
+ */
|
|
|
+ @GetMapping("/list-package-task-type")
|
|
|
+ public R<?> listPackageTaskType(@RequestParam("id") String reportId, Integer isApprovalPage) {
|
|
|
+ WmReport wmReport1 = wmReportService.getById(reportId);
|
|
|
+ if (null == wmReport1) {
|
|
|
+ return R.failed("未查询到报告信息");
|
|
|
+ }
|
|
|
+ // 获取待审核的任务
|
|
|
+ WmScorePackage scorePackage = wmScorePackageService.getById(wmReport1.getScoreId());
|
|
|
+ LambdaQueryWrapper<WmTask> lambdaQueryWrapper = Wrappers.<WmTask>query().lambda();
|
|
|
+ lambdaQueryWrapper.and(wrapper -> wrapper.eq(WmTask::getReportDrugId, reportId)
|
|
|
+ .or().eq(WmTask::getReportOneId, reportId)
|
|
|
+ .or().eq(WmTask::getReportSecondId, reportId));
|
|
|
+ // 如果是审批页面,则过滤掉通过和不通过的数据(reportDrugApprovalOpinion或reportOneApprovalOpinion:1通过,2不通过)
|
|
|
+ if (isApprovalPage != null && isApprovalPage.equals(1)) {
|
|
|
+ if ("0".equals(scorePackage.getTypeid())) {//药企
|
|
|
+ lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportDrugApprovalOpinion));
|
|
|
+ } else if ("1".equals(scorePackage.getTypeid())) {//一级代理商类型
|
|
|
+ lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportDrugApprovalOpinion));
|
|
|
+ } else if ("2".equals(scorePackage.getTypeid())) {//二级代理商类型
|
|
|
+ lambdaQueryWrapper.and(wrapper -> wrapper.isNull(WmTask::getReportOneApprovalOpinion));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.select(WmTask::getTaskTypeId);
|
|
|
+ List<WmTask> wmTasks = wmTaskService.list(lambdaQueryWrapper);
|
|
|
+ if (CollUtil.isEmpty(wmTasks)) {
|
|
|
+ return R.ok(Collections.emptyList());
|
|
|
+ }
|
|
|
+ Set<String> taskTypes = wmTasks.stream().map(WmTask::getTaskTypeId).collect(Collectors.toSet());
|
|
|
+ return R.ok(wmTaskTypeService.listByIds(taskTypes));
|
|
|
+ }
|
|
|
|
|
|
}
|