Commit f1817715a453fb83037525de2237cd91c7af06a1

Authored by 李泰瑜
2 parents 719b2415 9bf4dfa9

Merge branch 'develop4' of http://172.16.29.40:8010/wms/wms4 into develop4

Showing 21 changed files with 872 additions and 44 deletions
ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue
... ... @@ -94,10 +94,9 @@
94 94 <template slot="content">
95 95 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
96 96 <a-row style="width: 400px">
97   - <template v-for="(item,index) in defColumns">
  97 + <template v-for="(item) in defColumns">
98 98 <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
99   - <a-col :span="12"><a-checkbox :value="item.dataIndex"><j-ellipsis :value="item.title"
100   - :length="10"></j-ellipsis></a-checkbox></a-col>
  99 + <a-col :span="12"><a-checkbox :value="item.dataIndex"><j-ellipsis :value="item.title" :length="10"></j-ellipsis></a-checkbox></a-col>
101 100 </template>
102 101 </template>
103 102 </a-row>
... ... @@ -124,7 +123,7 @@
124 123 <a-card>
125 124 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
126 125 <a-row style="width: 400px">
127   - <template v-for="(item,index) in defColumns">
  126 + <template v-for="(item) in defColumns">
128 127 <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
129 128 <a-col :span="12">
130 129 <a-checkbox :value="item.dataIndex">
... ...
ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue 0 → 100644
  1 +<template>
  2 + <a-card :bordered="false">
  3 + <!-- 查询区域 -->
  4 + <div class="table-page-search-wrapper">
  5 + <a-form layout="inline" @keyup.enter.native="searchQuery">
  6 + <a-row :gutter="24">
  7 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  8 + <a-form-item label="业务ID">
  9 + <a-input placeholder="请输入业务ID" v-model="queryParam.bizId"></a-input>
  10 + </a-form-item>
  11 + </a-col>
  12 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  13 + <a-form-item label="业务类型">
  14 + <a-input placeholder="请输入业务类型" v-model="queryParam.bizType"></a-input>
  15 + </a-form-item>
  16 + </a-col>
  17 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  18 + <a-form-item label="操作内容">
  19 + <j-input placeholder="请输入操作内容" v-model="queryParam.operationMsg"></j-input>
  20 + </a-form-item>
  21 + </a-col>
  22 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  23 + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  24 + <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
  25 + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
  26 + </span>
  27 + </a-col>
  28 + </a-row>
  29 + </a-form>
  30 + </div>
  31 + <!-- 查询区域-END -->
  32 +
  33 + <!-- 操作按钮区域 -->
  34 + <div class="table-operator">
  35 + <a-button type="primary" icon="download" @click="handleExportXls('操作记录表')">导出</a-button>
  36 + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
  37 + <a-button type="primary" icon="import">导入</a-button>
  38 + </a-upload>
  39 + </div>
  40 +
  41 + <!-- table区域-begin -->
  42 + <div>
  43 + <a-table
  44 + ref="table"
  45 + size="middle"
  46 + :scroll="{x:true}"
  47 + bordered
  48 + rowKey="id"
  49 + :columns="columns"
  50 + :dataSource="dataSource"
  51 + :pagination="ipagination"
  52 + :loading="loading"
  53 + class="j-table-force-nowrap"
  54 + @change="handleTableChange">
  55 +
  56 + <template slot="htmlSlot" slot-scope="text">
  57 + <div v-html="text"></div>
  58 + </template>
  59 + <template slot="imgSlot" slot-scope="text">
  60 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
  61 + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
  62 + </template>
  63 + <template slot="fileSlot" slot-scope="text">
  64 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
  65 + <a-button
  66 + v-else
  67 + :ghost="true"
  68 + type="primary"
  69 + icon="download"
  70 + size="small"
  71 + @click="downloadFile(text)">
  72 + 下载
  73 + </a-button>
  74 + </template>
  75 +
  76 + <span slot="action" slot-scope="text, record">
  77 + <a v-has="'operationLog:edit'" @click="handleEdit(record)">编辑</a>
  78 + <a @click="handleDetail(record)">详情</a>
  79 + </span>
  80 + </a-table>
  81 + </div>
  82 +
  83 + <operation-log-modal ref="modalForm" @ok="modalFormOk"></operation-log-modal>
  84 + </a-card>
  85 +</template>
  86 +
  87 +<script>
  88 + import {filterObj} from '@/utils/util';
  89 + import '@/assets/less/TableExpand.less'
  90 + import { mixinDevice } from '@/utils/mixin'
  91 + import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  92 + import OperationLogModal from './modules/OperationLogModal'
  93 +
  94 + export default {
  95 + name: 'OperationLogList',
  96 + mixins:[JeecgListMixin, mixinDevice],
  97 + components: {
  98 + OperationLogModal
  99 + },
  100 + data () {
  101 + return {
  102 + description: '操作记录表管理页面',
  103 + // 表头
  104 + columns: [
  105 + {
  106 + title:'业务ID',
  107 + align:"center",
  108 + dataIndex: 'bizId'
  109 + },
  110 + {
  111 + title:'业务类型',
  112 + align:"center",
  113 + dataIndex: 'bizType'
  114 + },
  115 + {
  116 + title:'操作内容',
  117 + align:"center",
  118 + dataIndex: 'operationMsg'
  119 + },
  120 + {
  121 + title:'操作时间',
  122 + align:"center",
  123 + dataIndex: 'operationTime'
  124 + },
  125 + {
  126 + title:'操作结果状态',
  127 + align:"center",
  128 + dataIndex: 'operationStatus'
  129 + },
  130 + {
  131 + title:'操作耗时',
  132 + align:"center",
  133 + dataIndex: 'operationCostTime'
  134 + },
  135 + {
  136 + title:'方法返回内容',
  137 + align:"center",
  138 + dataIndex: 'contentReturn'
  139 + },
  140 + {
  141 + title:'方法异常内容',
  142 + align:"center",
  143 + dataIndex: 'contentException'
  144 + },
  145 + {
  146 + title:'操作人ID',
  147 + align:"center",
  148 + dataIndex: 'operatorId'
  149 + },
  150 + {
  151 + title:'操作人姓名',
  152 + align:"center",
  153 + dataIndex: 'operatorName'
  154 + },
  155 + {
  156 + title: '操作',
  157 + dataIndex: 'action',
  158 + align: "center",
  159 + fixed: "right",
  160 + width: 147,
  161 + scopedSlots: {customRender: 'action'}
  162 + }
  163 + ],
  164 + url: {
  165 + list: "/config/operationLog/list",
  166 + delete: "/config/operationLog/delete",
  167 + deleteBatch: "/config/operationLog/deleteBatch",
  168 + exportXlsUrl: "/config/operationLog/exportXls",
  169 + importExcelUrl: "config/operationLog/importExcel",
  170 +
  171 + },
  172 + dictOptions:{},
  173 + superFieldList:[],
  174 + }
  175 + },
  176 + created() {
  177 + this.getSuperFieldList();
  178 + },
  179 + computed: {
  180 + importExcelUrl: function(){
  181 + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
  182 + },
  183 + },
  184 + methods: {
  185 + getQueryParams() {
  186 + // 重写查询条件
  187 + let sqp = {}
  188 + if (this.superQueryParams) {
  189 + sqp['superQueryParams'] = encodeURI(this.superQueryParams)
  190 + sqp['superQueryMatchType'] = this.superQueryMatchType
  191 + }
  192 + var param = Object.assign(sqp, this.queryParam, {}, this.filters)
  193 + param.field = this.getQueryField()
  194 + param.pageNo = this.ipagination.current
  195 + param.pageSize = this.ipagination.pageSize
  196 + return filterObj(param)
  197 + },
  198 + initDictConfig(){
  199 + },
  200 + getSuperFieldList(){
  201 + let fieldList=[];
  202 + fieldList.push({type:'string',value:'bizId',text:'业务ID',dictCode:''})
  203 + fieldList.push({type:'string',value:'bizType',text:'业务类型',dictCode:''})
  204 + fieldList.push({type:'string',value:'operationMsg',text:'操作内容',dictCode:''})
  205 + fieldList.push({type:'datetime',value:'operationTime',text:'操作时间'})
  206 + fieldList.push({type:'int',value:'operationStatus',text:'操作结果状态',dictCode:''})
  207 + fieldList.push({type:'int',value:'operationCostTime',text:'操作耗时',dictCode:''})
  208 + fieldList.push({type:'string',value:'contentReturn',text:'方法返回内容',dictCode:''})
  209 + fieldList.push({type:'string',value:'contentException',text:'方法异常内容',dictCode:''})
  210 + fieldList.push({type:'string',value:'operatorId',text:'操作人ID',dictCode:''})
  211 + fieldList.push({type:'string',value:'operatorName',text:'操作人姓名',dictCode:''})
  212 + this.superFieldList = fieldList
  213 + }
  214 + }
  215 + }
  216 +</script>
  217 +<style scoped>
  218 + @import '~@assets/less/common.less';
  219 +</style>
