流程配置相关
This commit is contained in:
@ -0,0 +1,29 @@
|
|||||||
|
package com.chinaunicom.zyhy.ebtp.supplier.process.controller;
|
||||||
|
|
||||||
|
import com.chinaunicom.mall.ebtp.common.workflow.constant.BusinessTypeEnum;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoAccessSupplier;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.service.CoscoProcessEnvService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/process/env")
|
||||||
|
@Slf4j
|
||||||
|
public class CoscoProcessEnvController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CoscoProcessEnvService coscoProcessEnvService;
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping("/test")
|
||||||
|
public void test(){
|
||||||
|
CoscoAccessSupplier accessSupplier = new CoscoAccessSupplier();
|
||||||
|
accessSupplier.setId("1");
|
||||||
|
accessSupplier.setSupplierName("测试供应商");
|
||||||
|
String url = coscoProcessEnvService.buildBusinessUrl(BusinessTypeEnum.ACCESS_APPROVAL.getKey(), accessSupplier);
|
||||||
|
log.info("生成的URL: {}", url);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.chinaunicom.zyhy.ebtp.supplier.process.dao;
|
||||||
|
|
||||||
|
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.entity.CoscoProcessEnv;
|
||||||
|
|
||||||
|
public interface CoscoProcessEnvMapper extends IBaseMapper<CoscoProcessEnv> {
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.chinaunicom.zyhy.ebtp.supplier.process.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName(value = "cosco_process_env", autoResultMap = true)
|
||||||
|
public class CoscoProcessEnv {
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.INPUT)
|
||||||
|
private String id; // 主键ID
|
||||||
|
private String businessType; // 业务类型(枚举)
|
||||||
|
private String modelId; // 流程模型ID
|
||||||
|
private String businessKey; // 流程节点标识
|
||||||
|
private String businessUrl; // 页面地址
|
||||||
|
private String delFlag; // 删除标识(normal.正常、deleted.已删除)
|
||||||
|
private String createBy; // 创建人
|
||||||
|
private String createTime; // 创建时间
|
||||||
|
private String updateBy; // 修改人
|
||||||
|
private String updateTime; // 修改时间
|
||||||
|
private String lastUpdateTime; // 最后更新时间
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.chinaunicom.zyhy.ebtp.supplier.process.service;
|
||||||
|
|
||||||
|
import com.chinaunicom.mall.ebtp.common.base.service.IBaseService;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.entity.CoscoProcessEnv;
|
||||||
|
|
||||||
|
public interface CoscoProcessEnvService extends IBaseService<CoscoProcessEnv> {
|
||||||
|
|
||||||
|
CoscoProcessEnv selectByBusinessType(String businessType);
|
||||||
|
|
||||||
|
String buildBusinessUrl(String businessType, Object obj);
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.chinaunicom.zyhy.ebtp.supplier.process.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.dao.CoscoProcessEnvMapper;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.entity.CoscoProcessEnv;
|
||||||
|
import com.chinaunicom.zyhy.ebtp.supplier.process.service.CoscoProcessEnvService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class CoscoProcessEnvServiceImpl extends BaseServiceImpl<CoscoProcessEnvMapper, CoscoProcessEnv> implements CoscoProcessEnvService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CoscoProcessEnvMapper coscoProcessEnvMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据业务类型查询一条流程环境记录
|
||||||
|
*
|
||||||
|
* @param businessType 业务类型
|
||||||
|
* @return CoscoProcessEnv
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public CoscoProcessEnv selectByBusinessType(String businessType) {
|
||||||
|
LambdaQueryWrapper<CoscoProcessEnv> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(CoscoProcessEnv::getBusinessType, businessType)
|
||||||
|
.orderByDesc(CoscoProcessEnv::getCreateTime)
|
||||||
|
.last("limit 1");// limit 1 确保只返回一条记录 (有唯一索引,只是以防万一)
|
||||||
|
return coscoProcessEnvMapper.selectOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据业务类型和参数对象,生成完整的URL字符串。
|
||||||
|
* 1. 用businessType查找CoscoProcessEnv,获取businessUrl。
|
||||||
|
* 2. 用toKeyValueString转换obj为key=value&key2=value2。
|
||||||
|
* 3. 拼接为 businessUrl?key=value&key2=value2
|
||||||
|
* @param businessType 业务类型
|
||||||
|
* @param obj 参数对象
|
||||||
|
* @return 完整URL字符串
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String buildBusinessUrl(String businessType, Object obj) {
|
||||||
|
CoscoProcessEnv env = selectByBusinessType(businessType);
|
||||||
|
if (env == null || env.getBusinessUrl() == null) return null;
|
||||||
|
String baseUrl = env.getBusinessUrl();
|
||||||
|
String paramStr = toKeyValueString(obj);
|
||||||
|
log.info("paramStr: {}", paramStr);
|
||||||
|
if (paramStr.isEmpty()) {
|
||||||
|
return baseUrl;
|
||||||
|
} else {
|
||||||
|
String encoded = Base64.getEncoder().encodeToString(paramStr.getBytes());
|
||||||
|
return baseUrl + "?code=" + encoded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参数为Object ,每个属性都转换为"名称=值"的形式,拼接为key1=value1&key2=value2
|
||||||
|
* @param obj 对象
|
||||||
|
* @return 拼接后的字符串
|
||||||
|
*/
|
||||||
|
private String toKeyValueString(Object obj) {
|
||||||
|
if (obj == null) return "";
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
Field[] fields = obj.getClass().getDeclaredFields();
|
||||||
|
for (Field field : fields) {
|
||||||
|
field.setAccessible(true);
|
||||||
|
try {
|
||||||
|
Object value = field.get(obj);
|
||||||
|
if (value != null) {
|
||||||
|
if (sb.length() > 0) sb.append("&");
|
||||||
|
sb.append(field.getName()).append("=").append(value);
|
||||||
|
}
|
||||||
|
} catch (IllegalAccessException ignored) {}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user