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

[bug-1037] 医学流程结束生成了错误的快照(打不开),需要新增job用于补充有问题的快照

szjbdgzl 2 лет назад
Родитель
Сommit
9e3ff8101e

+ 105 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ReplenishSnapshotJob.java

@@ -0,0 +1,105 @@
+package com.lc.ibps.platform.plan.job;
+
+import com.lc.ibps.base.core.constants.StringPool;
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.core.util.EnvUtil;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.base.web.context.ContextUtil;
+import com.lc.ibps.cloud.entity.APIResult;
+import com.lc.ibps.cloud.file.provider.UploadProvider;
+import com.lc.ibps.common.file.persistence.entity.AttachmentPo;
+import com.lc.ibps.components.quartz.BaseJob2;
+import com.lc.ibps.org.party.persistence.entity.DefaultPartyUserPo;
+import com.lc.ibps.org.party.persistence.entity.PartyEmployeePo;
+import com.lc.ibps.org.party.persistence.entity.PartyEntityPo;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author gaozl
+ */
+public class ReplenishSnapshotJob extends BaseJob2 {
+
+    private static final Logger logger = LoggerFactory.getLogger(ReplenishSnapshotJob.class);
+
+    @Override
+    public void executeJob(JobExecutionContext context) throws Exception {
+        JobDataMap dataMap = context.getMergedJobDataMap();
+        logger.warn("group={} job={} trigger={} is running.",
+                context.getJobDetail().getKey().getGroup(),
+                context.getJobDetail().getKey().getName(),
+                context.getTrigger().getKey().getName());
+
+        ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
+        UploadProvider uploadFile = AppUtil.getBean(UploadProvider.class);
+        String runqianServer = EnvUtil.getProperty("runqian.server", "");
+        String runqianBasePath = EnvUtil.getProperty("runqian.base-path", "");
+        String sql = " select id_,biz_key_,proc_def_name_,bao_biao_lu_jing_,user_id_,user_name_,account_,end_time_,bo_code_,org_id_ from t_bckzsjb " +
+                     " where date_format(create_time_,'%Y-%m-%d')=current_date and  status_='0' and retry_<3 ";
+        @SuppressWarnings("unchecked")
+        List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(sql);
+        if (BeanUtils.isNotEmpty(list)) {
+            logger.warn("补充快照查询数据总数:{}", list.size());
+            int success = 0;int error = 0;
+            for (Map<String, Object> map : list){
+                APIResult<AttachmentPo> result = new APIResult<>();
+                String id = map.get("id_").toString();
+                String userId = map.get("user_id_").toString();
+                String bizKey = map.get("biz_key_").toString();
+                String boCode = map.get("bo_code_").toString();
+                String org = map.get("org_id_").toString();
+                String userName = map.get("user_name_").toString();
+                String account = map.get("account_").toString();
+                try{
+                    String reportPath = "金通医学实验室管理系统/" + map.get("bao_biao_lu_jing_");
+                    String baseUrl = runqianServer + runqianBasePath + "/reportServlet?action=6&file=";
+                    reportPath = URLEncoder.encode(reportPath, "UTF-8");
+                    String url = baseUrl + reportPath + "&print=1&srcType=file&paramString=id_%3D" + bizKey + "&org_=" + org;
+                    LocalDateTime dateTime = LocalDateTime.parse(map.get("end_time_").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+                    String name = map.get("proc_def_name_") + dateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+
+                    DefaultPartyUserPo user = new DefaultPartyUserPo();
+                    user.setUserId(userId);
+                    user.setFullname(userName);
+                    user.setAccount(account);
+                    ContextUtil.setCurrentUser(user);
+
+                    result = uploadFile.runQianUpload(url , name , StringPool.FileType.Office.PDF );
+
+                    if (result.getState() == 200 && BeanUtils.isNotEmpty(result.getData())) {
+                        String kuaiZhaoId = result.getData().getId();
+                        commonDao.execute("update "+boCode+" set kuai_zhao_='"+kuaiZhaoId+"' where id_='"+bizKey+"' ");
+
+                        commonDao.execute("update t_bckzsjb set status_='1',kuai_zhao_='"+kuaiZhaoId+"' where id_='"+id+"'");
+
+                        logger.warn("Generated Snapshot Success kuaiZhaoId={},id={}" + kuaiZhaoId,id );
+                        success = success + 1;
+                    }
+                }catch (Exception e){
+                    commonDao.execute("update t_bckzsjb set retry_=retry_+1,msg_='"+e.getMessage() +"' where id_='"+id+"'");
+                    error = error + 1;
+                    logger.error("补充快照异常,异常数据id:{} with error message {}",id,e.getMessage());
+                }
+
+            }
+            String msg = "补充快照成功数:"+success+",补充快照异常数:"+error;
+            logger.warn(msg);
+            if (error>0){
+                throw new Exception(msg);
+            }
+        }else {
+            logger.warn("未查询到需要补充快照的数据");
+        }
+
+    }
+
+}