Просмотр исходного кода

feat: 任务截图定时任务优化

lixuesong 1 год назад
Родитель
Сommit
527984b05a

+ 5 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/config/QuartzAppConfig.java

@@ -21,5 +21,10 @@ public class QuartzAppConfig {
     private String apiUrl;
     private String clientUrl;
 
+	/**
+	 * 截图服务selenium地址
+	 */
+	private String serverUrl;
+
 
 }

+ 577 - 108
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/WmScorePackage.java

@@ -1,124 +1,593 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPkgQuizRelation;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Getter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * 积分包
  *
- * @author pigx code generator
- * @date 2020-07-31 20:07:52
+ * @author gaoyanng
+ * @date 2020-06-25 23:35:42
  */
 @Data
-@TableName("wm_score_package")
+@TableName(value = "wm_score_package")
 @EqualsAndHashCode(callSuper = true)
 public class WmScorePackage extends Model<WmScorePackage> {
-private static final long serialVersionUID = 1L;
-
-    @TableId
-    private Integer id;
-    /**
-     * 规则ID
-     */
-    private String taskRuleId;
-    /**
-     * 药企ID
-     */
-    private String drugEntId;
-    /**
-     * 积分包ID
-     */
-    private String scoreId;
-    /**
-     * 积分包名称
-     */
-    private String scoreName;
-    /**
-     * 积分
-     */
-    private String score;
-    /**
-     * 代理商类型
-     */
-    private String agentTypeId;
-    /**
-     * 一级代理商
-     */
-    private String level1Id;
-    /**
-     * 二级代理商
-     */
-    private String level2Id;
-    /**
-     * 众包ID
-     */
-    private String zbId;
-    /**
-     * 销售代表ID
-     */
-    private String xxdbId;
-    /**
-     * 分配对象类型
-     */
-    private String typeid;
-    /**
-     * 积分包状态
-     */
-    private String packageStatus;
-    /**
-     * 积分包完成状态
-     */
-    private String packageFinishStatus;
-    /**
-     * 发包方ID
-     */
-    private String sendPackageDeptId;
-    /**
-     * 组织机构ID
-     */
-    private String deptId;
-    /**
-     * 是否删除
-     */
-    private String delFlag;
-    /**
-     * 是否禁用
-     */
-    private String enableFlag;
-    /**
-     * 所属租户
-     */
-    private Integer tenantId;
-    /**
-     * 创建时间
-     */
-    private LocalDateTime createTime;
-    /**
-     * 创建人
-     */
-    private Integer createUser;
-    /**
-     * 更新时间
-     */
-    private LocalDateTime updateTime;
-    /**
-     * 更新人
-     */
-    private Integer updateUser;
-
-    private Integer ytj;
-
-    private Integer ysh;
-
-    private Integer dsh;
-
-    private Integer ytjtt;
-
-    private Integer ywctt;
-
-    private Integer yshtt;
-    }
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId
+	private String id;
+	/**
+	 * 药企ID
+	 */
+	private String drugEntId;
+
+	/**
+	 * 积分包序列号
+	 */
+	@TableField(value = "pkg_sn")
+	private String packageSn;
+
+	/**
+	 * 药企ID
+	 */
+	private String taskRuleId;
+
+	/**
+	 * 积分
+	 */
+	private String scoreId;
+
+
+	/**
+	 * 积分包名称
+	 */
+	private String scoreName;
+	/**
+	 * 积分
+	 */
+	private String score;
+	/**
+	 * 代理商类型
+	 */
+	private String agentTypeId;
+
+	/**
+	 * 积分包状态
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private String packageStatus;
+
+	/**
+	 * 积分包完成状态:0->未完成,1->已完成
+	 */
+	private String packageFinishStatus;
+
+	private String packageAuditStatus;
+
+	/**
+	 * 一级代理商
+	 */
+	private String level1Id;
+	/**
+	 * 二级代理商
+	 */
+	private String level2Id;
+	/**
+	 * 众包ID
+	 */
+	private String zbId;
+
+	/**
+	 * 销售代表ID
+	 */
+	private String xxdbId;
+
+	private String endLabelDate;
+
+	/**
+	 * 1:定额积分包
+	 * 2:定量积分包
+	 * 3:通用包
+	 * 4:结算包(证据链)
+	 * 5:患者教育积分包
+	 */
+	private String packageType1;
+
+	private String description;
+
+	private String relationScoreId;
+
+	/**
+	 * 关联积分包名称
+	 */
+	@TableField(exist = false)
+	private String relationScoreName;
+
+	private String relatedService;
+
+	/**
+	 * 关联服务企业名称
+	 */
+	@TableField(exist = false)
+	private String relatedServiceName;
+
+	private String scorePackageName;
+
+	private String packageIsConduct;
+	private String ruleId;
+
+	/**
+	 * 分配对象类型
+	 */
+	private String typeid;
+
+	/**
+	 * 组织机构ID
+	 */
+	private String deptId;
+
+	/**
+	 * 发包方组织机构ID
+	 */
+	private String sendPackageDeptId;
+
+	/**
+	 * 是否删除
+	 */
+	private String delFlag;
+	/**
+	 * 是否禁用
+	 */
+	private String enableFlag;
+	/**
+	 * 所属租户
+	 */
+	private Integer tenantId;
+	/**
+	 * 创建时间
+	 */
+	private LocalDateTime createTime;
+	/**
+	 * 结算时间
+	 */
+	private LocalDateTime settlementDate;
+
+	/**
+	 * 结算时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime notifyDate;
+
+	/**
+	 * 提交到零工时间
+	 */
+	@TableField(exist = false)
+	private LocalDateTime subToGigTime;
+	/**
+	 * 创建人
+	 */
+	private Integer createUser;
+	/**
+	 * 更新时间
+	 */
+	private LocalDateTime updateTime;
+	/**
+	 * 更新人
+	 */
+	private Integer updateUser;
+
+
+	/**
+	 * 所属月份
+	 */
+	private String belongDate;
+
+	/**
+	 * 分配日期
+	 */
+	private String allocationDate;
+
+	/**
+	 * 已支付百分比
+	 */
+	private String payRate;
+
+	/**
+	 * 已支付积分值
+	 */
+	private Integer payScore;
+	/**
+	 * 接包对象
+	 */
+	private String acceptSug;
+
+	/**
+	 * 接包对象名称
+	 */
+	@TableField(exist = false)
+	private String acceptSugName;
+
+	/**
+	 * 已完成百分比
+	 */
+	private String finishRate;
+
+
+	private Integer ytj;
+	private Integer ysh;
+
+	private Integer dsh;
+
+
+	private Integer ytjtt;
+
+	private Integer ywctt;
+
+	@TableField(exist = false)
+	private Integer shtg;
+	@TableField(exist = false)
+	private Integer shbtg;
+	@TableField(exist = false)
+	private Integer shtgnum;
+	@TableField(exist = false)
+	private Integer shbtgnum;
+	@TableField(exist = false)
+	private Integer shtgtt;
+	@TableField(exist = false)
+	private Integer shbtgtt;
+
+	private Integer yshtt;
+	private String isConduct;
+
+	private BigDecimal settleAmount;
+
+	private BigDecimal discount;
+
+	private LocalDateTime receiveDate;
+
+	@TableField(exist = false)
+	private List<String> drugsIds;
+
+	private String statementNo;
+
+	private Integer settleStatus;
+
+	private String remark;
+
+
+	private Integer kfpjf;
+
+	/**
+	 * 发票类目
+	 */
+	private Integer invoiceCategory;
+
+	/**
+	 * 支付中心订单号
+	 */
+	private String omsOrderSn;
+
+	/**
+	 * 1:任务包
+	 * 2:结算包
+	 */
+	private String packageType2;
+
+	private String packageUserScope;
+
+	/**
+	 * 接单对象范围名称
+	 */
+	@TableField(exist = false)
+	private String packageUserScopeName;
+
+	@TableField(exist = false)
+	private Integer certStatus;
+
+	private Integer userNum;
+	private Integer taskNum;
+
+
+	/**
+	 * 完成时间
+	 */
+	private LocalDateTime packageFinishTime;
+
+	/**
+	 * 有效任务类型--前端展示
+	 */
+	@TableField(exist = false)
+	private String taskTypes;
+
+	/**
+	 * 个人预计包值
+	 */
+	private String userScore;
+
+	/**
+	 * 终止方式
+	 */
+	private String enableType;
+
+	/**
+	 * 已接单人数
+	 */
+	@TableField(exist = false)
+	private Integer yjd;
+
+
+	/**
+	 * 已接单待审核人数
+	 */
+	@TableField(exist = false)
+	private Integer yjddsh;
+
+
+	/**
+	 * 是否允许接单  0允许接单 1不允许接单
+	 */
+	private String isReceive;
+
+	/**
+	 * 是否可以新增任务1-可以  0-不可以
+	 */
+	private String taskAddFlag;
+
+	/**
+	 * 是否可以新增任务1-已经发起  0-没有
+	 */
+	private String settleFlag;
+
+	/**
+	 * 接单对象list
+	 */
+	@TableField(exist = false)
+	private List<String> userList;
+
+	/**
+	 * 接单对象id-list
+	 */
+	@TableField(exist = false)
+	private List<String> userIdList;
+
+	/**
+	 * 接单对象list人数
+	 */
+	@TableField(exist = false)
+	private Integer userListNum;
+
+	/**
+	 * 结算包--是否有任务
+	 */
+	@TableField(exist = false)
+	private String isTask;
+
+	/**
+	 * 积分包状态
+	 */
+	private String scorePackageStatus;
+
+	/**
+	 * 是否为旧数据
+	 */
+	private String oldPackage;
+
+	/**
+	 * 结算渠道
+	 */
+	private String subType;
+
+	/**
+	 * 税源地
+	 */
+	@TableField(exist = false)
+	private String subjectLocation;
+
+	/**
+	 * 数据来源类型(0:手动上传,1:系统对接)
+	 */
+	private String sourceType;
+
+	/**
+	 * 结算包--任务类型
+	 */
+	@TableField(exist = false)
+	private String taskTypeId;
+
+	@TableField(exist = false)
+	private Integer wsTaskNum;
+
+	@TableField(exist = false)
+	private Integer asTaskNum;
+
+	/**
+	 * 项目编号
+	 */
+	private String projectNum;
+
+	/**
+	 * 药企是否存在审核记录
+	 */
+	@TableField(exist = false)
+	private PackageStopStatus stopStatus;
+
+	/**
+	 * 报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt reportOpt;
+
+	/**
+	 * 新版报告-报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt newReportOpt;
+
+	/**
+	 * 新版excel报告-报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt newExcelReportOpt;
+
+	/**
+	 * 报告队列名
+	 */
+	@TableField(exist = false)
+	private String reportMqName;
+
+	/**
+	 * excel报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt excelReportOpt;
+
+	/**
+	 * 公对公结算记录
+	 */
+	@TableField(value = "p2p_amount")
+	public BigDecimal p2pAmount;
+
+	/**
+	 * 公对公结算服务费
+	 */
+	public BigDecimal p2pServiceAmount;
+
+	public LocalDateTime p2pTime;
+
+	@TableField(exist = false)
+	public Boolean p2pDraft;
+
+	/**
+	 * 关联药品的生产厂商列表
+	 */
+	@TableField(value = "drug_producer")
+	private String[] drugProducerList;
+
+	/**
+	 * MAH结算-药企deptId
+	 */
+	private Integer mahSettleDeptId;
+
+	/**
+	 * MAH结算-步进状态(BUSINESS-业务, FINANCE-财务)
+	 */
+	private UpmsType.MahSettleStep mahSettleStep;
+
+	/**
+	 * mah结算时间
+	 */
+	private LocalDateTime mahSettleTime;
+
+	/**
+	 * 企业任务上限(单位%)
+	 */
+	private BigDecimal entTaskLimit;
+
+	/**
+	 * 推广药品id
+	 */
+	private String[] drugtable;
+
+	/**
+	 * 推广药品名称
+	 */
+	@TableField(exist = false)
+	private String[] drugtableName;
+
+	/**
+	 * 审核管理费比例(单位%)
+	 */
+	private BigDecimal auditManagementFeeRates;
+
+	/**
+	 * 发票号码
+	 */
+	private String invoiceNumber;
+
+	/**
+	 * 截止日期
+	 */
+	private LocalDate endTime;
+
+	/**
+	 * 发票文件
+	 */
+	@TableField(typeHandler = FastjsonTypeHandler.class)
+	private List<FileUrlObj> invoiceFile;
+
+	/**
+	 * 获取积分包的关联试卷
+	 */
+	@TableField(exist = false)
+	private List<WmPkgQuizRelation> quizRelations;
+
+	/**
+	 * 积分包关联的试卷名称
+	 */
+	@TableField(exist = false)
+	private List<String> quizNames;
+
+	/**
+	 * 积分包关联的试卷列表
+	 */
+	@TableField(exist = false)
+	private List<Integer> quizIds;
+
+	/**
+	 * 父级积分包关联的关系
+	 */
+	@TableField(exist = false)
+	private List<Integer> quizRelationIds;
+
+	@Getter
+	@AllArgsConstructor
+	public enum PackageStopStatus {
+		NOTHING(0, "不能操作"),
+		ALL_IN(1, "全部收回"),
+		REMAIN_MSG(2, "剩余收回"),
+		REMAIN(3, "剩余收回(无信息提示)");
+
+		private final int code;
+
+		private final String msg;
+	}
+
+	/**
+	 * 文件 URL obj
+	 *
+	 * @author lixuesong
+	 * @date 2023/09/27
+	 */
+	@Data
+	public static class FileUrlObj implements Serializable {
+		private static final long serialVersionUID = 7914265352319844404L;
+
+		private String fileName;
+
+		private String url;
+	}
+
+}

