1、区域编码 仓库服务 远程调用

2、仓库信息页面新增修改实现,调用区域编码
pull/254/head
xjs 4 years ago
parent f6322db398
commit 1c66e38246

@ -0,0 +1,31 @@
package com.xjs.business.api;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.xjs.business.api.domain.Area;
import com.xjs.business.api.factory.RemoteAreaFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/**
* openapiAreaController feign
*
* @author xiejs
* @since 2022-03-23
*/
@FeignClient(contextId = "remoteAreaFeign",
value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE,
fallbackFactory = RemoteAreaFactory.class)
public interface RemoteAreaFeign {
@GetMapping("/area/getProvinceAreaForRPC")
R<List<Area>> getProvinceAreaForRPC();
@GetMapping("/area/getAreaByParentIdForRPC/{pid}")
R<List<Area>> getAreaByParentIdForRPC(@PathVariable("pid") Long pid);
}

@ -0,0 +1,69 @@
package com.xjs.business.api.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
*
*
* @author xiejs
* @since 2022-03-22
*/
@Data
public class Area implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* id
*/
private Long parentId;
/**
*
*/
private String citycode;
/**
*
*/
private String adcode;
/**
*
*/
private String name;
/**
*
*/
private String center;
/**
*
* <br>
* country:
* <br>
* province:provincecity
* <br>
* city:provincecity
* <br>
* district:
* <br>
* street:
*/
private String level;
/**
*
*/
private List<Area> districts;
}

@ -0,0 +1,37 @@
package com.xjs.business.api.factory;
import com.ruoyi.common.core.domain.R;
import com.xjs.business.api.RemoteAreaFeign;
import com.xjs.business.api.domain.Area;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* RemoteAreaFeign
*
* @author xiejs
* @since 2022-03-23
*/
@Component
@Log4j2
public class RemoteAreaFactory implements FallbackFactory<RemoteAreaFeign> {
@Override
public RemoteAreaFeign create(Throwable cause) {
return new RemoteAreaFeign() {
@Override
public R<List<Area>> getProvinceAreaForRPC() {
log.error("API模块获取区域信息降级" + cause.getMessage());
return R.fail("API模块获取区域信息降级");
}
@Override
public R<List<Area>> getAreaByParentIdForRPC(Long pid) {
log.error("API模块根据id获取区域信息降级" + cause.getMessage());
return R.fail("API模块根据id获取区域信息降级");
}
};
}
}

@ -44,5 +44,20 @@ export function editWareInfo(data) {
})
}
// 获取所有省级区域
export function getProvinceArea(data) {
return request({
url: `/mall-ware/ware/wareinfo/getProvinceArea`,
method: 'get',
})
}
// 根据父ID获取区域
export function getAreaByParentId(pid) {
return request({
url: `/mall-ware/ware/wareinfo/getAreaByParentId/${pid}`,
method: 'get',
})
}

