add:映射

This commit is contained in:
2024-03-08 13:48:47 +08:00
parent ce7403b682
commit 803a4b30bd
19 changed files with 1286 additions and 31 deletions

10
wms_pro/hd/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Zeppelin ignored files
/ZeppelinRemoteNotebooks/

8
wms_pro/hd/nladmin-system/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
### IDEA ###
*/*.log
.idea/*
*.iml
*/target/*
*/*.iml
/.gradle/
/target/*

View File

@@ -39,7 +39,7 @@
<dependency> <dependency>
<groupId>com.github.oshi</groupId> <groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId> <artifactId>oshi-core</artifactId>
<version>5.3.6</version> <version>5.8.5</version>
</dependency> </dependency>
<dependency> <dependency>
@@ -280,7 +280,7 @@
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <configuration>
<mainClass>org.nl.AppRun</mainClass> <mainClass>org.nl.AppRun</mainClass>
<fork>true</fork> <!-- 如果没有该配置devtools不会生效 --> <!--<fork>true</fork>--> <!-- 如果没有该配置devtools不会生效 -->
</configuration> </configuration>
<executions> <executions>

View File

@@ -56,10 +56,10 @@ public class CodeGenerator {
mpg.setGlobalConfig(gc); mpg.setGlobalConfig(gc);
// 数据源配置 // 数据源配置
DataSourceConfig dsc = new DataSourceConfig(); DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/hl_one_mes?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8"); dsc.setUrl("jdbc:mysql://localhost:3306/wms?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root"); dsc.setUsername("root");
dsc.setPassword("942464Yy"); dsc.setPassword("password");
mpg.setDataSource(dsc); mpg.setDataSource(dsc);
// 包配置 // 包配置
PackageConfig pc = new PackageConfig(); PackageConfig pc = new PackageConfig();

View File

@@ -0,0 +1,92 @@
package org.nl.wms.base_manage.field_mapping.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.base_manage.field_mapping.service.IBmExternalFieldMappingService;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import org.nl.wms.base_manage.field_mapping.service.dto.MappingQuery;
import org.nl.wms.base_manage.field_mapping.service.dto.RequestMappingParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
* <p>
* 同步字段映射表 前端控制器
* </p>
*
* @author generator
* @since 2024-03-06
*/
@RestController
@RequestMapping("/api/externalFieldMapping")
public class BmExternalFieldMappingController {
@Autowired
private IBmExternalFieldMappingService mappingsService;
@GetMapping
public ResponseEntity<Object> getAll(MappingQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(mappingsService.page(page.build(), query.build())), HttpStatus.OK);
}
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody BmExternalFieldMapping dto) {
mappingsService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PostMapping("/addRows")
public ResponseEntity<Object> addRows(@RequestBody RequestMappingParam param) {
mappingsService.addRows(param);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody BmExternalFieldMapping dto) {
mappingsService.update(dto, new LambdaUpdateWrapper<BmExternalFieldMapping>().eq(BmExternalFieldMapping::getId, dto.getId()));
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping("/updateRows")
public ResponseEntity<Object> updateRows(@RequestBody RequestMappingParam param) {
mappingsService.updateRows(param);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
if (ids.length > 0) {
mappingsService.removeByIds(Arrays.asList(ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/getTableColumnNames/{table_name}")
public ResponseEntity<Object> getTableColumnNames(@PathVariable String table_name) {
return new ResponseEntity<>(mappingsService.getTableColumnNames(table_name), HttpStatus.OK);
}
@GetMapping("/getTableColumnNamesFromMapping/{table_name}")
public ResponseEntity<Object> getTableColumnNamesFromMapping(@PathVariable String table_name) {
return new ResponseEntity<>(mappingsService.getTableColumnNamesFromMapping(table_name), HttpStatus.OK);
}
@GetMapping("/getAllTableName")
public ResponseEntity<Object> getAllTableName() {
return new ResponseEntity<>(mappingsService.getAllTableName(), HttpStatus.OK);
}
@GetMapping("/getExistTableName")
public ResponseEntity<Object> getExistTableName() {
return new ResponseEntity<>(mappingsService.getExistTableName(), HttpStatus.OK);
}
}

View File

@@ -0,0 +1,66 @@
package org.nl.wms.base_manage.field_mapping.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import org.nl.wms.base_manage.field_mapping.service.dto.RequestMappingParam;
import java.util.List;
import java.util.Map;
/**
* <p>
* 同步字段映射表 服务类
* </p>
*
* @author generator
* @since 2024-03-06
*/
public interface IBmExternalFieldMappingService extends IService<BmExternalFieldMapping> {
/**
* 根据数据表名获取所有字段名称
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNames(String tableName);
/**
* 获取数据库中所有表的名称
*
* @return
*/
List<String> getAllTableName();
/**
* 查询已配置的数据库表名
*
* @return
*/
List<String> getExistTableName();
/**
* 批量添加
*
* @param param
*/
void addRows(RequestMappingParam param);
/**
* 批量修改
*
* @param param
*/
void updateRows(RequestMappingParam param);
/**
* 从映射关系表中获取已配置映射关系的
*
* @param table_name
* @return
*/
BmExternalFieldMapping getTableColumnNamesFromMapping(String table_name);
}

View File

@@ -0,0 +1,79 @@
package org.nl.wms.base_manage.field_mapping.service.dao;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nl.wms.base_manage.field_mapping.service.dto.MappingDto;
/**
* <p>
* 同步字段映射表
* </p>
*
* @author generator
* @since 2024-03-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("bm_external_field_mapping")
public class BmExternalFieldMapping implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 本地数据库表名称
*/
private String local_table_name;
/**
* 接口地址
*/
private String api_address;
/**
* 同步类型
*/
private String sync_type;
/**
* 外部系统
*/
private String external_system;
/**
* 映射关系
*/
private String mapping_json;
/**
* 修改人ID
*/
private String last_update_id;
/**
* 修改人名称
*/
private String last_update_name;
/**
* 修改时间
*/
private String last_update_time;
/**
* mapping_json解析
*/
@TableField(exist = false)
private List<MappingDto> dtos = new ArrayList<>();
}

View File

@@ -0,0 +1,41 @@
package org.nl.wms.base_manage.field_mapping.service.dao.mapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 同步字段映射表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-03-06
*/
public interface BmExternalFieldMappingMapper extends BaseMapper<BmExternalFieldMapping> {
/**
* 根据数据表名获取所有字段名称
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNames(@Param("tableName") String tableName);
/**
* 获取数据库中所有表的名称
*
* @return
*/
List<String> getAllTableName();
/**
* 查询已配置的数据库表名
*
* @return
*/
List<String> getExistTableName();
}

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.base_manage.field_mapping.service.dao.mapper.BmExternalFieldMappingMapper">
<select id="getTableColumnNames" resultType="map">
SELECT COLUMN_NAME local_field_name,
"" as external_field_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = #{tableName}
</select>
<select id="getAllTableName" resultType="java.lang.String">
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_SCHEMA = DATABASE();
</select>
<select id="getExistTableName" resultType="java.lang.String">
SELECT distinct local_table_name
FROM bm_external_field_mapping
</select>
</mapper>

View File

@@ -0,0 +1,14 @@
package org.nl.wms.base_manage.field_mapping.service.dto;
import lombok.Data;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/3/8
*/
@Data
public class MappingDto {
private String local_field_name;
private String external_field_name;
}

View File

@@ -0,0 +1,27 @@
package org.nl.wms.base_manage.field_mapping.service.dto;
import lombok.Data;
import org.nl.common.domain.entity.BaseQuery;
import org.nl.common.domain.entity.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
/*
* @author ZZQ
* @Date 2023/5/4 19:49
*/
@Data
public class MappingQuery extends BaseQuery<BmExternalFieldMapping> {
private String local_table_name;
private String search;
@Override
public void paramMapping() {
super.doP.put("local_table_name", QParam.builder().k(new String[]{"local_table_name"}).type(QueryTEnum.EQ).build());
super.doP.put("search", QParam.builder().k(new String[]{"local_field_name", "external_field_name"}).type(QueryTEnum.EQ).build());
}
}

View File

@@ -0,0 +1,18 @@
package org.nl.wms.base_manage.field_mapping.service.dto;
import lombok.Data;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import java.util.List;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/3/8
*/
@Data
public class RequestMappingParam {
private BmExternalFieldMapping bmExternalFieldMapping;
private List<MappingDto> dtos;
}

View File

@@ -0,0 +1,111 @@
package org.nl.wms.base_manage.field_mapping.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.base_manage.field_mapping.service.IBmExternalFieldMappingService;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import org.nl.wms.base_manage.field_mapping.service.dao.mapper.BmExternalFieldMappingMapper;
import org.nl.wms.base_manage.field_mapping.service.dto.MappingDto;
import org.nl.wms.base_manage.field_mapping.service.dto.RequestMappingParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 同步字段映射表 服务实现类
* </p>
*
* @author generator
* @since 2024-03-06
*/
@Service
public class BmExternalFieldMappingServiceImpl extends ServiceImpl<BmExternalFieldMappingMapper, BmExternalFieldMapping> implements IBmExternalFieldMappingService {
@Autowired(required = false)
private BmExternalFieldMappingMapper mappingMapper;
@Override
public List<Map<String, String>> getTableColumnNames(String tableName) {
return mappingMapper.getTableColumnNames(tableName);
}
@Override
public List<String> getAllTableName() {
List<String> allTableName = mappingMapper.getAllTableName();
List<String> existTableName = this.getExistTableName();
allTableName.removeAll(existTableName);
return allTableName;
}
@Override
public List<String> getExistTableName() {
return mappingMapper.getExistTableName();
}
@Override
public void addRows(RequestMappingParam param) {
BmExternalFieldMapping mapping = param.getBmExternalFieldMapping();
List<MappingDto> dtos = param.getDtos();
Assert.notNull(dtos, "映射关系不能为空!");
Map<String, String> mappingJson = dtos.stream().collect(Collectors.toMap(MappingDto::getExternal_field_name, MappingDto::getLocal_field_name));
mapping.setMapping_json(JSON.toJSONString(mappingJson));
mapping.setId(IdUtil.getStringId());
mapping.setLast_update_id(SecurityUtils.getCurrentUserId());
mapping.setLast_update_name(SecurityUtils.getCurrentNickName());
mapping.setLast_update_time(DateUtil.now());
mappingMapper.insert(mapping);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void updateRows(RequestMappingParam param) {
BmExternalFieldMapping mapping = param.getBmExternalFieldMapping();
LambdaUpdateWrapper<BmExternalFieldMapping> luw = new LambdaUpdateWrapper<>();
luw.eq(BmExternalFieldMapping::getLocal_table_name, mapping.getLocal_table_name());
List<MappingDto> dtos = param.getDtos();
mappingMapper.delete(luw);
if (ObjectUtil.isNotEmpty(dtos)) {
Map<String, String> mappingJson = dtos.stream().collect(Collectors.toMap(MappingDto::getExternal_field_name, MappingDto::getLocal_field_name));
mapping.setMapping_json(JSON.toJSONString(mappingJson));
mapping.setId(IdUtil.getStringId());
mapping.setLast_update_id(SecurityUtils.getCurrentUserId());
mapping.setLast_update_name(SecurityUtils.getCurrentNickName());
mapping.setLast_update_time(DateUtil.now());
mappingMapper.insert(mapping);
}
}
@Override
public BmExternalFieldMapping getTableColumnNamesFromMapping(String table_name) {
LambdaQueryWrapper<BmExternalFieldMapping> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmExternalFieldMapping::getLocal_table_name, table_name);
BmExternalFieldMapping mapping = mappingMapper.selectOne(lqw);
String mapping_json = mapping.getMapping_json();
if (StrUtil.isNotBlank(mapping_json)) {
Map<String, String> map = JSON.parseObject(mapping_json, Map.class);
List<MappingDto> list = new ArrayList<>();
map.forEach((key, value) -> {
MappingDto dto = new MappingDto();
dto.setExternal_field_name(key);
dto.setLocal_field_name(value);
list.add(dto);
});
mapping.setDtos(list);
}
return mapping;
}
}

View File

@@ -1,27 +1,26 @@
import com.alibaba.fastjson.JSONObject //import com.alibaba.fastjson.JSONObject
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice //
//def getPoints(List<PdmBiDevice> devices, Map<String, List<PdmBiDevice>> materialCollent, Double inupperlimitQty){
def getPoints(List<PdmBiDevice> devices, Map<String, List<PdmBiDevice>> materialCollent, Double inupperlimitQty){ //
// PdmBiDevice device = devices.get(0)
PdmBiDevice device = devices.get(0) // String materialId = device.getMaterial_id();
String materialId = device.getMaterial_id(); // List<PdmBiDevice> collect = materialCollent.get(materialId);
List<PdmBiDevice> collect = materialCollent.get(materialId); // Double qty = 0.0;
Double qty = 0.0; // def list = new ArrayList<>();
def list = new ArrayList<>(); // for (PdmBiDevice o1 : collect) {
for (PdmBiDevice o1 : collect) { // if (qty>inupperlimitQty){
if (qty>inupperlimitQty){ // return list;
return list; // }
} // def item = new JSONObject()
def item = new JSONObject() // item.put("device_code",o1.getDevice_code())
item.put("device_code",o1.getDevice_code()) // item.put("qty",o1.getDeviceinstor_qty());
item.put("qty",o1.getDeviceinstor_qty()); // item.put("weight",o1.getDeviceinstor_weight().doubleValue());
item.put("weight",o1.getDeviceinstor_weight().doubleValue()); // item.put("material_id",materialId);
item.put("material_id",materialId); // list.add(item);
list.add(item); // if (o1.getIs_artificial()){
if (o1.getIs_artificial()){ // return list;
return list; // }
} // qty = qty+o1.getDeviceinstor_qty();
qty = qty+o1.getDeviceinstor_qty(); // }
} // return list;
return list; //}
}

23
wms_pro/qd/.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/*.log
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local
package-lock.json
yarn.lock

View File

@@ -0,0 +1,83 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/externalFieldMapping',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/externalFieldMapping',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/externalFieldMapping',
method: 'put',
data
})
}
export function getTableColumnNames(params) {
return request({
url: 'api/externalFieldMapping/getTableColumnNames/' + params,
method: 'get',
})
}
export function getAllTableName() {
return request({
url: 'api/externalFieldMapping/getAllTableName',
method: 'get'
})
}
export function getExistTableName() {
return request({
url: 'api/externalFieldMapping/getExistTableName',
method: 'get'
})
}
export function getTableColumnNamesFromMapping(params) {
return request({
url: 'api/externalFieldMapping/getTableColumnNamesFromMapping/' + params,
method: 'get',
})
}
export function addRows(data) {
return request({
url: 'api/externalFieldMapping/addRows',
method: 'post',
data
})
}
export function updateRows(data) {
return request({
url: 'api/externalFieldMapping/updateRows',
method: 'put',
data,
})
}
export default {
add,
edit,
del,
addRows,
updateRows,
getAllTableName,
getTableColumnNames,
getExistTableName,
getTableColumnNamesFromMapping
}

View File

@@ -0,0 +1,205 @@
<template>
<el-dialog
:visible.sync="dialogVisible"
append-to-body
destroy-on-close
fullscreen
title="新增"
width="1000px"
@close="close"
@open="open"
>
<div class="crud-opts2" style="margin-bottom: 5px;margin-top: 30px">
<span class="crud-opts-right2">
<!--左侧插槽-->
<slot name="left"/>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="映射表名" prop="local_table_name">
<el-select
v-model="form.local_table_name"
clearable
filterable
size="mini"
placeholder="请选择/搜索"
class="filter-item"
@change="getColumns"
>
<el-option
v-for="item in tableNameList"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="接口地址" prop="api_address">
<el-input :disabled="!form.local_table_name" v-model="form.api_address" style="width: 180px;"/>
</el-form-item>
<el-form-item label="同步类型" prop="sync_type">
<el-select
v-model="form.sync_type"
class="filter-item"
clearable
:disabled="!form.local_table_name"
placeholder="请选择"
style="width: 180px"
>
<el-option
v-for="item in dict.sync_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="外部系统" prop="external_system">
<el-select
v-model="form.external_system"
class="filter-item"
clearable
placeholder="请选择"
style="width: 180px"
:disabled="!form.local_table_name"
>
<el-option
v-for="item in dict.external_system"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation :crud="crud"/>
</el-form>
</span>
</div>
<el-table
ref="table"
:data="tableData"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
border
highlight-current-row
style="width: 100%;"
>
<el-table-column align="center" label="序号" type="index" width="50"/>
<el-table-column align="center" fixed="right" label="操作" width="100">
<template scope="scope">
<el-button
class="filter-item"
icon="el-icon-delete"
size="mini"
type="danger"
@click.native.prevent="deleteRow(scope.$index, tableData)"
/>
</template>
</el-table-column>
<el-table-column align="center" label="字段名称" prop="local_field_name"/>
<el-table-column align="center" label="外部系统字段名称" prop="external_field_name">
<template scope="scope">
<el-input v-model="scope.row.external_field_name" size="mini"/>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancle">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="submit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import CRUD, {crud, header, presenter} from '@crud/crud'
import crudFieldMapping from '@/api/wms/base_manage/field_mapping/fieldMapping'
export default {
name: 'AddDtl',
components: {},
dicts: ['external_system', 'sync_type'],
mixins: [presenter(), header(), crud()],
props: {
form: {
type: Object,
default: () => ({})
},
dialogShow: {
type: Boolean,
default: false
}
},
data() {
return {
dialogVisible: false,
tableNameList: [],
tableData: []
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
cancle() {
this.$emit('update:dialogShow', false)
},
open() {
this.getAllTableName()
this.form = {}
},
getAllTableName() {
crudFieldMapping.getAllTableName().then(res => {
this.tableNameList = res
})
},
close() {
this.$emit('update:dialogShow', false)
this.$emit('AddChanged')
this.tableData = []
},
deleteRow(index, rows) {
rows.splice(index, 1)
},
getColumns() {
if (this.form.local_table_name === "") {
this.form.local_field_name = null
this.tableData = []
return
}
crudFieldMapping.getTableColumnNames(this.form.local_table_name).then(res => {
this.tableData = res
})
},
submit() {
if (!this.form.local_table_name) {
this.crud.notify('映射表名不能为空!', CRUD.NOTIFICATION_TYPE.INFO);
return false;
}
if (!this.form.sync_type) {
this.crud.notify('同步类型不能为空!', CRUD.NOTIFICATION_TYPE.INFO);
return false;
}
const isInvalidRow = this.tableData.some(row => !row.external_field_name);
if (isInvalidRow) {
this.crud.notify('外部字段名称不能为空!', CRUD.NOTIFICATION_TYPE.INFO);
return false;
}
const requestData = {
"bmExternalFieldMapping": this.form,
"dtos": this.tableData
}
crudFieldMapping.addRows(requestData)
this.$emit('update:dialogShow', false)
this.$emit('AddChanged')
}
}
}
</script>

View File

@@ -0,0 +1,203 @@
<template>
<el-dialog
:visible.sync="dialogVisible"
append-to-body
destroy-on-close
fullscreen
title="编辑"
width="1000px"
@close="close"
@open="open"
>
<div class="crud-opts2" style="margin-bottom: 5px;margin-top: 30px">
<span class="crud-opts-right2">
<!--左侧插槽-->
<slot name="left"/>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="映射表名" prop="local_table_name">
<el-select
v-model="form.local_table_name"
clearable
filterable
size="mini"
disabled
placeholder="请选择/搜索"
class="filter-item"
>
<el-option
v-for="item in tableNameList"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="接口地址" prop="api_address">
<el-input :disabled="!form.local_table_name" v-model="form.api_address" style="width: 180px;"/>
</el-form-item>
<el-form-item label="同步类型" prop="sync_type">
<el-select
v-model="form.sync_type"
class="filter-item"
clearable
:disabled="!form.local_table_name"
placeholder="请选择"
style="width: 180px"
>
<el-option
v-for="item in dict.sync_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="外部系统" prop="external_system">
<el-select
v-model="form.external_system"
class="filter-item"
clearable
placeholder="请选择"
style="width: 180px"
:disabled="!form.local_table_name"
>
<el-option
v-for="item in dict.external_system"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation :crud="crud"/>
</el-form>
</span>
</div>
<el-table
ref="table"
:data="tableData"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
border
highlight-current-row
style="width: 100%;"
>
<el-table-column align="center" label="序号" type="index" width="50"/>
<el-table-column align="center" fixed="right" label="操作" width="100">
<template scope="scope">
<el-button
class="filter-item"
icon="el-icon-delete"
size="mini"
type="danger"
@click.native.prevent="deleteRow(scope.$index, tableData)"
/>
</template>
</el-table-column>
<el-table-column align="center" label="字段名称" prop="local_field_name"/>
<el-table-column align="center" label="外部系统字段名称" prop="external_field_name">
<template scope="scope">
<el-input v-model="scope.row.external_field_name" size="mini"/>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancle">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="submit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import CRUD, {crud, header, presenter} from '@crud/crud'
import crudFieldMapping from '@/api/wms/base_manage/field_mapping/fieldMapping'
export default {
name: 'EditDtl',
components: {},
dicts: ['external_system', 'sync_type'],
mixins: [presenter(), header(), crud()],
props: {
form: {
type: Object,
default: () => ({})
},
dialogShow: {
type: Boolean,
default: false
}
},
data() {
return {
dialogVisible: false,
tableNameList: [],
tableData: []
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
cancle() {
this.$emit('update:dialogShow', false)
},
open() {
this.getExistTableName()
},
getExistTableName() {
crudFieldMapping.getExistTableName().then(res => {
this.tableNameList = res
})
},
setForm(row) {
this.form.id = row.id
this.form.local_table_name = row.local_table_name
this.form.api_address = row.api_address
this.form.sync_type = row.sync_type
this.form.external_system = row.external_system
this.getColumns(this.form.local_table_name)
},
close() {
this.$emit('update:dialogShow', false)
this.$emit('EditChanged')
this.tableData = []
},
deleteRow(index, rows) {
rows.splice(index, 1)
},
getColumns(local_table_name) {
crudFieldMapping.getTableColumnNamesFromMapping(local_table_name).then(res => {
this.tableData = res.dtos
})
},
submit() {
if (!this.form.local_table_name) {
this.crud.notify('映射表名不能为空!', CRUD.NOTIFICATION_TYPE.INFO);
return false;
}
const isInvalidRow = this.tableData.some(row => !row.external_field_name);
if (isInvalidRow) {
this.crud.notify('外部字段名称不能为空!', CRUD.NOTIFICATION_TYPE.INFO);
return false;
}
const requestData = {
"bmExternalFieldMapping": this.form,
"dtos": this.tableData
}
crudFieldMapping.updateRows(requestData)
this.$emit('update:dialogShow', false)
this.$emit('EditChanged')
}
}
}
</script>

View File

@@ -0,0 +1,251 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="映射表名" prop="local_table_name">
<el-select
v-model="query.local_table_name"
clearable
filterable
size="mini"
placeholder="请选择/搜索"
class="filter-item"
@change="getColumns"
>
<el-option
v-for="item in tableNameList"
:value="item"
/>
</el-select>
</el-form-item>
<rrOperation :crud="crud"/>
</el-form>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="left"
class="filter-item"
icon="el-icon-position"
size="mini"
type="success"
@click="add"
>
新增
</el-button>
<el-button
slot="left"
class="filter-item"
:disabled="crud.selections.length !== 1"
icon="el-icon-position"
size="mini"
type="primary"
@click="edit(crud.selections[0])"
>
修改
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="710px"
>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="130px">
<el-form-item label="映射表名" prop="local_table_name">
<el-select
v-model="form.local_table_name"
clearable
filterable
size="mini"
placeholder="请选择/搜索"
class="filter-item"
@change="getColumns"
>
<el-option
v-for="item in tableNameList"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="接口地址" prop="api_address">
<el-input v-model="form.api_address" style="width: 180px;"/>
</el-form-item>
<el-form-item label="同步类型" prop="sync_type">
<el-select
v-model="form.sync_type"
class="filter-item"
clearable
placeholder="请选择"
style="width: 180px"
>
<el-option
v-for="item in dict.sync_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="外部系统" prop="external_system">
<el-select
v-model="form.external_system"
class="filter-item"
clearable
placeholder="请选择"
style="width: 180px"
>
<el-option
v-for="item in dict.external_system"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</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 ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;"
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="local_table_name" label="映射表名" width="250"/>
<el-table-column prop="api_address" label="接口地址" width="250"/>
<el-table-column prop="sync_type" label="同步类型">
<template slot-scope="scope">
{{ dict.label.sync_type[scope.row.sync_type] }}
</template>
</el-table-column>
<el-table-column prop="external_system" label="外部系统">
<template slot-scope="scope">
{{ dict.label.external_system[scope.row.external_system] }}
</template>
</el-table-column>
<el-table-column prop="mapping_json" label="映射关系" show-overflow-tooltip/>
<el-table-column prop="last_update_name" label="更新人"/>
<el-table-column prop="last_update_time" label="更新时间" width="150"/>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
</div>
<AddDialog :form="form" :dialog-show.sync="addShow" @AddChanged="querytable1"/>
<EditDialog :form="form" ref="editRef" :dialog-show.sync="editShow" @EditChanged="querytable"/>
</div>
</template>
<script>
import crudFieldMapping from '@/api/wms/base_manage/field_mapping/fieldMapping'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import rrOperation from '@crud/RR.operation.vue'
import crudOperation from '@crud/CRUD.operation.vue'
import udOperation from '@crud/UD.operation.vue'
import pagination from '@crud/Pagination.vue'
import AddDialog from '@/views/wms/base_manage/field_mapping/AddDialog'
import EditDialog from '@/views/wms/base_manage/field_mapping/EditDialog'
const defaultForm = {
id: null,
local_table_name: null,
api_address: null,
sync_type: null,
external_system: null,
mapping_json: null
}
export default {
name: 'ExternalFieldMapping',
components: {pagination, crudOperation, rrOperation, udOperation, AddDialog, EditDialog},
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['external_system', 'sync_type'],
cruds() {
return CRUD({
title: '外部系统字段映射',
url: 'api/externalFieldMapping',
idField: 'id',
sort: 'id,desc',
crudMethod: {...crudFieldMapping},
query: {},
optShow: {
add: false,
edit: false,
download: false,
reset: true,
del: true
},
})
},
data() {
return {
tableNameList: [],
fieldNameList: [],
dataTypeList: [],
addShow: false,
editShow: false,
permission: {},
rules: {
position_code: [
{required: true, message: '缓存线位置编码不能为空', trigger: 'blur'}
]
}
}
},
created() {
crudFieldMapping.getAllTableName().then(res => {
this.tableNameList = res
})
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
getColumns() {
if (this.form.local_table_name === "") {
this.form.local_field_name = null
this.fieldNameList = []
return
}
crudFieldMapping.getTableColumnNames(this.form.local_table_name).then(res => {
this.fieldNameList = res
})
},
add() {
this.addShow = true
},
edit(row) {
this.$refs.editRef.setForm(row)
this.editShow = true
},
querytable() {
this.crud.toQuery()
},
querytable1() {
this.crud.toQuery()
},
}
}
</script>
<style scoped>
</style>