szjbdgzl 2 роки тому
батько
коміт
be9d7894bf

+ 3 - 0
ibps-base-root/modules/base-cloud/src/main/java/com/lc/ibps/cloud/provider/GenericProvider.java

@@ -59,6 +59,9 @@ public class GenericProvider {
 	protected HttpServletRequest getRequest() {
 		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
 		try {
+			if (BeanUtils.isEmpty(attributes)) {
+				return null;
+			}
 			attributes.getRequest().setCharacterEncoding(StringPool.UTF_8);
 		} catch (UnsupportedEncodingException ignore) {
 			return null;

+ 21 - 3
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/listener/ProcEndEventListener.java

@@ -5,6 +5,7 @@ import com.lc.ibps.base.core.exception.BaseException;
 import com.lc.ibps.base.core.util.BeanUtils;
 import com.lc.ibps.base.core.util.string.StringValidator;
 import com.lc.ibps.base.saas.context.TenantContext;
+import com.lc.ibps.base.web.context.ContextUtil;
 import com.lc.ibps.bpmn.api.cmd.ActionCmd;
 import com.lc.ibps.bpmn.api.cmd.TaskFinishCmd;
 import com.lc.ibps.bpmn.api.constant.*;
@@ -35,8 +36,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.core.Ordered;
 import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 
@@ -164,11 +168,24 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 		BpmInst bpmInstDomain = bpmInstRepository.newInstance();
 		bpmInstDomain.createHistory(instId);
 		bpmInstDomain.delete(instId);
-		MessageQueueProductorUtil.send(buildSnapshotMessage(instId));
+		Map<String, Object> var = new HashMap<>();
+		var.put("userId",ContextUtil.getCurrentUserId());
+		var.put("instId",instId);
+		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+		String scheme = request.getScheme();
+		System.out.println("scheme = " + scheme);
+		//获取域名
+		String serverName = request.getServerName();
+		System.out.println("serverName = " + serverName);
+		//组装成基础url
+		String basePath = scheme + "://" + request.getServerName() + "/";
+		System.out.println("basePath = " + basePath);
+		var.put("basePath", basePath);
+		MessageQueueProductorUtil.send(buildSnapshotMessage(var));
 		return instance;
 	}
 
-	private DefaultMessage buildSnapshotMessage(String instId){
+	private DefaultMessage buildSnapshotMessage(Map<String, Object> var){
 		DefaultMessage<String> message = new DefaultMessage<String>();
 
 		message.setTenantId(TenantContext.getCurrentTenantId());
@@ -177,7 +194,8 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 		message.setExchange(QueueConstants.Message.EXCHANGE_MESSAGE);
 		message.setQueue(QueueConstants.Message.QUEUE_NAME_SNAPSHOT);
 
-		message.setData(instId);
+		message.setVariables(var);
+		//message.setData(instId);
 
 
 		return message;

+ 31 - 29
ibps-comp-root/modules/comp-file-server/src/main/java/com/lc/ibps/cloud/file/provider/UploadProvider.java

@@ -13,6 +13,7 @@ import javax.validation.constraints.NotNull;
 
 import com.lc.ibps.base.core.encrypt.Base64;
 import com.lc.ibps.base.db.util.TableMetaUtil;
+import com.lc.ibps.cloud.entity.APIRequest;
 import org.springframework.http.MediaType;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.mock.web.MockMultipartFile;
@@ -87,14 +88,15 @@ public class UploadProvider extends GenericUploadProvider implements IUploadServ
 			@RequestPart(name = "file", required = true)MultipartFile file) {
 
 		APIResult<AttachmentPo> result = new APIResult<>();
-
-		String uploadFileVoStr = this.getRequest().getParameter("uploadFileVo");
 		UploadFileVo uploadFileVo = null;
-		if(JacksonUtil.isJsonObject(uploadFileVoStr)) {
-			uploadFileVo = JacksonUtil.getDTO(uploadFileVoStr, UploadFileVo.class);
+		Map<String, Object> paramsVo;
+		if (BeanUtils.isNotEmpty(this.getRequest())){
+			String uploadFileVoStr = this.getRequest().getParameter("uploadFileVo");
+			if(JacksonUtil.isJsonObject(uploadFileVoStr)) {
+				uploadFileVo = JacksonUtil.getDTO(uploadFileVoStr, UploadFileVo.class);
+			}
 		}
-
-		Map<String, Object> paramsVo = getUploadParams(uploadFileVo);
+		paramsVo = getUploadParams(uploadFileVo);
 		Map<String, Object> paramsRequest = getUploadParams(this.getRequest());
 		paramsVo.putAll(paramsRequest);
 
@@ -465,34 +467,34 @@ public class UploadProvider extends GenericUploadProvider implements IUploadServ
 	 * @return
 	 */
 	private Map<String, Object> getUploadParams(HttpServletRequest request) {
-		String uploadType = RequestUtil.getString(request, "uploadType", "file"); // 控件的类型
-		String paramJson = RequestUtil.getString(request, "paramJson"); // 自定义参数
-		String fileMd5 = RequestUtil.getString(request, "fileMd5");// 文件唯一标记 MD5
-		Boolean isChunk = RequestUtil.getBoolean(request, "isChunk", true);// 是否分片存储
-		// 当前分块下标
-		String chunk = RequestUtil.getString(request, "chunk");
-		// 当前分块大小
-		String chunkSize = RequestUtil.getString(request, "chunkSize");
-
 		Map<String, Object> params = new HashMap<String, Object>();
-
-		params.put(FileParam.UPLOAD_TYPE, uploadType);
-		params.put(FileParam.FILE_MD5, fileMd5);
-		params.put(FileParam.IS_CHUNK, isChunk);
-		params.put(FileParam.CHUNK, chunk);
-		params.put(FileParam.CHUNK_SIZE, chunkSize);
-
 		params.put(FileParam.CUR_USER_ID, ContextUtil.getCurrentUser().getUserId());
 		params.put(FileParam.CUR_USER_ACCOUNT, ContextUtil.getCurrentUser().getAccount());
 		params.put(FileParam.CUR_USER_NAME, ContextUtil.getCurrentUser().getFullname());
-
-		if (StringUtil.isNotEmpty(paramJson)) {
-			try {
-				Map<String, Object> paramMap = JacksonUtil.toMap(paramJson);
-				if (BeanUtils.isNotEmpty(paramMap)){
-					params.putAll(paramMap);
+		if (BeanUtils.isNotEmpty(request)) {
+			String uploadType = RequestUtil.getString(request, "uploadType", "file"); // 控件的类型
+			String paramJson = RequestUtil.getString(request, "paramJson"); // 自定义参数
+			String fileMd5 = RequestUtil.getString(request, "fileMd5");// 文件唯一标记 MD5
+			Boolean isChunk = RequestUtil.getBoolean(request, "isChunk", true);// 是否分片存储
+			// 当前分块下标
+			String chunk = RequestUtil.getString(request, "chunk");
+			// 当前分块大小
+			String chunkSize = RequestUtil.getString(request, "chunkSize");
+
+			params.put(FileParam.UPLOAD_TYPE, uploadType);
+			params.put(FileParam.FILE_MD5, fileMd5);
+			params.put(FileParam.IS_CHUNK, isChunk);
+			params.put(FileParam.CHUNK, chunk);
+			params.put(FileParam.CHUNK_SIZE, chunkSize);
+
+			if (StringUtil.isNotEmpty(paramJson)) {
+				try {
+					Map<String, Object> paramMap = JacksonUtil.toMap(paramJson);
+					if (BeanUtils.isNotEmpty(paramMap)){
+						params.putAll(paramMap);
+					}
+				} catch (Exception ignore) {
 				}
-			} catch (Exception ignore) {
 			}
 		}
 

+ 90 - 1
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/mq/consumer/rabbit/RabbitSnapshotMessageQueueConsumer.java

@@ -1,14 +1,32 @@
 package com.lc.ibps.mq.consumer.rabbit;
 
+import com.lc.ibps.base.core.constants.StringPool;
+import com.lc.ibps.base.core.util.BeanUtils;
+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.cloud.mq.consumer.api.consumer.IQueueConsumer;
 import com.lc.ibps.cloud.mq.core.constants.QueueConstants;
 import com.lc.ibps.cloud.mq.core.model.Message;
+import com.lc.ibps.common.file.persistence.entity.AttachmentPo;
+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 com.lc.ibps.org.party.repository.PartyEmployeeRepository;
+import com.lc.ibps.org.party.repository.PartyEntityRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.amqp.rabbit.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
 @RabbitListener(bindings = {
         @QueueBinding(
                 exchange = @Exchange(value = QueueConstants.Message.EXCHANGE_MESSAGE ),
@@ -22,11 +40,25 @@ public class RabbitSnapshotMessageQueueConsumer <M extends Message<String>> impl
     @Autowired
     private UploadProvider uploadFile;
 
+    @Autowired
+    private ICommonDao<?> commonDao;
+
+    @Resource
+    private PartyEntityRepository partyEntityRepository;
+
+    @Autowired
+    protected PartyEmployeeRepository partyEmployeeRepository;
+
+//    @Resource
+//    private BpmInstHisRepository bpmInstHisRepository;
+
     @RabbitHandler
     @Override
     public void popup(M message) {
         LOGGER.warn(message.toString());
-        String instId = message.getData();
+        String instId = message.getVariables().get("instId").toString();
+        String userId = message.getVariables().get("userId").toString();
+
 
         /*
         Step 1: fetch below sql by instId. if record returned, goto step 2,otherwise goto step 3.
@@ -46,6 +78,63 @@ public class RabbitSnapshotMessageQueueConsumer <M extends Message<String>> impl
 
          */
 
+        Map<String, Object> hisMap = commonDao.queryOne("SELECT PROC_DEF_KEY_,BIZ_KEY_,PROC_DEF_NAME_ FROM ibps_bpm_inst_his WHERE id_ = '" + instId + "' ");
+        //BpmInstHisPo instHis = bpmInstHisRepository.get(superProcInstId);
+
+        if (BeanUtils.isNotEmpty(hisMap)){
+
+            Map<String, Object> kzMap = commonDao.queryOne(" SELECT ti_jiao_kuai_zhao,bao_biao_lu_jing_,tablekey_ FROM t_lcidglbdbb " +
+                "where liu_cheng_xuan_ze = '" + hisMap.get("PROC_DEF_KEY_") + "' AND gui_dang_lei_xing = 'process'");
+            APIResult<AttachmentPo> result = new APIResult<>();
+
+            if (BeanUtils.isNotEmpty(kzMap.get("ti_jiao_kuai_zhao")) && "是".equals(kzMap.get("ti_jiao_kuai_zhao"))) {
+                PartyEmployeePo employeePo = partyEmployeeRepository.get(userId);
+                String position = employeePo.getPositions().split(",")[0];
+                PartyEntityPo entityPo = partyEntityRepository.get(position);
+                String org = entityPo.getPath().split("\\.")[0];
+                String reportPath = "金通医学实验室管理系统/" + kzMap.get("bao_biao_lu_jing_");
+
+                String baseUrl = "https://www.szjyxt.com/demo/reportServlet?action=6&file=";
+
+                //  目前可用type    6:生成报表的pdf文件【默认】   7:生成报表的word文件   3:生成报表的excel文件
+                //            return `${BASE_URL}demo/reportServlet?action=${type}&file=${encodeURIComponent(reportPath + '/' + src)}&print=1&srcType=file&paramString=${getParams(where)}`
+
+                try {
+                    reportPath = URLEncoder.encode(reportPath, "UTF-8");
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
+                }
+                String url = baseUrl + reportPath + "&print=1&srcType=file&paramString=id_%3D" + hisMap.get("BIZ_KEY_") + "&org_=" + org;
+
+                String formattedTime = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());
+                String name = hisMap.get("PROC_DEF_NAME_") + formattedTime + "hdcs";
+
+
+                DefaultPartyUserPo user = new DefaultPartyUserPo();
+                user.setUserId(userId);
+                user.setFullname(employeePo.getName());
+                user.setAccount(employeePo.getAccount());
+                ContextUtil.setCurrentUser(user);
+
+                result = uploadFile.runQianUpload(url , name , StringPool.FileType.Office.PDF );
+
+            }
+            StringBuilder sql = new StringBuilder();
+            if (BeanUtils.isNotEmpty(kzMap)){
+                sql.append("update t_").append(kzMap.get("tablekey_")).append(" set shi_fou_guo_shen_ = '已完成' ");
+            }
+            if (result.getState() == 200 && BeanUtils.isNotEmpty(result.getData())){
+                sql.append(" , kuai_zhao_ = '").append(result.getData().getId()).append("' ");
+            }
+            sql.append(" where id_ = '").append(hisMap.get("BIZ_KEY_")).append("' ");
+
+            commonDao.execute(sql.toString());
+
+        }
+
+
+
+
     }
 
 }