Compare commits
2 Commits
d69e4cc508
...
222414debf
Author | SHA1 | Date | |
---|---|---|---|
222414debf | |||
cecdc7b308 |
@ -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