Commit c680acbfcc2afb0aa19afdd05a7f4fbf47c4f5a5

Authored by 肖超群
2 parents b69533bf f8f52b05

Merge branch 'develop4' of http://www.huahengrobot.com:90/wms/wms4 into develop4

Showing 39 changed files with 1446 additions and 169 deletions
ant-design-vue-jeecg/src/api/api.js
@@ -139,6 +139,8 @@ export const createShipmentTask = (params) => postAction('/shipment/shipmentComb @@ -139,6 +139,8 @@ export const createShipmentTask = (params) => postAction('/shipment/shipmentComb
139 export const selectSortingPort = (params) => postAction('/shipment/shipmentCombination/selectSortingPort', params); 139 export const selectSortingPort = (params) => postAction('/shipment/shipmentCombination/selectSortingPort', params);
140 //选择入库分拣口 140 //选择入库分拣口
141 export const selectSupplePort = (params) => postAction('/receipt/receiptContainerHeader/selectSupplePort', params); 141 export const selectSupplePort = (params) => postAction('/receipt/receiptContainerHeader/selectSupplePort', params);
  142 +//选择盘点分拣口
  143 +export const inventoryPort = (params) => postAction('/cycleCountDetail/cycleCountDetail/inventoryPort', params);
142 //创建空托盘入库任务 144 //创建空托盘入库任务
143 export const createEmptyIn = (params) => postAction('/task/taskHeader/createEmptyIn', params); 145 export const createEmptyIn = (params) => postAction('/task/taskHeader/createEmptyIn', params);
144 //创建空托盘出库任务 146 //创建空托盘出库任务
@@ -157,8 +159,10 @@ export const selectPort = (params) => postAction('/task/taskHeader/selectPort', @@ -157,8 +159,10 @@ export const selectPort = (params) => postAction('/task/taskHeader/selectPort',
157 export const createOverStationTask = (params) => postAction('/task/taskHeader/createOverStationTask', params); 159 export const createOverStationTask = (params) => postAction('/task/taskHeader/createOverStationTask', params);
158 //盘点任务创建 160 //盘点任务创建
159 export const stockTakeTask = (params,headerId,code) => postAction('/cycleCountDetail/cycleCountDetail/stockTakeTask?ids='+params+'&headerId='+headerId+'&code='+code, code); 161 export const stockTakeTask = (params,headerId,code) => postAction('/cycleCountDetail/cycleCountDetail/stockTakeTask?ids='+params+'&headerId='+headerId+'&code='+code, code);
  162 +//盘盈添加
  163 +export const increaseInInventoryGain = (params) => postAction('/cycleCountDetail/cycleCountDetail/increaseInInventoryGain', params);
160 //盘点任务生成 164 //盘点任务生成
161 -export const createCycleCoutTaskByDetailId = (params) => postAction('/cycleCountDetail/cycleCountDetail/createCycleCoutTaskByDetailId?cycleId='+params, params); 165 +export const createCycleCoutTaskByDetailId = (params,toPort) => postAction('/cycleCountDetail/cycleCountDetail/createCycleCoutTaskByDetailId?cycleId='+params+'&toPort='+toPort, params);
162 //盘点确定实盘数量 166 //盘点确定实盘数量
163 export const confirmGapQty = (params) => postAction('/cycleCountDetail/cycleCountDetail/confirmGapQty', params); 167 export const confirmGapQty = (params) => postAction('/cycleCountDetail/cycleCountDetail/confirmGapQty', params);
164 //创建空托盘组入库任务 168 //创建空托盘组入库任务
ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue
@@ -94,10 +94,9 @@ @@ -94,10 +94,9 @@
94 <template slot="content"> 94 <template slot="content">
95 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns"> 95 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
96 <a-row style="width: 400px"> 96 <a-row style="width: 400px">
97 - <template v-for="(item,index) in defColumns"> 97 + <template v-for="(item) in defColumns">
98 <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'"> 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 </template> 100 </template>
102 </template> 101 </template>
103 </a-row> 102 </a-row>
@@ -124,7 +123,7 @@ @@ -124,7 +123,7 @@
124 <a-card> 123 <a-card>
125 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns"> 124 <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
126 <a-row style="width: 400px"> 125 <a-row style="width: 400px">
127 - <template v-for="(item,index) in defColumns"> 126 + <template v-for="(item) in defColumns">
128 <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'"> 127 <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
129 <a-col :span="12"> 128 <a-col :span="12">
130 <a-checkbox :value="item.dataIndex"> 129 <a-checkbox :value="item.dataIndex">
ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailSelectList.vue
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 :dataSource="dataSource" 28 :dataSource="dataSource"
29 :pagination="ipagination" 29 :pagination="ipagination"
30 :loading="loading" 30 :loading="loading"
31 - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" 31 +
32 @change="handleTableChange"> 32 @change="handleTableChange">
33 33
34 <span slot="companyCode" slot-scope="companyCode"> 34 <span slot="companyCode" slot-scope="companyCode">
@@ -157,14 +157,8 @@ export default { @@ -157,14 +157,8 @@ export default {
157 ], 157 ],
158 url: { 158 url: {
159 list: "/inventory/inventoryHeader/listInventoryDetailByMainId", 159 list: "/inventory/inventoryHeader/listInventoryDetailByMainId",
160 - delete: "/inventory/inventoryHeader/deleteInventoryDetail",  
161 - deleteBatch: "/inventory/inventoryHeader/deleteBatchInventoryDetail",  
162 - exportXlsUrl: "/inventory/inventoryHeader/exportInventoryDetail",  
163 - importUrl: "/inventory/inventoryHeader/importInventoryDetail",  
164 }, 160 },
165 - dictOptions: {  
166 - containerStatus: [],  
167 - } 161 +
168 } 162 }
169 }, 163 },
170 created() { 164 created() {
@@ -175,18 +169,8 @@ export default { @@ -175,18 +169,8 @@ export default {
175 Utils.$on('methodA',(data)=> { 169 Utils.$on('methodA',(data)=> {
176 _this.methodA(data); 170 _this.methodA(data);
177 }) 171 })
178 - // var _this = this;  
179 - // setInterval(function () {  
180 - // if(_this.isLoad) {  
181 - // _this.loadDataList();  
182 - // }  
183 - // },1000)  
184 - },  
185 - computed: {  
186 - importExcelUrl() {  
187 - return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`;  
188 - }  
189 }, 172 },
  173 +
190 methods: { 174 methods: {
191 175
192 methodA(data) { 176 methodA(data) {
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 \ No newline at end of file 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 \ No newline at end of file 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 \ No newline at end of file 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 \ No newline at end of file 61 \ No newline at end of file
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
16 show-search 16 show-search
17 placeholder="请选择货主" 17 placeholder="请选择货主"
18 option-filter-prop="children" 18 option-filter-prop="children"
19 - :filter-option="filterOption"  
20 v-model="queryParam.companyCode"> 19 v-model="queryParam.companyCode">
21 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ 20 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
22 item.name 21 item.name
@@ -32,7 +31,6 @@ @@ -32,7 +31,6 @@
32 show-search 31 show-search
33 placeholder="请选择入库单类型" 32 placeholder="请选择入库单类型"
34 option-filter-prop="children" 33 option-filter-prop="children"
35 - :filter-option="filterOption"  
36 v-model="queryParam.type"> 34 v-model="queryParam.type">
37 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{ 35 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
38 item.name 36 item.name
@@ -65,7 +63,6 @@ @@ -65,7 +63,6 @@
65 show-search 63 show-search
66 placeholder="请选择供应商" 64 placeholder="请选择供应商"
67 option-filter-prop="children" 65 option-filter-prop="children"
68 - :filter-option="filterOption"  
69 v-model="queryParam.supplierCode"> 66 v-model="queryParam.supplierCode">
70 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{ 67 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
71 item.name 68 item.name
@@ -116,12 +113,6 @@ @@ -116,12 +113,6 @@
116 113
117 <!-- table区域-begin --> 114 <!-- table区域-begin -->
118 <div> 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 <a-table 116 <a-table
126 ref="table" 117 ref="table"
127 size="middle" 118 size="middle"
ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue
@@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
17 show-search 17 show-search
18 placeholder="请选择货主" 18 placeholder="请选择货主"
19 option-filter-prop="children" 19 option-filter-prop="children"
20 - :filter-option="filterOption"  
21 v-model="model.companyCode"> 20 v-model="model.companyCode">
22 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ 21 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
23 item.name 22 item.name
@@ -33,7 +32,6 @@ @@ -33,7 +32,6 @@
33 show-search 32 show-search
34 placeholder="请选择入库单类型" 33 placeholder="请选择入库单类型"
35 option-filter-prop="children" 34 option-filter-prop="children"
36 - :filter-option="filterOption"  
37 v-model="model.type"> 35 v-model="model.type">
38 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{ 36 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
39 item.name 37 item.name
@@ -49,7 +47,6 @@ @@ -49,7 +47,6 @@
49 show-search 47 show-search
50 placeholder="请选择供应商" 48 placeholder="请选择供应商"
51 option-filter-prop="children" 49 option-filter-prop="children"
52 - :filter-option="filterOption"  
53 v-model="model.supplierCode"> 50 v-model="model.supplierCode">
54 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{ 51 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
55 item.name 52 item.name
ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue
@@ -25,7 +25,6 @@ @@ -25,7 +25,6 @@
25 rowKey="id" 25 rowKey="id"
26 size="middle" 26 size="middle"
27 :columns="columns" 27 :columns="columns"
28 - :loading="loading"  
29 :dataSource="dataSource" 28 :dataSource="dataSource"
30 :pagination="false"> 29 :pagination="false">
31 <span slot="action" slot-scope="text, record"> 30 <span slot="action" slot-scope="text, record">
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue
@@ -27,7 +27,6 @@ @@ -27,7 +27,6 @@
27 bordered 27 bordered
28 rowKey="id" 28 rowKey="id"
29 class="j-table-force-nowrap" 29 class="j-table-force-nowrap"
30 - :scroll="{x:true}"  
31 :loading="loading" 30 :loading="loading"
32 :columns="columns" 31 :columns="columns"
33 :dataSource="dataSource" 32 :dataSource="dataSource"
@@ -73,9 +72,12 @@ @@ -73,9 +72,12 @@
73 <span>下载</span> 72 <span>下载</span>
74 </a-button> 73 </a-button>
75 </template> 74 </template>
76 - 75 + CycleCountDetailChiIdModal
77 <template slot="action" slot-scope="text, record"> 76 <template slot="action" slot-scope="text, record">
78 - <a v-if="record.enableStatus === 1" @click="generateCount(record.id)">生成盘点任务</a> 77 + <cycle-count-detail-chi-id-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id"/>
  78 + <a @click="createMany()"><a-icon/>新增</a>
  79 + <a-divider type="vertical"/>
  80 + <a v-if="record.enableStatus === 1" @click="selectPort(record)">生成盘点任务</a>
79 <a-divider v-if="record.enableStatus === 1" type="vertical"/> 81 <a-divider v-if="record.enableStatus === 1" type="vertical"/>
80 <a @click="loadDatas(record.cycleCountHeadId)"><a-icon type="sync"/>刷新</a> 82 <a @click="loadDatas(record.cycleCountHeadId)"><a-icon type="sync"/>刷新</a>
81 </template> 83 </template>
@@ -85,6 +87,8 @@ @@ -85,6 +87,8 @@
85 <!-- table区域 end --> 87 <!-- table区域 end -->
86 88
87 <!-- 表单区域 --> 89 <!-- 表单区域 -->
  90 +
  91 + <cycle-count-select-modal ref="modalForm2"></cycle-count-select-modal>
88 <cycle-count-detail-modal ref="modalForm" @ok="modalFormOk"/> 92 <cycle-count-detail-modal ref="modalForm" @ok="modalFormOk"/>
89 93
90 </a-card> 94 </a-card>
@@ -95,10 +99,12 @@ @@ -95,10 +99,12 @@
95 import { JeecgListMixin } from '@/mixins/JeecgListMixin' 99 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
96 import { getAction } from '@api/manage' 100 import { getAction } from '@api/manage'
97 import CycleCountDetailModal from './modules/CycleCountDetailModal' 101 import CycleCountDetailModal from './modules/CycleCountDetailModal'
  102 + import CycleCountSelectModal from './modules/CycleCountSelectModal'
98 import CycleCountDetailChildSubTable from './subTables/CycleCountDetailChildSubTable' 103 import CycleCountDetailChildSubTable from './subTables/CycleCountDetailChildSubTable'
99 import '@/assets/less/TableExpand.less' 104 import '@/assets/less/TableExpand.less'
100 import {createCycleCoutTaskByDetailId, stockTakeTask} from "../../../api/api"; 105 import {createCycleCoutTaskByDetailId, stockTakeTask} from "../../../api/api";
101 import Utils from "../../../components/jeecgbiz/JButtonBizComponent/util.js" 106 import Utils from "../../../components/jeecgbiz/JButtonBizComponent/util.js"
  107 + import CycleCountDetailChiIdModal from "./modules/CycleCountDetailChiIdModal";
102 108
103 export default { 109 export default {
104 name: 'CycleCountDetailList', 110 name: 'CycleCountDetailList',
@@ -107,6 +113,8 @@ @@ -107,6 +113,8 @@
107 components: { 113 components: {
108 CycleCountDetailModal, 114 CycleCountDetailModal,
109 CycleCountDetailChildSubTable, 115 CycleCountDetailChildSubTable,
  116 + CycleCountSelectModal,
  117 + CycleCountDetailChiIdModal,
110 }, 118 },
111 props: { 119 props: {
112 record: { 120 record: {
@@ -247,12 +255,6 @@ @@ -247,12 +255,6 @@
247 Utils.$on('methodB',(data)=> { 255 Utils.$on('methodB',(data)=> {
248 _this.methodB(data); 256 _this.methodB(data);
249 }) 257 })
250 - // var _this = this;  
251 - // setInterval(function () {  
252 - // if(_this.isLoad) {  
253 - // _this.loadDataList();  
254 - // }  
255 - // },1000)  
256 }, 258 },
257 computed: { 259 computed: {
258 importExcelUrl() { 260 importExcelUrl() {
@@ -283,8 +285,12 @@ @@ -283,8 +285,12 @@
283 }).finally(() => { 285 }).finally(() => {
284 this.loading = false 286 this.loading = false
285 }) 287 })
286 - },  
287 288
  289 + },
  290 + selectPort(record) {
  291 + this.$refs.modalForm2.edit(record);
  292 + this.$refs.modalForm2.title = "选择出库口";
  293 + },
288 loadDatas(record) { 294 loadDatas(record) {
289 this.loading = true 295 this.loading = true
290 this.dataSource = [] 296 this.dataSource = []
@@ -299,34 +305,13 @@ @@ -299,34 +305,13 @@
299 }) 305 })
300 }, 306 },
301 307
302 - // testaa(){  
303 - // alert("刷新了")  
304 - // var _this = this;  
305 - // _this.loadDataList();  
306 - // },  
307 methodB(data) { 308 methodB(data) {
308 var _this = this; 309 var _this = this;
309 _this.loadDatas(data); 310 _this.loadDatas(data);
310 }, 311 },
311 initDictConfig() { 312 initDictConfig() {
312 }, 313 },
313 - generateCount(id){  
314 - createCycleCoutTaskByDetailId(id).then((res) => {  
315 - // alert("请求成功")  
316 - if (res.success) {  
317 - this.$message.success(res.message)  
318 - this.$emit('ok')  
319 - var _this = this;  
320 - _this.loadDatas(res.result);  
321 - } else {  
322 - this.$message.warning(res.message);  
323 - }  
324 - }).finally(() => {  
325 - this.confirmLoading = false;  
326 - this.close()  
327 - })  
328 314
329 - },  
330 handleExpand(expanded, record) { 315 handleExpand(expanded, record) {
331 this.expandedRowKeys = [] 316 this.expandedRowKeys = []
332 if (expanded === true) { 317 if (expanded === true) {
@@ -353,7 +338,12 @@ @@ -353,7 +338,12 @@
353 fieldList.push({type:'string',value:'completedAt',text:'完成时间',dictCode:''}) 338 fieldList.push({type:'string',value:'completedAt',text:'完成时间',dictCode:''})
354 fieldList.push({type:'string',value:'enableStatus',text:'盘点明细状态',dictCode:''}) 339 fieldList.push({type:'string',value:'enableStatus',text:'盘点明细状态',dictCode:''})
355 this.superFieldList = fieldList 340 this.superFieldList = fieldList
356 - } 341 + },
  342 +
  343 + createMany() {
  344 + this.$refs.adjustmentModal.edit();
  345 + this.$refs.adjustmentModal.title = "实盘登记";
  346 + },
357 } 347 }
358 } 348 }
359 </script> 349 </script>
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
@@ -36,7 +36,6 @@ @@ -36,7 +36,6 @@
36 <a-table 36 <a-table
37 ref="table" 37 ref="table"
38 size="middle" 38 size="middle"
39 - :scroll="{x:true}"  
40 bordered 39 bordered
41 rowKey="id" 40 rowKey="id"
42 :columns="columns" 41 :columns="columns"
@@ -230,7 +229,7 @@ @@ -230,7 +229,7 @@
230 title: '操作', 229 title: '操作',
231 dataIndex: 'action', 230 dataIndex: 'action',
232 align:"center", 231 align:"center",
233 - fixed:"right", 232 + // fixed:"right",
234 width:147, 233 width:147,
235 scopedSlots: { customRender: 'action' } 234 scopedSlots: { customRender: 'action' }
236 } 235 }
ant-design-vue-jeecg/src/views/system/stocktaking/modules/AdjustmentDocModal.vue
1 -<script src="../../../../components/jeecgbiz/JButtonBizComponent/util.js"></script>  
2 <template> 1 <template>
3 <j-modal 2 <j-modal
4 :title="title" 3 :title="title"
@@ -33,7 +32,7 @@ export default { @@ -33,7 +32,7 @@ export default {
33 name: "AdjustmentDocModal", 32 name: "AdjustmentDocModal",
34 components: {}, 33 components: {},
35 props: { 34 props: {
36 - id: "", 35 + taskHeaderId:"",
37 }, 36 },
38 data() { 37 data() {
39 return { 38 return {
@@ -41,8 +40,9 @@ export default { @@ -41,8 +40,9 @@ export default {
41 width: 500, 40 width: 500,
42 visible: false, 41 visible: false,
43 model: { 42 model: {
44 - id:this.id, 43 + id:'',
45 countedQty:'', 44 countedQty:'',
  45 + state:this.taskHeaderId,
46 }, 46 },
47 labelCol: { 47 labelCol: {
48 xs: {span: 24}, 48 xs: {span: 24},
@@ -77,7 +77,9 @@ export default { @@ -77,7 +77,9 @@ export default {
77 add() { 77 add() {
78 this.edit(this.modelDefault); 78 this.edit(this.modelDefault);
79 }, 79 },
80 - edit() { 80 + edit(id) {
  81 + this.model.id=id;
  82 + alert(this.model.id)
81 this.visible = true; 83 this.visible = true;
82 }, 84 },
83 close() { 85 close() {
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailChiIdModal.vue 0 → 100644
  1 +<template>
  2 + <j-modal
  3 + :title="title"
  4 + :width="width"
  5 + :visible="visible"
  6 + :confirmLoading="confirmLoading"
  7 + switchFullscreen
  8 + @ok="handleOk"
  9 + @cancel="handleCancel"
  10 + cancelText="关闭">
  11 + <a-spin :spinning="confirmLoading">
  12 + <a-form-model ref="form" :model="model" :rules="validatorRules">
  13 + <a-row>
  14 + <a-col :xs="24">
  15 + <a-form-model-item label="物料" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode">
  16 + <j-search-select-tag
  17 + v-model="model.materialCode"
  18 + :dictOptions="materialList"
  19 + :trigger-change="true"
  20 + placeholder="请选择物料编码"
  21 + @change="searchMaterial">
  22 + </j-search-select-tag>
  23 + </a-form-model-item>
  24 + </a-col>
  25 + <a-col :xs="24">
  26 + <a-form-model-item label="实盘数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="countedQty">
  27 + <a-input v-model="model.countedQty" placeholder="请输入实盘数量"></a-input>
  28 + </a-form-model-item>
  29 + </a-col>
  30 + <a-col :span="24">
  31 + <a-form-model-item label="库存状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryStatus">
  32 + <j-dict-select-tag type="list" v-model="model.inventoryStatus" dictCode="inventory_status"
  33 + placeholder="请选择库存状态"/>
  34 + </a-form-model-item>
  35 + </a-col>
  36 + <a-col :xs="24">
  37 + <a-form-model-item label="批次" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batch">
  38 + <a-input v-model="model.batch" placeholder="请输入批次"></a-input>
  39 + </a-form-model-item>
  40 + </a-col>
  41 + </a-row>
  42 + </a-form-model>
  43 + </a-spin>
  44 + </j-modal>
  45 +</template>
  46 +
  47 +<script>
  48 +
  49 +import {createManyEmptyIn} from '@/api/api'
  50 +import {increaseInInventoryGain} from "../../../../api/api";
  51 +import {searchMaterialByCode} from '@/api/api';
  52 +import Utils from '../../../../components/jeecgbiz/JButtonBizComponent/util.js';
  53 +
  54 +export default {
  55 + name: "CycleCountDetailChiIdModal",
  56 + components: {},
  57 + props: {
  58 + id: "",
  59 + },
  60 + data() {
  61 + return {
  62 + title: "操作",
  63 + width: 500,
  64 + visible: false,
  65 + model: {
  66 + cycleCountDetailid:this.id,
  67 + materialCode:'',
  68 + batch:'',
  69 + countedQty:'',
  70 + },
  71 + materialList: {},
  72 + querySource: {},
  73 + labelCol: {
  74 + xs: {span: 24},
  75 + sm: {span: 5},
  76 + },
  77 + wrapperCol: {
  78 + xs: {span: 24},
  79 + sm: {span: 16},
  80 + },
  81 +
  82 + confirmLoading: false,
  83 + validatorRules: {
  84 + countedQty: [
  85 + {required: true, message: '请输入实盘数量!'},
  86 + ],
  87 + },
  88 + url: {
  89 + add: "/cycleCountDetail/cycleCountDetail/increaseInInventoryGain",
  90 + }
  91 +
  92 + }
  93 + },
  94 +
  95 +
  96 + created() {
  97 + //备份model原始值
  98 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  99 + this.searchMaterial();
  100 + // this.model.inventoryStatus = "good";
  101 + },
  102 +
  103 + methods: {
  104 + searchMaterial() {
  105 + const that = this;
  106 + that.querySource.materialCode = that.model.materialCode;
  107 + searchMaterialByCode(that.querySource).then((res) => {
  108 + that.materialList = res.result;
  109 + })
  110 + },
  111 + add() {
  112 + this.edit(this.modelDefault);
  113 + },
  114 + edit() {
  115 + this.visible = true;
  116 + },
  117 + close() {
  118 + this.$emit('close');
  119 + this.visible = false;
  120 + this.$refs.form.clearValidate();
  121 + },
  122 + handleOk() {
  123 + const that = this;
  124 + // 触发表单验证
  125 + this.$refs.form.validate(valid => {
  126 + if (valid) {
  127 + that.confirmLoading = true;
  128 + increaseInInventoryGain(this.model).then((res) => {
  129 + if (res.success) {
  130 + that.$message.success(res.message);
  131 + that.$emit('ok');
  132 + that.model.containerCode = '';
  133 + that.model.toLocationCode = '';
  134 + Utils.$emit('methodB',res.result);
  135 + } else {
  136 + that.$message.warning(res.message);
  137 + }
  138 + }).finally(() => {
  139 + that.confirmLoading = false;
  140 + that.close();
  141 + })
  142 + } else {
  143 + return false
  144 + }
  145 + })
  146 + },
  147 + handleCancel() {
  148 + this.close()
  149 + },
  150 +
  151 +
  152 + }
  153 +}
  154 +</script>
0 \ No newline at end of file 155 \ No newline at end of file
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountSelectModal.vue 0 → 100644
  1 +<template>
  2 + <j-modal
  3 + :title="title"
  4 + :width="width"
  5 + :visible="visible"
  6 + :confirmLoading="confirmLoading"
  7 + switchFullscreen
  8 + @ok="handleOk"
  9 + @cancel="handleCancel"
  10 + cancelText="关闭">
  11 + <a-spin :spinning="confirmLoading">
  12 + <a-form-model ref="form" :model="model" :rules="validatorRules">
  13 + <a-row>
  14 + <a-col :span="24">
  15 + <a-form-model-item label="出库口" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toPort">
  16 + <a-select
  17 + show-search
  18 + placeholder="请选择出库口"
  19 + option-filter-prop="children"
  20 + v-model="model.toPort">
  21 + <a-select-option v-for="item in portList" :key="item.name" :value="item.code">{{
  22 + item.name
  23 + }}
  24 + </a-select-option>
  25 + </a-select>
  26 + </a-form-model-item>
  27 + </a-col>
  28 + </a-row>
  29 + </a-form-model>
  30 + </a-spin>
  31 + </j-modal>
  32 +</template>
  33 +
  34 +<script>
  35 +
  36 +import {createCycleCoutTaskByDetailId} from '@/api/api'
  37 +import {inventoryPort} from '@/api/api'
  38 +import Utils from "../../../../components/jeecgbiz/JButtonBizComponent/util";
  39 +
  40 +export default {
  41 + name: "CycleCountSelectModal",
  42 + portList: [],
  43 + components: {},
  44 + props: {
  45 + mainId: {
  46 + type: String,
  47 + required: false,
  48 + default: ''
  49 + }
  50 + },
  51 + data() {
  52 + return {
  53 + title: "操作",
  54 + width: 500,
  55 + visible: false,
  56 + model: {
  57 + toPort:'',
  58 + },
  59 + portList: [],
  60 + labelCol: {
  61 + xs: {span: 24},
  62 + sm: {span: 5},
  63 + },
  64 + wrapperCol: {
  65 + xs: {span: 24},
  66 + sm: {span: 16},
  67 + },
  68 +
  69 + confirmLoading: false,
  70 + validatorRules: {},
  71 + modifyId:"",
  72 + url: {
  73 + createTask: "/shipment/shipmentContainerHeader/createShipmentTask",
  74 + }
  75 +
  76 + }
  77 + },
  78 + created() {
  79 + //备份model原始值
  80 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  81 + },
  82 + methods: {
  83 + add() {
  84 + this.edit(this.modelDefault);
  85 + },
  86 + edit(record) {
  87 + this.visible = true;
  88 + this.modifyId=record.id;
  89 + this.getPortList(record);
  90 + },
  91 + close() {
  92 + this.$emit('close');
  93 + this.visible = false;
  94 + this.$refs.form.clearValidate();
  95 + },
  96 + handleOk() {
  97 + const that = this;
  98 + // 触发表单验证
  99 + this.$refs.form.validate(valid => {
  100 +
  101 +
  102 + if (valid) {
  103 + that.confirmLoading = true;
  104 + createCycleCoutTaskByDetailId(this.modifyId,this.model.toPort).then((res) => {
  105 + // alert("请求成功")
  106 + if (res.success) {
  107 + this.$message.success(res.message)
  108 + this.$emit('ok')
  109 + var _this = this;
  110 + Utils.$emit('methodB',res.result);
  111 + // _this.loadDatas(res.result);
  112 + } else {
  113 + this.$message.warning(res.message);
  114 + }
  115 + }).finally(() => {
  116 + that.confirmLoading = false;
  117 + that.close();
  118 + });
  119 + } else {
  120 + return false
  121 + }
  122 + })
  123 + },
  124 + handleCancel() {
  125 + this.close()
  126 + },
  127 + getPortList(record) {
  128 + console.log("getPortList");
  129 + inventoryPort(record).then((res) => {
  130 + if (res.success) {
  131 + this.portList = res.result;
  132 + this.model = Object.assign({}, record);
  133 + this.visible = true;
  134 + }
  135 + });
  136 + }
  137 +
  138 + }
  139 +}
  140 +</script>
ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue
@@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@
22 </template> 22 </template>
23 23
24 <template slot="action" slot-scope="text, record"> 24 <template slot="action" slot-scope="text, record">
25 - <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id"/>  
26 - <a v-if="record.childStatus != 1" @click="createMany(record)"><a-icon />实盘登记</a> 25 + <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk"/>
  26 + <a v-if="record.childStatus != 1" @click="createMany(record.id)"><a-icon />实盘登记</a>
27 </template> 27 </template>
28 28
29 <template slot="fileSlot" slot-scope="text"> 29 <template slot="fileSlot" slot-scope="text">
@@ -171,8 +171,8 @@ @@ -171,8 +171,8 @@
171 this.loading = false 171 this.loading = false
172 }) 172 })
173 }, 173 },
174 - createMany() {  
175 - this.$refs.adjustmentModal.edit(); 174 + createMany(id) {
  175 + this.$refs.adjustmentModal.edit(id);
176 this.$refs.adjustmentModal.title = "实盘登记"; 176 this.$refs.adjustmentModal.title = "实盘登记";
177 }, 177 },
178 178
ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
@@ -69,6 +69,9 @@ @@ -69,6 +69,9 @@
69 </template> 69 </template>
70 70
71 <span slot="action" slot-scope="text, record"> 71 <span slot="action" slot-scope="text, record">
  72 + <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id" :taskHeaderId="record.taskHeaderId"/>
  73 + <a v-if="record.taskType==700" @click="createMany(record)">实盘登记</a>
  74 + <a-divider type="vertical" v-if="record.taskType==700" />
72 <a v-has="'taskDetail:edit'" @click="handleEdit(record)">编辑</a> 75 <a v-has="'taskDetail:edit'" @click="handleEdit(record)">编辑</a>
73 <a-divider type="vertical"/> 76 <a-divider type="vertical"/>
74 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> 77 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
@@ -87,11 +90,12 @@ @@ -87,11 +90,12 @@
87 90
88 import {JeecgListMixin} from '@/mixins/JeecgListMixin' 91 import {JeecgListMixin} from '@/mixins/JeecgListMixin'
89 import TaskDetailModal from './modules/TaskDetailModal' 92 import TaskDetailModal from './modules/TaskDetailModal'
  93 +import AdjustmentDocModal from "../stocktaking/modules/AdjustmentDocModal";
90 94
91 export default { 95 export default {
92 name: "TaskDetailList", 96 name: "TaskDetailList",
93 mixins: [JeecgListMixin], 97 mixins: [JeecgListMixin],
94 - components: {TaskDetailModal}, 98 + components: {TaskDetailModal,AdjustmentDocModal},
95 props: { 99 props: {
96 mainId: { 100 mainId: {
97 type: String, 101 type: String,
@@ -219,7 +223,11 @@ export default { @@ -219,7 +223,11 @@ export default {
219 this.dataSource = [] 223 this.dataSource = []
220 this.selectedRowKeys = [] 224 this.selectedRowKeys = []
221 this.ipagination.current = 1 225 this.ipagination.current = 1
222 - } 226 + },
  227 + createMany() {
  228 + this.$refs.adjustmentModal.edit();
  229 + this.$refs.adjustmentModal.title = "实盘登记";
  230 + },
223 231
224 } 232 }
225 } 233 }
huaheng-wms-core/pom.xml
@@ -42,7 +42,11 @@ @@ -42,7 +42,11 @@
42 <groupId>org.redisson</groupId> 42 <groupId>org.redisson</groupId>
43 <artifactId>redisson</artifactId> 43 <artifactId>redisson</artifactId>
44 </dependency> 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 <dependency> 50 <dependency>
47 <groupId>com.github.abel533</groupId> 51 <groupId>com.github.abel533</groupId>
48 <artifactId>ECharts</artifactId> 52 <artifactId>ECharts</artifactId>
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
@@ -148,6 +148,7 @@ public class ErpServiceImpl implements IErpService { @@ -148,6 +148,7 @@ public class ErpServiceImpl implements IErpService {
148 ReceiptDetail receiptDetail = new ReceiptDetail(); 148 ReceiptDetail receiptDetail = new ReceiptDetail();
149 receiptDetail.setWarehouseCode(warehouseCode); 149 receiptDetail.setWarehouseCode(warehouseCode);
150 receiptDetail.setCompanyCode(companyCode); 150 receiptDetail.setCompanyCode(companyCode);
  151 + receiptDetail.setReferCode(referCode);
151 receiptDetail.setReceiptCode(receiptHeader.getCode()); 152 receiptDetail.setReceiptCode(receiptHeader.getCode());
152 receiptDetail.setReceiptId(receiptHeader.getId()); 153 receiptDetail.setReceiptId(receiptHeader.getId());
153 receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD); 154 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,7 +81,7 @@ public class ApiAuthenticationAspect {
81 JWTVerifier verifier = JWT.require(algorithm).withIssuer(HuahengJwtUtil.HUAHENG_SYSTEM_ID).build(); 81 JWTVerifier verifier = JWT.require(algorithm).withIssuer(HuahengJwtUtil.HUAHENG_SYSTEM_ID).build();
82 DecodedJWT jwt = verifier.verify(token); 82 DecodedJWT jwt = verifier.verify(token);
83 new ApiAuthentication.ApiAuthenticationBuild().operator(jwt.getClaim("operator").asString()).audience(jwt.getAudience().get(0)).issuer(jwt.getIssuer()) 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 } catch (JWTVerificationException e) { 85 } catch (JWTVerificationException e) {
86 log.error(e.getMessage()); 86 log.error(e.getMessage());
87 throw e; 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,10 +27,10 @@ public class ApiAuthentication {
27 /** Token签发方(WMS) */ 27 /** Token签发方(WMS) */
28 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID; 28 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
29 29
30 - /** 签发时间 */ 30 + /** Token签发时间 */
31 private Date issuedAt; 31 private Date issuedAt;
32 32
33 - /** 失效时间 */ 33 + /** Token失效时间 */
34 private Date expireDateTime; 34 private Date expireDateTime;
35 35
36 public ApiAuthentication() {} 36 public ApiAuthentication() {}
@@ -67,10 +67,10 @@ public class ApiAuthentication { @@ -67,10 +67,10 @@ public class ApiAuthentication {
67 /** Token签发方(WMS) */ 67 /** Token签发方(WMS) */
68 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID; 68 private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
69 69
70 - /** 签发时间 */ 70 + /** Token签发时间 */
71 private Date issuedAt; 71 private Date issuedAt;
72 72
73 - /** 失效时间 */ 73 + /** Token失效时间 */
74 private Date expireDateTime; 74 private Date expireDateTime;
75 75
76 public ApiAuthenticationBuild operator(String operator) { 76 public ApiAuthenticationBuild operator(String operator) {
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
@@ -206,7 +206,7 @@ public class HomePageViewServiceImpl implements HomePageViewService { @@ -206,7 +206,7 @@ public class HomePageViewServiceImpl implements HomePageViewService {
206 Pie pie = new Pie(); 206 Pie pie = new Pie();
207 pie.setName("货位状态"); 207 pie.setName("货位状态");
208 pie.setType(SeriesType.pie); 208 pie.setType(SeriesType.pie);
209 - pie.setRadius("55%"); 209 + pie.setRadius("70%");
210 pie.setCenter(new String[] {"40%", "50%"}); 210 pie.setCenter(new String[] {"40%", "50%"});
211 Normal normal = new Normal(); 211 Normal normal = new Normal();
212 normal.setFormatter("{b} \n {c} ({d}%)"); 212 normal.setFormatter("{b} \n {c} ({d}%)");
@@ -301,7 +301,7 @@ public class HomePageViewServiceImpl implements HomePageViewService { @@ -301,7 +301,7 @@ public class HomePageViewServiceImpl implements HomePageViewService {
301 Pie pie = new Pie(); 301 Pie pie = new Pie();
302 pie.setName("库存"); 302 pie.setName("库存");
303 pie.setType(SeriesType.pie); 303 pie.setType(SeriesType.pie);
304 - pie.setRadius("55%"); 304 + pie.setRadius("70%");
305 pie.setCenter(new String[] {"40%", "50%"}); 305 pie.setCenter(new String[] {"40%", "50%"});
306 pie.itemStyle().emphasis().setShadowBlur(10); 306 pie.itemStyle().emphasis().setShadowBlur(10);
307 pie.itemStyle().emphasis().setShadowOffsetX(0); 307 pie.itemStyle().emphasis().setShadowOffsetX(0);
@@ -339,26 +339,30 @@ public class HomePageViewServiceImpl implements HomePageViewService { @@ -339,26 +339,30 @@ public class HomePageViewServiceImpl implements HomePageViewService {
339 String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 1000 * 60 * 60 * 24).toString(); 339 String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 1000 * 60 * 60 * 24).toString();
340 Map<String, Object> map = new HashMap<>(); 340 Map<String, Object> map = new HashMap<>();
341 341
  342 +
  343 +
342 // 今天入库量 344 // 今天入库量
343 - LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();  
344 - taskDetailLambdaQueryWrapper.select(TaskDetail::getTaskType, TaskDetail::getQty).gt(TaskDetail::getCreateTime, today);  
345 - List<TaskDetail> taskDetails = taskDetailServiceImpl.list(taskDetailLambdaQueryWrapper); 345 + LambdaQueryWrapper<InventoryTransaction> inventoryTransactionLambdaQueryWrapper = Wrappers.lambdaQuery();
  346 + inventoryTransactionLambdaQueryWrapper.select(InventoryTransaction::getType,InventoryTransaction::getQty).gt(InventoryTransaction::getCreateTime, today);
  347 + List<InventoryTransaction> inventoryTransactions = inventoryTransactionServiceImpl.list(inventoryTransactionLambdaQueryWrapper);
346 BigDecimal receiptQty = BigDecimal.ZERO; 348 BigDecimal receiptQty = BigDecimal.ZERO;
347 BigDecimal shipmentQty = BigDecimal.ZERO; 349 BigDecimal shipmentQty = BigDecimal.ZERO;
348 350
349 - for (TaskDetail taskDetail : taskDetails) {  
350 - if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT)) {  
351 - receiptQty = receiptQty.add(taskDetail.getQty());  
352 - } else if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT)) {  
353 - shipmentQty = shipmentQty.add(taskDetail.getQty()); 351 + for (InventoryTransaction inventoryTransaction : inventoryTransactions) {
  352 + if (inventoryTransaction.getType().equals(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT)) {
  353 + receiptQty = receiptQty.add(inventoryTransaction.getQty());
  354 + } else if (inventoryTransaction.getType().equals(QuantityConstant.INVENTORY_TRANSACTION_SHIPMENT)) {
  355 + shipmentQty = shipmentQty.add(inventoryTransaction.getQty());
354 } 356 }
355 -  
356 } 357 }
357 map.put("receiptTotal", receiptQty); 358 map.put("receiptTotal", receiptQty);
358 map.put("shipmentTotal", shipmentQty); 359 map.put("shipmentTotal", shipmentQty);
359 // 今日交易量 360 // 今日交易量
360 map.put("bllCount", receiptQty.add(shipmentQty)); 361 map.put("bllCount", receiptQty.add(shipmentQty));
361 362
  363 +
  364 +
  365 +
362 // 库存总数 366 // 库存总数
363 LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); 367 LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
364 inventoryHeaderLambdaQueryWrapper.select(InventoryHeader::getTotalQty); 368 inventoryHeaderLambdaQueryWrapper.select(InventoryHeader::getTotalQty);
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 \ No newline at end of file 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,6 +9,10 @@ import com.baomidou.mybatisplus.annotation.TableName;
9 import org.jeecgframework.poi.excel.annotation.Excel; 9 import org.jeecgframework.poi.excel.annotation.Excel;
10 import lombok.Data; 10 import lombok.Data;
11 import com.fasterxml.jackson.annotation.JsonFormat; 11 import com.fasterxml.jackson.annotation.JsonFormat;
  12 +
  13 +import cn.monitor4all.logRecord.annotation.LogRecordDiffField;
  14 +import cn.monitor4all.logRecord.annotation.LogRecordDiffObject;
  15 +
12 import org.springframework.format.annotation.DateTimeFormat; 16 import org.springframework.format.annotation.DateTimeFormat;
13 import org.jeecg.common.aspect.annotation.Dict; 17 import org.jeecg.common.aspect.annotation.Dict;
14 import io.swagger.annotations.ApiModel; 18 import io.swagger.annotations.ApiModel;
@@ -23,6 +27,7 @@ import io.swagger.annotations.ApiModelProperty; @@ -23,6 +27,7 @@ import io.swagger.annotations.ApiModelProperty;
23 @Data 27 @Data
24 @TableName("receipt_header") 28 @TableName("receipt_header")
25 @ApiModel(value = "receipt_header对象", description = "入库表主表") 29 @ApiModel(value = "receipt_header对象", description = "入库表主表")
  30 +@LogRecordDiffObject
26 public class ReceiptHeader implements Serializable { 31 public class ReceiptHeader implements Serializable {
27 private static final long serialVersionUID = 1L; 32 private static final long serialVersionUID = 1L;
28 33
@@ -33,6 +38,7 @@ public class ReceiptHeader implements Serializable { @@ -33,6 +38,7 @@ public class ReceiptHeader implements Serializable {
33 /** 编码 */ 38 /** 编码 */
34 @Excel(name = "编码", width = 15) 39 @Excel(name = "编码", width = 15)
35 @ApiModelProperty(value = "编码") 40 @ApiModelProperty(value = "编码")
  41 + @LogRecordDiffField(alias = "入库单编码")
36 private String code; 42 private String code;
37 /** 仓库编码 */ 43 /** 仓库编码 */
38 @Excel(name = "仓库编码", width = 15) 44 @Excel(name = "仓库编码", width = 15)
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java
@@ -15,6 +15,12 @@ import javax.servlet.http.HttpServletRequest; @@ -15,6 +15,12 @@ import javax.servlet.http.HttpServletRequest;
15 15
16 import org.apache.shiro.authz.annotation.RequiresPermissions; 16 import org.apache.shiro.authz.annotation.RequiresPermissions;
17 import org.jeecg.modules.system.entity.SysAnnouncementSend; 17 import org.jeecg.modules.system.entity.SysAnnouncementSend;
  18 +import org.jeecg.modules.wms.config.location.entity.Location;
  19 +import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
  20 +import org.jeecg.modules.wms.config.port.entity.Port;
  21 +import org.jeecg.modules.wms.config.port.service.impl.PortServiceImpl;
  22 +import org.jeecg.modules.wms.config.zone.entity.Zone;
  23 +import org.jeecg.modules.wms.config.zone.service.impl.ZoneServiceImpl;
18 import org.jeecg.modules.wms.framework.controller.HuahengBaseController; 24 import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
19 import javax.servlet.http.HttpServletResponse; 25 import javax.servlet.http.HttpServletResponse;
20 26
@@ -24,9 +30,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -24,9 +30,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
24 import org.jeecg.modules.wms.framework.controller.HuahengBaseController; 30 import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
25 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; 31 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
26 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; 32 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
  33 +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader;
27 import org.jeecg.utils.ConvertUtils; 34 import org.jeecg.utils.ConvertUtils;
28 import org.jeecg.utils.HuahengJwtUtil; 35 import org.jeecg.utils.HuahengJwtUtil;
29 import org.jeecg.utils.StringUtils; 36 import org.jeecg.utils.StringUtils;
  37 +import org.jeecg.utils.constant.QuantityConstant;
30 import org.jeecgframework.poi.excel.ExcelImportUtil; 38 import org.jeecgframework.poi.excel.ExcelImportUtil;
31 import org.jeecgframework.poi.excel.def.NormalExcelConstants; 39 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
32 import org.jeecgframework.poi.excel.entity.ExportParams; 40 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -74,6 +82,13 @@ public class CycleCountDetailController extends HuahengBaseController { @@ -74,6 +82,13 @@ public class CycleCountDetailController extends HuahengBaseController {
74 private ICycleCountDetailChildService cycleCountDetailChildService; 82 private ICycleCountDetailChildService cycleCountDetailChildService;
75 @Autowired 83 @Autowired
76 private IInventoryDetailService inventoryDetailService; 84 private IInventoryDetailService inventoryDetailService;
  85 + @Resource
  86 + private LocationServiceImpl locationService;
  87 + @Resource
  88 + private ZoneServiceImpl zoneService;
  89 + @Resource
  90 + private PortServiceImpl portService;
  91 +
77 /** 92 /**
78 * 分页列表查询 93 * 分页列表查询
79 * 94 *
@@ -116,23 +131,16 @@ public class CycleCountDetailController extends HuahengBaseController { @@ -116,23 +131,16 @@ public class CycleCountDetailController extends HuahengBaseController {
116 } 131 }
117 132
118 /** 133 /**
119 - * 编辑 134 + * 盘盈增加明细
120 * 135 *
121 - * @param cycleCountDetailPage 136 + * @param
122 * @return 137 * @return
123 */ 138 */
124 - @AutoLog(value = "盘点明细表-编辑")  
125 - @ApiOperation(value="盘点明细表-编辑", notes="盘点明细表-编辑")  
126 - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})  
127 - public Result<String> edit(@RequestBody CycleCountDetailPage cycleCountDetailPage) {  
128 - CycleCountDetail cycleCountDetail = new CycleCountDetail();  
129 - BeanUtils.copyProperties(cycleCountDetailPage, cycleCountDetail);  
130 - CycleCountDetail cycleCountDetailEntity = cycleCountDetailService.getById(cycleCountDetail.getId());  
131 - if(cycleCountDetailEntity==null) {  
132 - return Result.error("未找到对应数据");  
133 - }  
134 - cycleCountDetailService.updateMain(cycleCountDetail, cycleCountDetailPage.getCycleCountDetailChildList());  
135 - return Result.OK("编辑成功!"); 139 + @AutoLog(value = "盘点盘盈-增加明细")
  140 + @ApiOperation(value="盘点盘盈-增加明细", notes="盘点盘盈-增加明细")
  141 + @RequestMapping(value = "/increaseInInventoryGain", method = {RequestMethod.PUT,RequestMethod.POST})
  142 + public Result<String> increaseInInventoryGain(@RequestBody CycleCountDetailChild cycleCountDetailChild) {
  143 + return cycleCountDetailService.increaseInInventoryGain(cycleCountDetailChild);
136 } 144 }
137 145
138 /** 146 /**
@@ -189,12 +197,47 @@ public class CycleCountDetailController extends HuahengBaseController { @@ -189,12 +197,47 @@ public class CycleCountDetailController extends HuahengBaseController {
189 @AutoLog(value = "生成单条盘点任务") 197 @AutoLog(value = "生成单条盘点任务")
190 @ApiOperation(value="生成单条盘点任务", notes="生成单条盘点任务") 198 @ApiOperation(value="生成单条盘点任务", notes="生成单条盘点任务")
191 @PostMapping(value = "/createCycleCoutTaskByDetailId") 199 @PostMapping(value = "/createCycleCoutTaskByDetailId")
192 - public Result createCycleCoutTaskByDetailId(@RequestParam(name = "cycleId") Integer cycleId, HttpServletRequest req){ 200 + public Result createCycleCoutTaskByDetailId(@RequestParam(name = "cycleId") Integer cycleId,@RequestParam(name = "toPort") String toPort, HttpServletRequest req){
193 if(cycleId ==null){ 201 if(cycleId ==null){
194 return Result.error("生成盘点任务时盘点明细ID不能为空!"); 202 return Result.error("生成盘点任务时盘点明细ID不能为空!");
195 } 203 }
196 String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); 204 String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
197 - return cycleCountDetailService.createCycleCoutTaskByDetailId(cycleId,warehouseCode); 205 + return cycleCountDetailService.createCycleCoutTaskByDetailId(cycleId,toPort,warehouseCode);
  206 + }
  207 +
  208 +
  209 + /**
  210 + * 选择分拣口
  211 + * @return
  212 + */
  213 + @ApiOperation(value = "盘点-选择分拣口", notes = "盘点-选择分拣口")
  214 + @PostMapping("/inventoryPort")
  215 + @ResponseBody
  216 + public Result inventoryPort(@RequestBody CycleCountDetail cycleCountDetail, HttpServletRequest req) {
  217 + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
  218 + String fromLocationCode = cycleCountDetail.getLocationCode();
  219 + if (StringUtils.isEmpty(fromLocationCode)) {
  220 + return Result.error("选择分拣口时, 起始库位号为空");
  221 + }
  222 + Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode);
  223 + if (fromLocation == null) {
  224 + return Result.error("选择分拣口时, 根据库位号" + fromLocationCode + " 没有找到库位");
  225 + }
  226 + String zoneCode = fromLocation.getZoneCode();
  227 + if (StringUtils.isEmpty(zoneCode)) {
  228 + return Result.error("选择分拣口时, 库区编码为空");
  229 + }
  230 + Zone zone = zoneService.getZoneByCode(zoneCode, warehouseCode);
  231 + if (zone == null) {
  232 + return Result.error("选择分拣口时, 库区为空");
  233 + }
  234 + int type = QuantityConstant.PORT_TYPE_PICK;
  235 +
  236 + List<Port> portList = portService.getPortListByType(type, zoneCode, warehouseCode);
  237 + if (portList.size() == 0) {
  238 + return Result.error("选择分拣口时, 没有找到合适的分拣口");
  239 + }
  240 + return Result.OK(portList);
198 } 241 }
199 242
200 243
@@ -235,7 +278,8 @@ public class CycleCountDetailController extends HuahengBaseController { @@ -235,7 +278,8 @@ public class CycleCountDetailController extends HuahengBaseController {
235 public Result confirmGapQty(@RequestBody Map<String,String> map){ 278 public Result confirmGapQty(@RequestBody Map<String,String> map){
236 String id = map.get("id"); 279 String id = map.get("id");
237 String countedQty = map.get("countedQty"); 280 String countedQty = map.get("countedQty");
238 - return cycleCountDetailChildService.confirmGapQty(id,countedQty); 281 + String state = map.get("state");
  282 + return cycleCountDetailChildService.confirmGapQty(id,countedQty,state);
239 } 283 }
240 284
241 /** 285 /**
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java
@@ -43,10 +43,6 @@ public class CycleCountDetail implements Serializable { @@ -43,10 +43,6 @@ public class CycleCountDetail implements Serializable {
43 @Excel(name = "任务表头", width = 15) 43 @Excel(name = "任务表头", width = 15)
44 @ApiModelProperty(value = "任务表头") 44 @ApiModelProperty(value = "任务表头")
45 private Integer taskHeaderId; 45 private Integer taskHeaderId;
46 - /**任务明细头*/  
47 - @Excel(name = "任务明细头", width = 15)  
48 - @ApiModelProperty(value = "任务明细头")  
49 - private Integer taskDetailId;  
50 /**仓库*/ 46 /**仓库*/
51 @Excel(name = "仓库", width = 15) 47 @Excel(name = "仓库", width = 15)
52 @ApiModelProperty(value = "仓库") 48 @ApiModelProperty(value = "仓库")
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java
@@ -68,6 +68,10 @@ public class CycleCountDetailChild implements Serializable { @@ -68,6 +68,10 @@ public class CycleCountDetailChild implements Serializable {
68 @Excel(name = "物料单位", width = 15) 68 @Excel(name = "物料单位", width = 15)
69 @ApiModelProperty(value = "物料单位") 69 @ApiModelProperty(value = "物料单位")
70 private String materialUnit; 70 private String materialUnit;
  71 + /**任务明细头*/
  72 + @Excel(name = "任务明细头", width = 15)
  73 + @ApiModelProperty(value = "任务明细头")
  74 + private Integer taskDetailId;
71 /**系统数量*/ 75 /**系统数量*/
72 @Excel(name = "系统数量", width = 15) 76 @Excel(name = "系统数量", width = 15)
73 @ApiModelProperty(value = "系统数量") 77 @ApiModelProperty(value = "系统数量")
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java
@@ -14,5 +14,5 @@ import java.util.List; @@ -14,5 +14,5 @@ import java.util.List;
14 public interface ICycleCountDetailChildService extends IService<CycleCountDetailChild> { 14 public interface ICycleCountDetailChildService extends IService<CycleCountDetailChild> {
15 15
16 16
17 - Result confirmGapQty(String id, String countedQty); 17 + Result confirmGapQty(String id, String countedQty,String state);
18 } 18 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java
@@ -40,6 +40,7 @@ public interface ICycleCountDetailService extends IService&lt;CycleCountDetail&gt; { @@ -40,6 +40,7 @@ public interface ICycleCountDetailService extends IService&lt;CycleCountDetail&gt; {
40 40
41 Result stockDetailAdd(int taskId,int headerId,String code); 41 Result stockDetailAdd(int taskId,int headerId,String code);
42 42
43 - Result createCycleCoutTaskByDetailId(Integer cycleCoutdetailId,String warehouseCode); 43 + Result createCycleCoutTaskByDetailId(Integer cycleCoutdetailId,String toPort,String warehouseCode);
44 44
  45 + Result increaseInInventoryGain(CycleCountDetailChild cycleCountDetailChild);
45 } 46 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java
@@ -42,22 +42,35 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta @@ -42,22 +42,35 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta
42 42
43 43
44 @Override 44 @Override
45 - public Result confirmGapQty(String id, String countedQty) { 45 + public Result confirmGapQty(String id, String countedQty,String state) {
46 //接收子单ID和实盘数量 46 //接收子单ID和实盘数量
47 //任务未完成可多次登记。 47 //任务未完成可多次登记。
  48 + CycleCountDetailChild detailChild=new CycleCountDetailChild();
  49 + if (StringUtils.isNotEmpty(state))
  50 + {
  51 + LambdaQueryWrapper<CycleCountDetailChild> queryWrapper = new LambdaQueryWrapper<>();
  52 + queryWrapper.eq(CycleCountDetailChild::getTaskDetailId,id);
  53 + detailChild = this.getOne(queryWrapper);
  54 + }else
  55 + {
  56 + //明细子单据
  57 + detailChild = this.getById(Integer.valueOf(id));
  58 + }
  59 +
  60 + if(StringUtils.isNull(detailChild)){
  61 + return Result.error("明细子单不存在!");
  62 + }
  63 +
  64 +
48 BigDecimal qty=new BigDecimal(countedQty); 65 BigDecimal qty=new BigDecimal(countedQty);
49 if(qty.compareTo(BigDecimal.ZERO) == -1){ 66 if(qty.compareTo(BigDecimal.ZERO) == -1){
50 return Result.error("实盘登记数不能小于0"); 67 return Result.error("实盘登记数不能小于0");
51 } 68 }
52 - //明细子单据  
53 - CycleCountDetailChild countDetailChild = this.getById(Integer.valueOf(id));  
54 - if(StringUtils.isNull(countDetailChild)){  
55 - return Result.error("明细子单不存在!");  
56 - }  
57 69
58 70
59 71
60 - CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(countDetailChild.getCycleCountDetailid()); 72 +
  73 + CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(detailChild.getCycleCountDetailid());
61 if(StringUtils.isNull(cycleCountDetail)){ 74 if(StringUtils.isNull(cycleCountDetail)){
62 return Result.error("盘点明细不存在。"); 75 return Result.error("盘点明细不存在。");
63 } 76 }
@@ -66,17 +79,17 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta @@ -66,17 +79,17 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta
66 // return AjaxResult.error("盘点任务未执行不能登记数量!"); 79 // return AjaxResult.error("盘点任务未执行不能登记数量!");
67 // } 80 // }
68 81
69 - if(countDetailChild.getChildStatus() >= QuantityConstant.CYCLECOUNT_STATUS_COMPLETED){ 82 + if(detailChild.getChildStatus() >= QuantityConstant.CYCLECOUNT_STATUS_COMPLETED){
70 return Result.error("盘点任务完成后不能再登记数量!"); 83 return Result.error("盘点任务完成后不能再登记数量!");
71 } 84 }
72 85
73 86
74 //实盘登记后差异数量 87 //实盘登记后差异数量
75 - BigDecimal adjQty = qty.subtract(countDetailChild.getSystemQty());  
76 - countDetailChild.setGapQty(adjQty);  
77 - countDetailChild.setCountedQty(qty);  
78 - countDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);  
79 - this.updateById(countDetailChild); 88 + BigDecimal adjQty = qty.subtract(detailChild.getSystemQty());
  89 + detailChild.setGapQty(adjQty);
  90 + detailChild.setCountedQty(qty);
  91 + detailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);
  92 + this.updateById(detailChild);
80 93
81 94
82 95
@@ -103,7 +116,7 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta @@ -103,7 +116,7 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl&lt;CycleCountDeta
103 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); 116 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
104 //修改主单状态 117 //修改主单状态
105 CycleCountHeader tmp = new CycleCountHeader(); 118 CycleCountHeader tmp = new CycleCountHeader();
106 - tmp.setCode(countDetailChild.getCyclecountheadcode()); 119 + tmp.setCode(detailChild.getCyclecountheadcode());
107 tmp.setWarehouseCode(cycleCountDetail.getWarehouseCode()); 120 tmp.setWarehouseCode(cycleCountDetail.getWarehouseCode());
108 LambdaQueryWrapper<CycleCountHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(tmp); 121 LambdaQueryWrapper<CycleCountHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(tmp);
109 CycleCountHeader cycleCountHeader = cycleCountHeaderService.getOne(lambdaQueryWrapper); 122 CycleCountHeader cycleCountHeader = cycleCountHeaderService.getOne(lambdaQueryWrapper);
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
@@ -8,6 +8,9 @@ import org.jeecg.modules.wms.config.container.entity.Container; @@ -8,6 +8,9 @@ import org.jeecg.modules.wms.config.container.entity.Container;
8 import org.jeecg.modules.wms.config.container.service.impl.ContainerServiceImpl; 8 import org.jeecg.modules.wms.config.container.service.impl.ContainerServiceImpl;
9 import org.jeecg.modules.wms.config.location.entity.Location; 9 import org.jeecg.modules.wms.config.location.entity.Location;
10 import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl; 10 import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
  11 +import org.jeecg.modules.wms.config.material.entity.Material;
  12 +import org.jeecg.modules.wms.config.material.service.impl.MaterialServiceImpl;
  13 +import org.jeecg.modules.wms.config.materialType.entity.MaterialType;
11 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; 14 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
12 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; 15 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
13 import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; 16 import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail;
@@ -57,6 +60,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -57,6 +60,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
57 private LocationServiceImpl locationService; 60 private LocationServiceImpl locationService;
58 @Resource 61 @Resource
59 private TaskHeaderServiceImpl taskHeaderService; 62 private TaskHeaderServiceImpl taskHeaderService;
  63 + @Autowired
  64 + private ICycleCountDetailService cycleCountDetailService;
  65 + @Resource
  66 + private MaterialServiceImpl materialServiceImpl;
60 @Resource 67 @Resource
61 private TaskDetailServiceImpl taskDetailService; 68 private TaskDetailServiceImpl taskDetailService;
62 @Resource 69 @Resource
@@ -119,6 +126,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -119,6 +126,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
119 } 126 }
120 127
121 @Override 128 @Override
  129 + @Transactional
122 public Result stockDetailAdd(int taskId,int headerId,String code) { 130 public Result stockDetailAdd(int taskId,int headerId,String code) {
123 LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); 131 LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
124 inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getInventoryHeaderId,taskId); 132 inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getInventoryHeaderId,taskId);
@@ -134,10 +142,24 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -134,10 +142,24 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
134 return Result.error("当前容器已经在盘点队列还没有完成 盘点单号"+cycleCountDetails.get(0).getCycleCountHeadCode()); 142 return Result.error("当前容器已经在盘点队列还没有完成 盘点单号"+cycleCountDetails.get(0).getCycleCountHeadCode());
135 } 143 }
136 144
  145 + String warehouseCode=inventoryDetails.get(0).getWarehouseCode();
  146 +
  147 +
  148 + Container containerByCode = containerServiceImpl.getContainerByCode(inventoryDetails.get(0).getContainerCode(),warehouseCode);
  149 + if (containerByCode.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK))
  150 + {
  151 + return Result.error("当前容器已锁定 请检查数据 库存里面不是锁定 实际上容器里面锁定了");
  152 + }
  153 +
  154 + Location locationByCode = locationService.getLocationByCode(inventoryDetails.get(0).getLocationCode(), warehouseCode);
  155 + if (locationByCode.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK))
  156 + {
  157 + return Result.error("当前库位已锁定 请检查数据 库存里面不是锁定 实际上库位里面锁定了");
  158 + }
  159 +
137 CycleCountDetail cycleCountDetail = new CycleCountDetail(); 160 CycleCountDetail cycleCountDetail = new CycleCountDetail();
138 cycleCountDetail.setCycleCountHeadId(headerId); 161 cycleCountDetail.setCycleCountHeadId(headerId);
139 cycleCountDetail.setContainerCode(inventoryDetails.get(0).getContainerCode()); 162 cycleCountDetail.setContainerCode(inventoryDetails.get(0).getContainerCode());
140 -  
141 cycleCountDetail.setCycleCountHeadCode(code); 163 cycleCountDetail.setCycleCountHeadCode(code);
142 cycleCountDetail.setCompanyCode(inventoryDetails.get(0).getCompanyCode()); 164 cycleCountDetail.setCompanyCode(inventoryDetails.get(0).getCompanyCode());
143 cycleCountDetail.setWarehouseCode(inventoryDetails.get(0).getWarehouseCode()); 165 cycleCountDetail.setWarehouseCode(inventoryDetails.get(0).getWarehouseCode());
@@ -150,10 +172,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -150,10 +172,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
150 cycleCountDetail.setEnableStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD); 172 cycleCountDetail.setEnableStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD);
151 this.save(cycleCountDetail); 173 this.save(cycleCountDetail);
152 174
153 - CycleCountDetailChild cycleCountDetailChild=new CycleCountDetailChild();  
154 for(InventoryDetail inventoryDetail:inventoryDetails) 175 for(InventoryDetail inventoryDetail:inventoryDetails)
155 { 176 {
156 -// cycleCountDetailChild.setCyclecountheadcode(); 177 + CycleCountDetailChild cycleCountDetailChild=new CycleCountDetailChild();
157 cycleCountDetailChild.setCycleCountDetailid(cycleCountDetail.getId()); 178 cycleCountDetailChild.setCycleCountDetailid(cycleCountDetail.getId());
158 cycleCountDetailChild.setCyclecountheadcode(code); 179 cycleCountDetailChild.setCyclecountheadcode(code);
159 cycleCountDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD); 180 cycleCountDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD);
@@ -184,7 +205,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -184,7 +205,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
184 * @return 205 * @return
185 */ 206 */
186 @Override 207 @Override
187 - public Result createCycleCoutTaskByDetailId(Integer cycleCoutDetailId,String warehouseCode) { 208 + public Result createCycleCoutTaskByDetailId(Integer cycleCoutDetailId,String toPort,String warehouseCode) {
188 /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/ 209 /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/
189 //校验有没有相同容器正在执行任务. 210 //校验有没有相同容器正在执行任务.
190 CycleCountDetail cycleCountDetail = this.getById(cycleCoutDetailId); 211 CycleCountDetail cycleCountDetail = this.getById(cycleCoutDetailId);
@@ -208,7 +229,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -208,7 +229,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
208 if(StringUtils.isEmpty(location.getContainerCode())){ 229 if(StringUtils.isEmpty(location.getContainerCode())){
209 return Result.error(cycleCountDetail.getLocationCode() + "库位中没有容器,操作失败!"); 230 return Result.error(cycleCountDetail.getLocationCode() + "库位中没有容器,操作失败!");
210 } 231 }
211 - 232 +
212 //生成任务同时锁定库位 233 //生成任务同时锁定库位
213 locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK,warehouseCode); 234 locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK,warehouseCode);
214 235
@@ -230,7 +251,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -230,7 +251,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
230 task.setContainerCode(cycleCountDetail.getContainerCode()); 251 task.setContainerCode(cycleCountDetail.getContainerCode());
231 task.setStatus(QuantityConstant.TASK_STATUS_BUILD); 252 task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
232 task.setFromLocationCode(cycleCountDetail.getLocationCode()); 253 task.setFromLocationCode(cycleCountDetail.getLocationCode());
233 - task.setToPortCode("P10"); 254 + task.setToPortCode(toPort);
234 task.setSequenceNumber(1); 255 task.setSequenceNumber(1);
235 task.setShipmentContainerHeaderId(cycleCoutDetailId); 256 task.setShipmentContainerHeaderId(cycleCoutDetailId);
236 task.setSequence(1); 257 task.setSequence(1);
@@ -270,6 +291,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -270,6 +291,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
270 } 291 }
271 // 修改子单状态 292 // 修改子单状态
272 item.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILDTASK); 293 item.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILDTASK);
  294 + item.setTaskDetailId(taskDetail.getId());
273 cycleCountDetailChildServiceImpl.updateById(item); 295 cycleCountDetailChildServiceImpl.updateById(item);
274 } 296 }
275 297
@@ -305,5 +327,57 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -305,5 +327,57 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
305 return result; 327 return result;
306 } 328 }
307 329
  330 + @Override
  331 + public Result increaseInInventoryGain(CycleCountDetailChild cycleCountDetailChild) {
  332 + CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(cycleCountDetailChild.getCycleCountDetailid());
  333 + if (cycleCountDetail==null)
  334 + {
  335 + return Result.error("盘点明细不存在");
  336 + }
  337 +
  338 +
  339 + if (cycleCountDetail.getEnableStatus().equals(QuantityConstant.CYCLECOUNT_STATUS_BUILD))
  340 + {
  341 + return Result.error("当前盘点明细是新建状态 不能调整");
  342 + }
  343 +
  344 + if (cycleCountDetailChild.getCountedQty().compareTo(BigDecimal.ZERO)==0)
  345 + {
  346 + return Result.error("别闹");
  347 + }
  348 +
  349 + cycleCountDetailChild.setCyclecountheadcode(cycleCountDetail.getCycleCountHeadCode());
  350 + cycleCountDetailChild.setLocationCode(cycleCountDetail.getLocationCode());
  351 + cycleCountDetailChild.setContainerCode(cycleCountDetail.getContainerCode());
  352 +
  353 + Material materialByCode = materialServiceImpl.getMaterialByCode(cycleCountDetailChild.getMaterialCode());
  354 + cycleCountDetailChild.setMaterialName(materialByCode.getName());
  355 + cycleCountDetailChild.setMaterialSpec(materialByCode.getSpec());
  356 + cycleCountDetailChild.setMaterialUnit(materialByCode.getUnit());
  357 + BigDecimal countedQty = cycleCountDetailChild.getCountedQty();
  358 + cycleCountDetailChild.setCountedQty(null);
  359 +
  360 +
  361 + LambdaQueryWrapper<CycleCountDetailChild> childLambdaQueryWrapper = Wrappers.lambdaQuery(cycleCountDetailChild);
  362 + CycleCountDetailChild serviceImplOne = cycleCountDetailChildServiceImpl.getOne(childLambdaQueryWrapper);
  363 + if (serviceImplOne!=null)
  364 + {
  365 + return Result.error("这个物料明细已存在");
  366 + }
  367 +
  368 + cycleCountDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);
  369 + cycleCountDetailChild.setSystemQty(BigDecimal.ZERO);
  370 + cycleCountDetailChild.setGapQty(countedQty);
  371 + cycleCountDetailChild.setCountedQty(countedQty);
  372 + cycleCountDetailChildServiceImpl.save(cycleCountDetailChild);
  373 +
  374 + Result result = new Result();
  375 + result.setCode(200);
  376 + result.setMessage("成功");
  377 + result.setResult(cycleCountDetail.getCycleCountHeadId());
  378 +
  379 + return result;
  380 + }
  381 +
308 382
309 } 383 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -1540,6 +1540,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -1540,6 +1540,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1540 //1.先拿到盘点单主单据 1540 //1.先拿到盘点单主单据
1541 CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(taskHeader.getShipmentContainerHeaderId()); 1541 CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(taskHeader.getShipmentContainerHeaderId());
1542 1542
  1543 + if ((cycleCountDetail.getCountedQty().add(cycleCountDetail.getGapQty())).compareTo(BigDecimal.ZERO)==0)
  1544 + {
  1545 + return Result.error("盘点单据系统实盘数量跟差异数量0,不能完成 单据号" +cycleCountDetail.getCycleCountHeadCode());
  1546 + }
  1547 +
1543 //2.盘点单主单据查明细单据list 1548 //2.盘点单主单据查明细单据list
1544 LambdaQueryWrapper<CycleCountDetailChild> childLambdaQueryWrapper = new LambdaQueryWrapper<CycleCountDetailChild>(); 1549 LambdaQueryWrapper<CycleCountDetailChild> childLambdaQueryWrapper = new LambdaQueryWrapper<CycleCountDetailChild>();
1545 childLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,cycleCountDetail.getId()); 1550 childLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,cycleCountDetail.getId());
@@ -1558,16 +1563,43 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -1558,16 +1563,43 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1558 1563
1559 for (CycleCountDetailChild child : children) 1564 for (CycleCountDetailChild child : children)
1560 { 1565 {
1561 - InventoryDetail inventoryDetail = inventoryDetailService.getById(child.getInventoryDetaiId());  
1562 - if (inventoryDetail==null) 1566 + if (!child.getChildStatus().equals(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED))
1563 { 1567 {
1564 - return Result.error("盘点还没完成 库存明细单据就不存在了 可能出现了问题或者所容器没成功"); 1568 + throw new ServiceException("当前任务里面还有没有进行登记的数据,不能完成任务");
1565 } 1569 }
1566 1570
1567 - inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(child.getGapQty()));  
1568 1571
1569 - inventoryDetail.setQty(child.getCountedQty());  
1570 - inventoryDetailService.updateById(inventoryDetail); 1572 + if (child.getInventoryDetaiId()!=null)
  1573 + {
  1574 + InventoryDetail inventoryDetail = inventoryDetailService.getById(child.getInventoryDetaiId());
  1575 + if (inventoryDetail==null)
  1576 + {
  1577 + throw new ServiceException("盘点还没完成 库存明细单据就不存在了 可能出现了问题或者所容器没成功");
  1578 + }
  1579 + inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(child.getGapQty()));
  1580 + inventoryDetail.setQty(child.getCountedQty());
  1581 + inventoryDetailService.updateById(inventoryDetail);
  1582 + }else
  1583 + {
  1584 + InventoryDetail inventoryDetail=new InventoryDetail();
  1585 + inventoryDetail.setInventoryHeaderId(inventoryHeader.getId());
  1586 + inventoryDetail.setWarehouseCode(inventoryHeader.getWarehouseCode());
  1587 + inventoryDetail.setCompanyCode(inventoryHeader.getCompanyCode());
  1588 + inventoryDetail.setZoneCode(inventoryHeader.getZoneCode());
  1589 + inventoryDetail.setContainerCode(inventoryHeader.getContainerCode());
  1590 + inventoryDetail.setLocationCode(inventoryHeader.getLocationCode());
  1591 + inventoryDetail.setMaterialCode(child.getMaterialCode());
  1592 + inventoryDetail.setMaterialName(child.getMaterialName());
  1593 + inventoryDetail.setMaterialSpec(child.getMaterialSpec());
  1594 + inventoryDetail.setMaterialUnit(child.getMaterialUnit());
  1595 + inventoryDetail.setQty(child.getCountedQty());
  1596 + inventoryDetail.setTaskQty(BigDecimal.ZERO);
  1597 + inventoryDetail.setInventoryStatus(child.getInventoryStatus());
  1598 + inventoryDetail.setBatch(child.getBatch());
  1599 + inventoryDetailService.save(inventoryDetail);
  1600 + child.setInventoryDetaiId(inventoryDetail.getId());
  1601 + }
  1602 +
1571 1603
1572 child.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED); 1604 child.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED);
1573 if (child.getGapQty().compareTo(BigDecimal.ZERO) == 1) 1605 if (child.getGapQty().compareTo(BigDecimal.ZERO) == 1)
@@ -1727,7 +1759,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -1727,7 +1759,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1727 1759
1728 1760
1729 //还原容器状态 1761 //还原容器状态
1730 - containerService.restoreContainer(cycleCountDetail.getLocationCode(),taskHeader.getWarehouseCode()); 1762 + containerService.restoreContainer(cycleCountDetail.getContainerCode(),taskHeader.getWarehouseCode());
1731 1763
1732 return Result.OK("完成盘点任务成功"); 1764 return Result.OK("完成盘点任务成功");
1733 } 1765 }
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
1 package org.jeecg.utils.constant; 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 * @author ricard 20 * @author ricard
6 */ 21 */
7 public class QuantityConstant { 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 // 1、入库单状态 27 // 1、入库单状态
@@ -708,9 +709,8 @@ public class QuantityConstant { @@ -708,9 +709,8 @@ public class QuantityConstant {
708 public static final String ERP_LCID = "2052"; 709 public static final String ERP_LCID = "2052";
709 public static final String ERP_ServerUrl = "http://erptest.gani.com.cn/K3Cloud/"; 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 import java.lang.reflect.Field; 3 import java.lang.reflect.Field;
4 import java.util.Date; 4 import java.util.Date;