Commit c680acbfcc2afb0aa19afdd05a7f4fbf47c4f5a5
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<CycleCountDetail> { | @@ -40,6 +40,7 @@ public interface ICycleCountDetailService extends IService<CycleCountDetail> { | ||
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<CycleCountDeta | @@ -42,22 +42,35 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<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<CycleCountDeta | @@ -66,17 +79,17 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<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<CycleCountDeta | @@ -103,7 +116,7 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -57,6 +60,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -119,6 +126,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -134,10 +142,24 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -150,10 +172,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -184,7 +205,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -208,7 +229,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -230,7 +251,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -270,6 +291,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<CycleCountDetailMap | @@ -305,5 +327,57 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<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<TaskHeaderMapper, TaskHea | @@ -1540,6 +1540,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<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<TaskHeaderMapper, TaskHea | @@ -1558,16 +1563,43 @@ public class TaskHeaderServiceImpl extends ServiceImpl<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<TaskHeaderMapper, TaskHea | @@ -1727,7 +1759,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<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