rev:自定义表单数据功能维护
This commit is contained in:
@@ -53,7 +53,11 @@ public class SecurityUtils {
|
|||||||
* @return 系统用户名称
|
* @return 系统用户名称
|
||||||
*/
|
*/
|
||||||
public static String getCurrentNickName() {
|
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
|
* @since 2024-03-25
|
||||||
*/
|
*/
|
||||||
public interface IBmFormStrucService extends IService<BmFormStruc> {
|
public interface IBmFormStrucService extends IService<BmFormStruc> {
|
||||||
|
|
||||||
BmFormStruc getFormType(String form_type);
|
BmFormStruc getFormType(String form_type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class StackingTaskHandler implements TaskHandler {
|
|||||||
task.setPoint_code1(from.getString("start_point"));
|
task.setPoint_code1(from.getString("start_point"));
|
||||||
task.setPoint_code2(from.getString("struct_code"));
|
task.setPoint_code2(from.getString("struct_code"));
|
||||||
taskService.createTask(task);
|
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<>();
|
public static Map<String, BaseNodeConverter> Node_Converter= new HashMap<>();
|
||||||
static {
|
static {
|
||||||
Node_Converter.put("form",new FormConverter());
|
Node_Converter.put("form",new FormConverter());
|
||||||
|
Node_Converter.put("strucForm",new StrucFormConverter());
|
||||||
Node_Converter.put("startEvent",new StartEventConverter());
|
Node_Converter.put("startEvent",new StartEventConverter());
|
||||||
Node_Converter.put("endEvent",new EndEventConverter());
|
Node_Converter.put("endEvent",new EndEventConverter());
|
||||||
Node_Converter.put("gateWay",new GatewayConverter());
|
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
|
* @author ZZQ
|
||||||
* @Date 2024/3/18 11:08
|
* @Date 2024/3/18 11:08
|
||||||
|
* !!!流程中的单据不变,除非是子流程
|
||||||
* sql如果要考虑事务的话,可以考虑将sql放入一个地方最后一起执行
|
* sql如果要考虑事务的话,可以考虑将sql放入一个地方最后一起执行
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -54,6 +55,7 @@ public abstract class FlowNodeActivityBehavior<T> {
|
|||||||
.eq("proc_inst_id",entity.getProc_inst_id())
|
.eq("proc_inst_id",entity.getProc_inst_id())
|
||||||
.set("status", StatusEnum.FLOW_STATUS.code("节点完成"))
|
.set("status", StatusEnum.FLOW_STATUS.code("节点完成"))
|
||||||
.set("form_data", JSONObject.toJSON(entity.getT()).toString())
|
.set("form_data", JSONObject.toJSON(entity.getT()).toString())
|
||||||
|
.set("form_type",entity.getForm_type())
|
||||||
.set("update_time", DateUtil.now()));
|
.set("update_time", DateUtil.now()));
|
||||||
this.leaveActivity(entity);
|
this.leaveActivity(entity);
|
||||||
}catch (Exception ex){
|
}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.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.utils.ListOf;
|
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.IBmFormStrucService;
|
||||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||||
@@ -29,7 +30,10 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
|||||||
@Override
|
@Override
|
||||||
public JSONObject handler(List<String> param, JSONObject data, BmFormStruc form_struc) {
|
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()
|
List<String> fields = ListOf.of(form_struc.getBiz_code()
|
||||||
, form_struc.getBiz_id()
|
, form_struc.getBiz_id()
|
||||||
@@ -39,25 +43,30 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
|||||||
, form_struc.getPcsn()
|
, form_struc.getPcsn()
|
||||||
, form_struc.getVehicle_code()
|
, form_struc.getVehicle_code()
|
||||||
, form_struc.getQty());
|
, form_struc.getQty());
|
||||||
fields.addAll(form_struc.getForm_param().keySet());
|
|
||||||
//查询目标表字段
|
//查询目标表字段
|
||||||
JSONObject returnObj = new JSONObject();
|
JSONObject returnObj = new JSONObject();
|
||||||
//基础字段映射:如果只有一个就不迭代
|
//基础字段映射:如果只有一个就不迭代
|
||||||
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
|
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
|
||||||
for (String item : mapping.keySet()) {
|
for (String field : fields) {
|
||||||
String value = data.getString(mapping.getString(item));
|
if (field!=null){
|
||||||
returnObj.put(item,value);
|
String value = data.getString(mapping.getString(field));
|
||||||
|
returnObj.put(field,value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
JSONObject formData = mapping.getJSONObject("form_data");
|
|
||||||
//查询表单配置表,获取自定义json:自定义字段参数获取
|
//查询表单配置表,获取自定义json:自定义字段参数获取
|
||||||
if (formData!=null){
|
JSONObject form_param = form_struc.getForm_param();
|
||||||
|
if (form_param!=null){
|
||||||
JSONObject form_data = new JSONObject();
|
JSONObject form_data = new JSONObject();
|
||||||
for (String item : formData.keySet()) {
|
for (String item : form_param.keySet()) {
|
||||||
String value = data.getString(formData.getString(item));
|
String mappingConfig = mapping.getString(item);
|
||||||
|
if (StringUtils.isNotEmpty(mappingConfig)){
|
||||||
|
String value = data.getString(mappingConfig);
|
||||||
form_data.put(item,value);
|
form_data.put(item,value);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
returnObj.put("form_data",form_data);
|
returnObj.put("form_data",form_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONArray item = data.getJSONArray("item");
|
JSONArray item = data.getJSONArray("item");
|
||||||
if (item!=null){
|
if (item!=null){
|
||||||
JSONArray itemList = new JSONArray();
|
JSONArray itemList = new JSONArray();
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ public class ActReProcdef implements Serializable {
|
|||||||
* 模型key
|
* 模型key
|
||||||
*/
|
*/
|
||||||
private String model_key;
|
private String model_key;
|
||||||
|
/**
|
||||||
|
* 单据类型
|
||||||
|
*/
|
||||||
|
private String form_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称
|
* 名称
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import java.util.List;
|
|||||||
**/
|
**/
|
||||||
public interface IFlowOperationService {
|
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);
|
Boolean startFormFlow(StartProcessInstanceVo params);
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
package org.nl.wms.flow_manage.flow.service.execution.impl;
|
package org.nl.wms.flow_manage.flow.service.execution.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.domain.exception.BadRequestException;
|
import org.nl.common.domain.exception.BadRequestException;
|
||||||
import org.nl.common.enums.StatusEnum;
|
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.BpmnModel;
|
||||||
import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter;
|
import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter;
|
||||||
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
|
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
|
||||||
@@ -46,8 +44,8 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
|||||||
private CommandExecutor commandExecutor;
|
private CommandExecutor commandExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean startUp(String form_type, JSONObject mst,List<JSONObject> items) {
|
public Boolean startUp(String model_key, JSONObject mst, List<JSONObject> items) {
|
||||||
ActReProcdef deployment = actReProcdefService.getCurrentVersion(form_type);
|
ActReProcdef deployment = actReProcdefService.getCurrentVersion(model_key);
|
||||||
if (deployment==null){
|
if (deployment==null){
|
||||||
throw new BadRequestException("当前单据类型未配置业务流程");
|
throw new BadRequestException("当前单据类型未配置业务流程");
|
||||||
}
|
}
|
||||||
@@ -62,7 +60,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
|||||||
ExecutionEntity entity = new ExecutionEntity();
|
ExecutionEntity entity = new ExecutionEntity();
|
||||||
entity.setCurrentFlowElement(bpmnModel.getStartEvent());
|
entity.setCurrentFlowElement(bpmnModel.getStartEvent());
|
||||||
entity.setT(mst);
|
entity.setT(mst);
|
||||||
entity.setForm_type(form_type);
|
entity.setForm_type(deployment.getForm_type());
|
||||||
entity.setForm_id(mst.getString("id"));
|
entity.setForm_id(mst.getString("id"));
|
||||||
entity.setStartActivityId(entity.getActivityId());
|
entity.setStartActivityId(entity.getActivityId());
|
||||||
entity.setDeploymentId(deployment.getDeployment_id());
|
entity.setDeploymentId(deployment.getDeployment_id());
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public class ActDeModelServiceImpl extends ServiceImpl<ActDeModelMapper, ActDeMo
|
|||||||
procdef.setDeployment_id(IdUtil.getStringId());
|
procdef.setDeployment_id(IdUtil.getStringId());
|
||||||
procdef.setName(dto.getName());
|
procdef.setName(dto.getName());
|
||||||
procdef.setModel_key(dto.getModel_key());
|
procdef.setModel_key(dto.getModel_key());
|
||||||
|
procdef.setForm_type(dto.getForm_type());
|
||||||
procdef.setVersion(String.valueOf(dto.getVersion()));
|
procdef.setVersion(String.valueOf(dto.getVersion()));
|
||||||
procdef.setDescription(dto.getDescription());
|
procdef.setDescription(dto.getDescription());
|
||||||
procdef.setModel_editor_json(dto.getModel_editor_json());
|
procdef.setModel_editor_json(dto.getModel_editor_json());
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
|||||||
items.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
// iMdGroupMstService.save(mdGroupMst);
|
// 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;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -24,7 +30,18 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
public class PmFormDataController {
|
public class PmFormDataController {
|
||||||
|
|
||||||
@Autowired
|
@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}")
|
@GetMapping("/sync/{type}")
|
||||||
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl){
|
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl){
|
||||||
|
|||||||
@@ -67,12 +67,12 @@ public class PmFormData implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 创建id
|
* 创建id
|
||||||
*/
|
*/
|
||||||
private String update_time;
|
private String create_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建id
|
* 创建id
|
||||||
*/
|
*/
|
||||||
private String update_name;
|
private String create_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料id
|
* 物料id
|
||||||
@@ -93,10 +93,6 @@ public class PmFormData implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String vehicle_code;
|
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
|
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
|
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}
|
username: ${DB_USER:root}
|
||||||
password: ${DB_PWD:password}
|
password: ${DB_PWD:123456}
|
||||||
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
|
|||||||
@@ -1,125 +1,125 @@
|
|||||||
<template>
|
<!--<template>-->
|
||||||
<el-dialog
|
<!-- <el-dialog-->
|
||||||
title="导入Excel文件"
|
<!-- title="导入Excel文件"-->
|
||||||
append-to-body
|
<!-- append-to-body-->
|
||||||
:visible.sync="dialogVisible"
|
<!-- :visible.sync="dialogVisible"-->
|
||||||
destroy-on-close
|
<!-- destroy-on-close-->
|
||||||
width="400px"
|
<!-- width="400px"-->
|
||||||
:show-close="true"
|
<!-- :show-close="true"-->
|
||||||
@close="close"
|
<!-- @close="close"-->
|
||||||
@open="open"
|
<!-- @open="open"-->
|
||||||
>
|
<!-- >-->
|
||||||
<el-upload
|
<!-- <el-upload-->
|
||||||
ref="upload"
|
<!-- ref="upload"-->
|
||||||
class="upload-demo"
|
<!-- class="upload-demo"-->
|
||||||
action=""
|
<!-- action=""-->
|
||||||
drag
|
<!-- drag-->
|
||||||
:on-exceed="is_one"
|
<!-- :on-exceed="is_one"-->
|
||||||
:limit="1"
|
<!-- :limit="1"-->
|
||||||
:auto-upload="false"
|
<!-- :auto-upload="false"-->
|
||||||
:multiple="false"
|
<!-- :multiple="false"-->
|
||||||
:show-file-list="true"
|
<!-- :show-file-list="true"-->
|
||||||
:on-change="uploadByJsqd"
|
<!-- :on-change="uploadByJsqd"-->
|
||||||
:file-list="fileList"
|
<!-- :file-list="fileList"-->
|
||||||
accept=".xlsx,.xls"
|
<!-- accept=".xlsx,.xls"-->
|
||||||
>
|
<!-- >-->
|
||||||
<i class="el-icon-upload" />
|
<!-- <i class="el-icon-upload" />-->
|
||||||
<div class="el-upload__text">
|
<!-- <div class="el-upload__text">-->
|
||||||
将文件拖到此处,或
|
<!-- 将文件拖到此处,或-->
|
||||||
<em>点击上传</em>
|
<!-- <em>点击上传</em>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<div slot="tip" class="el-upload__tip">只能上传Excel文件,且不超过10MB</div>
|
<!-- <div slot="tip" class="el-upload__tip">只能上传Excel文件,且不超过10MB</div>-->
|
||||||
</el-upload>
|
<!-- </el-upload>-->
|
||||||
<span slot="footer" class="dialog-footer">
|
<!-- <span slot="footer" class="dialog-footer">-->
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<!-- <el-button @click="dialogVisible = false">取 消</el-button>-->
|
||||||
<el-button type="primary" @click="submit">确 定</el-button>
|
<!-- <el-button type="primary" @click="submit">确 定</el-button>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
</el-dialog>
|
<!-- </el-dialog>-->
|
||||||
</template>
|
<!--</template>-->
|
||||||
|
|
||||||
<script>
|
<!--<script>-->
|
||||||
import crudClassstandard from './classstandard'
|
<!--import crudClassstandard from './classstandard'-->
|
||||||
import CRUD, { crud } from '@crud/crud'
|
<!--import CRUD, { crud } from '@crud/crud'-->
|
||||||
import { download2 } from '@/api/data'
|
<!--import { download2 } from '@/api/data'-->
|
||||||
import { downloadFile } from '@/utils'
|
<!--import { downloadFile } from '@/utils'-->
|
||||||
|
|
||||||
export default {
|
<!--export default {-->
|
||||||
name: 'UploadDialog',
|
<!-- name: 'UploadDialog',-->
|
||||||
mixins: [crud()],
|
<!-- mixins: [crud()],-->
|
||||||
components: {},
|
<!-- components: {},-->
|
||||||
props: {
|
<!-- props: {-->
|
||||||
dialogShow: {
|
<!-- dialogShow: {-->
|
||||||
type: Boolean,
|
<!-- type: Boolean,-->
|
||||||
default: false
|
<!-- default: false-->
|
||||||
},
|
<!-- },-->
|
||||||
openParam: {
|
<!-- openParam: {-->
|
||||||
type: String
|
<!-- type: String-->
|
||||||
}
|
<!-- }-->
|
||||||
},
|
<!-- },-->
|
||||||
data() {
|
<!-- data() {-->
|
||||||
return {
|
<!-- return {-->
|
||||||
dialogVisible: false,
|
<!-- dialogVisible: false,-->
|
||||||
fileList: [],
|
<!-- fileList: [],-->
|
||||||
file1: ''
|
<!-- file1: ''-->
|
||||||
}
|
<!-- }-->
|
||||||
},
|
<!-- },-->
|
||||||
watch: {
|
<!-- watch: {-->
|
||||||
dialogShow: {
|
<!-- dialogShow: {-->
|
||||||
handler(newValue, oldValue) {
|
<!-- handler(newValue, oldValue) {-->
|
||||||
this.dialogVisible = newValue
|
<!-- this.dialogVisible = newValue-->
|
||||||
}
|
<!-- }-->
|
||||||
},
|
<!-- },-->
|
||||||
openParam: {
|
<!-- openParam: {-->
|
||||||
handler(newValue, oldValue) {
|
<!-- handler(newValue, oldValue) {-->
|
||||||
this.opendtlParam = newValue
|
<!-- this.opendtlParam = newValue-->
|
||||||
}
|
<!-- }-->
|
||||||
}
|
<!-- }-->
|
||||||
},
|
<!-- },-->
|
||||||
methods: {
|
<!-- methods: {-->
|
||||||
open() {
|
<!-- open() {-->
|
||||||
},
|
<!-- },-->
|
||||||
close() {
|
<!-- close() {-->
|
||||||
this.$emit('update:dialogShow', false)
|
<!-- this.$emit('update:dialogShow', false)-->
|
||||||
},
|
<!-- },-->
|
||||||
is_one() {
|
<!-- is_one() {-->
|
||||||
this.crud.notify('只能上传一个excel文件!', CRUD.NOTIFICATION_TYPE.WARNING)
|
<!-- this.crud.notify('只能上传一个excel文件!', CRUD.NOTIFICATION_TYPE.WARNING)-->
|
||||||
},
|
<!-- },-->
|
||||||
// 文件校验方法
|
<!-- // 文件校验方法-->
|
||||||
beforeAvatarUpload(file) {
|
<!-- beforeAvatarUpload(file) {-->
|
||||||
// 不能导入大小超过2Mb的文件
|
<!-- // 不能导入大小超过2Mb的文件-->
|
||||||
if (file.size > 10 * 1024 * 1024) {
|
<!-- if (file.size > 10 * 1024 * 1024) {-->
|
||||||
return false
|
<!-- return false-->
|
||||||
}
|
<!-- }-->
|
||||||
return true
|
<!-- return true-->
|
||||||
},
|
<!-- },-->
|
||||||
// 文件发生改变就会触发的事件
|
<!-- // 文件发生改变就会触发的事件-->
|
||||||
uploadByJsqd(file) {
|
<!-- uploadByJsqd(file) {-->
|
||||||
this.file1 = file
|
<!-- this.file1 = file-->
|
||||||
},
|
<!-- },-->
|
||||||
submit() {
|
<!-- submit() {-->
|
||||||
if (this.beforeAvatarUpload(this.file1)) {
|
<!-- if (this.beforeAvatarUpload(this.file1)) {-->
|
||||||
this.fileList.name = this.file1.name
|
<!-- this.fileList.name = this.file1.name-->
|
||||||
this.fileList.url = ''
|
<!-- this.fileList.url = ''-->
|
||||||
var formdata = new FormData()
|
<!-- var formdata = new FormData()-->
|
||||||
formdata.append('file', this.file1.raw)
|
<!-- formdata.append('file', this.file1.raw)-->
|
||||||
// excelImport:请求接口 formdata:传递参数
|
<!-- // excelImport:请求接口 formdata:传递参数-->
|
||||||
crudClassstandard.excelImport(formdata).then((res) => {
|
<!-- crudClassstandard.excelImport(formdata).then((res) => {-->
|
||||||
this.crud.notify('导入成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
<!-- this.crud.notify('导入成功', CRUD.NOTIFICATION_TYPE.SUCCESS)-->
|
||||||
this.$emit('tableChanged3', '')
|
<!-- this.$emit('tableChanged3', '')-->
|
||||||
this.$emit('update:dialogShow', false)
|
<!-- this.$emit('update:dialogShow', false)-->
|
||||||
}).catch(err => {
|
<!-- }).catch(err => {-->
|
||||||
|
|
||||||
const list = err.response.data.message
|
<!-- const list = err.response.data.message-->
|
||||||
download2('/api/produceWorkorder/download', list).then(result => {
|
<!-- download2('/api/produceWorkorder/download', list).then(result => {-->
|
||||||
downloadFile(result, '错误信息汇总', 'xlsx')
|
<!-- downloadFile(result, '错误信息汇总', 'xlsx')-->
|
||||||
crud.downloadLoading = false
|
<!-- crud.downloadLoading = false-->
|
||||||
})
|
<!-- })-->
|
||||||
})
|
<!-- })-->
|
||||||
} else {
|
<!-- } else {-->
|
||||||
this.crud.notify('文件过大,请上传小于10MB的文件〜', CRUD.NOTIFICATION_TYPE.WARNING)
|
<!-- this.crud.notify('文件过大,请上传小于10MB的文件〜', CRUD.NOTIFICATION_TYPE.WARNING)-->
|
||||||
}
|
<!-- }-->
|
||||||
}
|
<!-- }-->
|
||||||
}
|
<!-- }-->
|
||||||
}
|
<!--}-->
|
||||||
</script>
|
<!--</script>-->
|
||||||
|
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
export function add(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function del(ids) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/',
|
|
||||||
method: 'delete',
|
|
||||||
data: ids
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function edit(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getClass(params) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/loadClass',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getClassSuperior(ids) {
|
|
||||||
const data = ids.length || ids.length === 0 ? ids : Array.of(ids)
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/superior',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export function getClassSuperior2(ids) {
|
|
||||||
const data = ids.length || ids.length === 0 ? ids : Array.of(ids)
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/superior2',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getClassType(params) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/getClass',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export function queryClassById(params) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/queryClassById',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 传入分类标识和级别
|
|
||||||
export function getType(params) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/getType',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getClassTable(params) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/getClassTable',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getClassName() {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/getClassName',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function excelImport(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/bmClassStandard/excelImport',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default { add, edit, del, getClass, getClassSuperior,getClassSuperior2, getClassType, getClassTable, getType, queryClassById, getClassName, excelImport }
|
|
||||||
35
wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js
Normal file
35
wms_pro/qd/src/views/wms/pm_manage/form_data/formData.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function add(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/pmFormData',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function del(ids) {
|
||||||
|
return request({
|
||||||
|
url: 'api/pmFormData',
|
||||||
|
method: 'delete',
|
||||||
|
data: ids
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function edit(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/pmFormData',
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getFormType() {
|
||||||
|
return request({
|
||||||
|
url: 'api/bmFormStruc/getTypes',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default { add, edit, del, getFormType }
|
||||||
@@ -11,18 +11,18 @@
|
|||||||
label-width="90px"
|
label-width="90px"
|
||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
<el-form-item label="分类名称">
|
<el-form-item label="单据类型">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.class_code"
|
v-model="query.form_type"
|
||||||
placeholder="请选择分类名称"
|
placeholder="请选择单据类型"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
size="mini"
|
size="mini"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
style="width: 185px;"
|
style="width: 185px;"
|
||||||
@change="hand">
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in classNames"
|
v-for="item in fromTypes"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value">
|
:value="item.value">
|
||||||
@@ -40,7 +40,6 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
type="success"
|
type="success"
|
||||||
icon="el-icon-s-operation"
|
icon="el-icon-s-operation"
|
||||||
@click="ToExpandall"
|
|
||||||
>
|
>
|
||||||
全部展开
|
全部展开
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -50,56 +49,15 @@
|
|||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-upload2"
|
icon="el-icon-upload2"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="uploadShow = true"
|
|
||||||
>
|
>
|
||||||
导入
|
导入
|
||||||
</el-button>
|
</el-button>
|
||||||
</crudOperation>
|
</crudOperation>
|
||||||
<!--表单组件-->
|
|
||||||
<el-dialog
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:before-close="crud.cancelCU"
|
|
||||||
:visible.sync="crud.status.cu > 0"
|
|
||||||
:title="crud.status.title"
|
|
||||||
width="500px"
|
|
||||||
>
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
|
||||||
<el-form-item label="分类编码" prop="class_code">
|
|
||||||
<el-input v-model="form.class_code" style="width: 370px;" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="分类名称" prop="class_name">
|
|
||||||
<el-input v-model="form.class_name" style="width: 370px;" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="简要描述" prop="class_desc">
|
|
||||||
<el-input v-model="form.class_desc" style="width: 370px;" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="顶级类目">
|
|
||||||
<el-radio-group v-model="form.isTop" style="width: 140px">
|
|
||||||
<el-radio label="1">是</el-radio>
|
|
||||||
<el-radio label="0">否</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" label="上级类目" prop="pid">
|
|
||||||
<treeselect
|
|
||||||
v-model="form.parent_class_id"
|
|
||||||
:load-options="loadClass"
|
|
||||||
:options="classes"
|
|
||||||
style="width: 370px;"
|
|
||||||
placeholder="选择上级类目"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
|
||||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
<el-table
|
<el-table
|
||||||
ref="table"
|
ref="table"
|
||||||
v-loading="crud.loading"
|
v-loading="crud.loading"
|
||||||
lazy
|
lazy
|
||||||
:load="getClassDatas"
|
|
||||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||||
:data="crud.data"
|
:data="crud.data"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
@@ -107,12 +65,19 @@
|
|||||||
@select-all="crud.selectAllChange"
|
@select-all="crud.selectAllChange"
|
||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column prop="class_code" label="分类编码" />
|
<el-table-column prop="code" label="单据编码" />
|
||||||
<el-table-column prop="class_name" label="分类名称" />
|
<el-table-column prop="form_type" label="单据类型" />
|
||||||
<el-table-column prop="class_desc" label="分类简要描述" />
|
<el-table-column prop="biz_code" label="业务单据编码" />
|
||||||
<el-table-column prop="update_optname" label="修改人" />
|
<el-table-column prop="biz_date" label="业务单据时间" />
|
||||||
<el-table-column prop="update_time" label="修改时间" />
|
<el-table-column prop="material_id" label="物料id" />
|
||||||
<el-table-column prop="is_modify" :formatter="modifyFormat" label="是否可修改" />
|
<el-table-column prop="pcsn" label="批次" />
|
||||||
|
<el-table-column prop="qty" label="物料数量" />
|
||||||
|
<el-table-column prop="vehicle_code" label="载具编号" />
|
||||||
|
<el-table-column prop="status" label="单据状态" />
|
||||||
|
<el-table-column prop="proc_inst_id" label="对应流程实例id" />
|
||||||
|
<el-table-column prop="parent_id" label="父单据数据id" />
|
||||||
|
<el-table-column prop="create_time" label="创建时间" />
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-permission="['admin','Classstandard:edit','Classstandard:del']"
|
v-permission="['admin','Classstandard:edit','Classstandard:del']"
|
||||||
label="操作"
|
label="操作"
|
||||||
@@ -128,20 +93,18 @@
|
|||||||
:disabled-dle="scope.row.is_modify === '0'"
|
:disabled-dle="scope.row.is_modify === '0'"
|
||||||
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
|
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
|
||||||
/>
|
/>
|
||||||
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
|
|
||||||
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination />
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
<UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="crud.toQuery()"/>
|
<!-- <UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="crud.toQuery()"/>-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import crudClassstandard from './classstandard'
|
import crudFormData from './formData'
|
||||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
@@ -149,7 +112,7 @@ import crudOperation from '@crud/CRUD.operation'
|
|||||||
import udOperation from '@crud/UD.operation'
|
import udOperation from '@crud/UD.operation'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import UploadDialog from './UploadDialog'
|
// import UploadDialog from './UploadDialog'
|
||||||
|
|
||||||
let defaultForm = {
|
let defaultForm = {
|
||||||
class_id: null,
|
class_id: null,
|
||||||
@@ -176,17 +139,17 @@ let defaultForm = {
|
|||||||
isTop: '1'
|
isTop: '1'
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
name: 'Classstandard',
|
name: 'FormData',
|
||||||
dicts: ['base_data'],
|
dicts: ['base_data'],
|
||||||
components: {UploadDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect },
|
components: {pagination, crudOperation, rrOperation, udOperation, Treeselect },
|
||||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
cruds() {
|
cruds() {
|
||||||
return CRUD({
|
return CRUD({
|
||||||
title: '基础类别',
|
title: '基础类别',
|
||||||
url: 'api/bmClassStandard',
|
url: 'api/pmFormData',
|
||||||
idField: 'class_id',
|
idField: 'id',
|
||||||
sort: 'class_id,desc',
|
sort: 'id,desc',
|
||||||
crudMethod: { ...crudClassstandard },
|
crudMethod: { ...crudFormData },
|
||||||
optShow: {
|
optShow: {
|
||||||
add: true,
|
add: true,
|
||||||
reset: true
|
reset: true
|
||||||
@@ -197,217 +160,23 @@ export default {
|
|||||||
return {
|
return {
|
||||||
classes: [],
|
classes: [],
|
||||||
uploadShow: false,
|
uploadShow: false,
|
||||||
classNames: [],
|
fromTypes: [],
|
||||||
permission: {},
|
permission: {},
|
||||||
rules: {
|
rules: {
|
||||||
class_id: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
path_code: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
class_code: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
class_name: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
is_leaf: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
is_modify: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
is_delete: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
create_id: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
create_name: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
create_time: [
|
|
||||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getClassNames() // 获取分类
|
this.getFromTypes()
|
||||||
|
this.crud.query.from_type = this.fromTypes[0].value
|
||||||
|
// 获取分类
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getClassNames() {
|
getFromTypes() {
|
||||||
crudClassstandard.getClassName().then((res) => { // 获取分类名称,查询根据分类编码查找对应分支树
|
crudFormData.getFormType().then((res) => { // 获取分类名称,查询根据分类编码查找对应分支树
|
||||||
this.classNames = res
|
this.fromTypes = res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getClassDatas(tree, treeNode, resolve) {
|
|
||||||
const params = { pid: tree.id }
|
|
||||||
setTimeout(() => {
|
|
||||||
crudClassstandard.getClass(params).then(res => {
|
|
||||||
resolve(res.content)
|
|
||||||
})
|
|
||||||
}, 100)
|
|
||||||
},
|
|
||||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
|
||||||
[CRUD.HOOK.beforeRefresh]() {
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
modifyFormat(row, index) {
|
|
||||||
if (row.is_modify === '1') {
|
|
||||||
return '是'
|
|
||||||
} else {
|
|
||||||
return '否'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataTypeChange(data) {
|
|
||||||
crudClassstandard.getClass({ base_data_type: data }).then(res => {
|
|
||||||
this.classes = res.content.map(function(obj) {
|
|
||||||
if (obj.hasChildren) {
|
|
||||||
obj.children = null
|
|
||||||
}
|
|
||||||
return obj
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增与编辑前做的操作
|
|
||||||
[CRUD.HOOK.afterToCU](crud, form) {
|
|
||||||
if (form.parent_class_id !== '0' && form.parent_class_id !== null) {
|
|
||||||
form.isTop = '0'
|
|
||||||
} else if (form.class_id !== '0' && form.class_id !== null) {
|
|
||||||
form.isTop = '1'
|
|
||||||
}
|
|
||||||
form.enabled = `${form.enabled}`
|
|
||||||
if (form.class_id != null) {
|
|
||||||
this.getSubTypes(form.id)
|
|
||||||
} else {
|
|
||||||
this.getClass()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 提交前的验证
|
|
||||||
[CRUD.HOOK.afterValidateCU]() {
|
|
||||||
// if (this.form.parent_class_id !== null && this.form.parent_class_id === this.form.class_id) {
|
|
||||||
// this.$message({
|
|
||||||
// message: '顶级类目不能为空',
|
|
||||||
// type: 'warning'
|
|
||||||
// })
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
if (this.form.isTop === '1') {
|
|
||||||
this.form.parent_class_id = 0
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
getSubTypes(id) {
|
|
||||||
crudClassstandard.getClassSuperior(id).then(res => {
|
|
||||||
const date = res.content
|
|
||||||
this.buildClass(date)
|
|
||||||
this.classes = date
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getClass() {
|
|
||||||
crudClassstandard.getClass({ enabled: true }).then(res => {
|
|
||||||
this.classes = res.content.map(function(obj) {
|
|
||||||
if (obj.hasChildren) {
|
|
||||||
obj.children = null
|
|
||||||
}
|
|
||||||
return obj
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
buildClass(classes) {
|
|
||||||
classes.forEach(data => {
|
|
||||||
if (data.children) {
|
|
||||||
this.buildClass(data.children)
|
|
||||||
}
|
|
||||||
if (data.hasChildren && !data.children) {
|
|
||||||
data.children = null
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取弹窗内部门数据
|
|
||||||
loadClass({ action, parentNode, callback }) {
|
|
||||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
|
||||||
crudClassstandard.getClass({ pid: parentNode.id }).then(res => {
|
|
||||||
parentNode.children = res.content.map(function(obj) {
|
|
||||||
if (obj.hasChildren) {
|
|
||||||
obj.children = null
|
|
||||||
}
|
|
||||||
return obj
|
|
||||||
})
|
|
||||||
setTimeout(() => {
|
|
||||||
callback()
|
|
||||||
}, 100)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
clearFrom() {
|
|
||||||
defaultForm = {
|
|
||||||
id: null,
|
|
||||||
class_id: null,
|
|
||||||
base_data_type: null,
|
|
||||||
path_code: null,
|
|
||||||
class_code: null,
|
|
||||||
long_class_code: null,
|
|
||||||
class_name: null,
|
|
||||||
class_desc: null,
|
|
||||||
parent_class_id: null,
|
|
||||||
is_leaf: null,
|
|
||||||
sub_count: null,
|
|
||||||
is_modify: null,
|
|
||||||
is_delete: null,
|
|
||||||
class_level: null,
|
|
||||||
ext_id: null,
|
|
||||||
ext_parent_id: null,
|
|
||||||
create_id: null,
|
|
||||||
create_name: null,
|
|
||||||
create_time: null,
|
|
||||||
update_optid: null,
|
|
||||||
update_optname: null,
|
|
||||||
update_time: null,
|
|
||||||
isTop: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
addSibling(row) {
|
|
||||||
this.clearFrom() // 将默认的表单数据清除
|
|
||||||
defaultForm.id = row.id // 获取分类树的id - 懒加载依赖此id,不可为空
|
|
||||||
defaultForm.class_id = row.class_id
|
|
||||||
defaultForm.parent_class_id = row.parent_class_id // 同级为父类class_id
|
|
||||||
defaultForm.isTop = row.isTop
|
|
||||||
return defaultForm
|
|
||||||
},
|
|
||||||
addChildren(row) {
|
|
||||||
this.clearFrom()
|
|
||||||
defaultForm.id = row.id // 获取分类树的id
|
|
||||||
defaultForm.class_id = row.parent_class_id
|
|
||||||
defaultForm.parent_class_id = row.id // 子级为本身的class_id
|
|
||||||
defaultForm.isTop = row.isTop
|
|
||||||
return defaultForm
|
|
||||||
},
|
|
||||||
// 全部展开 参考:https://www.cnblogs.com/toughy/p/12667805.html
|
|
||||||
ToExpandall() {
|
|
||||||
const els = document.getElementsByClassName('el-table__expand-icon')
|
|
||||||
if (this.crud.data.length !== 0 && els.length !== 0) {
|
|
||||||
for (let j1 = 0; j1 < els.length; j1++) {
|
|
||||||
els[j1].classList.add('dafult')
|
|
||||||
}
|
|
||||||
if (this.$el.getElementsByClassName('el-table__expand-icon--expanded')) {
|
|
||||||
const open = this.$el.getElementsByClassName('el-table__expand-icon--expanded')
|
|
||||||
for (let j = 0; j < open.length; j++) {
|
|
||||||
open[j].classList.remove('dafult')
|
|
||||||
}
|
|
||||||
const dafult = this.$el.getElementsByClassName('dafult')
|
|
||||||
for (let a = 0; a < dafult.length; a++) {
|
|
||||||
|
|
||||||
dafult[a].click()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
hand(value) {
|
|
||||||
this.crud.toQuery()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user