0 220 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogForm.vue 0 → 100644
  1 +<template>
  2 + <a-spin :spinning="confirmLoading">
  3 + <j-form-container :disabled="formDisabled">
  4 + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5 + <a-row>
  6 + <a-col :span="24">
  7 + <a-form-model-item label="业务ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bizId">
  8 + <a-input v-model="model.bizId" placeholder="请输入业务ID" ></a-input>
  9 + </a-form-model-item>
  10 + </a-col>
  11 + <a-col :span="24">
  12 + <a-form-model-item label="业务类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bizType">
  13 + <a-input v-model="model.bizType" placeholder="请输入业务类型" ></a-input>
  14 + </a-form-model-item>
  15 + </a-col>
  16 + <a-col :span="24">
  17 + <a-form-model-item label="操作内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationMsg">
  18 + <a-input v-model="model.operationMsg" placeholder="请输入操作内容" ></a-input>
  19 + </a-form-model-item>
  20 + </a-col>
  21 + <a-col :span="24">
  22 + <a-form-model-item label="操作时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationTime">
  23 + <j-date placeholder="请选择操作时间" v-model="model.operationTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
  24 + </a-form-model-item>
  25 + </a-col>
  26 + <a-col :span="24">
  27 + <a-form-model-item label="操作结果状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationStatus">
  28 + <a-input-number v-model="model.operationStatus" placeholder="请输入操作结果状态" style="width: 100%" />
  29 + </a-form-model-item>
  30 + </a-col>
  31 + <a-col :span="24">
  32 + <a-form-model-item label="操作耗时" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationCostTime">
  33 + <a-input-number v-model="model.operationCostTime" placeholder="请输入操作耗时" style="width: 100%" />
  34 + </a-form-model-item>
  35 + </a-col>
  36 + <a-col :span="24">
  37 + <a-form-model-item label="方法返回内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentReturn">
  38 + <a-input v-model="model.contentReturn" placeholder="请输入方法返回内容" ></a-input>
  39 + </a-form-model-item>
  40 + </a-col>
  41 + <a-col :span="24">
  42 + <a-form-model-item label="方法异常内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentException">
  43 + <a-input v-model="model.contentException" placeholder="请输入方法异常内容" ></a-input>
  44 + </a-form-model-item>
  45 + </a-col>
  46 + <a-col :span="24">
  47 + <a-form-model-item label="操作人ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operatorId">
  48 + <a-input v-model="model.operatorId" placeholder="请输入操作人ID" ></a-input>
  49 + </a-form-model-item>
  50 + </a-col>
  51 + <a-col :span="24">
  52 + <a-form-model-item label="操作人姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operatorName">
  53 + <a-input v-model="model.operatorName" placeholder="请输入操作人姓名" ></a-input>
  54 + </a-form-model-item>
  55 + </a-col>
  56 + </a-row>
  57 + </a-form-model>
  58 + </j-form-container>
  59 + </a-spin>
  60 +</template>
  61 +
  62 +<script>
  63 +
  64 + import { httpAction, getAction } from '@/api/manage'
  65 + import { validateDuplicateValue } from '@/utils/util'
  66 +
  67 + export default {
  68 + name: 'OperationLogForm',
  69 + components: {
  70 + },
  71 + props: {
  72 + //表单禁用
  73 + disabled: {
  74 + type: Boolean,
  75 + default: false,
  76 + required: false
  77 + }
  78 + },
  79 + data () {
  80 + return {
  81 + model:{
  82 + },
  83 + labelCol: {
  84 + xs: { span: 24 },
  85 + sm: { span: 5 },
  86 + },
  87 + wrapperCol: {
  88 + xs: { span: 24 },
  89 + sm: { span: 16 },
  90 + },
  91 + confirmLoading: false,
  92 +validatorRules: {
  93 +},
  94 + url: {
  95 + add: "/config/operationLog/add",
  96 + edit: "/config/operationLog/edit",
  97 + queryById: "/config/operationLog/queryById"
  98 + }
  99 + }
  100 + },
  101 + computed: {
  102 + formDisabled(){
  103 + return this.disabled
  104 + },
  105 + },
  106 + created () {
  107 + //备份model原始值
  108 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  109 + },
  110 + methods: {
  111 + add () {
  112 + this.edit(this.modelDefault);
  113 + },
  114 + edit (record) {
  115 + this.model = Object.assign({}, record);
  116 + this.visible = true;
  117 + },
  118 + submitForm () {
  119 + const that = this;
  120 + // 触发表单验证
  121 + this.$refs.form.validate(valid => {
  122 + if (valid) {
  123 + that.confirmLoading = true;
  124 + let httpurl = '';
  125 + let method = '';
  126 + if(!this.model.id){
  127 + httpurl+=this.url.add;
  128 + method = 'post';
  129 + }else{
  130 + httpurl+=this.url.edit;
  131 + method = 'put';
  132 + }
  133 + httpAction(httpurl,this.model,method).then((res)=>{
  134 + if(res.success){
  135 + that.$message.success(res.message);
  136 + that.$emit('ok');
  137 + }else{
  138 + that.$message.warning(res.message);
  139 + }
  140 + }).finally(() => {
  141 + that.confirmLoading = false;
  142 + })
  143 + }
  144 +
  145 + })
  146 + },
  147 + }
  148 + }
  149 +</script>