@ -1,6 +1,7 @@
<template>
<el-dialog
width="500px"
@close="closeDialog"
:title="!dataForm.id ? '新增' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
@ -9,11 +10,22 @@
<el-form-item label="仓库名" prop="name">
<el-input v-model="dataForm.name" placeholder="仓库名"></el-input>
</el-form-item>
<el-form-item label="仓库地址" prop="address">
<el-input v-model="dataForm.address" placeholder="仓库地址"></el-input>
<el-form-item label="仓库地址" prop="cascaderValue" v-if="!dataForm.id">
<el-cascader
ref="cascader"
style="width: 380px"
:props="props"
v-model="dataForm.cascaderValue"
:options="areaList"
@change="handleChange"
></el-cascader>
</el-form-item>
<el-form-item label="详细地址" prop="detailAddress">
<el-input v-model="dataForm.detailAddress" placeholder="详细地址"></el-input>
</el-form-item>
<el-form-item label="区域编码" prop="areacode">
<el-input v-model.number="dataForm.areacode" placeholder="区域编码"></el-input>
<el-input v-model.number="dataForm.areacode" :disabled="!dataForm.id" placeholder="区域编码"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -21,10 +33,11 @@
<el-button type="primary" @click="dataFormSubmit()"></el-button>
</span>
</el-dialog>
</template>
<script>
import {editWareInfo, getWareInfo, saveWareInfo} from "@/api/mall/ware/ware-info";
import {editWareInfo, getAreaByParentId, getProvinceArea, getWareInfo, saveWareInfo} from "@/api/mall/ware/ware-info";
export default {
name: "Ware-info-add-update",
@ -34,26 +47,91 @@ export default {
dataForm: {
name: '',
address: '',
areacode: ''
areacode: null,
detailAddress: '',
cascaderValue: [],
},
dataRule: {
name: [
{required: true, message: '仓库名不能为空', trigger: 'blur'},
{min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur'}
],
address: [
{required: true, message: '仓库地址不能为空', trigger: 'blur'},
detailAddress: [
{required: true, message: '详细地址不能为空', trigger: 'blur'},
{min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur'}
],
cascaderValue:[
{required: true, message: '仓库地址不能为空', trigger: 'blur'},
],
areacode: [
{required: true, message: '区域编码不能为空', trigger: 'blur'},
{type: 'number', min: 100000, max: 999999, message: '区域编码为数字且为6位', trigger: 'blur'}
]
},
areaList: [],
props: {
value: "name",
label: "name",
children: "districts",
lazy: true,
lazyLoad: this.lazyLoad
}
}
},
computed: {
appendAddress: function () {
let cascaderAddress = ''
this.dataForm.cascaderValue.forEach(a => {
if (cascaderAddress === '') {
cascaderAddress = cascaderAddress + a;
} else {
cascaderAddress = cascaderAddress + " " + a;
}
})
cascaderAddress = cascaderAddress + "-" + this.dataForm.detailAddress
return cascaderAddress
},
},
created() {
this.getProvinceArea()
},
methods: {
lazyLoad(node, resolve) {
var that = this
setTimeout(() => {
if (node.level === 1 || node.level === 2 || node.level === 3) {
getAreaByParentId(node.data.id).then(res => {
if (node.level === 3) {
res.data.forEach(a => {
a.leaf = true
});
//areacode
that.dataForm.areacode = parseInt(node.data.adcode)
}
resolve(res.data);
})
}
}, 200);
},
//
getProvinceArea() {
getProvinceArea().then(res => {
this.areaList = res.data
})
},
init(id) {
this.dataForm.id = id
this.visible = true
@ -61,7 +139,16 @@ export default {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
getWareInfo(this.dataForm.id).then(res => {
this.dataForm = res.wareInfo
//
this.dataForm.name = res.wareInfo.name
this.dataForm.address = res.wareInfo.address
this.dataForm.areacode = res.wareInfo.areacode
//
let split = this.dataForm.address.split("-");
this.dataForm.detailAddress = this.dataForm.address
this.dataForm.cascaderValue = split[0].split(" ")
})
}
})
@ -72,12 +159,14 @@ export default {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
if (!this.dataForm.id) {
this.dataForm.address = this.appendAddress
saveWareInfo(this.dataForm).then(res => {
this.$modal.notifySuccess("添加成功")
this.visible = false
this.$emit('refreshDataList')
})
} else {
this.dataForm.address = this.dataForm.detailAddress
editWareInfo(this.dataForm).then(res => {
this.$modal.notifySuccess("修改成功")
this.visible = false
@ -88,6 +177,21 @@ export default {
})
},
//adcode
handleChange(data) {
let nodes = this.$refs.cascader.getCheckedNodes()[0];
this.dataForm.areacode = parseInt(nodes.data.adcode)
},
closeDialog() {
this.dataForm = {
name: '',
address: '',
areacode: null,
detailAddress: '',
cascaderValue: [],
}
},
}
}
</script>

@ -1,5 +1,6 @@
package com.xjs.area.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.xjs.area.domain.Area;
@ -58,4 +59,20 @@ public class AreaController extends MyBaseController<Area> {
}
//--------------------------------------远程调用------------------------------------------
@GetMapping("getProvinceAreaForRPC")
@ApiOperation("获取所有省级区域ForRPC")
public R<List<Area>> getProvinceAreaForRPC() {
List<Area> areaList = areaService.getProvinceArea();
return R.ok(areaList);
}
@GetMapping("getAreaByParentIdForRPC/{pid}")
@ApiOperation("根据父ID获取区域ForRPC")
public R<List<Area>> getAreaByParentIdForRPC(@PathVariable Long pid) {
List<Area> areaList = areaService.getAreaByParentId(pid);
return R.ok(areaList);
}
}

@ -1,9 +1,10 @@
package com.xjs.mall.ware.controller;
import com.xjs.business.api.domain.Area;
import com.xjs.mall.other.R;
import com.xjs.mall.ware.entity.WareInfoEntity;
import com.xjs.mall.ware.service.WareInfoService;
import com.xjs.utils.PageUtils;
import com.xjs.mall.other.R;
import com.xjs.validation.group.AddGroup;
import com.xjs.validation.group.UpdateGroup;
import com.xjs.web.MyBaseController;
@ -14,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -31,6 +33,20 @@ public class WareInfoController extends MyBaseController<WareInfoEntity> {
@Autowired
private WareInfoService wareInfoService;
@GetMapping("getProvinceArea")
@ApiOperation("获取所有省级区域")
public R getProvinceArea() {
List<Area> areaList = wareInfoService.getProvinceArea();
return R.ok().put("data", areaList);
}
@GetMapping("getAreaByParentId/{pid}")
@ApiOperation("根据父ID获取区域")
public R getAreaByParentId(@PathVariable Long pid) {
List<Area> areaList = wareInfoService.getAreaByParentId(pid);
return R.ok().put("data", areaList);
}
/**
*
*/
@ -88,4 +104,6 @@ public class WareInfoController extends MyBaseController<WareInfoEntity> {
return R.ok();
}
}

@ -1,9 +1,11 @@
package com.xjs.mall.ware.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xjs.business.api.domain.Area;
import com.xjs.mall.ware.entity.WareInfoEntity;
import com.xjs.utils.PageUtils;
import java.util.List;
import java.util.Map;
/**
@ -16,5 +18,18 @@ import java.util.Map;
public interface WareInfoService extends IService<WareInfoEntity> {
PageUtils queryPage(Map<String, Object> params);
/**
*
* @return list
*/
List<Area> getProvinceArea();
/**
* ID
* @param pid id
* @return list
*/
List<Area> getAreaByParentId(Long pid);
}

@ -3,7 +3,11 @@ package com.xjs.mall.ware.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.xjs.business.api.RemoteAreaFeign;
import com.xjs.business.api.domain.Area;
import com.xjs.mall.ware.dao.WareInfoDao;
import com.xjs.mall.ware.entity.WareInfoEntity;
import com.xjs.mall.ware.service.WareInfoService;
@ -11,12 +15,18 @@ import com.xjs.utils.PageUtils;
import com.xjs.utils.Query;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service("wareInfoService")
public class WareInfoServiceImpl extends ServiceImpl<WareInfoDao, WareInfoEntity> implements WareInfoService {
@Resource
private RemoteAreaFeign remoteAreaFeign;
@Override
public PageUtils queryPage(Map<String, Object> params) {
String key = (String) params.get(Query.KEY_NAME);
@ -34,4 +44,22 @@ public class WareInfoServiceImpl extends ServiceImpl<WareInfoDao, WareInfoEntity
return new PageUtils(page);
}
@Override
public List<Area> getProvinceArea() {
R<List<Area>> r = remoteAreaFeign.getProvinceAreaForRPC();
if (r.getCode() == HttpStatus.SUCCESS) {
return r.getData();
}
return new ArrayList<>();
}
@Override
public List<Area> getAreaByParentId(Long pid) {
R<List<Area>> r = remoteAreaFeign.getAreaByParentIdForRPC(pid);
if (r.getCode() == HttpStatus.SUCCESS) {
return r.getData();
}
return new ArrayList<>();
}
}

Loading…
Cancel
Save