13 changed files with 578 additions and 19 deletions
@ -0,0 +1,67 @@ |
|||
package org.nl.wms.decision_manage.controller; |
|||
|
|||
|
|||
import cn.dev33.satoken.annotation.SaIgnore; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import org.nl.common.base.TableDataInfo; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.common.logging.annotation.Log; |
|||
import org.nl.common.utils.MapOf; |
|||
import org.nl.wms.decision_manage.service.IStSectStrategyService; |
|||
import org.nl.wms.decision_manage.service.dao.StSectStrategy; |
|||
import org.nl.wms.decision_manage.service.dao.StStrategyConfig; |
|||
import org.nl.wms.decision_manage.service.dto.SectStrategyQuery; |
|||
import org.nl.wms.decision_manage.service.dto.StrategyQuery; |
|||
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.ArrayList; |
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* <p> |
|||
* 前端控制器 |
|||
* </p> |
|||
* |
|||
* @author generator |
|||
* @since 2025-06-25 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("/stSectStrategy") |
|||
public class StSectStrategyController { |
|||
|
|||
@Autowired |
|||
private IStSectStrategyService iStSectStrategyService; |
|||
|
|||
@GetMapping |
|||
public ResponseEntity<Object> query(SectStrategyQuery query, PageQuery page) { |
|||
return new ResponseEntity<>(iStSectStrategyService.page(page.build(),query.build()), HttpStatus.OK); |
|||
} |
|||
|
|||
@PostMapping |
|||
@Log("新增库区货位规则") |
|||
public ResponseEntity<Object> create(@Validated @RequestBody StSectStrategy dao) { |
|||
iStSectStrategyService.save(dao); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
|
|||
@PutMapping |
|||
@Log("修改库区货位规则") |
|||
public ResponseEntity<Object> update(@Validated @RequestBody StSectStrategy dao) { |
|||
iStSectStrategyService.updateById(dao); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
|
|||
@DeleteMapping |
|||
@Log("删除规格") |
|||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) { |
|||
iStSectStrategyService.removeByIds(Arrays.asList(ids)); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,16 @@ |
|||
package org.nl.wms.decision_manage.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.nl.wms.decision_manage.service.dao.StSectStrategy; |
|||
|
|||
/** |
|||
* <p> |
|||
* 服务类 |
|||
* </p> |
|||
* |
|||
* @author generator |
|||
* @since 2025-06-25 |
|||
*/ |
|||
public interface IStSectStrategyService extends IService<StSectStrategy> { |
|||
|
|||
} |
@ -0,0 +1,57 @@ |
|||
package org.nl.wms.decision_manage.service.dao; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import java.io.Serializable; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
/** |
|||
* <p> |
|||
* |
|||
* </p> |
|||
* |
|||
* @author generator |
|||
* @since 2025-06-25 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
@TableName("st_sect_strategy") |
|||
public class StSectStrategy implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键盘 |
|||
*/ |
|||
@TableId(value = "id", type = IdType.AUTO) |
|||
private Integer id; |
|||
|
|||
/** |
|||
* 库区 |
|||
*/ |
|||
private String sect_code; |
|||
|
|||
/** |
|||
* 规则 |
|||
*/ |
|||
private String strategy; |
|||
|
|||
/** |
|||
* 描述 |
|||
*/ |
|||
private String description; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
private String update_time; |
|||
|
|||
/** |
|||
* 更新人 |
|||
*/ |
|||
private String update_name; |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package org.nl.wms.decision_manage.service.dao.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.nl.wms.decision_manage.service.dao.StSectStrategy; |
|||
|
|||
/** |
|||
* <p> |
|||
* Mapper 接口 |
|||
* </p> |
|||
* |
|||
* @author generator |
|||
* @since 2025-06-25 |
|||
*/ |
|||
public interface StSectStrategyMapper extends BaseMapper<StSectStrategy> { |
|||
|
|||
} |
@ -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.decision_manage.service.dao.mapper.StSectStrategyMapper"> |
|||
|
|||
</mapper> |
@ -0,0 +1,26 @@ |
|||
package org.nl.wms.decision_manage.service.dto; |
|||
|
|||
import lombok.Data; |
|||
import org.nl.common.domain.query.BaseQuery; |
|||
import org.nl.common.domain.query.QParam; |
|||
import org.nl.common.enums.QueryTEnum; |
|||
import org.nl.wms.decision_manage.service.dao.StSectStrategy; |
|||
import org.nl.wms.decision_manage.service.dao.StStrategyConfig; |
|||
|
|||
/* |
|||
* @author ZZQ |
|||
* @Date 2023/5/4 19:49 |
|||
*/ |
|||
@Data |
|||
public class SectStrategyQuery extends BaseQuery<StSectStrategy> { |
|||
|
|||
private String strategy_name; |
|||
private Boolean is_delete =Boolean.FALSE; |
|||
|
|||
@Override |
|||
public void paramMapping() { |
|||
super.doP.put("strategy_name", QParam.builder().k(new String[]{"strategy_name"}).type(QueryTEnum.LK).build()); |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,20 @@ |
|||
package org.nl.wms.decision_manage.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.nl.wms.decision_manage.service.IStSectStrategyService; |
|||
import org.nl.wms.decision_manage.service.dao.StSectStrategy; |
|||
import org.nl.wms.decision_manage.service.dao.mapper.StSectStrategyMapper; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* <p> |
|||
* 服务实现类 |
|||
* </p> |
|||
* |
|||
* @author generator |
|||
* @since 2025-06-25 |
|||
*/ |
|||
@Service |
|||
public class StSectStrategyServiceImpl extends ServiceImpl<StSectStrategyMapper, StSectStrategy> implements IStSectStrategyService { |
|||
|
|||
} |
@ -0,0 +1,166 @@ |
|||
<template> |
|||
<el-dialog |
|||
:title="crud.status.title" |
|||
append-to-body |
|||
:before-close="crud.cancelCU" |
|||
:visible.sync="crud.status.cu > 0 || crud.status.view > 0" |
|||
> |
|||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="策略名称:" prop="strategy_name"> |
|||
<el-input v-model="form.strategy_name" style="width: 200px;" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="策略类型:" prop="strategy_type"> |
|||
<el-select |
|||
v-model="form.strategy_type" |
|||
placeholder="" |
|||
style="width: 200px" |
|||
> |
|||
<el-option |
|||
v-for="item in strategyTypeList" |
|||
:key="item.id" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="类处理类型:" prop="class_type"> |
|||
<el-select |
|||
v-model="form.class_type" |
|||
placeholder="" |
|||
style="width: 200px" |
|||
> |
|||
<el-option |
|||
v-for="item in classTypeList" |
|||
:key="item.id" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="参数:" prop="param"> |
|||
<el-input v-model="form.param" style="width: 200px;" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="策略编码:" prop="param"> |
|||
<el-input v-model="form.strategy_code" style="width: 200px;" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="20"> |
|||
<el-col :span="24"> |
|||
<el-form-item label="描述:" prop="remark"> |
|||
<el-input v-model="form.remark" :rows="3" type="textarea" style="width: 560px;" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div v-show="crud.status.cu > 0" 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> |
|||
</template> |
|||
|
|||
<script> |
|||
const defaultForm = { |
|||
id: null, |
|||
strategy_code: null, |
|||
strategy_name: null, |
|||
strategy_type: null, |
|||
class_type: null, |
|||
param: null, |
|||
remark: null, |
|||
is_used: null, |
|||
ban: null, |
|||
update_name: null, |
|||
update_time: null, |
|||
is_delete: null |
|||
} |
|||
import CRUD, { form, crud } from '@crud/crud' |
|||
|
|||
export default { |
|||
name: 'AddDialog', |
|||
mixins: [form(defaultForm), crud()], |
|||
props: { |
|||
dialogShow: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
openParam: { |
|||
type: Object |
|||
} |
|||
}, |
|||
watch: { |
|||
dialogShow: { |
|||
handler(newValue, oldValue) { |
|||
this.dialogVisible = newValue |
|||
} |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
dialogVisible: false, |
|||
strategyTypeList: [ |
|||
{ 'label': '入库', 'value': '1' }, |
|||
{ 'label': '出库', 'value': '2' }, |
|||
{ 'label': '通用', 'value': '3' } |
|||
], |
|||
classTypeList: [ |
|||
{ 'label': '实现类', 'value': '1' }, |
|||
{ 'label': '表达式', 'value': '2' }, |
|||
{ 'label': '脚本', 'value': '3' } |
|||
], |
|||
rules: { |
|||
strategy_name: [ |
|||
{ required: true, message: '策略名称不能为空', trigger: 'blur' } |
|||
], |
|||
strategy_type: [ |
|||
{ required: true, message: '策略类型不能为空', trigger: 'blur' } |
|||
], |
|||
strategy_code: [ |
|||
{ required: true, message: '策略编码不能为空', trigger: 'blur' } |
|||
], |
|||
param: [ |
|||
{ required: true, message: '参数不能为空', trigger: 'blur' } |
|||
], |
|||
class_type: [ |
|||
{ required: true, message: '类处理类型不能为空', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
handleClose(done) { |
|||
this.$confirm('确认关闭?') |
|||
.then(_ => { |
|||
done() |
|||
}) |
|||
.catch(_ => { |
|||
}) |
|||
}, |
|||
close() { |
|||
this.form = [] |
|||
this.$emit('update:dialogShow', false) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
@ -0,0 +1,160 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<div v-if="crud.props.searchToggle"> |
|||
<!-- 搜索 --> |
|||
<el-form |
|||
:inline="true" |
|||
class="demo-form-inline" |
|||
label-position="right" |
|||
label-width="80px" |
|||
label-suffix=":" |
|||
> |
|||
<el-form-item label="策略名称"> |
|||
<el-input |
|||
v-model="query.strategy_name" |
|||
clearable |
|||
size="mini" |
|||
placeholder="策略名称" |
|||
style="width: 200px;" |
|||
class="filter-item" |
|||
@keyup.enter.native="crud.toQuery" |
|||
/> |
|||
</el-form-item> |
|||
<rrOperation /> |
|||
</el-form> |
|||
|
|||
</div> |
|||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> |
|||
<crudOperation :permission="permission"/> |
|||
<!--表单组件--> |
|||
<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 label="策略类型" > |
|||
<template slot-scope="scope"> |
|||
{{scope.row.ban?"系统策略":"自定义策略"}} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="strategy_name" label="策略名称" /> |
|||
<el-table-column prop="strategy_code" label="策略编码" /> |
|||
<el-table-column prop="strategy_type" label="决策类型" /> |
|||
<el-table-column prop="class_type" label="策略执行器" /> |
|||
<el-table-column prop="param" show-overflow-tooltip label="参数" /> |
|||
<el-table-column prop="remark" show-overflow-tooltip label="描述" /> |
|||
<el-table-column label="是否启用" align="center" prop="is_used"> |
|||
<template slot-scope="scope"> |
|||
<el-switch |
|||
:value="scope.row.is_used" |
|||
active-color="#409EFF" |
|||
inactive-color="#F56C6C" |
|||
@change="changeEnabled(scope.row, scope.row.is_used)" |
|||
/> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="update_name" label="操作人" /> |
|||
<el-table-column min-width="160" prop="update_time" label="操作时间" /> |
|||
<el-table-column |
|||
v-permission="[]" |
|||
label="操作" |
|||
width="120" |
|||
align="center" |
|||
fixed="right" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<udOperation |
|||
:disabledDle="scope.row.ban" |
|||
:disabledEdit="scope.row.ban" |
|||
:data="scope.row" |
|||
:permission="permission" |
|||
/> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<pagination /> |
|||
</div> |
|||
<AddDialog /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import crudStrategy from './strategy' |
|||
import AddDialog from './AddDialog' |
|||
import CRUD, { crud, form, header, presenter } from '@crud/crud' |
|||
import rrOperation from '@crud/RR.operation' |
|||
import crudOperation from '@crud/CRUD.operation' |
|||
import udOperation from '@crud/UD.operation' |
|||
import pagination from '@crud/Pagination' |
|||
|
|||
export default { |
|||
name: 'Strategy', |
|||
dicts: [], |
|||
components: { pagination, crudOperation, rrOperation, udOperation, AddDialog }, |
|||
mixins: [presenter(), header(), crud()], |
|||
cruds() { |
|||
return CRUD({ |
|||
title: '策略管理', |
|||
url: 'api/strategy', |
|||
idField: 'id', |
|||
sort: 'id,desc', |
|||
crudMethod: { ...crudStrategy }, |
|||
optShow: { |
|||
add: true, |
|||
edit: false, |
|||
del: false, |
|||
download: false, |
|||
reset: true |
|||
} |
|||
}) |
|||
}, |
|||
data() { |
|||
return { |
|||
dialogVisible: false, |
|||
permission: {}, |
|||
rules: { |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据 |
|||
[CRUD.HOOK.beforeRefresh]() { |
|||
return true |
|||
}, |
|||
format_is_used(is_used) { |
|||
return is_used==true |
|||
}, |
|||
changeEnabled(data, val) { |
|||
let msg = '此操作将停用,是否继续!' |
|||
if (val !== '1') { |
|||
msg = '此操作将启用,是否继续!' |
|||
} |
|||
this.$confirm(msg, '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
crudStrategy.changeActive(data).then(res => { |
|||
this.crud.toQuery() |
|||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|||
}).catch(() => { |
|||
data.is_used = !data.is_used |
|||
}) |
|||
}).catch(() => { |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.is-scrolling-none + .el-table__fixed-right { |
|||
height: 100% !important; |
|||
} |
|||
</style> |
@ -0,0 +1,35 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
export function add(data) { |
|||
return request({ |
|||
url: 'api/strategy', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function del(ids) { |
|||
return request({ |
|||
url: 'api/strategy/', |
|||
method: 'delete', |
|||
data: ids |
|||
}) |
|||
} |
|||
|
|||
export function edit(data) { |
|||
return request({ |
|||
url: 'api/strategy', |
|||
method: 'put', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function changeActive(data) { |
|||
return request({ |
|||
url: 'api/strategy/changeActive', |
|||
method: 'put', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export default { add, edit, del, changeActive } |
Loading…
Reference in new issue