0 150 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.Style#Drawer.vue 0 → 100644
  1 +<template>
  2 + <a-drawer
  3 + :title="title"
  4 + :width="width"
  5 + placement="right"
  6 + :closable="false"
  7 + @close="close"
  8 + destroyOnClose
  9 + :visible="visible">
  10 + <operationLog-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></operationLog-form>
  11 + <div class="drawer-footer">
  12 + <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
  13 + <a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
  14 + </div>
  15 + </a-drawer>
  16 +</template>
  17 +
  18 +<script>
  19 +
  20 + import OperationLogForm from './OperationLogForm'
  21 +
  22 + export default {
  23 + name: 'OperationLogModal',
  24 + components: {
  25 + OperationLogForm
  26 + },
  27 + data () {
  28 + return {
  29 + title:"操作",
  30 + width:800,
  31 + visible: false,
  32 + disableSubmit: false
  33 + }
  34 + },
  35 + methods: {
  36 + add () {
  37 + this.visible=true
  38 + this.$nextTick(()=>{
  39 + this.$refs.realForm.add();
  40 + })
  41 + },
  42 + edit (record) {
  43 + this.visible=true
  44 + this.$nextTick(()=>{
  45 + this.$refs.realForm.edit(record);
  46 + });
  47 + },
  48 + close () {
  49 + this.$emit('close');
  50 + this.visible = false;
  51 + },
  52 + submitCallback(){
  53 + this.$emit('ok');
  54 + this.visible = false;
  55 + },
  56 + handleOk () {
  57 + this.$refs.realForm.submitForm();
  58 + },
  59 + handleCancel () {
  60 + this.close()
  61 + }
  62 + }
  63 + }
  64 +</script>
  65 +
  66 +<style lang="less" scoped>
  67 +/** Button按钮间距 */
  68 + .ant-btn {
  69 + margin-left: 30px;
  70 + margin-bottom: 30px;
  71 + float: right;
  72 + }
  73 + .drawer-footer{
  74 + position: absolute;
  75 + bottom: -8px;
  76 + width: 100%;
  77 + border-top: 1px solid #e8e8e8;
  78 + padding: 10px 16px;
  79 + text-align: right;
  80 + left: 0;
  81 + background: #fff;
  82 + border-radius: 0 0 2px 2px;
  83 + }
  84 +</style>