+ 49 - 17
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmTaskServiceImpl.java

@@ -17,6 +17,9 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,22 +29,18 @@ import com.qunzhixinxi.hnqz.daemon.quartz.entity.WmTask;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.daemon.quartz.service.WmTaskService;
-import com.qunzhixinxi.hnqz.daemon.quartz.service.WmWkArticleService;
-import com.qunzhixinxi.hnqz.daemon.quartz.util.HttpPostUtil;
-import io.prometheus.client.Collector;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 任务表
@@ -70,26 +69,41 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		taskTypeIdList.add(30);
 	}
 
+	/**
+	 * 更新任务截图
+	 *
+	 * @param param 参数
+	 * @return boolean
+	 */
 	@Override
 	public boolean buildTaskImg(String param) {
-//		 String API_URL="https://beijingapi.yaoyi.net";
 		LambdaQueryWrapper<WmTask> wmTaskLambdaQueryWrapper = Wrappers.lambdaQuery();
 		wmTaskLambdaQueryWrapper.isNull(WmTask::getTaskInfoImg);
+		wmTaskLambdaQueryWrapper.ne(WmTask::getTaskStatus, "4");
+		// 优先查询审核通过的(taskStatus == 3)
+		wmTaskLambdaQueryWrapper.orderByDesc(WmTask::getTaskStatus, WmTask::getId);
+
+		if (StrUtil.isNotBlank(param) && Integer.parseInt(param) > 1) {
+			// 手动指定积分包id的情况
+			// 查询下级积分包
+			Set<String> ids = Stream.of(param).collect(Collectors.toSet());
+			getAllLowerScorePackages(ids);
+
+			wmTaskLambdaQueryWrapper.in(WmTask::getScorePackageId, ids);
+		}
+
 		List<WmTask> wmTaskList = this.list(wmTaskLambdaQueryWrapper);
-		if (wmTaskList.size() > 0) {
+
+		if (CollUtil.isNotEmpty(wmTaskList)) {
 			for (WmTask wmTask : wmTaskList) {
-				// 医院信息收集,商业公司信息收集,药店信息收集,医院信息修改,只导出审核通过的图片
-				log.warn("当前任务:{},类型是:{},当前任务审核状态是:{}", wmTask.getId(), wmTask.getTaskTypeId(), wmTask.getPlatAuditStatus());
-				if (taskTypeIdList.contains(Integer.parseInt(wmTask.getTaskTypeId())) && !"1".equals(wmTask.getPlatAuditStatus())) {
-					log.warn("过滤的任务类型id:【{}】", taskTypeIdList.toString());
-					continue;
-				}
+				String url = quartzAppConfig.getApiUrl() + "/admin/api/getH5To?taskId=" + wmTask.getId();
+				log.info("当前任务id:{},类型是:{},url={}", wmTask.getId(), wmTask.getTaskTypeId(), url);
+
 				try {
-					String url = quartzAppConfig.getApiUrl() + "/admin/api/getH5To";
-					System.out.println(url + "taskId=" + wmTask.getId());
-					HttpPostUtil.sendGet(url, "taskId=" + wmTask.getId(), null);
+					String s = HttpUtil.get(url, 10 * 1000);
+					log.info("taskId={} 结果:{}", wmTask.getId(), s);
 				} catch (Exception ex) {
-					ex.printStackTrace();
+					log.error("请求getH5To接口失败", ex);
 				}
 			}
 		}
@@ -97,6 +111,24 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		return true;
 	}
 
+	/**
+	 * 查询所有下级的积分包id
+	 *
+	 * @param ids 积分包id
+	 */
+	private void getAllLowerScorePackages(Set<String> ids) {
+		List<WmScorePackage> subList = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+				.in(WmScorePackage::getRelationScoreId, ids)
+				.eq(WmScorePackage::getDelFlag, "0")
+				.eq(WmScorePackage::getEnableFlag, "0"));
+
+		if (CollectionUtil.isNotEmpty(subList)) {
+			Set<String> idSet = subList.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+			getAllLowerScorePackages(idSet);
+			ids.addAll(idSet);
+		}
+	}
+
 	@Override
 	public List<Map<String, Object>> singleMemberWithoutSuchTaskTypesInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, List<String> typeList) {
 		// 获取时间段内的所有任务