rev:自定义表单数据功能维护
This commit is contained in:
@@ -53,7 +53,11 @@ public class SecurityUtils {
|
||||
* @return 系统用户名称
|
||||
*/
|
||||
public static String getCurrentNickName() {
|
||||
return getCurrentUser().getPresonName();
|
||||
CurrentUser user = getCurrentUser();
|
||||
if (user!=null){
|
||||
return user.getPresonName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,5 +12,6 @@ import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
* @since 2024-03-25
|
||||
*/
|
||||
public interface IBmFormStrucService extends IService<BmFormStruc> {
|
||||
|
||||
BmFormStruc getFormType(String form_type);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public class StackingTaskHandler implements TaskHandler {
|
||||
task.setPoint_code1(from.getString("start_point"));
|
||||
task.setPoint_code2(from.getString("struct_code"));
|
||||
taskService.createTask(task);
|
||||
return (JSONObject)JSONObject.toJSON(task);
|
||||
from.put("task_code",task.getTask_code());
|
||||
return from;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ public class BpmnJSONConverter {
|
||||
public static Map<String, BaseNodeConverter> Node_Converter= new HashMap<>();
|
||||
static {
|
||||
Node_Converter.put("form",new FormConverter());
|
||||
Node_Converter.put("strucForm",new StrucFormConverter());
|
||||
Node_Converter.put("startEvent",new StartEventConverter());
|
||||
Node_Converter.put("endEvent",new EndEventConverter());
|
||||
Node_Converter.put("gateWay",new GatewayConverter());
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.converter.node.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.flow_manage.flow.framework.BpmnModel;
|
||||
import org.nl.wms.flow_manage.flow.framework.converter.node.BaseNodeConverter;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowNode;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.Form;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.StrucForm;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/4/26 11:08
|
||||
*/
|
||||
public class StrucFormConverter extends BaseNodeConverter {
|
||||
@Override
|
||||
public FlowNode convertToBpmnModel(Iterator<JSONObject> iterator, JSONObject node, BpmnModel model) {
|
||||
JSONObject properties = node.getJSONObject("properties");
|
||||
String type = node.getString("type");
|
||||
Boolean pass = properties.getBoolean("passNode");
|
||||
StrucForm form = new StrucForm();
|
||||
form.setPassNode(pass);
|
||||
form.setId(node.getString("id"));
|
||||
form.setType(node.getString("type"));
|
||||
form.setForm_type(properties.getString("form_type"));
|
||||
form.setName(properties.getString("name"));
|
||||
form.setCategory(properties.getString("category"));
|
||||
form.setDocumentation(properties.getString("documentation"));
|
||||
//设置触发事件
|
||||
form.setExecutionListeners(null);
|
||||
JSONArray skipExpressions = properties.getJSONArray("skipExpression");
|
||||
if (skipExpressions!=null){
|
||||
for (int i = 0; i < skipExpressions.size(); i++) {
|
||||
form.getSkipExpression().add(skipExpressions.getString(i));
|
||||
}
|
||||
}
|
||||
if (pass!=null && pass){
|
||||
model.getPassNode().add(type);
|
||||
}
|
||||
model.getNodeFlow().add(type);
|
||||
model.getNodeProperties().put(type,properties);
|
||||
|
||||
model.getProcesses().put(form.getId(),form);
|
||||
return form;
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/18 11:08
|
||||
* !!!流程中的单据不变,除非是子流程
|
||||
* sql如果要考虑事务的话,可以考虑将sql放入一个地方最后一起执行
|
||||
*/
|
||||
@Slf4j
|
||||
@@ -54,6 +55,7 @@ public abstract class FlowNodeActivityBehavior<T> {
|
||||
.eq("proc_inst_id",entity.getProc_inst_id())
|
||||
.set("status", StatusEnum.FLOW_STATUS.code("节点完成"))
|
||||
.set("form_data", JSONObject.toJSON(entity.getT()).toString())
|
||||
.set("form_type",entity.getForm_type())
|
||||
.set("update_time", DateUtil.now()));
|
||||
this.leaveActivity(entity);
|
||||
}catch (Exception ex){
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.engine.behavior.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
import org.nl.wms.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBehavior;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.Form;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.StrucForm;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import org.nl.wms.stor_manage.service.in.iostor.IStIvtIostorinvInService;
|
||||
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
|
||||
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
|
||||
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/18 13:17
|
||||
* 源:UserTask
|
||||
* 获取不同的类型执行器.处理该节点:获取当前表单
|
||||
获取表单配置表
|
||||
确认有没有自定义字段:如果有则创建自定义字段
|
||||
生成出入库单单据
|
||||
*/
|
||||
@Service("strucForm")
|
||||
public class StrucFormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
@Autowired
|
||||
IBmFormStrucService iBmFormStrucService;
|
||||
//分配明细用公用表
|
||||
@Autowired
|
||||
IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
//有的参数是在明细表,有的参数是在任务表,参数源头需要统一,否则数据切换很麻烦
|
||||
FlowElement flowElement = entity.getCurrentFlowElement();
|
||||
if (flowElement instanceof StrucForm){
|
||||
//根据当前表单配置生成当前节点表单数据
|
||||
StrucForm currentNode = (StrucForm) flowElement;
|
||||
|
||||
BmFormStruc targetStruc = iBmFormStrucService.getOne(new QueryWrapper<BmFormStruc>()
|
||||
.eq("form_type", currentNode.getForm_type()));
|
||||
if (targetStruc==null){
|
||||
throw new BadRequestException("当前节点表单类型:"+currentNode.getForm_type()+"没有配置数据格式");
|
||||
}
|
||||
//TEST:这部分数据放在框架中,每个节点都需要
|
||||
entity.setForm_struc(targetStruc);
|
||||
|
||||
//处理自定义参数:
|
||||
if (currentNode.getSkipExpression()!=null || currentNode.getSkipExpression().size()>0){
|
||||
TypeHandler<JSONObject,JSONObject> typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory());
|
||||
if (typeHandler==null){
|
||||
throw new BadRequestException("【flow】当前节点处理类型未定义");
|
||||
}
|
||||
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), targetStruc);
|
||||
|
||||
//该参数里包含三部分:主数据基础字段,组数据自定义及明细,
|
||||
//明细:基础字段,组数据自定义及参数:
|
||||
//TODO:id,code等非映射字段后续可以通过SpringEL表达式生成
|
||||
handler.put("id",IdUtil.getStringId());
|
||||
handler.put("create_time",DateUtil.now());
|
||||
handler.put("form_type",entity.getForm_type());
|
||||
handler.put("create_name",SecurityUtils.getCurrentNickName());
|
||||
handler.put("status",StatusEnum.FORM_STATUS.code("生成"));
|
||||
handler.put("code",CodeUtil.getNewCode(currentNode.getForm_type()));
|
||||
PmFormData mst = handler.toJavaObject(PmFormData.class);
|
||||
|
||||
JSONArray itemArr = handler.getJSONArray("item");
|
||||
if(itemArr !=null){
|
||||
for (int i = 0; i < itemArr.size(); i++) {
|
||||
JSONObject dtl = itemArr.getJSONObject(i);
|
||||
dtl.put("inv_id",mst.getId());
|
||||
dtl.put("status",StatusEnum.FORM_STATUS.code("生成"));
|
||||
dtl.put("id",IdUtil.getStringId());
|
||||
PmFormData iostorinvdtl= dtl.toJavaObject(PmFormData.class);
|
||||
iPmFormDataService.save(iostorinvdtl);
|
||||
}
|
||||
}
|
||||
iPmFormDataService.save(mst);
|
||||
entity.setT(handler);
|
||||
entity.setForm_id(mst.getId());
|
||||
entity.setForm_type(currentNode.getForm_type());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.ExecuteTask;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/18 11:30
|
||||
* 源:UserTask
|
||||
*/
|
||||
@Data
|
||||
public class StrucForm extends ExecuteTask {
|
||||
/**
|
||||
* 表单类型
|
||||
*/
|
||||
private String form_type;
|
||||
/**
|
||||
* 表单处理类别
|
||||
*/
|
||||
private String category;
|
||||
/**
|
||||
* 处理表达式
|
||||
*/
|
||||
private List<String> skipExpression = new ArrayList<>();
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
private String priority;
|
||||
/**
|
||||
* 表单自定义参数
|
||||
*/
|
||||
private List<BmFormStruc> customProperties = new ArrayList<>();
|
||||
/**
|
||||
* 表单验证字段
|
||||
*/
|
||||
private String validateFormFields;
|
||||
/**
|
||||
* 变量名称
|
||||
*/
|
||||
private String taskIdVariableName;
|
||||
|
||||
/**
|
||||
* 单据受让人跟归属人:这个节点的数据谁能看
|
||||
* 暂时不用
|
||||
*/
|
||||
@Deprecated
|
||||
private String assignee;
|
||||
@Deprecated
|
||||
private String owner;
|
||||
/**
|
||||
* 用于同一部署判断:父子流程使用:暂时不用
|
||||
*/
|
||||
@Deprecated
|
||||
private boolean sameDeployment = true;
|
||||
/**
|
||||
* 表单类型:自定义表达类型
|
||||
*/
|
||||
@Deprecated
|
||||
private String dueDate;
|
||||
@Deprecated
|
||||
private String businessCalendarName;
|
||||
@Deprecated
|
||||
private String extensionId;
|
||||
/**
|
||||
* 表单处理中的候选人信息
|
||||
*/
|
||||
@Deprecated
|
||||
private List<String> candidateUsers = new ArrayList<>();
|
||||
@Deprecated
|
||||
private Map<String, Set<String>> customUserIdentityLinks = new HashMap<>();
|
||||
@Deprecated
|
||||
private List<String> candidateGroups = new ArrayList<>();
|
||||
@Deprecated
|
||||
private Map<String, Set<String>> customGroupIdentityLinks = new HashMap<>();
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.utils.ListOf;
|
||||
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
@@ -29,7 +30,10 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
@Override
|
||||
public JSONObject handler(List<String> param, JSONObject data, BmFormStruc form_struc) {
|
||||
//数据平铺
|
||||
data.putAll(data.getJSONObject("form_data"));
|
||||
JSONObject forms = data.getJSONObject("form_data");
|
||||
if (forms!=null){
|
||||
data.putAll(forms);
|
||||
}
|
||||
//数据字段列表
|
||||
List<String> fields = ListOf.of(form_struc.getBiz_code()
|
||||
, form_struc.getBiz_id()
|
||||
@@ -39,25 +43,30 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
, form_struc.getPcsn()
|
||||
, form_struc.getVehicle_code()
|
||||
, form_struc.getQty());
|
||||
fields.addAll(form_struc.getForm_param().keySet());
|
||||
//查询目标表字段
|
||||
JSONObject returnObj = new JSONObject();
|
||||
//基础字段映射:如果只有一个就不迭代
|
||||
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
|
||||
for (String item : mapping.keySet()) {
|
||||
String value = data.getString(mapping.getString(item));
|
||||
returnObj.put(item,value);
|
||||
for (String field : fields) {
|
||||
if (field!=null){
|
||||
String value = data.getString(mapping.getString(field));
|
||||
returnObj.put(field,value);
|
||||
}
|
||||
}
|
||||
JSONObject formData = mapping.getJSONObject("form_data");
|
||||
//查询表单配置表,获取自定义json:自定义字段参数获取
|
||||
if (formData!=null){
|
||||
JSONObject form_param = form_struc.getForm_param();
|
||||
if (form_param!=null){
|
||||
JSONObject form_data = new JSONObject();
|
||||
for (String item : formData.keySet()) {
|
||||
String value = data.getString(formData.getString(item));
|
||||
form_data.put(item,value);
|
||||
for (String item : form_param.keySet()) {
|
||||
String mappingConfig = mapping.getString(item);
|
||||
if (StringUtils.isNotEmpty(mappingConfig)){
|
||||
String value = data.getString(mappingConfig);
|
||||
form_data.put(item,value);
|
||||
}
|
||||
}
|
||||
returnObj.put("form_data",form_data);
|
||||
}
|
||||
|
||||
JSONArray item = data.getJSONArray("item");
|
||||
if (item!=null){
|
||||
JSONArray itemList = new JSONArray();
|
||||
|
||||
@@ -32,6 +32,10 @@ public class ActReProcdef implements Serializable {
|
||||
* 模型key
|
||||
*/
|
||||
private String model_key;
|
||||
/**
|
||||
* 单据类型
|
||||
*/
|
||||
private String form_type;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
**/
|
||||
public interface IFlowOperationService {
|
||||
|
||||
Boolean startUp(String form_type, JSONObject mst,List<JSONObject> items);
|
||||
Boolean startUp(String model_key, JSONObject mst, List<JSONObject> items);
|
||||
|
||||
Boolean startFormFlow(StartProcessInstanceVo params);
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package org.nl.wms.flow_manage.flow.service.execution.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.wms.flow_manage.flow.framework.BpmnModel;
|
||||
import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter;
|
||||
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
|
||||
@@ -46,8 +44,8 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
||||
private CommandExecutor commandExecutor;
|
||||
|
||||
@Override
|
||||
public Boolean startUp(String form_type, JSONObject mst,List<JSONObject> items) {
|
||||
ActReProcdef deployment = actReProcdefService.getCurrentVersion(form_type);
|
||||
public Boolean startUp(String model_key, JSONObject mst, List<JSONObject> items) {
|
||||
ActReProcdef deployment = actReProcdefService.getCurrentVersion(model_key);
|
||||
if (deployment==null){
|
||||
throw new BadRequestException("当前单据类型未配置业务流程");
|
||||
}
|
||||
@@ -62,7 +60,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
||||
ExecutionEntity entity = new ExecutionEntity();
|
||||
entity.setCurrentFlowElement(bpmnModel.getStartEvent());
|
||||
entity.setT(mst);
|
||||
entity.setForm_type(form_type);
|
||||
entity.setForm_type(deployment.getForm_type());
|
||||
entity.setForm_id(mst.getString("id"));
|
||||
entity.setStartActivityId(entity.getActivityId());
|
||||
entity.setDeploymentId(deployment.getDeployment_id());
|
||||
|
||||
@@ -46,6 +46,7 @@ public class ActDeModelServiceImpl extends ServiceImpl<ActDeModelMapper, ActDeMo
|
||||
procdef.setDeployment_id(IdUtil.getStringId());
|
||||
procdef.setName(dto.getName());
|
||||
procdef.setModel_key(dto.getModel_key());
|
||||
procdef.setForm_type(dto.getForm_type());
|
||||
procdef.setVersion(String.valueOf(dto.getVersion()));
|
||||
procdef.setDescription(dto.getDescription());
|
||||
procdef.setModel_editor_json(dto.getModel_editor_json());
|
||||
|
||||
@@ -82,7 +82,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
items.add(item);
|
||||
}
|
||||
// iMdGroupMstService.save(mdGroupMst);
|
||||
iFlowOperationService.startUp("GROUP_MST",forms,items);
|
||||
iFlowOperationService.startUp("service_source_apply",forms,items);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
package org.nl.wms.pm_manage.form_data.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -24,7 +30,18 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
public class PmFormDataController {
|
||||
|
||||
@Autowired
|
||||
IPmFormDataService formDataService;
|
||||
private IPmFormDataService formDataService;
|
||||
|
||||
|
||||
|
||||
@GetMapping()
|
||||
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page){
|
||||
Page<PmFormData> result = formDataService.page(page.build(), query.build());
|
||||
return new ResponseEntity<>(TableDataInfo.build(result),HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@GetMapping("/sync/{type}")
|
||||
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl){
|
||||
|
||||
@@ -67,12 +67,12 @@ public class PmFormData implements Serializable {
|
||||
/**
|
||||
* 创建id
|
||||
*/
|
||||
private String update_time;
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 创建id
|
||||
*/
|
||||
private String update_name;
|
||||
private String create_name;
|
||||
|
||||
/**
|
||||
* 物料id
|
||||
@@ -93,10 +93,6 @@ public class PmFormData implements Serializable {
|
||||
*/
|
||||
private String vehicle_code;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String stor_code;
|
||||
|
||||
/**
|
||||
* 自定义表单字段
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.nl.wms.pm_manage.form_data.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.entity.BaseQuery;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/11 17:46
|
||||
*/
|
||||
@Data
|
||||
public class FormDataQuery extends BaseQuery<PmFormData> {
|
||||
|
||||
private String from_type;
|
||||
}
|
||||
@@ -9,7 +9,7 @@ spring:
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:password}
|
||||
password: ${DB_PWD:123456}
|
||||
|
||||
# 初始连接数
|
||||
initial-size: 5
|
||||
|
||||
Reference in New Issue
Block a user