0 85 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.vue 0 → 100644
  1 +<template>
  2 + <j-modal
  3 + :title="title"
  4 + :width="width"
  5 + :visible="visible"
  6 + switchFullscreen
  7 + @ok="handleOk"
  8 + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
  9 + @cancel="handleCancel"
  10 + cancelText="关闭">
  11 + <operationLog-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></operationLog-form>
  12 + </j-modal>
  13 +</template>
  14 +
  15 +<script>
  16 +
  17 + import OperationLogForm from './OperationLogForm'
  18 + export default {
  19 + name: 'OperationLogModal',
  20 + components: {
  21 + OperationLogForm
  22 + },
  23 + data () {
  24 + return {
  25 + title:'',
  26 + width:800,
  27 + visible: false,
  28 + disableSubmit: false
  29 + }
  30 + },
  31 + methods: {
  32 + add () {
  33 + this.visible=true
  34 + this.$nextTick(()=>{
  35 + this.$refs.realForm.add();
  36 + })
  37 + },
  38 + edit (record) {
  39 + this.visible=true
  40 + this.$nextTick(()=>{
  41 + this.$refs.realForm.edit(record);
  42 + })
  43 + },
  44 + close () {
  45 + this.$emit('close');
  46 + this.visible = false;
  47 + },
  48 + handleOk () {
  49 + this.$refs.realForm.submitForm();
  50 + },
  51 + submitCallback(){
  52 + this.$emit('ok');
  53 + this.visible = false;
  54 + },
  55 + handleCancel () {
  56 + this.close()
  57 + }
  58 + }
  59 + }
  60 +</script>
0 61 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
... ... @@ -16,7 +16,6 @@
16 16 show-search
17 17 placeholder="请选择货主"
18 18 option-filter-prop="children"
19   - :filter-option="filterOption"
20 19 v-model="queryParam.companyCode">
21 20 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
22 21 item.name
... ... @@ -32,7 +31,6 @@
32 31 show-search
33 32 placeholder="请选择入库单类型"
34 33 option-filter-prop="children"
35   - :filter-option="filterOption"
36 34 v-model="queryParam.type">
37 35 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
38 36 item.name
... ... @@ -65,7 +63,6 @@
65 63 show-search
66 64 placeholder="请选择供应商"
67 65 option-filter-prop="children"
68   - :filter-option="filterOption"
69 66 v-model="queryParam.supplierCode">
70 67 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
71 68 item.name
... ... @@ -116,12 +113,6 @@
116 113  
117 114 <!-- table区域-begin -->
118 115 <div>
119   - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
120   - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
121   - style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
122   - <a style="margin-left: 24px" @click="onClearSelected">清空</a>
123   - </div>
124   -
125 116 <a-table
126 117 ref="table"
127 118 size="middle"
... ...
ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue
... ... @@ -17,7 +17,6 @@
17 17 show-search
18 18 placeholder="请选择货主"
19 19 option-filter-prop="children"
20   - :filter-option="filterOption"
21 20 v-model="model.companyCode">
22 21 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
23 22 item.name
... ... @@ -33,7 +32,6 @@
33 32 show-search
34 33 placeholder="请选择入库单类型"
35 34 option-filter-prop="children"
36   - :filter-option="filterOption"
37 35 v-model="model.type">
38 36 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
39 37 item.name
... ... @@ -49,7 +47,6 @@
49 47 show-search
50 48 placeholder="请选择供应商"
51 49 option-filter-prop="children"
52   - :filter-option="filterOption"
53 50 v-model="model.supplierCode">
54 51 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
55 52 item.name
... ...
ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue
... ... @@ -25,7 +25,6 @@
25 25 rowKey="id"
26 26 size="middle"
27 27 :columns="columns"
28   - :loading="loading"
29 28 :dataSource="dataSource"
30 29 :pagination="false">
31 30 <span slot="action" slot-scope="text, record">
... ...
huaheng-wms-core/pom.xml
... ... @@ -42,7 +42,11 @@
42 42 <groupId>org.redisson</groupId>
43 43 <artifactId>redisson</artifactId>
44 44 </dependency>
45   -
  45 + <dependency>
  46 + <groupId>cn.monitor4all</groupId>
  47 + <artifactId>log-record-starter</artifactId>
  48 + <version>1.4.1</version>
  49 + </dependency>
