add:供应商

This commit is contained in:
2024-03-08 16:06:27 +08:00
parent a0112a1c3f
commit 73b7d0408f
15 changed files with 696 additions and 27 deletions

View File

@@ -1,11 +0,0 @@
u java:S116%"[Rename this field "local_table_name" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
p java:S116*"VRename this field "api_address" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>ԛ<EFBFBD><D49B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
n java:S116/"TRename this field "sync_type" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
t java:S1164"ZRename this field "external_system" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>Ĥ<EFBFBD><C4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
q java:S1169"WRename this field "mapping_json" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>Ύ<EFBFBD><CE8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s java:S116>"YRename this field "last_update_id" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
p java:S116C"[Rename this field "last_update_name" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>Ȯ<EFBFBD>
u java:S116H"[Rename this field "last_update_time" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28><>Λ<EFBFBD><CE9B><EFBFBD><EFBFBD><EFBFBD>
B
java:S1948N"&Make "dtos" transient or serializable.(<28><><EFBFBD>d8<64><38><EFBFBD><EFBFBD><EFBFBD>1

View File

@@ -1,2 +0,0 @@
r java:S117A"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>̘<EFBFBD><CC98><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<><38><EFBFBD><EFBFBD><EFBFBD>1

View File

@@ -1,5 +0,0 @@
k java:S117]"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
f java:S117a"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(<28>
d
java:S3252b"OUse static access with "cn.hutool.core.text.CharSequenceUtil" for "isNotBlank".(<28><><EFBFBD>q

View File

@@ -33,19 +33,11 @@ m
=nladmin-system/src/main/java/org/nl/common/TableDataInfo.java,a/8/a85494925056ae5a2edbd2ec7eee55976b36080f
w
Gnladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java,4/c/4c2e7c33185348f635f5a9dbcc6943e1266cd690
<EFBFBD>
mnladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/IBmExternalFieldMappingService.java,6/3/6380d92563f750329b625bda0586fc4ba3b71943
<EFBFBD>
unladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/impl/BmExternalFieldMappingServiceImpl.java,9/0/9019fde59766868f22fd17bff1ddac61f4908ef3
<EFBFBD>
fnladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dto/RequestMappingParam.java,b/9/b9d6f798f97296813c3841cfa2a60c772c87530a
<EFBFBD>
_nladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dto/MappingQuery.java,8/6/866203b5eb8727cc6dfd1175f534632b5b301cf2
<EFBFBD>
]nladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dto/MappingDto.java,e/4/e4d40d63f40ac834a65cd47f2b9ab2436efb39d1
<EFBFBD>
inladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dao/BmExternalFieldMapping.java,0/c/0c6792b66c9573faf6f7f102bb584f282187174b
<EFBFBD>
vnladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dao/mapper/BmExternalFieldMappingMapper.java,3/8/3828de74f3f9d1252984dd2c3524e61bc6632160
<EFBFBD>
ynladmin-system/src/main/java/org/nl/wms/base_manage/field_mapping/service/dao/mapper/xml/BmExternalFieldMappingMapper.xml,8/5/8579f2942008652ebd59f8eed6fafca608a42516

View File

