Commit f65b4542063f5dd08b1465584c3457442f9b57d0
Merge branch 'develop4' of http://www.huahengrobot.com:90/wms/wms4 into develop4
Showing
28 changed files
with
2687 additions
and
0 deletions
ant-design-vue-jeecg/src/api/api.js
... | ... | @@ -107,6 +107,8 @@ export const getLocationTypeList = (params) => getAction('/config/locationType/g |
107 | 107 | export const getLocationHighList = (params) => postAction('/config/locationHigh/getLocationHighList', params); |
108 | 108 | //获取货主列表 |
109 | 109 | export const getCompanyList = (params) => getAction('/config/company/getCompanyList', params); |
110 | +//获取盘点类型列表 | |
111 | +export const getCountTypeList = (params) => getAction('/config/cycleCountPreference/getCountTypeList', params); | |
110 | 112 | //获取承运商列表 |
111 | 113 | export const getCarrierList = (params) => getAction('/config/carrier/getCarrierList', params); |
112 | 114 | //获取客户列表 |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue
0 → 100644
1 | +<template> | |
2 | + <a-card class="j-inner-table-wrapper" :bordered="false"> | |
3 | + | |
4 | + <!-- 查询区域 begin --> | |
5 | + <div class="table-page-search-wrapper"> | |
6 | + <a-form layout="inline"> | |
7 | + <a-row :gutter="24"> | |
8 | + </a-row> | |
9 | + </a-form> | |
10 | + </div> | |
11 | + <!-- 查询区域 end --> | |
12 | + | |
13 | + <!-- 操作按钮区域 begin --> | |
14 | + <div class="table-operator"> | |
15 | + <a-button type="primary" icon="plus" @click="handleAdd">新增</a-button> | |
16 | + <a-button type="primary" icon="download" @click="handleExportXls('盘点明细表')">导出</a-button> | |
17 | + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
18 | + <a-button type="primary" icon="import">导入</a-button> | |
19 | + </a-upload> | |
20 | + <!-- 高级查询区域 --> | |
21 | + <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> | |
22 | + <a-dropdown v-if="selectedRowKeys.length > 0"> | |
23 | + <a-menu slot="overlay"> | |
24 | + <a-menu-item key="1" @click="batchDel"> | |
25 | + <a-icon type="delete"/> | |
26 | + <span>删除</span> | |
27 | + </a-menu-item> | |
28 | + </a-menu> | |
29 | + <a-button> | |
30 | + <span>批量操作</span> | |
31 | + <a-icon type="down"/> | |
32 | + </a-button> | |
33 | + </a-dropdown> | |
34 | + </div> | |
35 | + <!-- 操作按钮区域 end --> | |
36 | + | |
37 | + <!-- table区域 begin --> | |
38 | + <div> | |
39 | + | |
40 | + <a-alert type="info" showIcon style="margin-bottom: 16px;"> | |
41 | + <template slot="message"> | |
42 | + <span>已选择</span> | |
43 | + <a style="font-weight: 600;padding: 0 4px;">{{ selectedRowKeys.length }}</a> | |
44 | + <span>项</span> | |
45 | + <a style="margin-left: 24px" @click="onClearSelected">清空</a> | |
46 | + </template> | |
47 | + </a-alert> | |
48 | + | |
49 | + <a-table | |
50 | + ref="table" | |
51 | + size="middle" | |
52 | + bordered | |
53 | + rowKey="id" | |
54 | + class="j-table-force-nowrap" | |
55 | + :scroll="{x:true}" | |
56 | + :loading="loading" | |
57 | + :columns="columns" | |
58 | + :dataSource="dataSource" | |
59 | + :pagination="ipagination" | |
60 | + :expandedRowKeys="expandedRowKeys" | |
61 | + :rowSelection="{selectedRowKeys, onChange: onSelectChange}" | |
62 | + @expand="handleExpand" | |
63 | + @change="handleTableChange" | |
64 | + > | |
65 | + | |
66 | + <!-- 内嵌table区域 begin --> | |
67 | + <template slot="expandedRowRender" slot-scope="record"> | |
68 | + <a-tabs tabPosition="top"> | |
69 | + <a-tab-pane tab="盘点容器明细表" key="cycleCountDetailChild" forceRender> | |
70 | + <cycle-count-detail-child-sub-table :record="record"/> | |
71 | + </a-tab-pane> | |
72 | + </a-tabs> | |
73 | + </template> | |
74 | + <!-- 内嵌table区域 end --> | |
75 | + | |
76 | + <template slot="htmlSlot" slot-scope="text"> | |
77 | + <div v-html="text"></div> | |
78 | + </template> | |
79 | + | |
80 | + <template slot="imgSlot" slot-scope="text"> | |
81 | + <div style="font-size: 12px;font-style: italic;"> | |
82 | + <span v-if="!text">无图片</span> | |
83 | + <img v-else :src="getImgView(text)" alt="" style="max-width:80px;height:25px;"/> | |
84 | + </div> | |
85 | + </template> | |
86 | + | |
87 | + | |
88 | + <template slot="fileSlot" slot-scope="text"> | |
89 | + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | |
90 | + <a-button | |
91 | + v-else | |
92 | + ghost | |
93 | + type="primary" | |
94 | + icon="download" | |
95 | + size="small" | |
96 | + @click="downloadFile(text)" | |
97 | + > | |
98 | + <span>下载</span> | |
99 | + </a-button> | |
100 | + </template> | |
101 | + | |
102 | + <template slot="action" slot-scope="text, record"> | |
103 | + <a @click="handleEdit(record)">编辑</a> | |
104 | + <a-divider type="vertical"/> | |
105 | + <a-dropdown> | |
106 | + <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
107 | + <a-menu slot="overlay"> | |
108 | + <a-menu-item> | |
109 | + <a-popconfirm title="确定删除吗?" @confirm="handleDelete(record.id)"> | |
110 | + <a>删除</a> | |
111 | + </a-popconfirm> | |
112 | + </a-menu-item> | |
113 | + </a-menu> | |
114 | + </a-dropdown> | |
115 | + | |
116 | + </template> | |
117 | + | |
118 | + </a-table> | |
119 | + </div> | |
120 | + <!-- table区域 end --> | |
121 | + | |
122 | + <!-- 表单区域 --> | |
123 | + <cycle-count-detail-modal ref="modalForm" @ok="modalFormOk"/> | |
124 | + | |
125 | + </a-card> | |
126 | +</template> | |
127 | + | |
128 | +<script> | |
129 | + | |
130 | + import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
131 | + import CycleCountDetailModal from './modules/CycleCountDetailModal' | |
132 | + import CycleCountDetailChildSubTable from './subTables/CycleCountDetailChildSubTable' | |
133 | + import '@/assets/less/TableExpand.less' | |
134 | + | |
135 | + export default { | |
136 | + name: 'CycleCountDetailList', | |
137 | + mixins: [JeecgListMixin], | |
138 | + components: { | |
139 | + CycleCountDetailModal, | |
140 | + CycleCountDetailChildSubTable, | |
141 | + }, | |
142 | + data() { | |
143 | + return { | |
144 | + description: '盘点明细表列表管理页面', | |
145 | + // 表头 | |
146 | + columns: [ | |
147 | + { | |
148 | + title: '#', | |
149 | + key: 'rowIndex', | |
150 | + width: 60, | |
151 | + align: 'center', | |
152 | + customRender: (t, r, index) => parseInt(index) + 1 | |
153 | + }, | |
154 | + { | |
155 | + title: '盘点主单id', | |
156 | + align: 'center', | |
157 | + dataIndex: 'cycleCountHeadId', | |
158 | + }, | |
159 | + { | |
160 | + title: '盘点主单code', | |
161 | + align: 'center', | |
162 | + dataIndex: 'cycleCountHeadCode', | |
163 | + }, | |
164 | + { | |
165 | + title: '任务表头', | |
166 | + align: 'center', | |
167 | + dataIndex: 'taskHeaderId', | |
168 | + }, | |
169 | + { | |
170 | + title: '任务明细头', | |
171 | + align: 'center', | |
172 | + dataIndex: 'taskDetailId', | |
173 | + }, | |
174 | + { | |
175 | + title: '仓库', | |
176 | + align: 'center', | |
177 | + dataIndex: 'warehouseCode', | |
178 | + }, | |
179 | + { | |
180 | + title: '货主', | |
181 | + align: 'center', | |
182 | + dataIndex: 'companyCode', | |
183 | + }, | |
184 | + { | |
185 | + title: '库存明细头', | |
186 | + align: 'center', | |
187 | + dataIndex: 'inventoryDetailId', | |
188 | + }, | |
189 | + { | |
190 | + title: '库位', | |
191 | + align: 'center', | |
192 | + dataIndex: 'locationCode', | |
193 | + }, | |
194 | + { | |
195 | + title: '容器', | |
196 | + align: 'center', | |
197 | + dataIndex: 'containerCode', | |
198 | + }, | |
199 | + { | |
200 | + title: '库存状态', | |
201 | + align: 'center', | |
202 | + dataIndex: 'inventorySts', | |
203 | + }, | |
204 | + { | |
205 | + title: '系统数量', | |
206 | + align: 'center', | |
207 | + dataIndex: 'systemQty', | |
208 | + }, | |
209 | + { | |
210 | + title: '实盘数量', | |
211 | + align: 'center', | |
212 | + dataIndex: 'countedQty', | |
213 | + }, | |
214 | + { | |
215 | + title: '差异数量', | |
216 | + align: 'center', | |
217 | + dataIndex: 'gapQty', | |
218 | + }, | |
219 | + { | |
220 | + title: '失败原因', | |
221 | + align: 'center', | |
222 | + dataIndex: 'rejectionNote', | |
223 | + }, | |
224 | + { | |
225 | + title: '完成用户', | |
226 | + align: 'center', | |
227 | + dataIndex: 'completedBy', | |
228 | + }, | |
229 | + { | |
230 | + title: '完成时间', | |
231 | + align: 'center', | |
232 | + dataIndex: 'completedAt', | |
233 | + }, | |
234 | + { | |
235 | + title: '盘点明细状态', | |
236 | + align: 'center', | |
237 | + dataIndex: 'enableStatus', | |
238 | + }, | |
239 | + { | |
240 | + title: '操作', | |
241 | + dataIndex: 'action', | |
242 | + align: 'center', | |
243 | + width:147, | |
244 | + scopedSlots: { customRender: 'action' }, | |
245 | + }, | |
246 | + ], | |
247 | + // 字典选项 | |
248 | + dictOptions: {}, | |
249 | + // 展开的行test | |
250 | + expandedRowKeys: [], | |
251 | + url: { | |
252 | + list: '/cycleCountDetail/cycleCountDetail/list', | |
253 | + delete: '/cycleCountDetail/cycleCountDetail/delete', | |
254 | + deleteBatch: '/cycleCountDetail/cycleCountDetail/deleteBatch', | |
255 | + exportXlsUrl: '/cycleCountDetail/cycleCountDetail/exportXls', | |
256 | + importExcelUrl: '/cycleCountDetail/cycleCountDetail/importExcel', | |
257 | + }, | |
258 | + superFieldList:[], | |
259 | + } | |
260 | + }, | |
261 | + created() { | |
262 | + this.getSuperFieldList(); | |
263 | + }, | |
264 | + computed: { | |
265 | + importExcelUrl() { | |
266 | + return window._CONFIG['domianURL'] + this.url.importExcelUrl | |
267 | + } | |
268 | + }, | |
269 | + methods: { | |
270 | + initDictConfig() { | |
271 | + }, | |
272 | + | |
273 | + handleExpand(expanded, record) { | |
274 | + this.expandedRowKeys = [] | |
275 | + if (expanded === true) { | |
276 | + this.expandedRowKeys.push(record.id) | |
277 | + } | |
278 | + }, | |
279 | + getSuperFieldList(){ | |
280 | + let fieldList=[]; | |
281 | + fieldList.push({type:'string',value:'cycleCountHeadId',text:'盘点主单id',dictCode:''}) | |
282 | + fieldList.push({type:'string',value:'cycleCountHeadCode',text:'盘点主单code',dictCode:''}) | |
283 | + fieldList.push({type:'string',value:'taskHeaderId',text:'任务表头',dictCode:''}) | |
284 | + fieldList.push({type:'string',value:'taskDetailId',text:'任务明细头',dictCode:''}) | |
285 | + fieldList.push({type:'string',value:'warehouseCode',text:'仓库',dictCode:''}) | |
286 | + fieldList.push({type:'string',value:'companyCode',text:'货主',dictCode:''}) | |
287 | + fieldList.push({type:'string',value:'inventoryDetailId',text:'库存明细头',dictCode:''}) | |
288 | + fieldList.push({type:'string',value:'locationCode',text:'库位',dictCode:''}) | |
289 | + fieldList.push({type:'string',value:'containerCode',text:'容器',dictCode:''}) | |
290 | + fieldList.push({type:'string',value:'inventorySts',text:'库存状态',dictCode:''}) | |
291 | + fieldList.push({type:'string',value:'systemQty',text:'系统数量',dictCode:''}) | |
292 | + fieldList.push({type:'string',value:'countedQty',text:'实盘数量',dictCode:''}) | |
293 | + fieldList.push({type:'string',value:'gapQty',text:'差异数量',dictCode:''}) | |
294 | + fieldList.push({type:'string',value:'rejectionNote',text:'失败原因',dictCode:''}) | |
295 | + fieldList.push({type:'string',value:'completedBy',text:'完成用户',dictCode:''}) | |
296 | + fieldList.push({type:'string',value:'completedAt',text:'完成时间',dictCode:''}) | |
297 | + fieldList.push({type:'string',value:'enableStatus',text:'盘点明细状态',dictCode:''}) | |
298 | + this.superFieldList = fieldList | |
299 | + } | |
300 | + } | |
301 | + } | |
302 | +</script> | |
303 | +<style lang="less" scoped> | |
304 | + @import '~@assets/less/common.less'; | |
305 | +</style> | |
0 | 306 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.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-row> | |
8 | + </a-form> | |
9 | + </div> | |
10 | + <!-- 查询区域-END --> | |
11 | + | |
12 | + <!-- 操作按钮区域 --> | |
13 | + <div class="table-operator"> | |
14 | + <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> | |
15 | + <a-button type="primary" icon="download" @click="handleExportXls('盘点主表')">导出</a-button> | |
16 | + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
17 | + <a-button type="primary" icon="import">导入</a-button> | |
18 | + </a-upload> | |
19 | + <!-- 高级查询区域 --> | |
20 | + <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> | |
21 | + <a-dropdown v-if="selectedRowKeys.length > 0"> | |
22 | + <a-menu slot="overlay"> | |
23 | + <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> | |
24 | + </a-menu> | |
25 | + <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> | |
26 | + </a-dropdown> | |
27 | + </div> | |
28 | + | |
29 | + <!-- table区域-begin --> | |
30 | + <div> | |
31 | + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | |
32 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 | |
33 | + <a style="margin-left: 24px" @click="onClearSelected">清空</a> | |
34 | + </div> | |
35 | + | |
36 | + <a-table | |
37 | + ref="table" | |
38 | + size="middle" | |
39 | + :scroll="{x:true}" | |
40 | + bordered | |
41 | + rowKey="id" | |
42 | + :columns="columns" | |
43 | + :dataSource="dataSource" | |
44 | + :pagination="ipagination" | |
45 | + :loading="loading" | |
46 | + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" | |
47 | + class="j-table-force-nowrap" | |
48 | + @change="handleTableChange"> | |
49 | + | |
50 | + <span slot="companyCode" slot-scope="companyCode"> | |
51 | + <a-tag :key="companyCode" color=blue> | |
52 | + {{ solutionCompany(companyCode) }} | |
53 | + </a-tag> | |
54 | + </span> | |
55 | + | |
56 | + | |
57 | + <span slot="countType" slot-scope="countType"> | |
58 | + <a-tag :key="countType" color=pink> | |
59 | + {{ solutionCountType(countType) }} | |
60 | + </a-tag> | |
61 | + </span> | |
62 | + | |
63 | + <template slot="htmlSlot" slot-scope="text"> | |
64 | + <div v-html="text"></div> | |
65 | + </template> | |
66 | + <template slot="imgSlot" slot-scope="text"> | |
67 | + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | |
68 | + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
69 | + </template> | |
70 | + <template slot="fileSlot" slot-scope="text"> | |
71 | + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | |
72 | + <a-button | |
73 | + v-else | |
74 | + :ghost="true" | |
75 | + type="primary" | |
76 | + icon="download" | |
77 | + size="small" | |
78 | + @click="downloadFile(text)"> | |
79 | + 下载 | |
80 | + </a-button> | |
81 | + </template> | |
82 | + | |
83 | + <span slot="action" slot-scope="text, record"> | |
84 | + <a @click="handleEdit(record)">编辑</a> | |
85 | + | |
86 | + <a-divider type="vertical" /> | |
87 | + <a-dropdown> | |
88 | + <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
89 | + <a-menu slot="overlay"> | |
90 | + <a-menu-item> | |
91 | + <a @click="handleDetail(record)">详情</a> | |
92 | + </a-menu-item> | |
93 | + <a-menu-item> | |
94 | + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> | |
95 | + <a>删除</a> | |
96 | + </a-popconfirm> | |
97 | + </a-menu-item> | |
98 | + </a-menu> | |
99 | + </a-dropdown> | |
100 | + </span> | |
101 | + | |
102 | + </a-table> | |
103 | + </div> | |
104 | + | |
105 | + <cycle-count-header-modal ref="modalForm" @ok="modalFormOk"></cycle-count-header-modal> | |
106 | + </a-card> | |
107 | +</template> | |
108 | + | |
109 | +<script> | |
110 | + | |
111 | + import '@/assets/less/TableExpand.less' | |
112 | + import { mixinDevice } from '@/utils/mixin' | |
113 | + import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
114 | + import {getCompanyList} from '@/api/api' | |
115 | + import {getCountTypeList} from '@/api/api' | |
116 | + import CycleCountHeaderModal from './modules/CycleCountHeaderModal' | |
117 | + | |
118 | + export default { | |
119 | + name: 'CycleCountHeaderList', | |
120 | + mixins:[JeecgListMixin, mixinDevice], | |
121 | + components: { | |
122 | + CycleCountHeaderModal | |
123 | + }, | |
124 | + data () { | |
125 | + return { | |
126 | + description: '盘点主表管理页面', | |
127 | + companyList: [], | |
128 | + CountTypeList:[], | |
129 | + // 表头 | |
130 | + columns: [ | |
131 | + { | |
132 | + title: 'ID', | |
133 | + dataIndex: '', | |
134 | + key:'rowIndex', | |
135 | + width:60, | |
136 | + align:"center", | |
137 | + customRender:function (t,r,index) { | |
138 | + return parseInt(index)+1; | |
139 | + } | |
140 | + }, | |
141 | + { | |
142 | + title:'盘点单编码', | |
143 | + align:"center", | |
144 | + dataIndex: 'code' | |
145 | + }, | |
146 | + { | |
147 | + title:'货主编码', | |
148 | + align: "center", | |
149 | + dataIndex: 'companyCode', | |
150 | + key: 'companyCode', | |
151 | + scopedSlots: {customRender: 'companyCode'} | |
152 | + }, | |
153 | + { | |
154 | + title:'总货位数', | |
155 | + align:"center", | |
156 | + dataIndex: 'totalLocs' | |
157 | + }, | |
158 | + { | |
159 | + title:'总物料数', | |
160 | + align:"center", | |
161 | + dataIndex: 'totalItems' | |
162 | + }, | |
163 | + { | |
164 | + title:'盘点类型', | |
165 | + align:"center", | |
166 | + dataIndex: 'countType', | |
167 | + key: 'countType', | |
168 | + scopedSlots: {customRender: 'countType'} | |
169 | + }, | |
170 | + { | |
171 | + title:'盘点主单状态', | |
172 | + align:"center", | |
173 | + dataIndex: 'statusCyc_dictText' | |
174 | + }, | |
175 | + { | |
176 | + title:'指定盘点人员', | |
177 | + align:"center", | |
178 | + dataIndex: 'stocktakingAs' | |
179 | + }, | |
180 | + { | |
181 | + title:'实际盘点人员', | |
182 | + align:"center", | |
183 | + dataIndex: 'stocktakingAc' | |
184 | + }, | |
185 | + { | |
186 | + title:'是否有效', | |
187 | + align:"center", | |
188 | + dataIndex: 'enable_dictText' | |
189 | + }, | |
190 | + // { | |
191 | + // title:'回传时间', | |
192 | + // align:"center", | |
193 | + // dataIndex: 'uploadTime' | |
194 | + // }, | |
195 | + // { | |
196 | + // title:'回传状态', | |
197 | + // align:"center", | |
198 | + // dataIndex: 'uploadStatusString' | |
199 | + // }, | |
200 | + // { | |
201 | + // title:'关闭人', | |
202 | + // align:"center", | |
203 | + // dataIndex: 'closedBy' | |
204 | + // }, | |
205 | + { | |
206 | + title:'备注', | |
207 | + align:"center", | |
208 | + dataIndex: 'remark' | |
209 | + }, | |
210 | + { | |
211 | + title: '操作', | |
212 | + dataIndex: 'action', | |
213 | + align:"center", | |
214 | + fixed:"right", | |
215 | + width:147, | |
216 | + scopedSlots: { customRender: 'action' } | |
217 | + } | |
218 | + ], | |
219 | + url: { | |
220 | + list: "/cycleCountHeader/cycleCountHeader/list", | |
221 | + delete: "/cycleCountHeader/cycleCountHeader/delete", | |
222 | + deleteBatch: "/cycleCountHeader/cycleCountHeader/deleteBatch", | |
223 | + exportXlsUrl: "/cycleCountHeader/cycleCountHeader/exportXls", | |
224 | + importExcelUrl: "cycleCountHeader/cycleCountHeader/importExcel", | |
225 | + | |
226 | + }, | |
227 | + dictOptions:{ | |
228 | + status: [], | |
229 | + }, | |
230 | + superFieldList:[], | |
231 | + } | |
232 | + }, | |
233 | + created() { | |
234 | + this.getSuperFieldList(); | |
235 | + this.loadFrom(); | |
236 | + }, | |
237 | + computed: { | |
238 | + importExcelUrl: function(){ | |
239 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
240 | + }, | |
241 | + }, | |
242 | + methods: { | |
243 | + initDictConfig(){ | |
244 | + }, | |
245 | + getSuperFieldList(){ | |
246 | + let fieldList=[]; | |
247 | + fieldList.push({type:'string',value:'code',text:'盘点主表编号',dictCode:''}) | |
248 | + fieldList.push({type:'string',value:'companyCode',text:'货主编码',dictCode:''}) | |
249 | + fieldList.push({type:'string',value:'countType',text:'盘点类型',dictCode:''}) | |
250 | + fieldList.push({type:'int',value:'statusCyc',text:'盘点状态',dictCode:'cyclecount_status'}) | |
251 | + fieldList.push({type:'string',value:'remark',text:'备注',dictCode:''}) | |
252 | + fieldList.push({type:'int',value:'totalLocs',text:'总货位数',dictCode:''}) | |
253 | + fieldList.push({type:'int',value:'totalItems',text:'总物料数',dictCode:''}) | |
254 | + fieldList.push({type:'string',value:'stocktakingAs',text:'指定盘点人员',dictCode:''}) | |
255 | + fieldList.push({type:'string',value:'stocktakingAc',text:'实际盘点人员',dictCode:''}) | |
256 | + fieldList.push({type:'int',value:'enable',text:'是否有效',dictCode:'valid_status'}) | |
257 | + fieldList.push({type:'datetime',value:'uploadTime',text:'回传时间'}) | |
258 | + fieldList.push({type:'int',value:'uploadStatus',text:'回传状态',dictCode:'valid_status'}) | |
259 | + fieldList.push({type:'string',value:'closedBy',text:'关闭人',dictCode:''}) | |
260 | + this.superFieldList = fieldList | |
261 | + }, | |
262 | + loadFrom() { | |
263 | + getCompanyList().then((res) => { | |
264 | + if (res.success) { | |
265 | + this.companyList = res.result | |
266 | + } | |
267 | + }); | |
268 | + getCountTypeList().then((res) => { | |
269 | + if (res.success) { | |
270 | + this.CountTypeList = res.result | |
271 | + } | |
272 | + }); | |
273 | + }, | |
274 | + solutionCompany(value) { | |
275 | + var actions = [] | |
276 | + Object.keys(this.companyList).some((key) => { | |
277 | + if (this.companyList[key].code == ('' + value)) { | |
278 | + actions.push(this.companyList[key].name) | |
279 | + return true | |
280 | + } | |
281 | + }) | |
282 | + return actions.join('') | |
283 | + }, | |
284 | + | |
285 | + solutionCountType(value) { | |
286 | + var actions = [] | |
287 | + Object.keys(this.CountTypeList).some((key) => { | |
288 | + if (this.CountTypeList[key].code == ('' + value)) { | |
289 | + actions.push(this.CountTypeList[key].name) | |
290 | + return true | |
291 | + } | |
292 | + }) | |
293 | + return actions.join('') | |
294 | + }, | |
295 | + | |
296 | + } | |
297 | + } | |
298 | +</script> | |
299 | +<style scoped> | |
300 | + @import '~@assets/less/common.less'; | |
301 | +</style> | |
0 | 302 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailChildForm.vue
0 → 100644
1 | +<template> | |
2 | + <j-form-container :disabled="disabled"> | |
3 | + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> | |
4 | + <a-row> | |
5 | + <a-col :xs="24" :sm="12"> | |
6 | + <a-form-model-item label="盘点主单code" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cyclecountheadcode"> | |
7 | + <a-input v-model="model.cyclecountheadcode" placeholder="请输入盘点主单code"></a-input> | |
8 | + </a-form-model-item> | |
9 | + </a-col> | |
10 | + <a-col :xs="24" :sm="12"> | |
11 | + <a-form-model-item label="盘点明细ID主id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cycleCountDetailid"> | |
12 | + <a-input v-model="model.cycleCountDetailid" placeholder="请输入盘点明细ID主id"></a-input> | |
13 | + </a-form-model-item> | |
14 | + </a-col> | |
15 | + <a-col :xs="24" :sm="12"> | |
16 | + <a-form-model-item label="盘点明细子单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="childStatus"> | |
17 | + <a-input v-model="model.childStatus" placeholder="请输入盘点明细子单状态"></a-input> | |
18 | + </a-form-model-item> | |
19 | + </a-col> | |
20 | + <a-col :xs="24" :sm="12"> | |
21 | + <a-form-model-item label="库位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="locationCode"> | |
22 | + <a-input v-model="model.locationCode" placeholder="请输入库位"></a-input> | |
23 | + </a-form-model-item> | |
24 | + </a-col> | |
25 | + <a-col :xs="24" :sm="12"> | |
26 | + <a-form-model-item label="容器" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="containerCode"> | |
27 | + <a-input v-model="model.containerCode" placeholder="请输入容器"></a-input> | |
28 | + </a-form-model-item> | |
29 | + </a-col> | |
30 | + <a-col :xs="24" :sm="12"> | |
31 | + <a-form-model-item label="物料编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode"> | |
32 | + <a-input v-model="model.materialCode" placeholder="请输入物料编码"></a-input> | |
33 | + </a-form-model-item> | |
34 | + </a-col> | |
35 | + <a-col :xs="24" :sm="12"> | |
36 | + <a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> | |
37 | + <a-input v-model="model.materialName" placeholder="请输入物料名称"></a-input> | |
38 | + </a-form-model-item> | |
39 | + </a-col> | |
40 | + <a-col :xs="24" :sm="12"> | |
41 | + <a-form-model-item label="物料规格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialSpec"> | |
42 | + <a-input v-model="model.materialSpec" placeholder="请输入物料规格"></a-input> | |
43 | + </a-form-model-item> | |
44 | + </a-col> | |
45 | + <a-col :xs="24" :sm="12"> | |
46 | + <a-form-model-item label="物料单位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialUnit"> | |
47 | + <a-input v-model="model.materialUnit" placeholder="请输入物料单位"></a-input> | |
48 | + </a-form-model-item> | |
49 | + </a-col> | |
50 | + <a-col :xs="24" :sm="12"> | |
51 | + <a-form-model-item label="系统数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="systemQty"> | |
52 | + <a-input v-model="model.systemQty" placeholder="请输入系统数量"></a-input> | |
53 | + </a-form-model-item> | |
54 | + </a-col> | |
55 | + <a-col :xs="24" :sm="12"> | |
56 | + <a-form-model-item label="实盘数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="countedQty"> | |
57 | + <a-input v-model="model.countedQty" placeholder="请输入实盘数量"></a-input> | |
58 | + </a-form-model-item> | |
59 | + </a-col> | |
60 | + <a-col :xs="24" :sm="12"> | |
61 | + <a-form-model-item label="差异数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="gapQty"> | |
62 | + <a-input v-model="model.gapQty" placeholder="请输入差异数量"></a-input> | |
63 | + </a-form-model-item> | |
64 | + </a-col> | |
65 | + <a-col :xs="24" :sm="12"> | |
66 | + <a-form-model-item label="库存明细id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryDetaiId"> | |
67 | + <a-input v-model="model.inventoryDetaiId" placeholder="请输入库存明细id"></a-input> | |
68 | + </a-form-model-item> | |
69 | + </a-col> | |
70 | + </a-row> | |
71 | + </a-form-model> | |
72 | + </j-form-container> | |
73 | +</template> | |
74 | +<script> | |
75 | + import { getAction } from '@/api/manage' | |
76 | + import { validateDuplicateValue } from '@/utils/util' | |
77 | + import { VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil' | |
78 | + | |
79 | + export default { | |
80 | + name: 'CycleCountDetailChildForm', | |
81 | + components: { | |
82 | + }, | |
83 | + props:{ | |
84 | + disabled: { | |
85 | + type: Boolean, | |
86 | + default: false, | |
87 | + required: false | |
88 | + } | |
89 | + }, | |
90 | + data () { | |
91 | + return { | |
92 | + model:{ | |
93 | + }, | |
94 | + labelCol: { | |
95 | + xs: { span: 24 }, | |
96 | + sm: { span: 5 }, | |
97 | + }, | |
98 | + wrapperCol: { | |
99 | + xs: { span: 24 }, | |
100 | + sm: { span: 16 }, | |
101 | + }, | |
102 | +validatorRules: { | |
103 | +}, | |
104 | + confirmLoading: false, | |
105 | + } | |
106 | + }, | |
107 | + created () { | |
108 | + //备份model原始值 | |
109 | + this.modelDefault = JSON.parse(JSON.stringify(this.model)); | |
110 | + }, | |
111 | + methods:{ | |
112 | + initFormData(url,id){ | |
113 | + this.clearFormData() | |
114 | + if(!id){ | |
115 | + this.edit(this.modelDefault); | |
116 | + }else{ | |
117 | + getAction(url,{id:id}).then(res=>{ | |
118 | + if(res.success){ | |
119 | + let records = res.result.records | |
120 | + if(records && records.length>0){ | |
121 | + this.edit(records[0]) | |
122 | + } | |
123 | + } | |
124 | + }) | |
125 | + } | |
126 | + }, | |
127 | + edit(record){ | |
128 | + this.model = Object.assign({}, record) | |
129 | + }, | |
130 | + getFormData(){ | |
131 | + let formdata_arr = [] | |
132 | + this.$refs.form.validate(valid => { | |
133 | + if (valid) { | |
134 | + let isNullObj = true | |
135 | + Object.keys(this.model).forEach(key=>{ | |
136 | + if(this.model[key]){ | |
137 | + isNullObj = false | |
138 | + } | |
139 | + }) | |
140 | + if(!isNullObj){ | |
141 | + formdata_arr.push(this.model) | |
142 | + } | |
143 | + }else{ | |
144 | + this.$emit("validateError","盘点容器明细表表单校验未通过"); | |
145 | + return false | |
146 | + } | |
147 | + }) | |
148 | + return formdata_arr; | |
149 | + }, | |
150 | + validate(index){ | |
151 | + return new Promise((resolve, reject) => { | |
152 | + // 验证主表表单 | |
153 | + this.$refs.form.validate(valid => { | |
154 | + !valid ? reject({ error: VALIDATE_NO_PASSED ,index}) : resolve() | |
155 | + }) | |
156 | + }).then(values => { | |
157 | + return Promise.resolve() | |
158 | + }).catch(error => { | |
159 | + return Promise.reject(error) | |
160 | + }) | |
161 | + | |
162 | + }, | |
163 | + clearFormData(){ | |
164 | + this.$refs.form.clearValidate() | |
165 | + } | |
166 | + | |
167 | + } | |
168 | + } | |
169 | +</script> | |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailForm.vue
0 → 100644
1 | +<template> | |
2 | + <a-spin :spinning="confirmLoading"> | |
3 | + <j-form-container :disabled="formDisabled"> | |
4 | + <!-- 主表单区域 --> | |
5 | + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> | |
6 | + <a-row> | |
7 | + <a-col :xs="24" :sm="12"> | |
8 | + <a-form-model-item label="盘点主单id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cycleCountHeadId"> | |
9 | + <a-input v-model="model.cycleCountHeadId" placeholder="请输入盘点主单id" ></a-input> | |
10 | + </a-form-model-item> | |
11 | + </a-col> | |
12 | + <a-col :xs="24" :sm="12"> | |
13 | + <a-form-model-item label="盘点主单code" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cycleCountHeadCode"> | |
14 | + <a-input v-model="model.cycleCountHeadCode" placeholder="请输入盘点主单code" ></a-input> | |
15 | + </a-form-model-item> | |
16 | + </a-col> | |
17 | + <a-col :xs="24" :sm="12"> | |
18 | + <a-form-model-item label="任务表头" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taskHeaderId"> | |
19 | + <a-input v-model="model.taskHeaderId" placeholder="请输入任务表头" ></a-input> | |
20 | + </a-form-model-item> | |
21 | + </a-col> | |
22 | + <a-col :xs="24" :sm="12"> | |
23 | + <a-form-model-item label="任务明细头" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taskDetailId"> | |
24 | + <a-input v-model="model.taskDetailId" placeholder="请输入任务明细头" ></a-input> | |
25 | + </a-form-model-item> | |
26 | + </a-col> | |
27 | + <a-col :xs="24" :sm="12"> | |
28 | + <a-form-model-item label="仓库" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseCode"> | |
29 | + <a-input v-model="model.warehouseCode" placeholder="请输入仓库" ></a-input> | |
30 | + </a-form-model-item> | |
31 | + </a-col> | |
32 | + <a-col :xs="24" :sm="12"> | |
33 | + <a-form-model-item label="货主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="companyCode"> | |
34 | + <a-input v-model="model.companyCode" placeholder="请输入货主" ></a-input> | |
35 | + </a-form-model-item> | |
36 | + </a-col> | |
37 | + <a-col :xs="24" :sm="12"> | |
38 | + <a-form-model-item label="库存明细头" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryDetailId"> | |
39 | + <a-input v-model="model.inventoryDetailId" placeholder="请输入库存明细头" ></a-input> | |
40 | + </a-form-model-item> | |
41 | + </a-col> | |
42 | + <a-col :xs="24" :sm="12"> | |
43 | + <a-form-model-item label="库位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="locationCode"> | |
44 | + <a-input v-model="model.locationCode" placeholder="请输入库位" ></a-input> | |
45 | + </a-form-model-item> | |
46 | + </a-col> | |
47 | + <a-col :xs="24" :sm="12"> | |
48 | + <a-form-model-item label="容器" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="containerCode"> | |
49 | + <a-input v-model="model.containerCode" placeholder="请输入容器" ></a-input> | |
50 | + </a-form-model-item> | |
51 | + </a-col> | |
52 | + <a-col :xs="24" :sm="12"> | |
53 | + <a-form-model-item label="库存状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventorySts"> | |
54 | + <a-input v-model="model.inventorySts" placeholder="请输入库存状态" ></a-input> | |
55 | + </a-form-model-item> | |
56 | + </a-col> | |
57 | + <a-col :xs="24" :sm="12"> | |
58 | + <a-form-model-item label="系统数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="systemQty"> | |
59 | + <a-input v-model="model.systemQty" placeholder="请输入系统数量" ></a-input> | |
60 | + </a-form-model-item> | |
61 | + </a-col> | |
62 | + <a-col :xs="24" :sm="12"> | |
63 | + <a-form-model-item label="实盘数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="countedQty"> | |
64 | + <a-input v-model="model.countedQty" placeholder="请输入实盘数量" ></a-input> | |
65 | + </a-form-model-item> | |
66 | + </a-col> | |
67 | + <a-col :xs="24" :sm="12"> | |
68 | + <a-form-model-item label="差异数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="gapQty"> | |
69 | + <a-input v-model="model.gapQty" placeholder="请输入差异数量" ></a-input> | |
70 | + </a-form-model-item> | |
71 | + </a-col> | |
72 | + <a-col :xs="24" :sm="12"> | |
73 | + <a-form-model-item label="失败原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="rejectionNote"> | |
74 | + <a-input v-model="model.rejectionNote" placeholder="请输入失败原因" ></a-input> | |
75 | + </a-form-model-item> | |
76 | + </a-col> | |
77 | + <a-col :xs="24" :sm="12"> | |
78 | + <a-form-model-item label="完成用户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="completedBy"> | |
79 | + <a-input v-model="model.completedBy" placeholder="请输入完成用户" ></a-input> | |
80 | + </a-form-model-item> | |
81 | + </a-col> | |
82 | + <a-col :xs="24" :sm="12"> | |
83 | + <a-form-model-item label="完成时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="completedAt"> | |
84 | + <a-input v-model="model.completedAt" placeholder="请输入完成时间" ></a-input> | |
85 | + </a-form-model-item> | |
86 | + </a-col> | |
87 | + <a-col :xs="24" :sm="12"> | |
88 | + <a-form-model-item label="盘点明细状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enableStatus"> | |
89 | + <a-input v-model="model.enableStatus" placeholder="请输入盘点明细状态" ></a-input> | |
90 | + </a-form-model-item> | |
91 | + </a-col> | |
92 | + </a-row> | |
93 | + </a-form-model> | |
94 | + </j-form-container> | |
95 | + <!-- 子表单区域 --> | |
96 | + <a-tabs v-model="activeKey" @change="handleChangeTabs"> | |
97 | + <a-tab-pane tab="盘点容器明细表" :key="refKeys[0]" :forceRender="true"> | |
98 | + <cycle-count-detail-child-form ref="cycleCountDetailChildForm" @validateError="validateError" :disabled="formDisabled"></cycle-count-detail-child-form> | |
99 | + </a-tab-pane> | |
100 | + | |
101 | + </a-tabs> | |
102 | + </a-spin> | |
103 | +</template> | |
104 | + | |
105 | +<script> | |
106 | + | |
107 | + import { FormTypes,getRefPromise,VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil' | |
108 | + import { JEditableTableModelMixin } from '@/mixins/JEditableTableModelMixin' | |
109 | + import { validateDuplicateValue } from '@/utils/util' | |
110 | + import CycleCountDetailChildForm from './CycleCountDetailChildForm.vue' | |
111 | + | |
112 | + export default { | |
113 | + name: 'CycleCountDetailForm', | |
114 | + mixins: [JEditableTableModelMixin], | |
115 | + components: { | |
116 | + CycleCountDetailChildForm, | |
117 | + }, | |
118 | + data() { | |
119 | + return { | |
120 | + labelCol: { | |
121 | + xs: { span: 24 }, | |
122 | + sm: { span: 5 }, | |
123 | + }, | |
124 | + wrapperCol: { | |
125 | + xs: { span: 24 }, | |
126 | + sm: { span: 16 }, | |
127 | + }, | |
128 | + model:{ | |
129 | + }, | |
130 | +validatorRules: { | |
131 | +}, | |
132 | + // 新增时子表默认添加几行空数据 | |
133 | + addDefaultRowNum: 1, | |
134 | + refKeys: ['cycleCountDetailChild', ], | |
135 | + tableKeys:[], | |
136 | + activeKey: 'cycleCountDetailChild', | |
137 | + // 盘点容器明细表 | |
138 | + cycleCountDetailChildTable: { | |
139 | + loading: false, | |
140 | + dataSource: [], | |
141 | + columns: [ | |
142 | + ] | |
143 | + }, | |
144 | + url: { | |
145 | + add: "/cycleCountDetail/cycleCountDetail/add", | |
146 | + edit: "/cycleCountDetail/cycleCountDetail/edit", | |
147 | + cycleCountDetailChild: { | |
148 | + list: '/cycleCountDetail/cycleCountDetail/queryCycleCountDetailChildByMainId' | |
149 | + }, | |
150 | + } | |
151 | + } | |
152 | + }, | |
153 | + props: { | |
154 | + //表单禁用 | |
155 | + disabled: { | |
156 | + type: Boolean, | |
157 | + default: false, | |
158 | + required: false | |
159 | + } | |
160 | + }, | |
161 | + computed: { | |
162 | + formDisabled(){ | |
163 | + return this.disabled | |
164 | + }, | |
165 | + }, | |
166 | + created () { | |
167 | + }, | |
168 | + methods: { | |
169 | + addBefore(){ | |
170 | + this.$refs.cycleCountDetailChildForm.clearFormData() | |
171 | + }, | |
172 | + getAllTable() { | |
173 | + let values = this.tableKeys.map(key => getRefPromise(this, key)) | |
174 | + return Promise.all(values) | |
175 | + }, | |
176 | + /** 调用完edit()方法之后会自动调用此方法 */ | |
177 | + editAfter() { | |
178 | + this.$nextTick(() => { | |
179 | + this.$refs.cycleCountDetailChildForm.initFormData(this.url.cycleCountDetailChild.list,this.model.id) | |
180 | + }) | |
181 | + // 加载子表数据 | |
182 | + if (this.model.id) { | |
183 | + let params = { id: this.model.id } | |
184 | + } | |
185 | + }, | |
186 | + //校验所有一对一子表表单 | |
187 | + validateSubForm(allValues){ | |
188 | + return new Promise((resolve,reject)=>{ | |
189 | + Promise.all([ | |
190 | + this.$refs.cycleCountDetailChildForm.validate(0), | |
191 | + ]).then(() => { | |
192 | + resolve(allValues) | |
193 | + }).catch(e => { | |
194 | + if (e.error === VALIDATE_NO_PASSED) { | |
195 | + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab | |
196 | + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] | |
197 | + } else { | |
198 | + console.error(e) | |
199 | + } | |
200 | + }) | |
201 | + }) | |
202 | + }, | |
203 | + /** 整理成formData */ | |
204 | + classifyIntoFormData(allValues) { | |
205 | + let main = Object.assign(this.model, allValues.formValue) | |
206 | + | |
207 | + return { | |
208 | + ...main, // 展开 | |
209 | + cycleCountDetailChildList: this.$refs.cycleCountDetailChildForm.getFormData(), | |
210 | + } | |
211 | + }, | |
212 | + validateError(msg){ | |
213 | + this.$message.error(msg) | |
214 | + }, | |
215 | + close() { | |
216 | + this.visible = false | |
217 | + this.$emit('close') | |
218 | + this.$refs.form.clearValidate(); | |
219 | + }, | |
220 | + | |
221 | + } | |
222 | + } | |
223 | +</script> | |
224 | + | |
225 | +<style scoped> | |
226 | +</style> | |
0 | 227 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailModal.vue
0 → 100644
1 | +<template> | |
2 | + <j-modal | |
3 | + :title="title" | |
4 | + :width="1200" | |
5 | + :visible="visible" | |
6 | + :maskClosable="false" | |
7 | + switchFullscreen | |
8 | + @ok="handleOk" | |
9 | + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" | |
10 | + @cancel="handleCancel"> | |
11 | + <cycle-count-detail-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"/> | |
12 | + </j-modal> | |
13 | +</template> | |
14 | + | |
15 | +<script> | |
16 | + import CycleCountDetailForm from './CycleCountDetailForm' | |
17 | + export default { | |
18 | + name: 'CycleCountDetailModal', | |
19 | + components: { | |
20 | + CycleCountDetailForm | |
21 | + }, | |
22 | + data() { | |
23 | + return { | |
24 | + title:'', | |
25 | + visible: false, | |
26 | + disableSubmit: false | |
27 | + } | |
28 | + }, | |
29 | + methods:{ | |
30 | + add () { | |
31 | + this.visible=true | |
32 | + this.$nextTick(()=>{ | |
33 | + this.$refs.realForm.add(); | |
34 | + }) | |
35 | + }, | |
36 | + edit (record) { | |
37 | + this.visible=true | |
38 | + this.$nextTick(()=>{ | |
39 | + this.$refs.realForm.edit(record); | |
40 | + }) | |
41 | + }, | |
42 | + close () { | |
43 | + this.$emit('close'); | |
44 | + this.visible = false; | |
45 | + }, | |
46 | + handleOk () { | |
47 | + this.$refs.realForm.handleOk(); | |
48 | + }, | |
49 | + submitCallback(){ | |
50 | + this.$emit('ok'); | |
51 | + this.visible = false; | |
52 | + }, | |
53 | + handleCancel () { | |
54 | + this.close() | |
55 | + } | |
56 | + } | |
57 | + } | |
58 | +</script> | |
59 | + | |
60 | +<style scoped> | |
61 | +</style> | |
0 | 62 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountHeaderForm.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="货主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="companyCode"> | |
8 | + <a-select | |
9 | + show-search | |
10 | + placeholder="请选择货主" | |
11 | + option-filter-prop="children" | |
12 | + :filter-option="filterOption" | |
13 | + v-model="model.companyCode"> | |
14 | + <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ | |
15 | + item.name | |
16 | + }} | |
17 | + </a-select-option> | |
18 | + </a-select> | |
19 | + </a-form-model-item> | |
20 | + </a-col> | |
21 | + <a-col :span="24"> | |
22 | + <a-form-model-item label="盘点类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="countType"> | |
23 | + <a-select | |
24 | + show-search | |
25 | + placeholder="请输入盘点类型" | |
26 | + option-filter-prop="children" | |
27 | + :filter-option="filterOption" | |
28 | + v-model="model.countType"> | |
29 | + <a-select-option v-for="item in CountTypeList" :key="item.name" :value="item.code">{{ | |
30 | + item.name | |
31 | + }} | |
32 | + </a-select-option> | |
33 | + </a-select> | |
34 | + </a-form-model-item> | |
35 | + </a-col> | |
36 | + | |
37 | + | |
38 | + | |
39 | + <a-col :span="24"> | |
40 | + <a-form-model-item label="指定盘点人员" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="stocktakingAs"> | |
41 | + <j-select-multi-user v-model="model.stocktakingAs" :query-config="selectUserQueryConfig"/> | |
42 | + </a-form-model-item> | |
43 | + </a-col> | |
44 | + <a-col :span="24"> | |
45 | + <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> | |
46 | + <a-input v-model="model.remark" placeholder="请输入备注" ></a-input> | |
47 | + </a-form-model-item> | |
48 | + </a-col> | |
49 | + </a-row> | |
50 | + </a-form-model> | |
51 | + </j-form-container> | |
52 | + </a-spin> | |
53 | +</template> | |
54 | + | |
55 | +<script> | |
56 | + | |
57 | + import { httpAction, getAction } from '@/api/manage' | |
58 | + import { validateDuplicateValue } from '@/utils/util' | |
59 | + import {getCompanyList} from '@/api/api' | |
60 | + import {getCountTypeList} from '@/api/api' | |
61 | + | |
62 | + export default { | |
63 | + name: 'CycleCountHeaderForm', | |
64 | + components: { | |
65 | + }, | |
66 | + props: { | |
67 | + //表单禁用 | |
68 | + disabled: { | |
69 | + type: Boolean, | |
70 | + default: false, | |
71 | + required: false | |
72 | + } | |
73 | + }, | |
74 | + data () { | |
75 | + return { | |
76 | + // 选择用户查询条件配置 | |
77 | + selectUserQueryConfig: [ | |
78 | + {key: 'phone', label: '电话'}, | |
79 | + ], | |
80 | + companyList: [], | |
81 | + CountTypeList:[], | |
82 | + model:{ | |
83 | + }, | |
84 | + labelCol: { | |
85 | + xs: { span: 24 }, | |
86 | + sm: { span: 5 }, | |
87 | + }, | |
88 | + wrapperCol: { | |
89 | + xs: { span: 24 }, | |
90 | + sm: { span: 16 }, | |
91 | + }, | |
92 | + confirmLoading: false, | |
93 | + validatorRules: { | |
94 | + }, | |
95 | + url: { | |
96 | + add: "/cycleCountHeader/cycleCountHeader/add", | |
97 | + edit: "/cycleCountHeader/cycleCountHeader/edit", | |
98 | + queryById: "/cycleCountHeader/cycleCountHeader/queryById" | |
99 | + } | |
100 | + } | |
101 | + }, | |
102 | + computed: { | |
103 | + formDisabled(){ | |
104 | + return this.disabled | |
105 | + }, | |
106 | + }, | |
107 | + created () { | |
108 | + //备份model原始值 | |
109 | + this.modelDefault = JSON.parse(JSON.stringify(this.model)); | |
110 | + this.loadFrom(); | |
111 | + }, | |
112 | + methods: { | |
113 | + add () { | |
114 | + this.edit(this.modelDefault); | |
115 | + }, | |
116 | + edit (record) { | |
117 | + this.model = Object.assign({}, record); | |
118 | + this.visible = true; | |
119 | + }, | |
120 | + loadFrom() { | |
121 | + getCompanyList().then((res) => { | |
122 | + if (res.success) { | |
123 | + this.companyList = res.result | |
124 | + this.model.companyCode = this.companyList[0].code; | |
125 | + } | |
126 | + }); | |
127 | + | |
128 | + getCountTypeList().then((res) => { | |
129 | + if (res.success) { | |
130 | + this.CountTypeList = res.result | |
131 | + this.model.countType = this.CountTypeList[0].code; | |
132 | + } | |
133 | + }); | |
134 | + }, | |
135 | + submitForm () { | |
136 | + const that = this; | |
137 | + // 触发表单验证 | |
138 | + this.$refs.form.validate(valid => { | |
139 | + if (valid) { | |
140 | + that.confirmLoading = true; | |
141 | + let httpurl = ''; | |
142 | + let method = ''; | |
143 | + if(!this.model.id){ | |
144 | + httpurl+=this.url.add; | |
145 | + method = 'post'; | |
146 | + }else{ | |
147 | + httpurl+=this.url.edit; | |
148 | + method = 'put'; | |
149 | + } | |
150 | + httpAction(httpurl,this.model,method).then((res)=>{ | |
151 | + if(res.success){ | |
152 | + that.$message.success(res.message); | |
153 | + that.$emit('ok'); | |
154 | + }else{ | |
155 | + that.$message.warning(res.message); | |
156 | + } | |
157 | + }).finally(() => { | |
158 | + that.confirmLoading = false; | |
159 | + }) | |
160 | + } | |
161 | + | |
162 | + }) | |
163 | + }, | |
164 | + } | |
165 | + } | |
166 | +</script> | |
0 | 167 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountHeaderModal.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 | + <cycle-count-header-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></cycle-count-header-form> | |
12 | + </j-modal> | |
13 | +</template> | |
14 | + | |
15 | +<script> | |
16 | + | |
17 | + import CycleCountHeaderForm from './CycleCountHeaderForm' | |
18 | + export default { | |
19 | + name: 'CycleCountHeaderModal', | |
20 | + components: { | |
21 | + CycleCountHeaderForm | |
22 | + }, | |
23 | + data () { | |
24 | + return { | |
25 | + title:'', | |
26 | + width:800, | |
27 | + visible: false, | |
28 | + disableSubmit: false | |
29 | + } | |
30 | + }, | |
31 | + methods: { | |
32 | + add () { | |
33 | + this.visible=true | |
34 | + this.$nextTick(()=>{ | |
35 | + this.$refs.realForm.add(); | |
36 | + }) | |
37 | + }, | |
38 | + edit (record) { | |
39 | + this.visible=true | |
40 | + this.$nextTick(()=>{ | |
41 | + this.$refs.realForm.edit(record); | |
42 | + }) | |
43 | + }, | |
44 | + close () { | |
45 | + this.$emit('close'); | |
46 | + this.visible = false; | |
47 | + }, | |
48 | + handleOk () { | |
49 | + this.$refs.realForm.submitForm(); | |
50 | + }, | |
51 | + submitCallback(){ | |
52 | + this.$emit('ok'); | |
53 | + this.visible = false; | |
54 | + }, | |
55 | + handleCancel () { | |
56 | + this.close() | |
57 | + } | |
58 | + } | |
59 | + } | |
60 | +</script> | |
0 | 61 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue
0 → 100644
1 | +<template> | |
2 | + <a-table | |
3 | + rowKey="id" | |
4 | + size="middle" | |
5 | + bordered | |
6 | + :loading="loading" | |
7 | + :columns="columns" | |
8 | + :dataSource="dataSource" | |
9 | + :pagination="false" | |
10 | + > | |
11 | + | |
12 | + <template slot="htmlSlot" slot-scope="text"> | |
13 | + <div v-html="text"></div> | |
14 | + </template> | |
15 | + | |
16 | + <template slot="imgSlot" slot-scope="text"> | |
17 | + <div style="font-size: 12px;font-style: italic;"> | |
18 | + <span v-if="!text">无图片</span> | |
19 | + <img v-else :src="getImgView(text)" alt="" style="max-width:80px;height:25px;"/> | |
20 | + </div> | |
21 | + </template> | |
22 | + | |
23 | + <template slot="fileSlot" slot-scope="text"> | |
24 | + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | |
25 | + <a-button | |
26 | + v-else | |
27 | + ghost | |
28 | + type="primary" | |
29 | + icon="download" | |
30 | + size="small" | |
31 | + @click="downloadFile(text)" | |
32 | + > | |
33 | + <span>下载</span> | |
34 | + </a-button> | |
35 | + </template> | |
36 | + | |
37 | + </a-table> | |
38 | +</template> | |
39 | + | |
40 | +<script> | |
41 | + import { getAction } from '@api/manage' | |
42 | + import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
43 | + | |
44 | + export default { | |
45 | + name: 'CycleCountDetailChildSubTable', | |
46 | + mixins: [JeecgListMixin], | |
47 | + props: { | |
48 | + record: { | |
49 | + type: Object, | |
50 | + default: null, | |
51 | + } | |
52 | + }, | |
53 | + data() { | |
54 | + return { | |
55 | + description: '盘点容器明细表内嵌列表', | |
56 | + disableMixinCreated: true, | |
57 | + loading: false, | |
58 | + dataSource: [], | |
59 | + columns: [ | |
60 | + { | |
61 | + title: '盘点主单code', | |
62 | + align: 'center', | |
63 | + dataIndex: 'cyclecountheadcode', | |
64 | + }, | |
65 | + { | |
66 | + title: '盘点明细ID主id', | |
67 | + align: 'center', | |
68 | + dataIndex: 'cycleCountDetailid', | |
69 | + }, | |
70 | + { | |
71 | + title: '盘点明细子单状态', | |
72 | + align: 'center', | |
73 | + dataIndex: 'childStatus', | |
74 | + }, | |
75 | + { | |
76 | + title: '库位', | |
77 | + align: 'center', | |
78 | + dataIndex: 'locationCode', | |
79 | + }, | |
80 | + { | |
81 | + title: '容器', | |
82 | + align: 'center', | |
83 | + dataIndex: 'containerCode', | |
84 | + }, | |
85 | + { | |
86 | + title: '物料编码', | |
87 | + align: 'center', | |
88 | + dataIndex: 'materialCode', | |
89 | + }, | |
90 | + { | |
91 | + title: '物料名称', | |
92 | + align: 'center', | |
93 | + dataIndex: 'materialName', | |
94 | + }, | |
95 | + { | |
96 | + title: '物料规格', | |
97 | + align: 'center', | |
98 | + dataIndex: 'materialSpec', | |
99 | + }, | |
100 | + { | |
101 | + title: '物料单位', | |
102 | + align: 'center', | |
103 | + dataIndex: 'materialUnit', | |
104 | + }, | |
105 | + { | |
106 | + title: '系统数量', | |
107 | + align: 'center', | |
108 | + dataIndex: 'systemQty', | |
109 | + }, | |
110 | + { | |
111 | + title: '实盘数量', | |
112 | + align: 'center', | |
113 | + dataIndex: 'countedQty', | |
114 | + }, | |
115 | + { | |
116 | + title: '差异数量', | |
117 | + align: 'center', | |
118 | + dataIndex: 'gapQty', | |
119 | + }, | |
120 | + { | |
121 | + title: '库存明细id', | |
122 | + align: 'center', | |
123 | + dataIndex: 'inventoryDetaiId', | |
124 | + }, | |
125 | + ], | |
126 | + url: { | |
127 | + listByMainId: '/cycleCountDetail/cycleCountDetail/queryCycleCountDetailChildByMainId', | |
128 | + }, | |
129 | + } | |
130 | + }, | |
131 | + watch: { | |
132 | + record: { | |
133 | + immediate: true, | |
134 | + handler() { | |
135 | + if (this.record != null) { | |
136 | + this.loadData(this.record) | |
137 | + } | |
138 | + } | |
139 | + } | |
140 | + }, | |
141 | + methods: { | |
142 | + | |
143 | + loadData(record) { | |
144 | + this.loading = true | |
145 | + this.dataSource = [] | |
146 | + getAction(this.url.listByMainId, { | |
147 | + id: record.id | |
148 | + }).then((res) => { | |
149 | + if (res.success) { | |
150 | + this.dataSource = res.result.records | |
151 | + } | |
152 | + }).finally(() => { | |
153 | + this.loading = false | |
154 | + }) | |
155 | + }, | |
156 | + | |
157 | + }, | |
158 | + } | |
159 | +</script> | |
160 | + | |
161 | +<style scoped> | |
162 | + | |
163 | +</style> | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/cycleCountPreference/controller/CycleCountPreferenceController.java
... | ... | @@ -10,9 +10,12 @@ import java.net.URLDecoder; |
10 | 10 | import javax.servlet.http.HttpServletRequest; |
11 | 11 | import javax.servlet.http.HttpServletResponse; |
12 | 12 | |
13 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
14 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
13 | 15 | import org.apache.shiro.authz.annotation.RequiresPermissions; |
14 | 16 | import org.jeecg.common.api.vo.Result; |
15 | 17 | import org.jeecg.common.system.query.QueryGenerator; |
18 | +import org.jeecg.modules.wms.config.company.entity.Company; | |
16 | 19 | import org.jeecg.utils.HuahengJwtUtil; |
17 | 20 | import org.jeecg.common.util.oConvertUtils; |
18 | 21 | |
... | ... | @@ -134,6 +137,23 @@ public class CycleCountPreferenceController extends JeecgController<CycleCountPr |
134 | 137 | return Result.OK("批量删除成功!"); |
135 | 138 | } |
136 | 139 | |
140 | + | |
141 | + | |
142 | + /** | |
143 | + * 获得盘点类型信息 | |
144 | + * @param req | |
145 | + */ | |
146 | + @RequestMapping(value = "/getCountTypeList") | |
147 | + public Result<?> getCountTypeList(HttpServletRequest req) { | |
148 | + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); | |
149 | + LambdaQueryWrapper<CycleCountPreference> companyLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
150 | + companyLambdaQueryWrapper.eq(CycleCountPreference::getWarehouseCode, warehouseCode); | |
151 | + List<CycleCountPreference> cycleCountPreferenceList = cycleCountPreferenceService.list(companyLambdaQueryWrapper); | |
152 | + return Result.OK(cycleCountPreferenceList); | |
153 | + } | |
154 | + | |
155 | + | |
156 | + | |
137 | 157 | /** |
138 | 158 | * 通过id查询 |
139 | 159 | * @param id |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.controller; | |
2 | + | |
3 | +import java.io.UnsupportedEncodingException; | |
4 | +import java.io.IOException; | |
5 | +import java.net.URLDecoder; | |
6 | +import java.util.ArrayList; | |
7 | +import java.util.Arrays; | |
8 | +import java.util.List; | |
9 | +import java.util.Map; | |
10 | +import java.util.stream.Collectors; | |
11 | + | |
12 | +import javax.servlet.http.HttpServletRequest; | |
13 | +import javax.servlet.http.HttpServletResponse; | |
14 | + | |
15 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
16 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
17 | +import org.jeecgframework.poi.excel.ExcelImportUtil; | |
18 | +import org.jeecgframework.poi.excel.def.NormalExcelConstants; | |
19 | +import org.jeecgframework.poi.excel.entity.ExportParams; | |
20 | +import org.jeecgframework.poi.excel.entity.ImportParams; | |
21 | +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; | |
22 | +import org.jeecg.common.system.vo.LoginUser; | |
23 | +import org.apache.shiro.SecurityUtils; | |
24 | +import org.jeecg.common.api.vo.Result; | |
25 | +import org.jeecg.common.system.query.QueryGenerator; | |
26 | +import org.jeecg.common.util.oConvertUtils; | |
27 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
28 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; | |
29 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.vo.CycleCountDetailPage; | |
30 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.ICycleCountDetailService; | |
31 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.ICycleCountDetailChildService; | |
32 | +import org.springframework.beans.BeanUtils; | |
33 | +import org.springframework.beans.factory.annotation.Autowired; | |
34 | +import org.springframework.web.bind.annotation.*; | |
35 | +import org.springframework.web.servlet.ModelAndView; | |
36 | +import org.springframework.web.multipart.MultipartFile; | |
37 | +import org.springframework.web.multipart.MultipartHttpServletRequest; | |
38 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
39 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
40 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
41 | +import lombok.extern.slf4j.Slf4j; | |
42 | +import com.alibaba.fastjson.JSON; | |
43 | +import io.swagger.annotations.Api; | |
44 | +import io.swagger.annotations.ApiOperation; | |
45 | +import org.jeecg.common.aspect.annotation.AutoLog; | |
46 | + | |
47 | + /** | |
48 | + * @Description: 盘点明细表 | |
49 | + * @Author: jeecg-boot | |
50 | + * @Date: 2023-01-30 | |
51 | + * @Version: V1.0 | |
52 | + */ | |
53 | +@Api(tags="盘点明细表") | |
54 | +@RestController | |
55 | +@RequestMapping("/cycleCountDetail/cycleCountDetail") | |
56 | +@Slf4j | |
57 | +public class CycleCountDetailController { | |
58 | + @Autowired | |
59 | + private ICycleCountDetailService cycleCountDetailService; | |
60 | + @Autowired | |
61 | + private ICycleCountDetailChildService cycleCountDetailChildService; | |
62 | + | |
63 | + /** | |
64 | + * 分页列表查询 | |
65 | + * | |
66 | + * @param cycleCountDetail | |
67 | + * @param pageNo | |
68 | + * @param pageSize | |
69 | + * @param req | |
70 | + * @return | |
71 | + */ | |
72 | + //@AutoLog(value = "盘点明细表-分页列表查询") | |
73 | + @ApiOperation(value="盘点明细表-分页列表查询", notes="盘点明细表-分页列表查询") | |
74 | + @GetMapping(value = "/list") | |
75 | + public Result<IPage<CycleCountDetail>> queryPageList(CycleCountDetail cycleCountDetail, | |
76 | + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
77 | + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, | |
78 | + HttpServletRequest req) { | |
79 | + QueryWrapper<CycleCountDetail> queryWrapper = QueryGenerator.initQueryWrapper(cycleCountDetail, req.getParameterMap()); | |
80 | + Page<CycleCountDetail> page = new Page<CycleCountDetail>(pageNo, pageSize); | |
81 | + IPage<CycleCountDetail> pageList = cycleCountDetailService.page(page, queryWrapper); | |
82 | + return Result.OK(pageList); | |
83 | + } | |
84 | + | |
85 | + /** | |
86 | + * 添加 | |
87 | + * | |
88 | + * @param cycleCountDetailPage | |
89 | + * @return | |
90 | + */ | |
91 | + @AutoLog(value = "盘点明细表-添加") | |
92 | + @ApiOperation(value="盘点明细表-添加", notes="盘点明细表-添加") | |
93 | + @PostMapping(value = "/add") | |
94 | + public Result<String> add(@RequestBody CycleCountDetailPage cycleCountDetailPage) { | |
95 | + CycleCountDetail cycleCountDetail = new CycleCountDetail(); | |
96 | + BeanUtils.copyProperties(cycleCountDetailPage, cycleCountDetail); | |
97 | + cycleCountDetailService.saveMain(cycleCountDetail, cycleCountDetailPage.getCycleCountDetailChildList()); | |
98 | + return Result.OK("添加成功!"); | |
99 | + } | |
100 | + | |
101 | + /** | |
102 | + * 编辑 | |
103 | + * | |
104 | + * @param cycleCountDetailPage | |
105 | + * @return | |
106 | + */ | |
107 | + @AutoLog(value = "盘点明细表-编辑") | |
108 | + @ApiOperation(value="盘点明细表-编辑", notes="盘点明细表-编辑") | |
109 | + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) | |
110 | + public Result<String> edit(@RequestBody CycleCountDetailPage cycleCountDetailPage) { | |
111 | + CycleCountDetail cycleCountDetail = new CycleCountDetail(); | |
112 | + BeanUtils.copyProperties(cycleCountDetailPage, cycleCountDetail); | |
113 | + CycleCountDetail cycleCountDetailEntity = cycleCountDetailService.getById(cycleCountDetail.getId()); | |
114 | + if(cycleCountDetailEntity==null) { | |
115 | + return Result.error("未找到对应数据"); | |
116 | + } | |
117 | + cycleCountDetailService.updateMain(cycleCountDetail, cycleCountDetailPage.getCycleCountDetailChildList()); | |
118 | + return Result.OK("编辑成功!"); | |
119 | + } | |
120 | + | |
121 | + /** | |
122 | + * 通过id删除 | |
123 | + * | |
124 | + * @param id | |
125 | + * @return | |
126 | + */ | |
127 | + @AutoLog(value = "盘点明细表-通过id删除") | |
128 | + @ApiOperation(value="盘点明细表-通过id删除", notes="盘点明细表-通过id删除") | |
129 | + @DeleteMapping(value = "/delete") | |
130 | + public Result<String> delete(@RequestParam(name="id",required=true) String id) { | |
131 | + cycleCountDetailService.delMain(id); | |
132 | + return Result.OK("删除成功!"); | |
133 | + } | |
134 | + | |
135 | + /** | |
136 | + * 批量删除 | |
137 | + * | |
138 | + * @param ids | |
139 | + * @return | |
140 | + */ | |
141 | + @AutoLog(value = "盘点明细表-批量删除") | |
142 | + @ApiOperation(value="盘点明细表-批量删除", notes="盘点明细表-批量删除") | |
143 | + @DeleteMapping(value = "/deleteBatch") | |
144 | + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { | |
145 | + this.cycleCountDetailService.delBatchMain(Arrays.asList(ids.split(","))); | |
146 | + return Result.OK("批量删除成功!"); | |
147 | + } | |
148 | + | |
149 | + /** | |
150 | + * 通过id查询 | |
151 | + * | |
152 | + * @param id | |
153 | + * @return | |
154 | + */ | |
155 | + //@AutoLog(value = "盘点明细表-通过id查询") | |
156 | + @ApiOperation(value="盘点明细表-通过id查询", notes="盘点明细表-通过id查询") | |
157 | + @GetMapping(value = "/queryById") | |
158 | + public Result<CycleCountDetail> queryById(@RequestParam(name="id",required=true) String id) { | |
159 | + CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(id); | |
160 | + if(cycleCountDetail==null) { | |
161 | + return Result.error("未找到对应数据"); | |
162 | + } | |
163 | + return Result.OK(cycleCountDetail); | |
164 | + | |
165 | + } | |
166 | + | |
167 | + /** | |
168 | + * 通过id查询 | |
169 | + * | |
170 | + * @param id | |
171 | + * @return | |
172 | + */ | |
173 | + //@AutoLog(value = "盘点容器明细表-通过主表ID查询") | |
174 | + @ApiOperation(value="盘点容器明细表-通过主表ID查询", notes="盘点容器明细表-通过主表ID查询") | |
175 | + @GetMapping(value = "/queryCycleCountDetailChildByMainId") | |
176 | + public Result<IPage<CycleCountDetailChild>> queryCycleCountDetailChildListByMainId(@RequestParam(name="id",required=true) int id) { | |
177 | + LambdaQueryWrapper<CycleCountDetailChild> cycleCountDetailChildLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
178 | + cycleCountDetailChildLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid, id); | |
179 | + List<CycleCountDetailChild> cycleCountDetailChildList = cycleCountDetailChildService.list(cycleCountDetailChildLambdaQueryWrapper); | |
180 | + IPage <CycleCountDetailChild> page = new Page<>(); | |
181 | + page.setRecords(cycleCountDetailChildList); | |
182 | + page.setTotal(cycleCountDetailChildList.size()); | |
183 | + return Result.OK(page); | |
184 | + } | |
185 | + | |
186 | + /** | |
187 | + * 导出excel | |
188 | + * | |
189 | + * @param request | |
190 | + * @param cycleCountDetail | |
191 | + */ | |
192 | + @RequestMapping(value = "/exportXls") | |
193 | + public ModelAndView exportXls(HttpServletRequest request, CycleCountDetail cycleCountDetail) { | |
194 | + // Step.1 组装查询条件查询数据 | |
195 | + QueryWrapper<CycleCountDetail> queryWrapper = QueryGenerator.initQueryWrapper(cycleCountDetail, request.getParameterMap()); | |
196 | + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | |
197 | + | |
198 | + //Step.2 获取导出数据 | |
199 | + List<CycleCountDetail> queryList = cycleCountDetailService.list(queryWrapper); | |
200 | + // 过滤选中数据 | |
201 | + String selections = request.getParameter("selections"); | |
202 | + List<CycleCountDetail> cycleCountDetailList = new ArrayList<CycleCountDetail>(); | |
203 | + if(oConvertUtils.isEmpty(selections)) { | |
204 | + cycleCountDetailList = queryList; | |
205 | + }else { | |
206 | + List<String> selectionList = Arrays.asList(selections.split(",")); | |
207 | + cycleCountDetailList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); | |
208 | + } | |
209 | + | |
210 | + // Step.3 组装pageList | |
211 | + List<CycleCountDetailPage> pageList = new ArrayList<CycleCountDetailPage>(); | |
212 | + for (CycleCountDetail main : cycleCountDetailList) { | |
213 | + CycleCountDetailPage vo = new CycleCountDetailPage(); | |
214 | + BeanUtils.copyProperties(main, vo); | |
215 | + LambdaQueryWrapper<CycleCountDetailChild> cycleCountDetailChildLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
216 | + cycleCountDetailChildLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid, main.getId()); | |
217 | + List<CycleCountDetailChild> cycleCountDetailChildList = cycleCountDetailChildService.list(cycleCountDetailChildLambdaQueryWrapper); | |
218 | + vo.setCycleCountDetailChildList(cycleCountDetailChildList); | |
219 | + pageList.add(vo); | |
220 | + } | |
221 | + | |
222 | + // Step.4 AutoPoi 导出Excel | |
223 | + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); | |
224 | + mv.addObject(NormalExcelConstants.FILE_NAME, "盘点明细表列表"); | |
225 | + mv.addObject(NormalExcelConstants.CLASS, CycleCountDetailPage.class); | |
226 | + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("盘点明细表数据", "导出人:"+sysUser.getRealname(), "盘点明细表")); | |
227 | + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); | |
228 | + return mv; | |
229 | + } | |
230 | + | |
231 | + /** | |
232 | + * 通过excel导入数据 | |
233 | + * | |
234 | + * @param request | |
235 | + * @param response | |
236 | + * @return | |
237 | + */ | |
238 | + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) | |
239 | + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { | |
240 | + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; | |
241 | + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); | |
242 | + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { | |
243 | + MultipartFile file = entity.getValue();// 获取上传文件对象 | |
244 | + ImportParams params = new ImportParams(); | |
245 | + params.setTitleRows(2); | |
246 | + params.setHeadRows(1); | |
247 | + params.setNeedSave(true); | |
248 | + try { | |
249 | + List<CycleCountDetailPage> list = ExcelImportUtil.importExcel(file.getInputStream(), CycleCountDetailPage.class, params); | |
250 | + for (CycleCountDetailPage page : list) { | |
251 | + CycleCountDetail po = new CycleCountDetail(); | |
252 | + BeanUtils.copyProperties(page, po); | |
253 | + cycleCountDetailService.saveMain(po, page.getCycleCountDetailChildList()); | |
254 | + } | |
255 | + return Result.OK("文件导入成功!数据行数:" + list.size()); | |
256 | + } catch (Exception e) { | |
257 | + log.error(e.getMessage(),e); | |
258 | + return Result.error("文件导入失败:"+e.getMessage()); | |
259 | + } finally { | |
260 | + try { | |
261 | + file.getInputStream().close(); | |
262 | + } catch (IOException e) { | |
263 | + e.printStackTrace(); | |
264 | + } | |
265 | + } | |
266 | + } | |
267 | + return Result.OK("文件导入失败!"); | |
268 | + } | |
269 | + | |
270 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | +import java.io.UnsupportedEncodingException; | |
5 | +import java.util.Date; | |
6 | +import com.baomidou.mybatisplus.annotation.IdType; | |
7 | +import com.baomidou.mybatisplus.annotation.TableId; | |
8 | +import com.baomidou.mybatisplus.annotation.TableName; | |
9 | +import lombok.Data; | |
10 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
11 | +import org.springframework.format.annotation.DateTimeFormat; | |
12 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
13 | +import org.jeecg.common.aspect.annotation.Dict; | |
14 | +import io.swagger.annotations.ApiModel; | |
15 | +import io.swagger.annotations.ApiModelProperty; | |
16 | + | |
17 | +/** | |
18 | + * @Description: 盘点明细表 | |
19 | + * @Author: jeecg-boot | |
20 | + * @Date: 2023-01-30 | |
21 | + * @Version: V1.0 | |
22 | + */ | |
23 | +@ApiModel(value="cycle_count_detail对象", description="盘点明细表") | |
24 | +@Data | |
25 | +@TableName("cycle_count_detail") | |
26 | +public class CycleCountDetail implements Serializable { | |
27 | + private static final long serialVersionUID = 1L; | |
28 | + | |
29 | + /** 主键 */ | |
30 | + @TableId(type = IdType.AUTO) | |
31 | + @ApiModelProperty(value = "主键") | |
32 | + private Integer id; | |
33 | + /**盘点主单id*/ | |
34 | + @Excel(name = "盘点主单id", width = 15) | |
35 | + @ApiModelProperty(value = "盘点主单id") | |
36 | + private String cycleCountHeadId; | |
37 | + /**盘点主单code*/ | |
38 | + @Excel(name = "盘点主单code", width = 15) | |
39 | + @ApiModelProperty(value = "盘点主单code") | |
40 | + private String cycleCountHeadCode; | |
41 | + /**任务表头*/ | |
42 | + @Excel(name = "任务表头", width = 15) | |
43 | + @ApiModelProperty(value = "任务表头") | |
44 | + private String taskHeaderId; | |
45 | + /**任务明细头*/ | |
46 | + @Excel(name = "任务明细头", width = 15) | |
47 | + @ApiModelProperty(value = "任务明细头") | |
48 | + private Integer taskDetailId; | |
49 | + /**仓库*/ | |
50 | + @Excel(name = "仓库", width = 15) | |
51 | + @ApiModelProperty(value = "仓库") | |
52 | + private String warehouseCode; | |
53 | + /**货主*/ | |
54 | + @Excel(name = "货主", width = 15) | |
55 | + @ApiModelProperty(value = "货主") | |
56 | + private String companyCode; | |
57 | + /**库存明细头*/ | |
58 | + @Excel(name = "库存明细头", width = 15) | |
59 | + @ApiModelProperty(value = "库存明细头") | |
60 | + private Integer inventoryDetailId; | |
61 | + /**库位*/ | |
62 | + @Excel(name = "库位", width = 15) | |
63 | + @ApiModelProperty(value = "库位") | |
64 | + private String locationCode; | |
65 | + /**容器*/ | |
66 | + @Excel(name = "容器", width = 15) | |
67 | + @ApiModelProperty(value = "容器") | |
68 | + private String containerCode; | |
69 | + /**库存状态*/ | |
70 | + @Excel(name = "库存状态", width = 15) | |
71 | + @ApiModelProperty(value = "库存状态") | |
72 | + private String inventorySts; | |
73 | + /**系统数量*/ | |
74 | + @Excel(name = "系统数量", width = 15) | |
75 | + @ApiModelProperty(value = "系统数量") | |
76 | + private String systemQty; | |
77 | + /**实盘数量*/ | |
78 | + @Excel(name = "实盘数量", width = 15) | |
79 | + @ApiModelProperty(value = "实盘数量") | |
80 | + private String countedQty; | |
81 | + /**差异数量*/ | |
82 | + @Excel(name = "差异数量", width = 15) | |
83 | + @ApiModelProperty(value = "差异数量") | |
84 | + private String gapQty; | |
85 | + /**失败原因*/ | |
86 | + @Excel(name = "失败原因", width = 15) | |
87 | + @ApiModelProperty(value = "失败原因") | |
88 | + private String rejectionNote; | |
89 | + /**完成用户*/ | |
90 | + @Excel(name = "完成用户", width = 15) | |
91 | + @ApiModelProperty(value = "完成用户") | |
92 | + private String completedBy; | |
93 | + /**完成时间*/ | |
94 | + @Excel(name = "完成时间", width = 15) | |
95 | + @ApiModelProperty(value = "完成时间") | |
96 | + private String completedAt; | |
97 | + /**盘点明细状态*/ | |
98 | + @Excel(name = "盘点明细状态", width = 15) | |
99 | + @ApiModelProperty(value = "盘点明细状态") | |
100 | + private Integer enableStatus; | |
101 | + /**创建人*/ | |
102 | + @ApiModelProperty(value = "创建人") | |
103 | + private String createBy; | |
104 | + /**创建日期*/ | |
105 | + @ApiModelProperty(value = "创建日期") | |
106 | + private Date createTime; | |
107 | + /**更新人*/ | |
108 | + @ApiModelProperty(value = "更新人") | |
109 | + private String updateBy; | |
110 | + /**更新日期*/ | |
111 | + @ApiModelProperty(value = "更新日期") | |
112 | + private Date updateTime; | |
113 | + /**所属部门*/ | |
114 | + @ApiModelProperty(value = "所属部门") | |
115 | + private String sysOrgCode; | |
116 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | +import com.baomidou.mybatisplus.annotation.IdType; | |
5 | +import com.baomidou.mybatisplus.annotation.TableId; | |
6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
7 | +import lombok.Data; | |
8 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
9 | +import org.springframework.format.annotation.DateTimeFormat; | |
10 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
11 | +import java.util.Date; | |
12 | +import org.jeecg.common.aspect.annotation.Dict; | |
13 | +import io.swagger.annotations.ApiModel; | |
14 | +import io.swagger.annotations.ApiModelProperty; | |
15 | +import java.io.UnsupportedEncodingException; | |
16 | + | |
17 | +/** | |
18 | + * @Description: 盘点容器明细表 | |
19 | + * @Author: jeecg-boot | |
20 | + * @Date: 2023-01-30 | |
21 | + * @Version: V1.0 | |
22 | + */ | |
23 | +@ApiModel(value="cycle_count_detail_child对象", description="盘点容器明细表") | |
24 | +@Data | |
25 | +@TableName("cycle_count_detail_child") | |
26 | +public class CycleCountDetailChild implements Serializable { | |
27 | + private static final long serialVersionUID = 1L; | |
28 | + | |
29 | + /** 主键 */ | |
30 | + @TableId(type = IdType.AUTO) | |
31 | + @ApiModelProperty(value = "主键") | |
32 | + private Integer id; | |
33 | + /**盘点主单code*/ | |
34 | + @Excel(name = "盘点主单code", width = 15) | |
35 | + @ApiModelProperty(value = "盘点主单code") | |
36 | + private String cyclecountheadcode; | |
37 | + /**盘点明细ID主id*/ | |
38 | + @ApiModelProperty(value = "盘点明细ID主id") | |
39 | + private Integer cycleCountDetailid; | |
40 | + /**盘点明细子单状态*/ | |
41 | + @Excel(name = "盘点明细子单状态", width = 15) | |
42 | + @ApiModelProperty(value = "盘点明细子单状态") | |
43 | + private String childStatus; | |
44 | + /**库位*/ | |
45 | + @Excel(name = "库位", width = 15) | |
46 | + @ApiModelProperty(value = "库位") | |
47 | + private String locationCode; | |
48 | + /**容器*/ | |
49 | + @Excel(name = "容器", width = 15) | |
50 | + @ApiModelProperty(value = "容器") | |
51 | + private String containerCode; | |
52 | + /**物料编码*/ | |
53 | + @Excel(name = "物料编码", width = 15) | |
54 | + @ApiModelProperty(value = "物料编码") | |
55 | + private String materialCode; | |
56 | + /**物料名称*/ | |
57 | + @Excel(name = "物料名称", width = 15) | |
58 | + @ApiModelProperty(value = "物料名称") | |
59 | + private String materialName; | |
60 | + /**物料规格*/ | |
61 | + @Excel(name = "物料规格", width = 15) | |
62 | + @ApiModelProperty(value = "物料规格") | |
63 | + private String materialSpec; | |
64 | + /**物料单位*/ | |
65 | + @Excel(name = "物料单位", width = 15) | |
66 | + @ApiModelProperty(value = "物料单位") | |
67 | + private String materialUnit; | |
68 | + /**系统数量*/ | |
69 | + @Excel(name = "系统数量", width = 15) | |
70 | + @ApiModelProperty(value = "系统数量") | |
71 | + private String systemQty; | |
72 | + /**实盘数量*/ | |
73 | + @Excel(name = "实盘数量", width = 15) | |
74 | + @ApiModelProperty(value = "实盘数量") | |
75 | + private String countedQty; | |
76 | + /**差异数量*/ | |
77 | + @Excel(name = "差异数量", width = 15) | |
78 | + @ApiModelProperty(value = "差异数量") | |
79 | + private String gapQty; | |
80 | + /**库存明细id*/ | |
81 | + @Excel(name = "库存明细id", width = 15) | |
82 | + @ApiModelProperty(value = "库存明细id") | |
83 | + private Integer inventoryDetaiId; | |
84 | + /**创建人*/ | |
85 | + @ApiModelProperty(value = "创建人") | |
86 | + private String createBy; | |
87 | + /**创建日期*/ | |
88 | + @ApiModelProperty(value = "创建日期") | |
89 | + private Date createTime; | |
90 | + /**更新人*/ | |
91 | + @ApiModelProperty(value = "更新人") | |
92 | + private String updateBy; | |
93 | + /**更新日期*/ | |
94 | + @ApiModelProperty(value = "更新日期") | |
95 | + private Date updateTime; | |
96 | + /**所属部门*/ | |
97 | + @ApiModelProperty(value = "所属部门") | |
98 | + private String sysOrgCode; | |
99 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/mapper/CycleCountDetailChildMapper.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper; | |
2 | + | |
3 | +import java.util.List; | |
4 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
5 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
6 | +import org.apache.ibatis.annotations.Param; | |
7 | + | |
8 | +/** | |
9 | + * @Description: 盘点容器明细表 | |
10 | + * @Author: jeecg-boot | |
11 | + * @Date: 2023-01-30 | |
12 | + * @Version: V1.0 | |
13 | + */ | |
14 | +public interface CycleCountDetailChildMapper extends BaseMapper<CycleCountDetailChild> { | |
15 | + | |
16 | + | |
17 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/mapper/CycleCountDetailMapper.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; | |
7 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
8 | + | |
9 | +/** | |
10 | + * @Description: 盘点明细表 | |
11 | + * @Author: jeecg-boot | |
12 | + * @Date: 2023-01-30 | |
13 | + * @Version: V1.0 | |
14 | + */ | |
15 | +public interface CycleCountDetailMapper extends BaseMapper<CycleCountDetail> { | |
16 | + | |
17 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/mapper/xml/CycleCountDetailMapper.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.stocktaking.cycleCountDetail.mapper.CycleCountDetailMapper"> | |
4 | + | |
5 | +</mapper> | |
0 | 6 | \ No newline at end of file |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.service; | |
2 | + | |
3 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
4 | +import com.baomidou.mybatisplus.extension.service.IService; | |
5 | +import java.util.List; | |
6 | + | |
7 | +/** | |
8 | + * @Description: 盘点容器明细表 | |
9 | + * @Author: jeecg-boot | |
10 | + * @Date: 2023-01-30 | |
11 | + * @Version: V1.0 | |
12 | + */ | |
13 | +public interface ICycleCountDetailChildService extends IService<CycleCountDetailChild> { | |
14 | + | |
15 | + | |
16 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.service; | |
2 | + | |
3 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
4 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; | |
5 | +import com.baomidou.mybatisplus.extension.service.IService; | |
6 | +import java.io.Serializable; | |
7 | +import java.util.Collection; | |
8 | +import java.util.List; | |
9 | + | |
10 | +/** | |
11 | + * @Description: 盘点明细表 | |
12 | + * @Author: jeecg-boot | |
13 | + * @Date: 2023-01-30 | |
14 | + * @Version: V1.0 | |
15 | + */ | |
16 | +public interface ICycleCountDetailService extends IService<CycleCountDetail> { | |
17 | + | |
18 | + /** | |
19 | + * 添加一对多 | |
20 | + * | |
21 | + */ | |
22 | + public void saveMain(CycleCountDetail cycleCountDetail,List<CycleCountDetailChild> cycleCountDetailChildList) ; | |
23 | + | |
24 | + /** | |
25 | + * 修改一对多 | |
26 | + * | |
27 | + */ | |
28 | + public void updateMain(CycleCountDetail cycleCountDetail,List<CycleCountDetailChild> cycleCountDetailChildList); | |
29 | + | |
30 | + /** | |
31 | + * 删除一对多 | |
32 | + */ | |
33 | + public void delMain (String id); | |
34 | + | |
35 | + /** | |
36 | + * 批量删除一对多 | |
37 | + */ | |
38 | + public void delBatchMain (Collection<? extends Serializable> idList); | |
39 | + | |
40 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.impl; | |
2 | + | |
3 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
4 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper.CycleCountDetailChildMapper; | |
5 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.ICycleCountDetailChildService; | |
6 | +import org.springframework.stereotype.Service; | |
7 | +import java.util.List; | |
8 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
9 | +import org.springframework.beans.factory.annotation.Autowired; | |
10 | + | |
11 | +/** | |
12 | + * @Description: 盘点容器明细表 | |
13 | + * @Author: jeecg-boot | |
14 | + * @Date: 2023-01-30 | |
15 | + * @Version: V1.0 | |
16 | + */ | |
17 | +@Service | |
18 | +public class CycleCountDetailChildServiceImpl extends ServiceImpl<CycleCountDetailChildMapper, CycleCountDetailChild> implements ICycleCountDetailChildService { | |
19 | + | |
20 | + @Autowired | |
21 | + private CycleCountDetailChildMapper cycleCountDetailChildMapper; | |
22 | + | |
23 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.impl; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
4 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
5 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; | |
6 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
7 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper.CycleCountDetailChildMapper; | |
8 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper.CycleCountDetailMapper; | |
9 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.service.ICycleCountDetailService; | |
10 | +import org.springframework.stereotype.Service; | |
11 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
12 | +import org.springframework.beans.factory.annotation.Autowired; | |
13 | +import org.springframework.transaction.annotation.Transactional; | |
14 | +import java.io.Serializable; | |
15 | +import java.util.List; | |
16 | +import java.util.Collection; | |
17 | + | |
18 | +/** | |
19 | + * @Description: 盘点明细表 | |
20 | + * @Author: jeecg-boot | |
21 | + * @Date: 2023-01-30 | |
22 | + * @Version: V1.0 | |
23 | + */ | |
24 | +@Service | |
25 | +public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMapper, CycleCountDetail> implements ICycleCountDetailService { | |
26 | + | |
27 | + @Autowired | |
28 | + private CycleCountDetailMapper cycleCountDetailMapper; | |
29 | + @Autowired | |
30 | + private CycleCountDetailChildMapper cycleCountDetailChildMapper; | |
31 | + | |
32 | + @Override | |
33 | + @Transactional | |
34 | + public void saveMain(CycleCountDetail cycleCountDetail, List<CycleCountDetailChild> cycleCountDetailChildList) { | |
35 | + cycleCountDetailMapper.insert(cycleCountDetail); | |
36 | + if(cycleCountDetailChildList!=null && cycleCountDetailChildList.size()>0) { | |
37 | + for(CycleCountDetailChild entity:cycleCountDetailChildList) { | |
38 | + //外键设置 | |
39 | + entity.setCycleCountDetailid(cycleCountDetail.getId()); | |
40 | + cycleCountDetailChildMapper.insert(entity); | |
41 | + } | |
42 | + } | |
43 | + } | |
44 | + | |
45 | + @Override | |
46 | + @Transactional | |
47 | + public void updateMain(CycleCountDetail cycleCountDetail,List<CycleCountDetailChild> cycleCountDetailChildList) { | |
48 | + cycleCountDetailMapper.updateById(cycleCountDetail); | |
49 | + | |
50 | + //1.先删除子表数据 | |
51 | + LambdaQueryWrapper<CycleCountDetailChild> cycleCountDetailChildLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
52 | + cycleCountDetailChildLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,cycleCountDetail.getId()); | |
53 | + cycleCountDetailChildMapper.delete(cycleCountDetailChildLambdaQueryWrapper); | |
54 | + | |
55 | + //2.子表数据重新插入 | |
56 | + if(cycleCountDetailChildList!=null && cycleCountDetailChildList.size()>0) { | |
57 | + for(CycleCountDetailChild entity:cycleCountDetailChildList) { | |
58 | + //外键设置 | |
59 | + entity.setCycleCountDetailid(cycleCountDetail.getId()); | |
60 | + cycleCountDetailChildMapper.insert(entity); | |
61 | + } | |
62 | + } | |
63 | + } | |
64 | + | |
65 | + @Override | |
66 | + @Transactional | |
67 | + public void delMain(String id) { | |
68 | + LambdaQueryWrapper<CycleCountDetailChild> cycleCountDetailChildLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
69 | + cycleCountDetailChildLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,id); | |
70 | + cycleCountDetailChildMapper.delete(cycleCountDetailChildLambdaQueryWrapper); | |
71 | + cycleCountDetailMapper.deleteById(id); | |
72 | + } | |
73 | + | |
74 | + @Override | |
75 | + @Transactional | |
76 | + public void delBatchMain(Collection<? extends Serializable> idList) { | |
77 | + for(Serializable id:idList) { | |
78 | + LambdaQueryWrapper<CycleCountDetailChild> cycleCountDetailChildLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
79 | + cycleCountDetailChildLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,id.toString()); | |
80 | + cycleCountDetailChildMapper.delete(cycleCountDetailChildLambdaQueryWrapper); | |
81 | + cycleCountDetailMapper.deleteById(id); | |
82 | + } | |
83 | + } | |
84 | + | |
85 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/vo/CycleCountDetailPage.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountDetail.vo; | |
2 | + | |
3 | +import java.util.List; | |
4 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; | |
5 | +import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; | |
6 | +import lombok.Data; | |
7 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
8 | +import org.jeecgframework.poi.excel.annotation.ExcelEntity; | |
9 | +import org.jeecgframework.poi.excel.annotation.ExcelCollection; | |
10 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
11 | +import org.springframework.format.annotation.DateTimeFormat; | |
12 | +import java.util.Date; | |
13 | +import org.jeecg.common.aspect.annotation.Dict; | |
14 | +import io.swagger.annotations.ApiModel; | |
15 | +import io.swagger.annotations.ApiModelProperty; | |
16 | + | |
17 | +/** | |
18 | + * @Description: 盘点明细表 | |
19 | + * @Author: jeecg-boot | |
20 | + * @Date: 2023-01-30 | |
21 | + * @Version: V1.0 | |
22 | + */ | |
23 | +@Data | |
24 | +@ApiModel(value="cycle_count_detailPage对象", description="盘点明细表") | |
25 | +public class CycleCountDetailPage { | |
26 | + | |
27 | + /**主键*/ | |
28 | + @ApiModelProperty(value = "主键") | |
29 | + private String id; | |
30 | + /**盘点主单id*/ | |
31 | + @Excel(name = "盘点主单id", width = 15) | |
32 | + @ApiModelProperty(value = "盘点主单id") | |
33 | + private String cycleCountHeadId; | |
34 | + /**盘点主单code*/ | |
35 | + @Excel(name = "盘点主单code", width = 15) | |
36 | + @ApiModelProperty(value = "盘点主单code") | |
37 | + private String cycleCountHeadCode; | |
38 | + /**任务表头*/ | |
39 | + @Excel(name = "任务表头", width = 15) | |
40 | + @ApiModelProperty(value = "任务表头") | |
41 | + private String taskHeaderId; | |
42 | + /**任务明细头*/ | |
43 | + @Excel(name = "任务明细头", width = 15) | |
44 | + @ApiModelProperty(value = "任务明细头") | |
45 | + private String taskDetailId; | |
46 | + /**仓库*/ | |
47 | + @Excel(name = "仓库", width = 15) | |
48 | + @ApiModelProperty(value = "仓库") | |
49 | + private String warehouseCode; | |
50 | + /**货主*/ | |
51 | + @Excel(name = "货主", width = 15) | |
52 | + @ApiModelProperty(value = "货主") | |
53 | + private String companyCode; | |
54 | + /**库存明细头*/ | |
55 | + @Excel(name = "库存明细头", width = 15) | |
56 | + @ApiModelProperty(value = "库存明细头") | |
57 | + private String inventoryDetailId; | |
58 | + /**库位*/ | |
59 | + @Excel(name = "库位", width = 15) | |
60 | + @ApiModelProperty(value = "库位") | |
61 | + private String locationCode; | |
62 | + /**容器*/ | |
63 | + @Excel(name = "容器", width = 15) | |
64 | + @ApiModelProperty(value = "容器") | |
65 | + private String containerCode; | |
66 | + /**库存状态*/ | |
67 | + @Excel(name = "库存状态", width = 15) | |
68 | + @ApiModelProperty(value = "库存状态") | |
69 | + private String inventorySts; | |
70 | + /**系统数量*/ | |
71 | + @Excel(name = "系统数量", width = 15) | |
72 | + @ApiModelProperty(value = "系统数量") | |
73 | + private String systemQty; | |
74 | + /**实盘数量*/ | |
75 | + @Excel(name = "实盘数量", width = 15) | |
76 | + @ApiModelProperty(value = "实盘数量") | |
77 | + private String countedQty; | |
78 | + /**差异数量*/ | |
79 | + @Excel(name = "差异数量", width = 15) | |
80 | + @ApiModelProperty(value = "差异数量") | |
81 | + private String gapQty; | |
82 | + /**失败原因*/ | |
83 | + @Excel(name = "失败原因", width = 15) | |
84 | + @ApiModelProperty(value = "失败原因") | |
85 | + private String rejectionNote; | |
86 | + /**完成用户*/ | |
87 | + @Excel(name = "完成用户", width = 15) | |
88 | + @ApiModelProperty(value = "完成用户") | |
89 | + private String completedBy; | |
90 | + /**完成时间*/ | |
91 | + @Excel(name = "完成时间", width = 15) | |
92 | + @ApiModelProperty(value = "完成时间") | |
93 | + private String completedAt; | |
94 | + /**盘点明细状态*/ | |
95 | + @Excel(name = "盘点明细状态", width = 15) | |
96 | + @ApiModelProperty(value = "盘点明细状态") | |
97 | + private String enableStatus; | |
98 | + /**创建人*/ | |
99 | + @ApiModelProperty(value = "创建人") | |
100 | + private String createBy; | |
101 | + /**创建日期*/ | |
102 | + @ApiModelProperty(value = "创建日期") | |
103 | + private Date createTime; | |
104 | + /**更新人*/ | |
105 | + @ApiModelProperty(value = "更新人") | |
106 | + private String updateBy; | |
107 | + /**更新日期*/ | |
108 | + @ApiModelProperty(value = "更新日期") | |
109 | + private Date updateTime; | |
110 | + /**所属部门*/ | |
111 | + @ApiModelProperty(value = "所属部门") | |
112 | + private String sysOrgCode; | |
113 | + | |
114 | + @ExcelCollection(name="盘点容器明细表") | |
115 | + @ApiModelProperty(value = "盘点容器明细表") | |
116 | + private List<CycleCountDetailChild> cycleCountDetailChildList; | |
117 | + | |
118 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/controller/CycleCountHeaderController.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountHeader.controller; | |
2 | + | |
3 | +import java.util.Arrays; | |
4 | +import java.util.List; | |
5 | +import java.util.Map; | |
6 | +import java.util.stream.Collectors; | |
7 | +import java.io.IOException; | |
8 | +import java.io.UnsupportedEncodingException; | |
9 | +import java.net.URLDecoder; | |
10 | +import javax.servlet.http.HttpServletRequest; | |
11 | +import javax.servlet.http.HttpServletResponse; | |
12 | +import org.jeecg.common.api.vo.Result; | |
13 | +import org.jeecg.common.system.query.QueryGenerator; | |
14 | +import org.jeecg.common.util.oConvertUtils; | |
15 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.entity.CycleCountHeader; | |
16 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.service.ICycleCountHeaderService; | |
17 | + | |
18 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
19 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
20 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
21 | +import lombok.extern.slf4j.Slf4j; | |
22 | + | |
23 | +import org.jeecg.utils.HuahengJwtUtil; | |
24 | +import org.jeecg.utils.StringUtils; | |
25 | +import org.jeecgframework.poi.excel.ExcelImportUtil; | |
26 | +import org.jeecgframework.poi.excel.def.NormalExcelConstants; | |
27 | +import org.jeecgframework.poi.excel.entity.ExportParams; | |
28 | +import org.jeecgframework.poi.excel.entity.ImportParams; | |
29 | +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; | |
30 | +import org.jeecg.common.system.base.controller.JeecgController; | |
31 | +import org.springframework.beans.factory.annotation.Autowired; | |
32 | +import org.springframework.web.bind.annotation.*; | |
33 | +import org.springframework.web.multipart.MultipartFile; | |
34 | +import org.springframework.web.multipart.MultipartHttpServletRequest; | |
35 | +import org.springframework.web.servlet.ModelAndView; | |
36 | +import com.alibaba.fastjson.JSON; | |
37 | +import io.swagger.annotations.Api; | |
38 | +import io.swagger.annotations.ApiOperation; | |
39 | +import org.jeecg.common.aspect.annotation.AutoLog; | |
40 | + | |
41 | + /** | |
42 | + * @Description: 盘点主表 | |
43 | + * @Author: jeecg-boot | |
44 | + * @Date: 2023-01-30 | |
45 | + * @Version: V1.0 | |
46 | + */ | |
47 | +@Api(tags="盘点主表") | |
48 | +@RestController | |
49 | +@RequestMapping("/cycleCountHeader/cycleCountHeader") | |
50 | +@Slf4j | |
51 | +public class CycleCountHeaderController extends JeecgController<CycleCountHeader, ICycleCountHeaderService> { | |
52 | + @Autowired | |
53 | + private ICycleCountHeaderService cycleCountHeaderService; | |
54 | + | |
55 | + /** | |
56 | + * 分页列表查询 | |
57 | + * | |
58 | + * @param cycleCountHeader | |
59 | + * @param pageNo | |
60 | + * @param pageSize | |
61 | + * @param req | |
62 | + * @return | |
63 | + */ | |
64 | + //@AutoLog(value = "盘点主表-分页列表查询") | |
65 | + @ApiOperation(value="盘点主表-分页列表查询", notes="盘点主表-分页列表查询") | |
66 | + @GetMapping(value = "/list") | |
67 | + public Result<IPage<CycleCountHeader>> queryPageList(CycleCountHeader cycleCountHeader, | |
68 | + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
69 | + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, | |
70 | + HttpServletRequest req) { | |
71 | + QueryWrapper<CycleCountHeader> queryWrapper = QueryGenerator.initQueryWrapper(cycleCountHeader, req.getParameterMap()); | |
72 | + Page<CycleCountHeader> page = new Page<CycleCountHeader>(pageNo, pageSize); | |
73 | + IPage<CycleCountHeader> pageList = cycleCountHeaderService.page(page, queryWrapper); | |
74 | + return Result.OK(pageList); | |
75 | + } | |
76 | + | |
77 | + /** | |
78 | + * 添加 | |
79 | + * | |
80 | + * @param cycleCountHeader | |
81 | + * @return | |
82 | + */ | |
83 | + @AutoLog(value = "盘点主表-添加") | |
84 | + @ApiOperation(value="盘点主表-添加", notes="盘点主表-添加") | |
85 | + @PostMapping(value = "/add") | |
86 | + public Result<String> add(@RequestBody CycleCountHeader cycleCountHeader, HttpServletRequest req) { | |
87 | + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); | |
88 | + if (StringUtils.isNotEmpty(warehouseCode)) { | |
89 | + cycleCountHeader.setWarehouseCode(warehouseCode); | |
90 | + } | |
91 | + Result result = cycleCountHeaderService.saveCycleCountHeader(cycleCountHeader); | |
92 | + return result; | |
93 | + } | |
94 | + | |
95 | + /** | |
96 | + * 编辑 | |
97 | + * | |
98 | + * @param cycleCountHeader | |
99 | + * @return | |
100 | + */ | |
101 | + @AutoLog(value = "盘点主表-编辑") | |
102 | + @ApiOperation(value="盘点主表-编辑", notes="盘点主表-编辑") | |
103 | + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) | |
104 | + public Result<String> edit(@RequestBody CycleCountHeader cycleCountHeader) { | |
105 | + cycleCountHeaderService.updateById(cycleCountHeader); | |
106 | + return Result.OK("编辑成功!"); | |
107 | + } | |
108 | + | |
109 | + /** | |
110 | + * 通过id删除 | |
111 | + * | |
112 | + * @param id | |
113 | + * @return | |
114 | + */ | |
115 | + @AutoLog(value = "盘点主表-通过id删除") | |
116 | + @ApiOperation(value="盘点主表-通过id删除", notes="盘点主表-通过id删除") | |
117 | + @DeleteMapping(value = "/delete") | |
118 | + public Result<String> delete(@RequestParam(name="id",required=true) String id) { | |
119 | + cycleCountHeaderService.removeById(id); | |
120 | + return Result.OK("删除成功!"); | |
121 | + } | |
122 | + | |
123 | + /** | |
124 | + * 批量删除 | |
125 | + * | |
126 | + * @param ids | |
127 | + * @return | |
128 | + */ | |
129 | + @AutoLog(value = "盘点主表-批量删除") | |
130 | + @ApiOperation(value="盘点主表-批量删除", notes="盘点主表-批量删除") | |
131 | + @DeleteMapping(value = "/deleteBatch") | |
132 | + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { | |
133 | + this.cycleCountHeaderService.removeByIds(Arrays.asList(ids.split(","))); | |
134 | + return Result.OK("批量删除成功!"); | |
135 | + } | |
136 | + | |
137 | + /** | |
138 | + * 通过id查询 | |
139 | + * | |
140 | + * @param id | |
141 | + * @return | |
142 | + */ | |
143 | + //@AutoLog(value = "盘点主表-通过id查询") | |
144 | + @ApiOperation(value="盘点主表-通过id查询", notes="盘点主表-通过id查询") | |
145 | + @GetMapping(value = "/queryById") | |
146 | + public Result<CycleCountHeader> queryById(@RequestParam(name="id",required=true) String id) { | |
147 | + CycleCountHeader cycleCountHeader = cycleCountHeaderService.getById(id); | |
148 | + if(cycleCountHeader==null) { | |
149 | + return Result.error("未找到对应数据"); | |
150 | + } | |
151 | + return Result.OK(cycleCountHeader); | |
152 | + } | |
153 | + | |
154 | + /** | |
155 | + * 导出excel | |
156 | + * | |
157 | + * @param request | |
158 | + * @param cycleCountHeader | |
159 | + */ | |
160 | + @RequestMapping(value = "/exportXls") | |
161 | + public ModelAndView exportXls(HttpServletRequest request, CycleCountHeader cycleCountHeader) { | |
162 | + return super.exportXls(request, cycleCountHeader, CycleCountHeader.class, "盘点主表"); | |
163 | + } | |
164 | + | |
165 | + /** | |
166 | + * 通过excel导入数据 | |
167 | + * | |
168 | + * @param request | |
169 | + * @param response | |
170 | + * @return | |
171 | + */ | |
172 | + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) | |
173 | + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { | |
174 | + return super.importExcel(request, response, CycleCountHeader.class); | |
175 | + } | |
176 | + | |
177 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/entity/CycleCountHeader.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountHeader.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.TableField; | |
9 | +import com.baomidou.mybatisplus.annotation.TableId; | |
10 | +import com.baomidou.mybatisplus.annotation.TableName; | |
11 | +import lombok.Data; | |
12 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
13 | +import org.springframework.format.annotation.DateTimeFormat; | |
14 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
15 | +import org.jeecg.common.aspect.annotation.Dict; | |
16 | +import io.swagger.annotations.ApiModel; | |
17 | +import io.swagger.annotations.ApiModelProperty; | |
18 | +import lombok.EqualsAndHashCode; | |
19 | +import lombok.experimental.Accessors; | |
20 | + | |
21 | +/** | |
22 | + * @Description: 盘点主表 | |
23 | + * @Author: jeecg-boot | |
24 | + * @Date: 2023-01-30 | |
25 | + * @Version: V1.0 | |
26 | + */ | |
27 | +@Data | |
28 | +@TableName("cycle_count_header") | |
29 | +@Accessors(chain = true) | |
30 | +@EqualsAndHashCode(callSuper = false) | |
31 | +@ApiModel(value="cycle_count_header对象", description="盘点主表") | |
32 | +public class CycleCountHeader implements Serializable { | |
33 | + private static final long serialVersionUID = 1L; | |
34 | + | |
35 | + /** 主键 */ | |
36 | + @TableId(type = IdType.AUTO) | |
37 | + @ApiModelProperty(value = "主键") | |
38 | + private Integer id; | |
39 | + /**盘点主表编号*/ | |
40 | + @Excel(name = "盘点主表编号", width = 15) | |
41 | + @ApiModelProperty(value = "盘点主表编号") | |
42 | + private String code; | |
43 | + /**仓库编码*/ | |
44 | + @Excel(name = "仓库编码", width = 15) | |
45 | + @ApiModelProperty(value = "仓库编码") | |
46 | + private String warehouseCode; | |
47 | + /**货主编码*/ | |
48 | + @Excel(name = "货主编码", width = 15) | |
49 | + @ApiModelProperty(value = "货主编码") | |
50 | + private String companyCode; | |
51 | + /**盘点类型*/ | |
52 | + @Excel(name = "盘点类型", width = 15) | |
53 | + @ApiModelProperty(value = "盘点类型") | |
54 | + private String countType; | |
55 | + /**盘点状态*/ | |
56 | + @Excel(name = "盘点状态", width = 15,dicCode = "cyclecount_status") | |
57 | + @Dict(dicCode = "cyclecount_status") | |
58 | + @ApiModelProperty(value = "盘点状态") | |
59 | + private Integer statusCyc; | |
60 | + | |
61 | + /**是否有效*/ | |
62 | + @Excel(name = "是否有效", width = 15,dicCode = "valid_status") | |
63 | + @Dict(dicCode = "valid_status") | |
64 | + @ApiModelProperty(value="是否有效") | |
65 | + private Integer enable; | |
66 | + | |
67 | + /**备注*/ | |
68 | + @Excel(name = "备注", width = 15) | |
69 | + @ApiModelProperty(value = "备注") | |
70 | + private String remark; | |
71 | + /**总货位数*/ | |
72 | + @Excel(name = "总货位数", width = 15) | |
73 | + @ApiModelProperty(value = "总货位数") | |
74 | + private Integer totalLocs; | |
75 | + /**总物料数*/ | |
76 | + @Excel(name = "总物料数", width = 15) | |
77 | + @ApiModelProperty(value = "总物料数") | |
78 | + private Integer totalItems; | |
79 | + /**审核人*/ | |
80 | + @Excel(name = "审核人", width = 15) | |
81 | + @ApiModelProperty(value = "审核人") | |
82 | + private String verifyBy; | |
83 | + /**指定盘点人员*/ | |
84 | + @Excel(name = "指定盘点人员", width = 15) | |
85 | + @ApiModelProperty(value = "指定盘点人员") | |
86 | + private String stocktakingAs; | |
87 | + /**实际盘点人员*/ | |
88 | + @Excel(name = "实际盘点人员", width = 15) | |
89 | + @ApiModelProperty(value = "实际盘点人员") | |
90 | + private String stocktakingAc; | |
91 | + /**回传时间*/ | |
92 | + @Excel(name = "回传时间", width = 15) | |
93 | + @ApiModelProperty(value = "回传时间") | |
94 | + private Date uploadTime; | |
95 | + /**回传状态*/ | |
96 | + @Excel(name = "回传状态", width = 15) | |
97 | + private Boolean uploadStatus; | |
98 | + /**关闭人*/ | |
99 | + @Excel(name = "关闭人", width = 15) | |
100 | + @ApiModelProperty(value = "关闭人") | |
101 | + private String closedBy; | |
102 | + /**创建人*/ | |
103 | + @ApiModelProperty(value = "创建人") | |
104 | + private String createBy; | |
105 | + /**创建日期*/ | |
106 | + @ApiModelProperty(value = "创建日期") | |
107 | + private java.util.Date createTime; | |
108 | + /**更新人*/ | |
109 | + @ApiModelProperty(value = "更新人") | |
110 | + private String updateBy; | |
111 | + /**更新日期*/ | |
112 | + @ApiModelProperty(value = "更新日期") | |
113 | + private java.util.Date updateTime; | |
114 | + /**所属部门*/ | |
115 | + @ApiModelProperty(value = "所属部门") | |
116 | + private String sysOrgCode; | |
117 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/mapper/CycleCountHeaderMapper.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountHeader.mapper; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.entity.CycleCountHeader; | |
7 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
8 | + | |
9 | +/** | |
10 | + * @Description: 盘点主表 | |
11 | + * @Author: jeecg-boot | |
12 | + * @Date: 2023-01-30 | |
13 | + * @Version: V1.0 | |
14 | + */ | |
15 | +public interface CycleCountHeaderMapper extends BaseMapper<CycleCountHeader> { | |
16 | + | |
17 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/mapper/xml/CycleCountHeaderMapper.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.stocktaking.cycleCountHeader.mapper.CycleCountHeaderMapper"> | |
4 | + | |
5 | +</mapper> | |
0 | 6 | \ No newline at end of file |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/service/ICycleCountHeaderService.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountHeader.service; | |
2 | + | |
3 | +import org.jeecg.common.api.vo.Result; | |
4 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.entity.CycleCountHeader; | |
5 | +import com.baomidou.mybatisplus.extension.service.IService; | |
6 | + | |
7 | +/** | |
8 | + * @Description: 盘点主表 | |
9 | + * @Author: jeecg-boot | |
10 | + * @Date: 2023-01-30 | |
11 | + * @Version: V1.0 | |
12 | + */ | |
13 | +public interface ICycleCountHeaderService extends IService<CycleCountHeader> { | |
14 | + | |
15 | + public Result<CycleCountHeader> saveCycleCountHeader(CycleCountHeader cycleCountHeader); | |
16 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountHeader/service/impl/CycleCountHeaderServiceImpl.java
0 → 100644
1 | +package org.jeecg.modules.wms.stocktaking.cycleCountHeader.service.impl; | |
2 | + | |
3 | +import com.aliyun.oss.ServiceException; | |
4 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
5 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
6 | +import org.jeecg.common.api.vo.Result; | |
7 | +import org.jeecg.modules.wms.config.receiptType.entity.ReceiptType; | |
8 | +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; | |
9 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.entity.CycleCountHeader; | |
10 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.mapper.CycleCountHeaderMapper; | |
11 | +import org.jeecg.modules.wms.stocktaking.cycleCountHeader.service.ICycleCountHeaderService; | |
12 | +import org.jeecg.utils.StringUtils; | |
13 | +import org.jeecg.utils.constant.QuantityConstant; | |
14 | +import org.springframework.stereotype.Service; | |
15 | + | |
16 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
17 | +import org.springframework.transaction.annotation.Transactional; | |
18 | + | |
19 | +import java.text.SimpleDateFormat; | |
20 | +import java.util.Date; | |
21 | + | |
22 | +/** | |
23 | + * @Description: 盘点主表 | |
24 | + * @Author: jeecg-boot | |
25 | + * @Date: 2023-01-30 | |
26 | + * @Version: V1.0 | |
27 | + */ | |
28 | +@Service | |
29 | +public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMapper, CycleCountHeader> implements ICycleCountHeaderService { | |
30 | + | |
31 | + @Override | |
32 | + public Result<CycleCountHeader> saveCycleCountHeader(CycleCountHeader cycleCountHeader) { | |
33 | + String code = createCode(QuantityConstant.SHIPMENT_BILL_TYPE_PD); | |
34 | + if (StringUtils.isEmpty(code)) { | |
35 | + throw new ServiceException("根据单据类型,生成单号失败"); | |
36 | + } | |
37 | + cycleCountHeader.setCode(code); | |
38 | + cycleCountHeader.setStocktakingAc("-"); | |
39 | + boolean success = save(cycleCountHeader); | |
40 | + if (!success) { | |
41 | + return Result.OK("添加失败!"); | |
42 | + } | |
43 | + return Result.OK("添加成功!", cycleCountHeader); | |
44 | + } | |
45 | + | |
46 | + | |
47 | + @Transactional | |
48 | + public String createCode(String receiptType) { | |
49 | + int i = 0; | |
50 | + String code = null; | |
51 | + Date now = new Date(); | |
52 | + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); | |
53 | + LambdaQueryWrapper<CycleCountHeader> cycleCountHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
54 | + cycleCountHeaderLambdaQueryWrapper.select(CycleCountHeader::getCode).orderByDesc(CycleCountHeader::getId).last("Limit 1"); | |
55 | + String maxCode = null; | |
56 | + CycleCountHeader cycleCountHeader = this.getOne(cycleCountHeaderLambdaQueryWrapper); | |
57 | + if (cycleCountHeader != null) { | |
58 | + maxCode = cycleCountHeader.getCode(); | |
59 | + } | |
60 | + if (maxCode != null) { | |
61 | + String day = maxCode.substring(maxCode.length() - 13, maxCode.length() - 5); | |
62 | + if (day.equals(df.format(now))) { | |
63 | + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length())); | |
64 | + code = receiptType + df.format(now) + String.format("%05d", Count + 1); | |
65 | + } else { | |
66 | + code = receiptType + df.format(now) + String.format("%05d", 0000 + 1); | |
67 | + } | |
68 | + } else { | |
69 | + code = receiptType + df.format(now) + String.format("%05d", 0000 + 1); | |
70 | + } | |
71 | + return code; | |
72 | + } | |
73 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... | ... | @@ -530,6 +530,9 @@ public class QuantityConstant { |
530 | 530 | public static final String SHIPMENT_BILL_TYPE_DN = "DN";// 发货通知单 |
531 | 531 | public static final String SHIPMENT_BILL_TYPE_JS = "JS";// 直接调拨单 |
532 | 532 | |
533 | + /* 盘点单据类型 */ | |
534 | + public static final String SHIPMENT_BILL_TYPE_PD = "PD";// 盘点单 | |
535 | + | |
533 | 536 | /* ERP单据名称 */ |
534 | 537 | public static final String BILL_TYPE_NAME_DN = "发货通知单"; |
535 | 538 | public static final String BILL_TYPE_NAME_RN = "退货通知单"; |
... | ... |