46 50 <dependency>
47 51 <groupId>com.github.abel533</groupId>
48 52 <artifactId>ECharts</artifactId>
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
... ... @@ -155,6 +155,7 @@ public class ErpServiceImpl implements IErpService {
155 155 ReceiptDetail receiptDetail = new ReceiptDetail();
156 156 receiptDetail.setWarehouseCode(warehouseCode);
157 157 receiptDetail.setCompanyCode(companyCode);
  158 + receiptDetail.setReferCode(referCode);
158 159 receiptDetail.setReceiptCode(receiptHeader.getCode());
159 160 receiptDetail.setReceiptId(receiptHeader.getId());
160 161 receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java
... ... @@ -81,7 +81,7 @@ public class ApiAuthenticationAspect {
81 81 JWTVerifier verifier = JWT.require(algorithm).withIssuer(HuahengJwtUtil.HUAHENG_SYSTEM_ID).build();
82 82 DecodedJWT jwt = verifier.verify(token);
83 83 new ApiAuthentication.ApiAuthenticationBuild().operator(jwt.getClaim("operator").asString()).audience(jwt.getAudience().get(0)).issuer(jwt.getIssuer())
84   - .issuedAt(jwt.getIssuedAt()).expireDateTime(jwt.getExpiresAt()).bulid();;
  84 + .issuedAt(jwt.getIssuedAt()).expireDateTime(jwt.getExpiresAt()).bulid();
85 85 } catch (JWTVerificationException e) {
86 86 log.error(e.getMessage());
87 87 throw e;
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/dto/ApiAuthentication.java
... ... @@ -27,10 +27,10 @@ public class ApiAuthentication {
27 27 /** Token签发方(WMS) */
28 28 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
29 29  
30   - /** 签发时间 */
  30 + /** Token签发时间 */
31 31 private Date issuedAt;
32 32  
33   - /** 失效时间 */
  33 + /** Token失效时间 */
34 34 private Date expireDateTime;
35 35  
36 36 public ApiAuthentication() {}
... ... @@ -67,10 +67,10 @@ public class ApiAuthentication {
67 67 /** Token签发方(WMS) */
68 68 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
69 69  
70   - /** 签发时间 */
  70 + /** Token签发时间 */
71 71 private Date issuedAt;
72 72  
73   - /** 失效时间 */
  73 + /** Token失效时间 */
74 74 private Date expireDateTime;
75 75  
76 76 public ApiAuthenticationBuild operator(String operator) {
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/controller/OperationLogController.java 0 → 100644
  1 +package org.jeecg.modules.wms.monitor.operation.controller;
  2 +
  3 +import java.util.Arrays;
  4 +
  5 +import javax.servlet.http.HttpServletRequest;
  6 +import javax.servlet.http.HttpServletResponse;
  7 +
  8 +import org.jeecg.common.api.vo.Result;
  9 +import org.jeecg.common.aspect.annotation.AutoLog;
  10 +import org.jeecg.common.system.base.controller.JeecgController;
  11 +import org.jeecg.common.system.query.QueryGenerator;
  12 +import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
  13 +import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.web.bind.annotation.DeleteMapping;
  16 +import org.springframework.web.bind.annotation.GetMapping;
  17 +import org.springframework.web.bind.annotation.PostMapping;
  18 +import org.springframework.web.bind.annotation.RequestBody;
  19 +import org.springframework.web.bind.annotation.RequestMapping;
  20 +import org.springframework.web.bind.annotation.RequestMethod;
  21 +import org.springframework.web.bind.annotation.RequestParam;
  22 +import org.springframework.web.bind.annotation.RestController;
  23 +import org.springframework.web.servlet.ModelAndView;
  24 +
  25 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  26 +import com.baomidou.mybatisplus.core.metadata.IPage;
  27 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  28 +
  29 +import io.swagger.annotations.Api;
  30 +import io.swagger.annotations.ApiOperation;
  31 +import lombok.extern.slf4j.Slf4j;
  32 +
  33 +/**
  34 + * @Description: 操作记录表
  35 + * @Author: jeecg-boot
  36 + * @Date: 2023-02-20
  37 + * @Version: V1.0
  38 + */
  39 +@Api(tags = "操作记录表")
  40 +@RestController
  41 +@RequestMapping("/config/operationLog")
  42 +@Slf4j
  43 +public class OperationLogController extends JeecgController<OperationLog, IOperationLogService> {
  44 + @Autowired
  45 + private IOperationLogService operationLogService;
  46 +
  47 + /**
  48 + * 分页列表查询
  49 + * @param operationLog
  50 + * @param pageNo
  51 + * @param pageSize
  52 + * @param req
  53 + * @return
  54 + */
  55 + // @AutoLog(value = "操作记录表-分页列表查询")
  56 + @ApiOperation(value = "操作记录表-分页列表查询", notes = "操作记录表-分页列表查询")
  57 + @GetMapping(value = "/list")
  58 + public Result<IPage<OperationLog>> queryPageList(OperationLog operationLog, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
  59 + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
  60 + QueryWrapper<OperationLog> queryWrapper = QueryGenerator.initQueryWrapper(operationLog, req.getParameterMap());
  61 + Page<OperationLog> page = new Page<OperationLog>(pageNo, pageSize);
  62 + IPage<OperationLog> pageList = operationLogService.page(page, queryWrapper);
  63 + return Result.OK(pageList);
  64 + }
  65 +
  66 + /**
  67 + * 添加
  68 + * @param operationLog
  69 + * @return
  70 + */
  71 + @AutoLog(value = "操作记录表-添加")
  72 + @ApiOperation(value = "操作记录表-添加", notes = "操作记录表-添加")
  73 + @PostMapping(value = "/add")
  74 + public Result<String> add(@RequestBody OperationLog operationLog) {
  75 + operationLogService.save(operationLog);
  76 + return Result.OK("添加成功!");
  77 + }
  78 +
  79 + /**
  80 + * 编辑
  81 + * @param operationLog
  82 + * @return
  83 + */
  84 + @AutoLog(value = "操作记录表-编辑")
  85 + @ApiOperation(value = "操作记录表-编辑", notes = "操作记录表-编辑")
  86 + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
  87 + public Result<String> edit(@RequestBody OperationLog operationLog) {
  88 + operationLogService.updateById(operationLog);
  89 + return Result.OK("编辑成功!");
  90 + }
  91 +
  92 + /**
  93 + * 通过id删除
  94 + * @param id
  95 + * @return
  96 + */
  97 + @AutoLog(value = "操作记录表-通过id删除")
  98 + @ApiOperation(value = "操作记录表-通过id删除", notes = "操作记录表-通过id删除")
  99 + @DeleteMapping(value = "/delete")
  100 + public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
  101 + operationLogService.removeById(id);
  102 + return Result.OK("删除成功!");
  103 + }
  104 +
  105 + /**
  106 + * 批量删除
  107 + * @param ids
  108 + * @return
  109 + */
  110 + @AutoLog(value = "操作记录表-批量删除")
  111 + @ApiOperation(value = "操作记录表-批量删除", notes = "操作记录表-批量删除")
  112 + @DeleteMapping(value = "/deleteBatch")
  113 + public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
  114 + this.operationLogService.removeByIds(Arrays.asList(ids.split(",")));
  115 + return Result.OK("批量删除成功!");
  116 + }
  117 +
  118 + /**
  119 + * 通过id查询
  120 + * @param id
  121 + * @return
  122 + */
  123 + // @AutoLog(value = "操作记录表-通过id查询")
  124 + @ApiOperation(value = "操作记录表-通过id查询", notes = "操作记录表-通过id查询")
  125 + @GetMapping(value = "/queryById")
  126 + public Result<OperationLog> queryById(@RequestParam(name = "id", required = true) String id) {
  127 + OperationLog operationLog = operationLogService.getById(id);
  128 + if (operationLog == null) {
  129 + return Result.error("未找到对应数据");
  130 + }
  131 + return Result.OK(operationLog);
  132 + }
  133 +
  134 + /**
  135 + * 导出excel
  136 + * @param request
  137 + * @param operationLog
  138 + */
  139 + @RequestMapping(value = "/exportXls")
  140 + public ModelAndView exportXls(HttpServletRequest request, OperationLog operationLog) {
  141 + return super.exportXls(request, operationLog, OperationLog.class, "操作记录表");
  142 + }
  143 +
  144 + /**
  145 + * 通过excel导入数据
  146 + * @param request
  147 + * @param response
  148 + * @return
  149 + */
  150 + @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  151 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  152 + return super.importExcel(request, response, OperationLog.class);
  153 + }
  154 +
  155 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/entity/OperationLog.java 0 → 100644
  1 +package org.jeecg.modules.wms.monitor.operation.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +import com.baomidou.mybatisplus.annotation.IdType;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import lombok.Data;
  11 +import com.fasterxml.jackson.annotation.JsonFormat;
  12 +import org.springframework.format.annotation.DateTimeFormat;
  13 +import org.jeecgframework.poi.excel.annotation.Excel;
  14 +import org.jeecg.common.aspect.annotation.Dict;
  15 +import io.swagger.annotations.ApiModel;
  16 +import io.swagger.annotations.ApiModelProperty;
  17 +import lombok.EqualsAndHashCode;
  18 +import lombok.experimental.Accessors;
  19 +
  20 +/**
  21 + * @Description: 操作记录表
  22 + * @Author: jeecg-boot
  23 + * @Date: 2023-02-20
  24 + * @Version: V1.0
  25 + */
  26 +@Data
  27 +@TableName("operation_log")
  28 +@Accessors(chain = true)
  29 +@EqualsAndHashCode(callSuper = false)
  30 +@ApiModel(value="operation_log对象", description="操作记录表")
  31 +public class OperationLog implements Serializable {
  32 + private static final long serialVersionUID = 1L;
  33 +
  34 + /**主键*/
  35 + @TableId(type = IdType.AUTO)
  36 + @ApiModelProperty(value = "主键")
  37 + private java.lang.Integer id;
  38 + /**业务ID*/
  39 + @Excel(name = "业务ID", width = 15)
  40 + @ApiModelProperty(value = "业务ID")
  41 + private java.lang.String bizId;
  42 + /**业务类型*/
  43 + @Excel(name = "业务类型", width = 15)
  44 + @ApiModelProperty(value = "业务类型")
  45 + private java.lang.String bizType;
  46 + /**操作内容*/
  47 + @Excel(name = "操作内容", width = 15)
  48 + @ApiModelProperty(value = "操作内容")
  49 + private java.lang.String operationMsg;
  50 + /**操作时间*/
  51 + @Excel(name = "操作时间", width = 15)
  52 + @ApiModelProperty(value = "操作时间")
  53 + private java.util.Date operationTime;
  54 + /**操作结果状态*/
  55 + @Excel(name = "操作结果状态", width = 15)
  56 + @ApiModelProperty(value = "操作结果状态")
  57 + private java.lang.Integer operationStatus;
  58 + /**操作耗时*/
  59 + @Excel(name = "操作耗时", width = 15)
  60 + @ApiModelProperty(value = "操作耗时")
  61 + private java.lang.Long operationCostTime;
  62 + /**方法返回内容*/
  63 + @Excel(name = "方法返回内容", width = 15)
  64 + @ApiModelProperty(value = "方法返回内容")
  65 + private java.lang.String contentReturn;
  66 + /**方法异常内容*/
  67 + @Excel(name = "方法异常内容", width = 15)
  68 + @ApiModelProperty(value = "方法异常内容")
  69 + private java.lang.String contentException;
  70 + /**操作人ID*/
  71 + @Excel(name = "操作人ID", width = 15)
  72 + @ApiModelProperty(value = "操作人ID")
  73 + private java.lang.String operatorId;
  74 + /**操作人姓名*/
  75 + @Excel(name = "操作人姓名", width = 15)
  76 + @ApiModelProperty(value = "操作人姓名")
  77 + private java.lang.String operatorName;
  78 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/OperationLogMapper.java 0 → 100644
  1 +package org.jeecg.modules.wms.monitor.operation.mapper;
  2 +
  3 +import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
  4 +
  5 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  6 +
  7 +/**
  8 + * @Description: 操作记录表
  9 + * @Author: jeecg-boot
  10 + * @Date: 2023-02-20
  11 + * @Version: V1.0
  12 + */
  13 +public interface OperationLogMapper extends BaseMapper<OperationLog> {
  14 +
  15 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/xml/OperationLogMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper">
  4 +
  5 +</mapper>
0 6 \ No newline at end of file
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/IOperationLogService.java 0 → 100644
  1 +package org.jeecg.modules.wms.monitor.operation.service;
  2 +
  3 +import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
  4 +
  5 +import com.baomidou.mybatisplus.extension.service.IService;
  6 +
  7 +/**
  8 + * @Description: 操作记录表
  9 + * @Author: jeecg-boot
  10 + * @Date: 2023-02-20
  11 + * @Version: V1.0
  12 + */
  13 +public interface IOperationLogService extends IService<OperationLog> {
  14 +
  15 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java 0 → 100644
  1 +package org.jeecg.modules.wms.monitor.operation.service.impl;
  2 +
  3 +import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
  4 +import org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper;
  5 +import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +import com.alibaba.fastjson.JSON;
  9 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10 +
  11 +import cn.monitor4all.logRecord.bean.LogDTO;
  12 +import cn.monitor4all.logRecord.service.IOperationLogGetService;
  13 +import lombok.extern.slf4j.Slf4j;
  14 +
  15 +/**
  16 + * @Description: 操作记录表
  17 + * @Author: jeecg-boot
  18 + * @Date: 2023-02-20
  19 + * @Version: V1.0
  20 + */
  21 +@Slf4j
  22 +@Service
  23 +public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, OperationLog> implements IOperationLogService, IOperationLogGetService {
  24 +
  25 + @Override
  26 + public boolean createLog(LogDTO logDTO) throws Exception {
  27 + try {
  28 + log.debug(">>>>>> create OperationLog: [{}]", JSON.toJSONString(logDTO));
  29 + if (null == logDTO.getBizId()) {
  30 + log.error(">>>>>> create OperationLog bizId is null");
  31 + return false;
  32 + }
  33 + OperationLog operationLog = new OperationLog();
  34 + operationLog.setBizId(logDTO.getBizId());
  35 + operationLog.setBizType(logDTO.getBizType());
  36 + operationLog.setContentException(logDTO.getException());
  37 + operationLog.setContentReturn(logDTO.getReturnStr());
  38 + operationLog.setOperationCostTime(logDTO.getExecutionTime());
  39 + operationLog.setOperationMsg(logDTO.getMsg());
  40 + operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0);
  41 + operationLog.setOperationTime(logDTO.getOperateDate());
  42 + operationLog.setOperatorId(logDTO.getOperatorId());
  43 + operationLog.setOperatorName(logDTO.getOperatorId());
  44 + this.save(operationLog);
  45 + return true;
  46 + } catch (Exception e) {
  47 + log.error(">>>>>> create OperationLog error:{}", e.getMessage(), e);
  48 + return false;
  49 + }
  50 + }
  51 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptHeader.java
... ... @@ -9,6 +9,10 @@ import com.baomidou.mybatisplus.annotation.TableName;
9 9 import org.jeecgframework.poi.excel.annotation.Excel;
10 10 import lombok.Data;
11 11 import com.fasterxml.jackson.annotation.JsonFormat;
  12 +
  13 +import cn.monitor4all.logRecord.annotation.LogRecordDiffField;
  14 +import cn.monitor4all.logRecord.annotation.LogRecordDiffObject;
  15 +
12 16 import org.springframework.format.annotation.DateTimeFormat;
13 17 import org.jeecg.common.aspect.annotation.Dict;
14 18 import io.swagger.annotations.ApiModel;
... ... @@ -23,6 +27,7 @@ import io.swagger.annotations.ApiModelProperty;
23 27 @Data
24 28 @TableName("receipt_header")
25 29 @ApiModel(value = "receipt_header对象", description = "入库表主表")
  30 +@LogRecordDiffObject
26 31 public class ReceiptHeader implements Serializable {
27 32 private static final long serialVersionUID = 1L;
28 33  
... ... @@ -33,6 +38,7 @@ public class ReceiptHeader implements Serializable {
33 38 /** 编码 */
34 39 @Excel(name = "编码", width = 15)
35 40 @ApiModelProperty(value = "编码")
  41 + @LogRecordDiffField(alias = "入库单编码")
36 42 private String code;
37 43 /** 仓库编码 */
38 44 @Excel(name = "仓库编码", width = 15)
... ...
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
1 1 package org.jeecg.utils.constant;
2 2  
3 3 /**
4   - * 数字自定义常量
  4 + * 数字自定义常量
  5 + * 1、入库单状态
  6 + * 2、出库单状态
  7 + * 3、单据上传状态
  8 + * 4、入库组盘状态
  9 + * 5、出库组盘状态
  10 + * 6、任务类型
  11 + * 7、任务状态
  12 + * 8、波次状态
  13 + * 9、质检状态
  14 + * 10、盘点状态
  15 + * 11、INVENTORY_TRANSACTION_RECEIPT
  16 + * 12、调整单状态
  17 + * 13、任务内部类型
  18 + * 14、质检单类型
  19 + * 16、请求类型
5 20 * @author ricard
6 21 */
7 22 public class QuantityConstant {
8 23 /**
9   - * 1、入库单状态
10   - * 2、出库单状态
11   - * 3、单据上传状态
12   - * 4、入库组盘状态
13   - * 5、出库组盘状态
14   - * 6、任务类型
15   - * 7、任务状态
16   - * 8、波次状态
17   - * 9、质检状态
18   - * 10、盘点状态
19   - * 11、INVENTORY_TRANSACTION_RECEIPT
20   - * 12、调整单状态
21   - * 13、任务内部类型
22   - * 14、质检单类型
23   - * 16、请求类型
  24 +
24 25 */
25 26  
26 27 // 1、入库单状态
... ... @@ -708,9 +709,8 @@ public class QuantityConstant {
708 709 public static final String ERP_LCID = "2052";
709 710 public static final String ERP_ServerUrl = "http://erptest.gani.com.cn/K3Cloud/";
710 711  
711   - public static final String UPSTREAM_DELETE_RECEIPT="上游删除";
712   - public static final String BACK_DELETE_RECEIPT="回传删除";
713   - public static final String WMS_DELETE_RECEIPT="WMS删除";
714   -
  712 + public static final String UPSTREAM_DELETE_RECEIPT = "上游删除";
  713 + public static final String BACK_DELETE_RECEIPT = "回传删除";
  714 + public static final String WMS_DELETE_RECEIPT = "WMS删除";
715 715  
716 716 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java renamed to huaheng-wms-core/src/main/java/org/jeecg/utils/interceptor/HuahengBatisInterceptor.java
1   -package org.jeecg.modules.wms.framework.config;
  1 +package org.jeecg.utils.interceptor;
2 2  
3 3 import java.lang.reflect.Field;
4 4 import java.util.Date;
... ...