@@ -0,0 +1,61 @@
package org.nl.wms.base_manage.supplier.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.base_manage.supplier.service.IBmSupplierService;
import org.nl.wms.base_manage.supplier.service.dao.BmSupplier;
import org.nl.wms.base_manage.supplier.service.dto.SupplierQuery;
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;
/**
* @author zhouz
* @date 2021-12-06
**/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/bmSupplier")
@Slf4j
public class BmSupplierController {
@Autowired
private IBmSupplierService supplierService;
@GetMapping
public ResponseEntity<Object> getAll(SupplierQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(supplierService.page(page.build(), query.build())), HttpStatus.OK);
}
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody BmSupplier dto) {
supplierService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody BmSupplier dto) {
supplierService.update(dto, new LambdaUpdateWrapper<BmSupplier>().eq(BmSupplier::getSupp_id, dto.getSupp_id()));
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
if (ids.length > 0) {
supplierService.removeByIds(Arrays.asList(ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,14 @@
package org.nl.wms.base_manage.supplier.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.base_manage.supplier.service.dao.BmSupplier;
/**
* @description 服务接口
* @author zhouz
* @date 2021-12-06
**/
public interface IBmSupplierService extends IService<BmSupplier> {
}

View File

@@ -0,0 +1,161 @@
package org.nl.wms.base_manage.supplier.service.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author zhouz
* @description /
* @date 2021-12-06
**/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("bm_supplier")
public class BmSupplier implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商标识
*/
private Long supp_id;
/**
* 供应商编码
*/
private String supp_code;
/**
* 供应商名称
*/
private String supp_name;
/**
* 法人代表
*/
private String jurid_name;
/**
* 税务登记号
*/
private String tax_no;
/**
* 工商注册号
*/
private String register_no;
/**
* 经营许可证号
*/
private String manage_lice_no;
/**
* 营业执照
*/
private String busi_char_name;
/**
* 行政区划
*/
private Long area_id;
/**
* 邮政编码
*/
private String zip_code;
/**
* 公司电话
*/
private String corp_tele_no;
/**
* 公司地址
*/
private String corp_address;
/**
* 创建人
*/
private String create_id;
/**
* 创建人姓名
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 修改人
*/
private String update_id;
/**
* 修改人姓名
*/
private String update_name;
/**
* 修改时间
*/
private String update_time;
/**
* 启用时间
*/
private String is_used_time;
/**
* 是否启用
*/
private String is_used;
/**
* 是否删除
*/
private String is_delete;
/**
* 外部标识
*/
private String ext_id;
/**
* 条码打印起始值
*/
private String barcode_print;
/**
* 备注
*/
private String remark;
/**
* 分类标识
*/
private Long class_id;
/**
* 分类编码
*/
private String class_code;
/**
* 分类名称
*/
private String class_name;
/**
* 资金计划履约天数
*/
private BigDecimal honour_days;
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.base_manage.supplier.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.base_manage.field_mapping.service.dao.BmExternalFieldMapping;
import org.nl.wms.base_manage.supplier.service.dao.BmSupplier;
import java.util.List;
import java.util.Map;
/**
* <p>
* 同步字段映射表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-03-06
*/
public interface BmSupplierMapper extends BaseMapper<BmSupplier> {
}

View File

@@ -0,0 +1,5 @@
<?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.supplier.service.dao.mapper.BmSupplierMapper">
</mapper>

View File

@@ -0,0 +1,27 @@
package org.nl.wms.base_manage.supplier.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.supplier.service.dao.BmSupplier;
/*
* @author ZZQ
* @Date 2023/5/4 19:49
*/
@Data
public class SupplierQuery extends BaseQuery<BmSupplier> {
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,25 @@
package org.nl.wms.base_manage.supplier.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.base_manage.supplier.service.IBmSupplierService;
import org.nl.wms.base_manage.supplier.service.dao.BmSupplier;
import org.nl.wms.base_manage.supplier.service.dao.mapper.BmSupplierMapper;
import org.springframework.stereotype.Service;
/**
* @author zhouz
* @description 服务实现
* @date 2021-12-06
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class BmSupplierServiceImpl extends ServiceImpl<BmSupplierMapper, BmSupplier> implements IBmSupplierService {
}

View File

@@ -26,7 +26,7 @@ export function edit(data) {
export function excelImport(data) {
return request({
url: 'api/mdMeMaterialbase/excelImport',
url: 'api/bmMaterial/excelImport',
method: 'post',
data
})

View File

@@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/bmSupplier',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/bmSupplier',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/bmSupplier',
method: 'put',
data
})
}
export default { add, edit, del }

View File

@@ -0,0 +1,354 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-input
v-model="query.search"
clearable
style="width: 300px"
size="mini"
placeholder="输入供应商编码或名称"
prefix-icon="el-icon-search"
class="filter-item"
/>
<rrOperation/>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission"/>
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="1200px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="130px">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="供应商编码" prop="supp_code">
<el-input v-model="form.supp_code" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商名称 " prop="supp_name">
<el-input v-model="form.supp_name" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人代表">
<el-input v-model="form.jurid_name" style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="税务登记号">
<el-input v-model="form.tax_no" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工商注册号">
<el-input v-model="form.register_no" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="经营许可证号">
<el-input v-model="form.manage_lice_no" style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="营业执照">
<el-input v-model="form.busi_char_name" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="条码打印起始值">
<el-input v-model="form.barcode_print" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="邮政编码">
<el-input v-model="form.zip_code" style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="公司电话">
<el-input v-model="form.corp_tele_no" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="公司地址">
<el-input v-model="form.corp_address" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否启用" prop="is_used">
<el-radio v-model="form.is_used" label="0">否</el-radio>
<el-radio v-model="form.is_used" label="1">是</el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="外部标识">
<el-input v-model="form.ext_id" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="资金计划履约天数">
<el-input v-model="form.honour_days" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="基础分类" prop="class_id">
<treeselect
v-model="form.class_id"
:load-options="loadClass"
:options="classes"
style="width: 200px;"
placeholder="请选择"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注">
<el-input v-model="form.remark" style="width: 600px;" type="textarea"/>
</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 prop="supp_code" label="供应商编码"/>
<el-table-column prop="supp_name" label="供应商名称 "/>
<el-table-column prop="corp_address" label="公司地址"/>
<el-table-column prop="corp_tele_no" label="公司电话"/>
<el-table-column prop="jurid_name" label="法人代表"/>
<el-table-column prop="update_optname" label="修改者"/>
<el-table-column prop="update_time" label="修改时间" width="150"/>
<el-table-column label="启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch
v-model="scope.row.is_used"
active-color="#409EFF"
inactive-color="#F56C6C"
active-value="1"
inactive-value="0"
@change="changeEnabled(scope.row, scope.row.is_used)"
/>
</template>
</el-table-column>
<el-table-column
v-permission="['admin','Supplierbase:edit','Supplierbase:del']"
label="操作"
width="150px"
lign="center"
>
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
</div>
</div>
</template>
<script>
import crudSupplierbase from '@/api/wms/base_manage/supplier/supplier'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation'
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
const defaultForm = {
supp_id: null,
supp_code: null,
supp_name: null,
jurid_name: null,
tax_no: null,
register_no: null,
manage_lice_no: null,
busi_char_name: null,
area_id: null,
zip_code: null,
corp_tele_no: null,
corp_address: null,
create_id: null,
create_name: null,
create_time: null,
update_optid: null,
update_optname: null,
update_time: null,
is_used_time: null,
is_used: '1',
is_delete: null,
ext_id: null,
barcode_print: null,
class_code: null,
remark: null,
honour_days: null
}
export default {
name: 'Supplier',
components: {pagination, crudOperation, rrOperation, udOperation, Treeselect},
mixins: [presenter(), header(), form(defaultForm), crud()],
// 数据字典
dicts: ['is_used'],
cruds() {
return CRUD({
title: '供应商',
url: 'api/bmSupplier',
optShow: {
add: true,
reset: true
},
idField: 'supp_id',
sort: 'supp_id,desc',
crudMethod: {...crudSupplierbase}
})
},
data() {
return {
permission: {},
classes: [],
rules: {
supp_code: [
{required: true, message: '不能为空', trigger: 'blur'}
],
supp_name: [
{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'}
],
is_used: [
{required: true, message: '不能为空', trigger: 'blur'}
],
is_delete: [
{required: true, message: '不能为空', trigger: 'blur'}
],
class_id: [
{required: true, message: '不能为空', trigger: 'blur'}
]
}
}
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
[CRUD.HOOK.afterToCU](crud, form) {
if (form.class_id != null) {
this.getSubTypes({'id': form.class_id, 'parent_id': "1704039126057226240"})
} else {
this.getClass()
}
},
getSubTypes(id) {
crudClassstandard.getClassSuperior2(id).then(res => {
const date = res.content
this.buildClass(date)
this.classes = date
})
},
buildClass(classes) {
classes.forEach(data => {
if (data.children) {
this.buildClass(data.children)
}
if (data.hasChildren && !data.children) {
data.children = null
}
})
},
getClass() {
crudClassstandard.queryClassById({enabled: true, 'class_idStr': '1704039126057226240'}).then(res => {
this.classes = res.content.map(function (obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
// 获取弹窗内部门数据
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)
})
}
},
// 改变状态
changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.is_used[val] + '" ' + data.supp_code + ', 是否继续', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
crudSupplierbase.edit(data).then(res => {
this.crud.notify(this.dict.label.is_used[val] + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
if (data.is_used === '0') {
data.is_used = '1'
return
}
if (data.is_used === '1') {
data.is_used = '0'
}
})
}).catch(() => {
if (data.is_used === '0') {
data.is_used = '1'
return
}
if (data.is_used === '1') {
data.is_used = '0'
}
})
}
}
}
</script>
<style scoped>
</style>