From 14cb8959fbc8e0e20d2472e2502441e85dc1012d Mon Sep 17 00:00:00 2001 From: yiwenpeng <ywp303@163.com> Date: Mon, 19 Dec 2022 19:00:54 +0800 Subject: [PATCH] 历史出入库单 --- jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailHistoryList.vue | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue | 461 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptDetailHistoryModal.vue | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderHistoryModal.vue | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailHistoryList.vue | 261 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue | 439 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailHistoryModal.vue | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderHistoryModal.vue | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java | 4 ++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/controller/ReceiptHeaderHistoryController.java | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptDetailHistory.java | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptHeaderHistory.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptDetailHistoryMapper.java | 20 ++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java | 17 +++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptDetailHistoryMapper.xml | 18 ++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptHeaderHistoryMapper.xml | 5 +++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptDetailHistoryService.java | 16 ++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptHeaderHistoryService.java | 35 +++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptDetailHistoryServiceImpl.java | 27 +++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptHeaderHistoryServiceImpl.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/vo/ReceiptHeaderHistoryPage.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java | 4 ++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentDetailHistory.java | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentHeaderHistory.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentDetailHistoryMapper.java | 20 ++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java | 17 +++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentDetailHistoryMapper.xml | 18 ++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentHeaderHistoryMapper.xml | 5 +++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentDetailHistoryService.java | 16 ++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentHeaderHistoryService.java | 35 +++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentDetailHistoryServiceImpl.java | 27 +++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentHeaderHistoryServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/vo/ShipmentHeaderHistoryPage.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 34 files changed, 3617 insertions(+), 0 deletions(-) create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailHistoryList.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptDetailHistoryModal.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderHistoryModal.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailHistoryList.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailHistoryModal.vue create mode 100644 jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderHistoryModal.vue create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/controller/ReceiptHeaderHistoryController.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptDetailHistory.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptHeaderHistory.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptDetailHistoryMapper.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptDetailHistoryMapper.xml create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptHeaderHistoryMapper.xml create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptDetailHistoryService.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptHeaderHistoryService.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptDetailHistoryServiceImpl.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptHeaderHistoryServiceImpl.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/vo/ReceiptHeaderHistoryPage.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentDetailHistory.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentHeaderHistory.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentDetailHistoryMapper.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentDetailHistoryMapper.xml create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentHeaderHistoryMapper.xml create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentDetailHistoryService.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentHeaderHistoryService.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentDetailHistoryServiceImpl.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentHeaderHistoryServiceImpl.java create mode 100644 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/vo/ShipmentHeaderHistoryPage.java diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailHistoryList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailHistoryList.vue new file mode 100644 index 0000000..43c96b0 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailHistoryList.vue @@ -0,0 +1,255 @@ +<template> + <a-card :bordered="false" :class="'cust-erp-sub-tab'"> + <!-- 操作按钮区域 --> + <div class="table-operator" v-if="mainId"> +<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> +<!-- <a-button type="primary" icon="download" @click="handleExportXls('历史入库单明细')">导出</a-button>--> + <a-upload + name="file" + :showUploadList="false" + :multiple="false" + :headers="tokenHeader" + :action="importExcelUrl" + @change="handleImportExcel"> +<!-- <a-button type="primary" icon="import">导入</a-button>--> + </a-upload> + <a-dropdown v-if="selectedRowKeys.length > 0"> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> + </a-menu> + <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> + </a-dropdown> + </div> + + <!-- table区域-begin --> + <div> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 + <a style="margin-left: 24px" @click="onClearSelected">清空</a> + </div> + + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 下载 + </a-button> + </template> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)">编辑</a> + <a-divider type="vertical" /> + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> + <a>删除</a> + </a-popconfirm> + </span> + + </a-table> + </div> + + <receiptDetailHistory-modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></receiptDetailHistory-modal> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import ReceiptDetailHistoryModal from './modules/ReceiptDetailHistoryModal' + + export default { + name: "ReceiptDetailHistoryList", + mixins:[JeecgListMixin], + components: { ReceiptDetailHistoryModal }, + props:{ + mainId:{ + type:String, + default:'', + required:false + } + }, + watch:{ + mainId:{ + immediate: true, + handler(val) { + if(!this.mainId){ + this.clearList() + }else{ + this.queryParam['receiptId'] = val + this.loadData(1); + } + } + } + }, + data () { + return { + description: '历史入库单管理页面', + disableMixinCreated:true, + // 表头 + columns: [ + // { + // title: '#', + // dataIndex: '', + // key:'rowIndex', + // width:60, + // align:"center", + // customRender:function (t,r,index) { + // return parseInt(index)+1; + // } + // }, + // { + // title:'单据详情ID', + // align:"center", + // dataIndex: 'id' + // }, + // { + // title:'入库单ID', + // align:"center", + // dataIndex: 'receiptId' + // }, + { + title:'入库单编码', + align:"center", + dataIndex: 'receiptCode' + }, + // { + // title:'货主编码', + // align:"center", + // dataIndex: 'companyCode' + // }, + { + title:'物料编码', + align:"center", + dataIndex: 'materialCode' + }, + { + title:'物料名称', + align:"center", + dataIndex: 'materialName' + }, + { + title:'物料规格', + align:"center", + dataIndex: 'materialSpec' + }, + { + title:'物料单位', + align:"center", + dataIndex: 'materialUnit' + }, + { + title:'单据数量', + align:"center", + dataIndex: 'qty' + }, + { + title:'已收数量', + align:"center", + dataIndex: 'taskQty' + }, + { + title:'库存状态', + align:"center", + dataIndex: 'inventoryStatus_dictText', + }, + { + title:'批次', + align:"center", + dataIndex: 'batch' + }, + { + title:'单据状态', + align:"center", + dataIndex: 'status_dictText' + }, + { + title:'上游单号', + align:"center", + dataIndex: 'referCode' + }, + { + title:'创建人', + align:"center", + dataIndex: 'createBy' + }, + { + title:'创建日期', + align:"center", + dataIndex: 'createTime' + }, + { + title:'更新人', + align:"center", + dataIndex: 'updateBy' + }, + { + title:'更新日期', + align:"center", + dataIndex: 'updateTime' + }, + { + title: '操作', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' }, + } + ], + url: { + list: "/receipt/receiptHeaderHistory/listReceiptDetailHistoryByMainId", + delete: "/receipt/receiptHeaderHistory/deleteReceiptDetailHistory", + deleteBatch: "/receipt/receiptHeaderHistory/deleteBatchReceiptDetailHistory", + exportXlsUrl: "/receipt/receiptHeaderHistory/exportReceiptDetailHistory", + importUrl: "/receipt/receiptHeaderHistory/importReceiptDetailHistory", + }, + dictOptions:{ + firstStatus:[], + lastStatus:[], + } + } + }, + created() { + }, + computed: { + importExcelUrl(){ + return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; + } + }, + methods: { + clearList(){ + this.dataSource=[] + this.selectedRowKeys=[] + this.ipagination.current = 1 + } + + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue new file mode 100644 index 0000000..8c61400 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue @@ -0,0 +1,461 @@ +<template> + <a-card :bordered='false'> + <!-- 查询区域 --> + <div class='table-page-search-wrapper'> + <a-form layout='inline' @keyup.enter.native='searchQuery'> + <a-row :gutter='24'> + <a-col :xl='6' :lg='7' :md='8' :sm='24'> + <a-form-item label='编码'> + <a-input placeholder='请输入编码' v-model='queryParam.code'></a-input> + </a-form-item> + </a-col> + + <a-col :xl='6' :lg='7' :md='8' :sm='24'> + <a-form-item label='货主'> + <a-select + show-search + placeholder='请选择货主' + option-filter-prop='children' + :filter-option='filterOption' + v-model='queryParam.companyCode'> + <a-select-option v-for='item in companyList' :key='item.name' :value='item.code'>{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + + <a-col :xl='6' :lg='7' :md='8' :sm='24'> + <a-form-item label='入库单类型'> + <a-select + show-search + placeholder='请选择入库单类型' + option-filter-prop='children' + :filter-option='filterOption' + v-model='queryParam.type'> + <a-select-option v-for='item in receiptTypeList' :key='item.name' :value='item.code'>{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + + <template v-if="toggleSearchStatus"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="头状态"> + <j-dict-select-tag placeholder="请选择头状态" v-model="queryParam.firstStatus" dictCode="receipt_status"/> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="尾状态"> + <j-dict-select-tag placeholder="请选择尾状态" v-model="queryParam.lastStatus" dictCode="receipt_status"/> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="上游单号"> + <a-input placeholder="请输入上游单号" v-model="queryParam.referCode"></a-input> + </a-form-item> + </a-col> + + + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="供应商"> + <a-select + show-search + placeholder="请选择供应商" + option-filter-prop="children" + :filter-option="filterOption" + v-model="queryParam.supplierCode"> + <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + + <a-col :xl="10" :lg="11" :md="12" :sm="24"> + <a-form-item label="创建日期"> + <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间" class="query-group-cust" v-model="queryParam.createTime_begin"></j-date> + <span class="query-group-split-cust"></span> + <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间" class="query-group-cust" v-model="queryParam.createTime_end"></j-date> + </a-form-item> + </a-col> + </template> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> + <a @click="handleToggleSearch" style="margin-left: 8px"> + {{ toggleSearchStatus ? '收起' : '展开' }} + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> + </a> + </span> + </a-col> + </a-row> + </a-form> + </div> +<!-- 查询区域-END --> + +<!-- 操作按钮区域 --> +<div class='table-operator'> +<a-upload name='file' :showUploadList='false' :multiple='false' :headers='tokenHeader' :action='importExcelUrl' + @change='handleImportExcel'> + <!-- <a-button type="primary" icon="import">导入</a-button>--> +</a-upload> +<!-- 高级查询区域 --> +<j-super-query :fieldList='superFieldList' ref='superQueryModal' @handleSuperQuery='handleSuperQuery'></j-super-query> +</div> + +<!-- table区域-begin --> +<div> +<div class='ant-alert ant-alert-info' style='margin-bottom: 16px;'> + <i class='anticon anticon-info-circle ant-alert-icon'></i> 已选择 <a + style='font-weight: 600'>{{ selectedRowKeys.length }}</a>项 + <a style='margin-left: 24px' @click='onClearSelected'>清空</a> +</div> + +<a-table + ref='table' + size='middle' + bordered + rowKey='id' + class='j-table-force-nowrap' + :scroll='{x:true}' + :columns='columns' + :dataSource='dataSource' + :pagination='ipagination' + :loading='loading' + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}" + :customRow='clickThenSelect' + @change='handleTableChange'> + + + <span slot="companyCode" slot-scope="companyCode"> + <a-tag :key="companyCode" color=blue> + {{ solutionCompany(companyCode) }} + </a-tag> + </span> + + <span slot="type" slot-scope="type"> + <a-tag :key="type" color=pink> + {{ solutionReceiptType(type) }} + </a-tag> + </span> + + <span slot="supplierCode" slot-scope="supplierCode"> + <a-tag :key="supplierCode" color=pink> + {{ solutionSupplier(supplierCode) }} + </a-tag> + </span> + + + <template slot='htmlSlot' slot-scope='text'> + <div v-html='text'></div> + </template> + <template slot='imgSlot' slot-scope='text'> + <span v-if='!text' style='font-size: 12px;font-style: italic;'>无图片</span> + <img v-else :src='getImgView(text)' height='25px' alt='' style='max-width:80px;font-size: 12px;font-style: italic;' /> + </template> + <template slot='fileSlot' slot-scope='text'> + <span v-if='!text' style='font-size: 12px;font-style: italic;'>无文件</span> + <a-button + v-else + :ghost='true' + type='primary' + icon='download' + size='small' + @click='downloadFile(text)'> + 下载 + </a-button> + </template> + + <span slot='action' slot-scope='text, record'> + <a @click='handleEdit(record)'>编辑</a> + + <a-divider type='vertical' /> + <a-dropdown> + <a class='ant-dropdown-link'>更多 <a-icon type='down' /></a> + <a-menu slot='overlay'> + <a-menu-item> + <a-popconfirm title='确定删除吗?' @confirm='() => handleDelete(record.id)'> + <a>删除</a> + </a-popconfirm> + </a-menu-item> + </a-menu> + </a-dropdown> + </span> + +</a-table> +</div> + +<a-tabs defaultActiveKey='1'> +<a-tab-pane tab='历史入库单明细' key='1'> + <ReceiptDetailHistoryList :mainId='selectedMainId' /> +</a-tab-pane> +</a-tabs> + +<receiptHeaderHistory-modal ref='modalForm' @ok='modalFormOk'></receiptHeaderHistory-modal> + </a-card> +</template> + +<script> + +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import ReceiptHeaderHistoryModal from './modules/ReceiptHeaderHistoryModal' +import { getAction } from '@/api/manage' +import ReceiptDetailHistoryList from './ReceiptDetailHistoryList' +import { initDictOptions, filterMultiDictText } from '@/components/dict/JDictSelectUtil' +import '@/assets/less/TableExpand.less' +import { getCompanyList, getReceiptTypeList, getSupplierList } from '@api/api' + +export default { + name: 'ReceiptHeaderHistoryList', + mixins: [JeecgListMixin], + components: { + ReceiptDetailHistoryList, + ReceiptHeaderHistoryModal + }, + data() { + return { + description: '历史入库单管理页面', + companyList:[], + receiptTypeList:[], + supplierList:[], + // 表头 + columns: [ + { + title: '单据ID', + align: 'center', + dataIndex: 'id' + }, + { + title: '编码', + align: 'center', + dataIndex: 'code' + }, + { + title:'货主', + align:"center", + dataIndex: 'companyCode', + key: 'companyCode', + scopedSlots: { customRender: 'companyCode' } + }, + { + title:'入库单类型', + align:"center", + dataIndex: 'type', + key: 'type', + scopedSlots: { customRender: 'type' } + }, + { + title:'头状态', + align:"center", + dataIndex: 'firstStatus_dictText', + }, + { + title:'尾状态', + align:"center", + dataIndex: 'lastStatus_dictText', + }, + { + title: '上游单号', + align: 'center', + dataIndex: 'referCode' + }, + { + title:'供应商', + align:"center", + dataIndex: 'supplierCode', + key: 'supplierCode', + scopedSlots: { customRender: 'supplierCode' } + }, + { + title: '总数量', + align: 'center', + dataIndex: 'totalqty' + }, + { + title: '总行数', + align: 'center', + dataIndex: 'totallines' + }, + { + title: '入库单备注', + align: 'center', + dataIndex: 'remark' + }, + { + title: '创建人', + align: 'center', + dataIndex: 'createBy' + }, + { + title: '创建日期', + align: 'center', + dataIndex: 'createTime' + }, + { + title: '更新人', + align: 'center', + dataIndex: 'updateBy' + }, + { + title: '更新日期', + align: 'center', + dataIndex: 'updateTime' + }, + { + title: '操作', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: '/receipt/receiptHeaderHistory/list', + delete: '/receipt/receiptHeaderHistory/delete', + deleteBatch: '/receipt/receiptHeaderHistory/deleteBatch', + exportXlsUrl: '/receipt/receiptHeaderHistory/exportXls', + importExcelUrl: 'receipt/receiptHeaderHistory/importExcel' + }, + dictOptions: { + firstStatus:[], + lastStatus:[], + }, + /* 分页参数 */ + ipagination: { + current: 1, + pageSize: 5, + pageSizeOptions: ['5', '10', '50'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 共' + total + '条' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + selectedMainId: '', + superFieldList: [] + } + }, + created() { + this.getSuperFieldList() + this.loadFrom(); + }, + computed: { + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, + methods: { + initDictConfig() { + }, + clickThenSelect(record) { + return { + on: { + click: () => { + this.onSelectChange(record.id.split(','), [record]) + } + } + } + }, + onClearSelected() { + this.selectedRowKeys = [] + this.selectionRows = [] + this.selectedMainId = '' + }, + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedMainId = selectedRowKeys[0] + this.selectedRowKeys = selectedRowKeys + this.selectionRows = selectionRows + }, + loadData(arg) { + if (!this.url.list) { + this.$message.error('请设置url.list属性!') + return + } + //加载数据 若传入参数1则加载第一页的内容 + if (arg === 1) { + this.ipagination.current = 1 + } + this.onClearSelected() + var params = this.getQueryParams()//查询条件 + this.loading = true + getAction(this.url.list, params).then((res) => { + if (res.success) { + this.dataSource = res.result.records + this.ipagination.total = res.result.total + } + if (res.code === 510) { + this.$message.warning(res.message) + } + this.loading = false + }) + }, + getSuperFieldList() { + let fieldList = [] + fieldList.push({ type: 'string', value: 'code', text: '编码', dictCode: '' }) + fieldList.push({ type: 'string', value: 'companyCode', text: '货主', dictCode: '' }) + fieldList.push({ type: 'string', value: 'type', text: '入库单类型', dictCode: '' }) + fieldList.push({ type: 'int', value: 'firstStatus', text: '头状态', dictCode: 'receipt_status' }) + fieldList.push({ type: 'int', value: 'lastStatus', text: '尾状态', dictCode: 'receipt_status' }) + fieldList.push({ type: 'string', value: 'referCode', text: '上游单号', dictCode: '' }) + fieldList.push({ type: 'string', value: 'supplierCode', text: '供应商编码', dictCode: '' }) + fieldList.push({ type: 'BigDecimal', value: 'totalqty', text: '总数量', dictCode: '' }) + fieldList.push({ type: 'int', value: 'totallines', text: '总行数', dictCode: '' }) + fieldList.push({ type: 'string', value: 'remark', text: '入库单备注', dictCode: '' }) + fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) + fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) + fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) + fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) + this.superFieldList = fieldList + }, + loadFrom() { + getCompanyList().then((res) => { + if (res.success) { + this.companyList = res.result + } + }) + getReceiptTypeList().then((res) => { + if (res.success) { + this.receiptTypeList = res.result + } + }) + getSupplierList().then((res) => { + if (res.success) { + this.supplierList = res.result + } + }) + }, + solutionCompany(value) { + var actions = [] + Object.keys(this.companyList).some((key) => { + if (this.companyList[key].code == ('' + value)) { + actions.push(this.companyList[key].name) + return true + } + }) + return actions.join('') + }, + solutionReceiptType(value) { + var actions = [] + Object.keys(this.receiptTypeList).some((key) => { + if (this.receiptTypeList[key].code == ('' + value)) { + actions.push(this.receiptTypeList[key].name) + return true + } + }) + return actions.join('') + }, + solutionSupplier(value) { + var actions = [] + Object.keys(this.supplierList).some((key) => { + if (this.supplierList[key].code == ('' + value)) { + actions.push(this.supplierList[key].name) + return true + } + }) + return actions.join('') + } + } +} +</script> +<style scoped> +@import '~@assets/less/common.less' +</style> \ No newline at end of file diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptDetailHistoryModal.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptDetailHistoryModal.vue new file mode 100644 index 0000000..e8f360d --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptDetailHistoryModal.vue @@ -0,0 +1,155 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="关闭"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="入库单ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiptId"> + <a-input-number v-model="model.receiptId"placeholder="请输入入库单ID" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="物料编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode"> + <a-input v-model="model.materialCode"placeholder="请输入物料编码" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> + <a-input v-model="model.materialName"placeholder="请输入物料名称" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="单据数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="qty"> + <a-input-number v-model="model.qty"placeholder="请输入单据数量" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="已收数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taskQty"> + <a-input-number v-model="model.taskQty"placeholder="请输入已收数量" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="库存状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryStatus"> + <a-input v-model="model.inventoryStatus"placeholder="请输入库存状态" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="批次" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batch"> + <a-input v-model="model.batch"placeholder="请输入批次" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + + import { httpAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + + export default { + name: "ReceiptDetailHistoryModal", + components: { + }, + props:{ + mainId:{ + type:String, + required:false, + querySource:{}, + default:'' + } + }, + data () { + return { + title:"操作", + width:800, + visible: false, + querySource:{}, + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + + confirmLoading: false, + validatorRules: { + }, + url: { + add: "/receipt/receiptHeaderHistory/addReceiptDetailHistory", + edit: "/receipt/receiptHeaderHistory/editReceiptDetailHistory", + } + + } + }, + created () { + //备份model原始值 + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + close () { + this.$emit('close'); + this.visible = false; + this.$refs.form.clearValidate(); + }, + handleOk () { + const that = this; + // 触发表单验证 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let httpurl = ''; + let method = ''; + if(!this.model.id){ + httpurl+=this.url.add; + method = 'post'; + }else{ + httpurl+=this.url.edit; + method = 'put'; + } + this.model['receiptId'] = this.mainId + httpAction(httpurl,this.model,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.$emit('ok'); + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + }else{ + return false + } + }) + }, + handleCancel () { + this.close() + }, + + + } + } +</script> diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderHistoryModal.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderHistoryModal.vue new file mode 100644 index 0000000..fcd0024 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderHistoryModal.vue @@ -0,0 +1,182 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="关闭"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="货主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="companyCode"> + <a-select + show-search + placeholder="请选择货主" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.companyCode"> + <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + + <a-col :span="24"> + <a-form-model-item label="入库单类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type"> + <a-select + show-search + placeholder="请选择入库单类型" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.type"> + <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + + + <a-col :span="24"> + <a-form-model-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="supplierCode"> + <a-select + show-search + placeholder="请选择供应商" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.supplierCode"> + <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + + <a-col :span="24"> + <a-form-model-item label="入库单备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> + <a-input v-model="model.remark" placeholder="请输入入库单备注" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + + import { httpAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + import {getCompanyList} from '@/api/api' + import {getReceiptTypeList} from '@/api/api' + import {getSupplierList} from '@/api/api' + + export default { + name: "ReceiptHeaderHistoryModal", + components: { + }, + data () { + return { + title:"操作", + width:800, + visible: false, + companyList:[], + receiptTypeList:[], + supplierList:[], + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + + confirmLoading: false, + validatorRules: { + type: [ + { required: true, message: '请输入入库单类型!'}, + ], + }, + url: { + add: "/receipt/receiptHeaderHistory/add", + edit: "/receipt/receiptHeaderHistory/edit", + } + + } + }, + created () { + //备份model原始值 + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + this.loadFrom(); + }, + methods: { + add () { + this.edit(this.modelDefault); + this.model.companyCode = this.companyList[0].code; + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + close () { + this.$emit('close'); + this.visible = false; + this.$refs.form.clearValidate(); + }, + handleOk () { + const that = this; + // 触发表单验证 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let httpurl = ''; + let method = ''; + if(!this.model.id){ + httpurl+=this.url.add; + method = 'post'; + }else{ + httpurl+=this.url.edit; + method = 'put'; + } + httpAction(httpurl,this.model,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.$emit('ok'); + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + }else{ + return false + } + }) + }, + handleCancel () { + this.close() + }, + loadFrom() { + getCompanyList().then((res) => { + if (res.success) { + this.companyList = res.result + } + }); + getReceiptTypeList().then((res) => { + if (res.success) { + this.receiptTypeList = res.result + } + }); + getSupplierList().then((res) => { + if (res.success) { + this.supplierList = res.result + } + }); + }, + + } + } +</script> \ No newline at end of file diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailHistoryList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailHistoryList.vue new file mode 100644 index 0000000..cfa9875 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailHistoryList.vue @@ -0,0 +1,261 @@ +<template> + <a-card :bordered="false" :class="'cust-erp-sub-tab'"> + <!-- 操作按钮区域 --> + <div class="table-operator" v-if="mainId"> +<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> +<!-- <a-button type="primary" icon="download" @click="handleExportXls('历史出库单明细')">导出</a-button>--> + <a-upload + name="file" + :showUploadList="false" + :multiple="false" + :headers="tokenHeader" + :action="importExcelUrl" + @change="handleImportExcel"> +<!-- <a-button type="primary" icon="import">导入</a-button>--> + </a-upload> + <a-dropdown v-if="selectedRowKeys.length > 0"> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> + </a-menu> + <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> + </a-dropdown> + </div> + + <!-- table区域-begin --> + <div> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 + <a style="margin-left: 24px" @click="onClearSelected">清空</a> + </div> + + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 下载 + </a-button> + </template> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)">编辑</a> + <a-divider type="vertical" /> + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> + <a>删除</a> + </a-popconfirm> + </span> + + </a-table> + </div> + + <shipmentDetailHistory-modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></shipmentDetailHistory-modal> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import ShipmentDetailHistoryModal from './modules/ShipmentDetailHistoryModal' + + export default { + name: "ShipmentDetailHistoryList", + mixins:[JeecgListMixin], + components: { ShipmentDetailHistoryModal }, + props:{ + mainId:{ + type:String, + default:'', + required:false + } + }, + watch:{ + mainId:{ + immediate: true, + handler(val) { + if(!this.mainId){ + this.clearList() + }else{ + this.queryParam['shipmentId'] = val + this.loadData(1); + } + } + } + }, + data () { + return { + description: '历史出库单管理页面', + disableMixinCreated:true, + // 表头 + columns: [ + // { + // title: '#', + // dataIndex: '', + // key:'rowIndex', + // width:60, + // align:"center", + // customRender:function (t,r,index) { + // return parseInt(index)+1; + // } + // }, + // { + // title:'出库单ID', + // align:"center", + // dataIndex: 'shipmentId' + // }, + { + title:'出库单编码', + align:"center", + dataIndex: 'shipmentCode' + }, + { + title:'货主编码', + align:"center", + dataIndex: 'companyCode' + }, + { + title:'物料编码', + align:"center", + dataIndex: 'materialCode' + }, + { + title:'物料名称', + align:"center", + dataIndex: 'materialName' + }, + { + title:'物料规格', + align:"center", + dataIndex: 'materialSpec' + }, + { + title:'物料单位', + align:"center", + dataIndex: 'materialUnit' + }, + { + title:'单据数量', + align:"center", + dataIndex: 'qty' + }, + { + title:'已收数量', + align:"center", + dataIndex: 'taskQty' + }, + { + title:'库存状态', + align:"center", + dataIndex: 'inventoryStatus_dictText' + }, + { + title:'批次', + align:"center", + dataIndex: 'batch' + }, + { + title:'单据状态', + align:"center", + dataIndex: 'status_dictText' + }, + { + title:'上游单号', + align:"center", + dataIndex: 'referCode' + }, + { + title:'上游行号', + align:"center", + dataIndex: 'referLineNum' + }, + { + title:'创建人', + align:"center", + dataIndex: 'createBy' + }, + { + title:'创建日期', + align:"center", + dataIndex: 'createTime', + customRender:function (text) { + return !text?"":(text.length>10?text.substr(0,10):text) + } + }, + { + title:'更新人', + align:"center", + dataIndex: 'updateBy' + }, + { + title:'更新日期', + align:"center", + dataIndex: 'updateTime', + customRender:function (text) { + return !text?"":(text.length>10?text.substr(0,10):text) + } + }, + { + title: '操作', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' }, + } + ], + url: { + list: "/shipment/shipmentHeaderHistory/listShipmentDetailHistoryByMainId", + delete: "/shipment/shipmentHeaderHistory/deleteShipmentDetailHistory", + deleteBatch: "/shipment/shipmentHeaderHistory/deleteBatchShipmentDetailHistory", + exportXlsUrl: "/shipment/shipmentHeaderHistory/exportShipmentDetailHistory", + importUrl: "/shipment/shipmentHeaderHistory/importShipmentDetailHistory", + }, + dictOptions:{ + firstStatus:[], + lastStatus:[], + } + } + }, + created() { + }, + computed: { + importExcelUrl(){ + return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; + } + }, + methods: { + clearList(){ + this.dataSource=[] + this.selectedRowKeys=[] + this.ipagination.current = 1 + } + + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue new file mode 100644 index 0000000..06edf62 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue @@ -0,0 +1,439 @@ +<template> + <a-card :bordered="false"> + <!-- 查询区域 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="出库单编码"> + <a-input placeholder="请输入出库单编码" v-model="queryParam.code"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="货主"> + <a-select + show-search + placeholder="请选择货主" + option-filter-prop="children" + :filter-option="filterOption" + v-model="queryParam.companyCode"> + <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="出库单类型"> + <a-select + show-search + placeholder="请选择出库单类型" + option-filter-prop="children" + :filter-option="filterOption" + v-model="queryParam.type"> + <a-select-option v-for="item in shipmentTypeList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + <template v-if="toggleSearchStatus"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="头状态"> + <j-dict-select-tag placeholder="请选择头状态" v-model="queryParam.firstStatus" dictCode="shipment_status"/> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="尾状态"> + <j-dict-select-tag placeholder="请选择尾状态" v-model="queryParam.lastStatus" dictCode="shipment_status"/> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="上游单号"> + <a-input placeholder="请输入上游单号" v-model="queryParam.referCode"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="客户"> + <a-select + show-search + placeholder="请选择客户" + option-filter-prop="children" + :filter-option="filterOption" + v-model="queryParam.customerCode"> + <a-select-option v-for="item in customerList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="出库单备注"> + <a-input placeholder="请输入出库单备注" v-model="queryParam.remark"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="创建人"> + <a-input placeholder="请输入创建人" v-model="queryParam.createBy"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="创建日期"> + <j-date placeholder="请选择创建日期" v-model="queryParam.createTime"></j-date> + </a-form-item> + </a-col> + </template> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> + <a @click="handleToggleSearch" style="margin-left: 8px"> + {{ toggleSearchStatus ? '收起' : '展开' }} + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> + </a> + </span> + </a-col> + </a-row> + </a-form> + </div> + <!-- 查询区域-END --> + + <!-- 操作按钮区域 --> + <div class="table-operator"> +<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> +<!-- <a-button type="primary" icon="download" @click="handleExportXls('历史出库单')">导出</a-button>--> + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> +<!-- <a-button type="primary" icon="import">导入</a-button>--> + </a-upload> + <!-- 高级查询区域 --> + <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> + </div> + + <!-- table区域-begin --> + <div> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 + <a style="margin-left: 24px" @click="onClearSelected">清空</a> + </div> + + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + class="j-table-force-nowrap" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}" + :customRow="clickThenSelect" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 下载 + </a-button> + </template> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)">编辑</a> + + <a-divider type="vertical" /> + <a-dropdown> + <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> + <a-menu slot="overlay"> + <a-menu-item> + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> + <a>删除</a> + </a-popconfirm> + </a-menu-item> + </a-menu> + </a-dropdown> + </span> + + </a-table> + </div> + + <a-tabs defaultActiveKey="1"> + <a-tab-pane tab="历史出库单明细" key="1" > + <ShipmentDetailHistoryList :mainId="selectedMainId" /> + </a-tab-pane> + </a-tabs> + + <shipmentHeaderHistory-modal ref="modalForm" @ok="modalFormOk"></shipmentHeaderHistory-modal> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import ShipmentHeaderHistoryModal from './modules/ShipmentHeaderHistoryModal' + import { getAction } from '@/api/manage' + import ShipmentDetailHistoryList from './ShipmentDetailHistoryList' + import {initDictOptions,filterMultiDictText} from '@/components/dict/JDictSelectUtil' + import '@/assets/less/TableExpand.less' + import { getCompanyList, getCustomerList, getShipmentTypeList } from '@api/api' + + export default { + name: "ShipmentHeaderHistoryList", + mixins:[JeecgListMixin], + components: { + ShipmentDetailHistoryList, + ShipmentHeaderHistoryModal + }, + data () { + return { + description: '历史出库单管理页面', + // 表头 + columns: [ + { + title:'出库单编码', + align:"center", + dataIndex: 'code' + }, + { + title:'货主', + align:"center", + dataIndex: 'companyCode', + key: 'companyCode', + scopedSlots: { customRender: 'companyCode' } + }, + { + title:'出库单类型', + align:"center", + dataIndex: 'type', + key: 'type', + scopedSlots: { customRender: 'type' } + }, + { + title:'头状态', + align:"center", + dataIndex: 'firstStatus_dictText', + }, + { + title:'尾状态', + align:"center", + dataIndex: 'lastStatus_dictText', + }, + { + title:'上游单号', + align:"center", + dataIndex: 'referCode' + }, + { + title:'客户', + align:"center", + dataIndex: 'customerCode', + key: 'customerCode', + scopedSlots: { customRender: 'customerCode' } + }, + { + title:'总数量', + align:"center", + dataIndex: 'totalQty' + }, + { + title:'总行数', + align:"center", + dataIndex: 'totalLines' + }, + { + title:'出库单备注', + align:"center", + dataIndex: 'remark' + }, + { + title:'创建人', + align:"center", + dataIndex: 'createBy' + }, + { + title:'创建日期', + align:"center", + dataIndex: 'createTime', + customRender:function (text) { + return !text?"":(text.length>10?text.substr(0,10):text) + } + }, + { + title:'更新人', + align:"center", + dataIndex: 'updateBy' + }, + { + title:'更新日期', + align:"center", + dataIndex: 'updateTime', + customRender:function (text) { + return !text?"":(text.length>10?text.substr(0,10):text) + } + }, + { + title: '操作', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' }, + } + ], + url: { + list: "/shipment/shipmentHeaderHistory/list", + delete: "/shipment/shipmentHeaderHistory/delete", + deleteBatch: "/shipment/shipmentHeaderHistory/deleteBatch", + exportXlsUrl: "/shipment/shipmentHeaderHistory/exportXls", + importExcelUrl: "shipment/shipmentHeaderHistory/importExcel", + }, + dictOptions:{ + }, + /* 分页参数 */ + ipagination:{ + current: 1, + pageSize: 5, + pageSizeOptions: ['5', '10', '50'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 共" + total + "条" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + selectedMainId:'', + superFieldList:[], + } + }, + created() { + this.getSuperFieldList(); + this.loadFrom(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + } + }, + methods: { + initDictConfig(){ + }, + clickThenSelect(record) { + return { + on: { + click: () => { + this.onSelectChange(record.id.split(","), [record]); + } + } + } + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + this.selectedMainId='' + }, + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedMainId=selectedRowKeys[0] + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, + loadFrom() { + getCompanyList().then((res) => { + if (res.success) { + this.companyList = res.result + } + }); + getShipmentTypeList().then((res) => { + if (res.success) { + this.shipmentTypeList = res.result + } + }); + getCustomerList().then((res) => { + if (res.success) { + this.customerList = res.result + } + }); + }, + solutionCompany(value) { + var actions = [] + Object.keys(this.companyList).some((key) => { + if (this.companyList[key].code == ('' + value)) { + actions.push(this.companyList[key].name) + return true + } + }) + return actions.join('') + }, + solutionShipmentType(value) { + var actions = [] + Object.keys(this.shipmentTypeList).some((key) => { + if (this.shipmentTypeList[key].code == ('' + value)) { + actions.push(this.shipmentTypeList[key].name) + return true + } + }) + return actions.join('') + }, + solutionCustomer(value) { + var actions = [] + Object.keys(this.customerList).some((key) => { + if (this.customerList[key].code == ('' + value)) { + actions.push(this.customerList[key].name) + return true + } + }) + return actions.join('') + }, + loadData(arg) { + if(!this.url.list){ + this.$message.error("请设置url.list属性!") + return + } + //加载数据 若传入参数1则加载第一页的内容 + if (arg === 1) { + this.ipagination.current = 1; + } + this.onClearSelected() + var params = this.getQueryParams();//查询条件 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + this.dataSource = res.result.records; + this.ipagination.total = res.result.total; + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false; + }) + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'string',value:'code',text:'出库单编码',dictCode:''}) + fieldList.push({type:'string',value:'companyCode',text:'货主',dictCode:''}) + fieldList.push({type:'string',value:'type',text:'出库单类型',dictCode:''}) + fieldList.push({type:'int',value:'firstStatus',text:'头状态',dictCode:'shipment_status'}) + fieldList.push({type:'int',value:'lastStatus',text:'尾状态',dictCode:'shipment_status'}) + fieldList.push({type:'string',value:'referCode',text:'上游单号',dictCode:''}) + fieldList.push({type:'string',value:'customerCode',text:'客户编码',dictCode:''}) + fieldList.push({type:'BigDecimal',value:'totalQty',text:'总数量',dictCode:''}) + fieldList.push({type:'int',value:'totalLines',text:'总行数',dictCode:''}) + fieldList.push({type:'string',value:'remark',text:'出库单备注',dictCode:''}) + fieldList.push({type:'string',value:'createBy',text:'创建人',dictCode:''}) + fieldList.push({type:'datetime',value:'createTime',text:'创建日期'}) + fieldList.push({type:'string',value:'updateBy',text:'更新人',dictCode:''}) + fieldList.push({type:'datetime',value:'updateTime',text:'更新日期'}) + this.superFieldList = fieldList + } + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> \ No newline at end of file diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailHistoryModal.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailHistoryModal.vue new file mode 100644 index 0000000..eeaeec5 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentDetailHistoryModal.vue @@ -0,0 +1,158 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="关闭"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="出库单ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shipmentId"> + <a-input-number v-model="model.shipmentId"placeholder="请输入出库单ID" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="物料编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode"> + <a-input v-model="model.materialCode"placeholder="请输入物料编码" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> + <a-input v-model="model.materialName"placeholder="请输入物料名称" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="单据数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="qty"> + <a-input-number v-model="model.qty"placeholder="请输入单据数量" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="已收数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taskQty"> + <a-input-number v-model="model.taskQty"placeholder="请输入已收数量" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="库存状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryStatus"> + <a-input v-model="model.inventoryStatus"placeholder="请输入库存状态" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="批次" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batch"> + <a-input v-model="model.batch"placeholder="请输入批次" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="单据状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status"> + <a-input-number v-model="model.status"placeholder="请输入单据状态" style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + + import { httpAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + + export default { + name: "ShipmentDetailHistoryModal", + components: { + }, + props:{ + mainId:{ + type:String, + required:false, + default:'' + } + }, + data () { + return { + title:"操作", + width:800, + visible: false, + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + + confirmLoading: false, + validatorRules: { + }, + url: { + add: "/shipment/shipmentHeaderHistory/addShipmentDetailHistory", + edit: "/shipment/shipmentHeaderHistory/editShipmentDetailHistory", + } + + } + }, + created () { + //备份model原始值 + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + close () { + this.$emit('close'); + this.visible = false; + this.$refs.form.clearValidate(); + }, + handleOk () { + const that = this; + // 触发表单验证 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let httpurl = ''; + let method = ''; + if(!this.model.id){ + httpurl+=this.url.add; + method = 'post'; + }else{ + httpurl+=this.url.edit; + method = 'put'; + } + this.model['shipmentId'] = this.mainId + httpAction(httpurl,this.model,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.$emit('ok'); + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + }else{ + return false + } + }) + }, + handleCancel () { + this.close() + }, + + + } + } +</script> diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderHistoryModal.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderHistoryModal.vue new file mode 100644 index 0000000..050ae64 --- /dev/null +++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderHistoryModal.vue @@ -0,0 +1,175 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="关闭"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="货主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="companyCode"> + <a-select + show-search + placeholder="请选择货主" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.companyCode"> + <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="出库单类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type"> + <a-select + show-search + placeholder="请选择出库单类型" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.type"> + <a-select-option v-for="item in shipmentTypeList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="客户编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="customerCode"> + <a-select + show-search + placeholder="请选择客户编码" + option-filter-prop="children" + :filter-option="filterOption" + v-model="model.customerCode"> + <a-select-option v-for="item in customerList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option> + </a-select> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="出库单备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> + <a-input v-model="model.remark" placeholder="请输入出库单备注" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + + import { httpAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + import { getCompanyList, getCustomerList, getShipmentTypeList } from '@api/api' + + export default { + name: "ShipmentHeaderHistoryModal", + companyList:[], + shipmentTypeList:[], + customerList:[], + components: { + }, + data () { + return { + title:"操作", + width:800, + visible: false, + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + + confirmLoading: false, + validatorRules: { + type: [ + { required: true, message: '请输入出库单类型!'}, + ], + }, + url: { + add: "/shipment/shipmentHeaderHistory/add", + edit: "/shipment/shipmentHeaderHistory/edit", + } + + } + }, + created () { + //备份model原始值 + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + this.loadFrom(); + }, + methods: { + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + close () { + this.$emit('close'); + this.visible = false; + this.$refs.form.clearValidate(); + }, + handleOk () { + const that = this; + // 触发表单验证 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let httpurl = ''; + let method = ''; + if(!this.model.id){ + httpurl+=this.url.add; + method = 'post'; + }else{ + httpurl+=this.url.edit; + method = 'put'; + } + httpAction(httpurl,this.model,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.$emit('ok'); + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + }else{ + return false + } + }) + }, + handleCancel () { + this.close() + }, + loadFrom() { + getCompanyList().then((res) => { + if (res.success) { + this.companyList = res.result + } + }); + getShipmentTypeList().then((res) => { + if (res.success) { + this.shipmentTypeList = res.result + } + }); + getCustomerList().then((res) => { + if (res.success) { + this.customerList = res.result + } + }); + }, + + } + } +</script> \ No newline at end of file diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java index 862cf9e..ff94d64 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java @@ -14,6 +14,7 @@ import org.jeecg.modules.wms.receipt.receiptHeader.mapper.ReceiptDetailMapper; import org.jeecg.modules.wms.receipt.receiptHeader.mapper.ReceiptHeaderMapper; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptHeaderHistoryService; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; import org.springframework.stereotype.Service; @@ -48,6 +49,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R private IReceiptDetailService receiptDetailService; @Resource private IReceiptHeaderService receiptHeaderService; + @Resource + private IReceiptHeaderHistoryService receiptHeaderHistoryService; @Override @Transactional @@ -56,6 +59,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R if(receiptHeader.getFirstStatus().intValue() > QuantityConstant.RECEIPT_HEADER_BUILD) { throw new ServiceException("不能删除非新建状态单据"); } + receiptHeaderHistoryService.saveById(id); receiptDetailMapper.deleteByMainId(id); receiptHeaderMapper.deleteById(id); } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/controller/ReceiptHeaderHistoryController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/controller/ReceiptHeaderHistoryController.java new file mode 100644 index 0000000..051ebf7 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/controller/ReceiptHeaderHistoryController.java @@ -0,0 +1,169 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.controller; + +import org.jeecg.common.system.query.QueryGenerator; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.api.vo.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptHeaderHistoryService; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptDetailHistoryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Api(tags="历史入库单") +@RestController +@RequestMapping("/receipt/receiptHeaderHistory") +@Slf4j +public class ReceiptHeaderHistoryController extends JeecgController<ReceiptHeaderHistory, IReceiptHeaderHistoryService> { + + @Autowired + private IReceiptHeaderHistoryService receiptHeaderHistoryService; + + @Autowired + private IReceiptDetailHistoryService receiptDetailHistoryService; + + + /*---------------------------------主表处理-begin-------------------------------------*/ + + /** + * 分页列表查询 + * @param receiptHeaderHistory + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "历史入库单-分页列表查询") + @ApiOperation(value="历史入库单-分页列表查询", notes="历史入库单-分页列表查询") + @GetMapping(value = "/list") + public Result<IPage<ReceiptHeaderHistory>> queryPageList(ReceiptHeaderHistory receiptHeaderHistory, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ReceiptHeaderHistory> queryWrapper = QueryGenerator.initQueryWrapper(receiptHeaderHistory, req.getParameterMap()); + Page<ReceiptHeaderHistory> page = new Page<ReceiptHeaderHistory>(pageNo, pageSize); + IPage<ReceiptHeaderHistory> pageList = receiptHeaderHistoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + /** + * 编辑 + * @param receiptHeaderHistory + * @return + */ + @AutoLog(value = "历史入库单-编辑") + @ApiOperation(value="历史入库单-编辑", notes="历史入库单-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody ReceiptHeaderHistory receiptHeaderHistory) { + receiptHeaderHistoryService.updateById(receiptHeaderHistory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * @param id + * @return + */ + @AutoLog(value = "历史入库单-通过id删除") + @ApiOperation(value="历史入库单-通过id删除", notes="历史入库单-通过id删除") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + receiptHeaderHistoryService.delMain(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @AutoLog(value = "历史入库单-批量删除") + @ApiOperation(value="历史入库单-批量删除", notes="历史入库单-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.receiptHeaderHistoryService.delBatchMain(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /*---------------------------------主表处理-end-------------------------------------*/ + + + /*--------------------------------子表处理-历史入库单明细-begin----------------------------------------------*/ + /** + * 通过主表ID查询 + * @return + */ + //@AutoLog(value = "历史入库单明细-通过主表ID查询") + @ApiOperation(value="历史入库单明细-通过主表ID查询", notes="历史入库单明细-通过主表ID查询") + @GetMapping(value = "/listReceiptDetailHistoryByMainId") + public Result<IPage<ReceiptDetailHistory>> listReceiptDetailHistoryByMainId(ReceiptDetailHistory receiptDetailHistory, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ReceiptDetailHistory> queryWrapper = QueryGenerator.initQueryWrapper(receiptDetailHistory, req.getParameterMap()); + Page<ReceiptDetailHistory> page = new Page<ReceiptDetailHistory>(pageNo, pageSize); + IPage<ReceiptDetailHistory> pageList = receiptDetailHistoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 编辑 + * @param receiptDetailHistory + * @return + */ + @AutoLog(value = "历史入库单明细-编辑") + @ApiOperation(value="历史入库单明细-编辑", notes="历史入库单明细-编辑") + @RequestMapping(value = "/editReceiptDetailHistory", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> editReceiptDetailHistory(@RequestBody ReceiptDetailHistory receiptDetailHistory) { + receiptDetailHistoryService.updateById(receiptDetailHistory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * @param id + * @return + */ + @AutoLog(value = "历史入库单明细-通过id删除") + @ApiOperation(value="历史入库单明细-通过id删除", notes="历史入库单明细-通过id删除") + @DeleteMapping(value = "/deleteReceiptDetailHistory") + public Result<String> deleteReceiptDetailHistory(@RequestParam(name="id",required=true) String id) { + receiptDetailHistoryService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @AutoLog(value = "历史入库单明细-批量删除") + @ApiOperation(value="历史入库单明细-批量删除", notes="历史入库单明细-批量删除") + @DeleteMapping(value = "/deleteBatchReceiptDetailHistory") + public Result<String> deleteBatchReceiptDetailHistory(@RequestParam(name="ids",required=true) String ids) { + this.receiptDetailHistoryService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /*--------------------------------子表处理-历史入库单明细-end----------------------------------------------*/ + + + + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptDetailHistory.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptDetailHistory.java new file mode 100644 index 0000000..7888518 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptDetailHistory.java @@ -0,0 +1,126 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.jeecg.common.aspect.annotation.Dict; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.UnsupportedEncodingException; + +/** + * @Description: 历史入库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@TableName("receipt_detail_history") +@ApiModel(value="receipt_detail_history对象", description="历史入库单明细") +public class ReceiptDetailHistory implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + /**入库单ID*/ + @ApiModelProperty(value = "入库单ID") + private Integer receiptId; + /**入库单编码*/ + @Excel(name = "入库单编码", width = 15) + @ApiModelProperty(value = "入库单编码") + private String receiptCode; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主编码*/ + @Excel(name = "货主编码", width = 15) + @ApiModelProperty(value = "货主编码") + private String companyCode; + /**物料编码*/ + @Excel(name = "物料编码", width = 15) + @ApiModelProperty(value = "物料编码") + private String materialCode; + /**物料名称*/ + @Excel(name = "物料名称", width = 15) + @ApiModelProperty(value = "物料名称") + private String materialName; + /**物料规格*/ + @Excel(name = "物料规格", width = 15) + @ApiModelProperty(value = "物料规格") + private String materialSpec; + /**物料单位*/ + @Excel(name = "物料单位", width = 15) + @ApiModelProperty(value = "物料单位") + private String materialUnit; + /**单据数量*/ + @Excel(name = "单据数量", width = 15) + @ApiModelProperty(value = "单据数量") + private java.math.BigDecimal qty; + /**已收数量*/ + @Excel(name = "已收数量", width = 15) + @ApiModelProperty(value = "已收数量") + private java.math.BigDecimal taskQty; + /**库存状态*/ + @Excel(name = "库存状态", width = 15) + @Dict(dicCode = "inventory_status") + @ApiModelProperty(value = "库存状态") + private String inventoryStatus; + /**批次*/ + @Excel(name = "批次", width = 15) + @ApiModelProperty(value = "批次") + private String batch; + /**批号*/ + @Excel(name = "批号", width = 15) + @ApiModelProperty(value = "批号") + private String lot; + /**项目号*/ + @Excel(name = "项目号", width = 15) + @ApiModelProperty(value = "项目号") + private String project; + /**单据状态*/ + @Excel(name = "单据状态", width = 15) + @Dict(dicCode = "receipt_status") + @ApiModelProperty(value = "单据状态") + private Integer status; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**上游行号*/ + @Excel(name = "上游行号", width = 15) + @ApiModelProperty(value = "上游行号") + private String referLineNum; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private Date updateTime; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptHeaderHistory.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptHeaderHistory.java new file mode 100644 index 0000000..7d2204f --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/entity/ReceiptHeaderHistory.java @@ -0,0 +1,103 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.jeecgframework.poi.excel.annotation.Excel; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@TableName("receipt_header_history") +@ApiModel(value="receipt_header_history对象", description="历史入库单") +public class ReceiptHeaderHistory implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + /**编码*/ + @Excel(name = "编码", width = 15) + @ApiModelProperty(value = "编码") + private String code; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主*/ + @Excel(name = "货主", width = 15) + @ApiModelProperty(value = "货主") + private String companyCode; + /**入库单类型*/ + @Excel(name = "入库单类型", width = 15) + @ApiModelProperty(value = "入库单类型") + private String type; + /**头状态*/ + @Excel(name = "头状态", width = 15, dicCode = "receipt_status") + @Dict(dicCode = "receipt_status") + @ApiModelProperty(value = "头状态") + private Integer firstStatus; + /**尾状态*/ + @Excel(name = "尾状态", width = 15, dicCode = "receipt_status") + @Dict(dicCode = "receipt_status") + @ApiModelProperty(value = "尾状态") + private Integer lastStatus; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**供应商编码*/ + @Excel(name = "供应商编码", width = 15) + @ApiModelProperty(value = "供应商编码") + private String supplierCode; + /**总数量*/ + @Excel(name = "总数量", width = 15) + @ApiModelProperty(value = "总数量") + private java.math.BigDecimal totalqty; + /**总行数*/ + @Excel(name = "总行数", width = 15) + @ApiModelProperty(value = "总行数") + private Integer totallines; + /**入库单备注*/ + @Excel(name = "入库单备注", width = 15) + @ApiModelProperty(value = "入库单备注") + private String remark; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private Date updateTime; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptDetailHistoryMapper.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptDetailHistoryMapper.java new file mode 100644 index 0000000..56a0774 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptDetailHistoryMapper.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper; + +import java.util.List; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: 历史入库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface ReceiptDetailHistoryMapper extends BaseMapper<ReceiptDetailHistory> { + + public boolean deleteByMainId(@Param("mainId") String mainId); + + public List<ReceiptDetailHistory> selectByMainId(@Param("mainId") String mainId); + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java new file mode 100644 index 0000000..90f58f1 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface ReceiptHeaderHistoryMapper extends BaseMapper<ReceiptHeaderHistory> { + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptDetailHistoryMapper.xml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptDetailHistoryMapper.xml new file mode 100644 index 0000000..f37e3a9 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptDetailHistoryMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper.ReceiptDetailHistoryMapper"> + + <delete id="deleteByMainId" parameterType="java.lang.String"> + DELETE + FROM receipt_detail_history + WHERE + receipt_id = #{mainId} + </delete> + + <select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory"> + SELECT * + FROM receipt_detail_history + WHERE + receipt_id = #{mainId} + </select> +</mapper> diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptHeaderHistoryMapper.xml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptHeaderHistoryMapper.xml new file mode 100644 index 0000000..af5b5cd --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/mapper/xml/ReceiptHeaderHistoryMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper.ReceiptHeaderHistoryMapper"> + +</mapper> diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptDetailHistoryService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptDetailHistoryService.java new file mode 100644 index 0000000..12107fc --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptDetailHistoryService.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.service; + +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 历史入库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface IReceiptDetailHistoryService extends IService<ReceiptDetailHistory> { + + public List<ReceiptDetailHistory> selectByMainId(String mainId); +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptHeaderHistoryService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptHeaderHistoryService.java new file mode 100644 index 0000000..1c2217e --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/IReceiptHeaderHistoryService.java @@ -0,0 +1,35 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.service; + +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.beans.factory.annotation.Autowired; +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface IReceiptHeaderHistoryService extends IService<ReceiptHeaderHistory> { + + /** + * 删除一对多 + */ + public void delMain (String id); + + /** + * 批量删除一对多 + */ + public void delBatchMain (Collection<? extends Serializable> idList); + + + /** + * 根据删除的入库单主表ID新增历史入库单记录 + * @param id + */ + void saveById(String id); +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptDetailHistoryServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptDetailHistoryServiceImpl.java new file mode 100644 index 0000000..ded7e48 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptDetailHistoryServiceImpl.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.impl; + +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper.ReceiptDetailHistoryMapper; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptDetailHistoryService; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 历史入库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Service +public class ReceiptDetailHistoryServiceImpl extends ServiceImpl<ReceiptDetailHistoryMapper, ReceiptDetailHistory> implements IReceiptDetailHistoryService { + + @Autowired + private ReceiptDetailHistoryMapper receiptDetailHistoryMapper; + + @Override + public List<ReceiptDetailHistory> selectByMainId(String mainId) { + return receiptDetailHistoryMapper.selectByMainId(mainId); + } +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptHeaderHistoryServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptHeaderHistoryServiceImpl.java new file mode 100644 index 0000000..fbf491e --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/service/impl/ReceiptHeaderHistoryServiceImpl.java @@ -0,0 +1,108 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.impl; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; + +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper.ReceiptDetailHistoryMapper; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.mapper.ReceiptHeaderHistoryMapper; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptDetailHistoryService; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptHeaderHistoryService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.List; +import java.util.Collection; +import java.util.stream.Collectors; + +/** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Service +public class ReceiptHeaderHistoryServiceImpl extends ServiceImpl<ReceiptHeaderHistoryMapper, ReceiptHeaderHistory> implements IReceiptHeaderHistoryService { + + @Autowired + private ReceiptHeaderHistoryMapper receiptHeaderHistoryMapper; + @Autowired + private ReceiptDetailHistoryMapper receiptDetailHistoryMapper; + + @Resource + private IReceiptHeaderService receiptHeaderService; + @Resource + private IReceiptDetailService receiptDetailService; + @Resource + private IReceiptDetailHistoryService receiptDetailHistoryService; + + @Override + @Transactional + public void delMain(String id) { + receiptDetailHistoryMapper.deleteByMainId(id); + receiptHeaderHistoryMapper.deleteById(id); + } + + @Override + @Transactional + public void delBatchMain(Collection<? extends Serializable> idList) { + for(Serializable id:idList) { + receiptDetailHistoryMapper.deleteByMainId(id.toString()); + receiptHeaderHistoryMapper.deleteById(id); + } + } + + /** + * 根据删除的入库单主表ID新增历史入库单记录 + * @param id + */ + @Override + public void saveById(String id) { + ReceiptHeader receiptHeader = receiptHeaderService.getById(id); + ReceiptHeaderHistory receiptHeaderHistory = new ReceiptHeaderHistory(); + receiptHeaderHistory.setCode(receiptHeader.getCode()); + receiptHeaderHistory.setWarehouseCode(receiptHeader.getWarehouseCode()); + receiptHeaderHistory.setCompanyCode(receiptHeader.getCompanyCode()); + receiptHeaderHistory.setType(receiptHeader.getType()); + receiptHeaderHistory.setFirstStatus(receiptHeader.getFirstStatus()); + receiptHeaderHistory.setLastStatus(receiptHeader.getLastStatus()); + receiptHeaderHistory.setReferCode(receiptHeader.getReferCode()); + receiptHeaderHistory.setSupplierCode(receiptHeader.getSupplierCode()); + receiptHeaderHistory.setTotalqty(receiptHeader.getTotalqty()); + receiptHeaderHistory.setTotallines(receiptHeader.getTotallines()); + receiptHeaderHistory.setRemark(receiptHeader.getRemark()); + receiptHeaderHistory.setUserdef1(receiptHeader.getUserdef1()); + receiptHeaderHistory.setUserdef2(receiptHeader.getUserdef2()); + receiptHeaderHistory.setUserdef3(receiptHeader.getUserdef3()); + receiptHeaderHistory.setCreateBy(receiptHeader.getCreateBy()); + receiptHeaderHistory.setCreateTime(receiptHeader.getCreateTime()); + receiptHeaderHistory.setUpdateBy(receiptHeader.getUpdateBy()); + receiptHeaderHistory.setUpdateTime(receiptHeader.getUpdateTime()); + receiptHeaderHistoryMapper.insert(receiptHeaderHistory); + List<ReceiptDetailHistory> receiptDetailHistoryList = new ArrayList<>(); + List<ReceiptDetail> receiptDetailList = receiptDetailService.list(new LambdaQueryWrapper<ReceiptDetail>().eq(ReceiptDetail::getReceiptId, receiptHeader.getId())); + for (ReceiptDetail detail : receiptDetailList) { + ReceiptDetailHistory receiptDetailHistory = new ReceiptDetailHistory(); + BeanUtils.copyProperties(detail, receiptDetailHistory); + receiptDetailHistoryList.add(receiptDetailHistory); + } + List<ReceiptDetailHistory> newList = receiptDetailHistoryList.stream().peek(detail -> detail.setReceiptId(receiptHeaderHistory.getId())).collect(Collectors.toList()); + if (!receiptDetailHistoryService.saveBatch(newList)){ + throw new ServiceException("批量新增失败"); + } + + } + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/vo/ReceiptHeaderHistoryPage.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/vo/ReceiptHeaderHistoryPage.java new file mode 100644 index 0000000..020445e --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeaderHistory/vo/ReceiptHeaderHistoryPage.java @@ -0,0 +1,103 @@ +package org.jeecg.modules.wms.receipt.receiptHeaderHistory.vo; + +import java.util.List; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelEntity; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import java.util.Date; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description: 历史入库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@ApiModel(value="receipt_header_historyPage对象", description="历史入库单") +public class ReceiptHeaderHistoryPage { + + /**主键*/ + @ApiModelProperty(value = "主键") + private String id; + /**编码*/ + @Excel(name = "编码", width = 15) + @ApiModelProperty(value = "编码") + private String code; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主*/ + @Excel(name = "货主", width = 15) + @ApiModelProperty(value = "货主") + private String companyCode; + /**入库单类型*/ + @Excel(name = "入库单类型", width = 15) + @ApiModelProperty(value = "入库单类型") + private String type; + /**头状态*/ + @Excel(name = "头状态", width = 15) + @ApiModelProperty(value = "头状态") + private Integer firstStatus; + /**尾状态*/ + @Excel(name = "尾状态", width = 15) + @ApiModelProperty(value = "尾状态") + private Integer lastStatus; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**供应商编码*/ + @Excel(name = "供应商编码", width = 15) + @ApiModelProperty(value = "供应商编码") + private String supplierCode; + /**总数量*/ + @Excel(name = "总数量", width = 15) + @ApiModelProperty(value = "总数量") + private java.math.BigDecimal totalqty; + /**总行数*/ + @Excel(name = "总行数", width = 15) + @ApiModelProperty(value = "总行数") + private Integer totallines; + /**入库单备注*/ + @Excel(name = "入库单备注", width = 15) + @ApiModelProperty(value = "入库单备注") + private String remark; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private Date updateTime; + + @ExcelCollection(name="历史入库单明细") + @ApiModelProperty(value = "历史入库单明细") + private List<ReceiptDetailHistory> receiptDetailHistoryList; + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java index 8abfab6..c2bb9b4 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java @@ -25,6 +25,7 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.mapper.ShipmentDetailMapper import org.jeecg.modules.wms.shipment.shipmentHeader.mapper.ShipmentHeaderMapper; import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentHeaderHistoryService; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.StringUtils; @@ -73,6 +74,8 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, private IInventoryDetailService inventoryDetailService; @Resource private IParameterConfigurationService parameterConfigurationService; + @Resource + private IShipmentHeaderHistoryService shipmentHeaderHistoryService; @Override @Transactional @@ -81,6 +84,7 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, if(shipmentHeader.getFirstStatus().intValue() > QuantityConstant.RECEIPT_HEADER_BUILD) { throw new ServiceException("不能删除非新建状态单据"); } + shipmentHeaderHistoryService.saveById(id); shipmentDetailMapper.deleteByMainId(id); shipmentHeaderMapper.deleteById(id); } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java new file mode 100644 index 0000000..77b8f40 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java @@ -0,0 +1,173 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.controller; + +import org.jeecg.common.system.query.QueryGenerator; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.api.vo.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentHeaderHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentHeaderHistoryService; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentDetailHistoryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + /** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Api(tags="历史出库单") +@RestController +@RequestMapping("/shipment/shipmentHeaderHistory") +@Slf4j +public class ShipmentHeaderHistoryController extends JeecgController<ShipmentHeaderHistory, IShipmentHeaderHistoryService> { + + @Autowired + private IShipmentHeaderHistoryService shipmentHeaderHistoryService; + + @Autowired + private IShipmentDetailHistoryService shipmentDetailHistoryService; + + + /*---------------------------------主表处理-begin-------------------------------------*/ + + /** + * 分页列表查询 + * @param shipmentHeaderHistory + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "历史出库单-分页列表查询") + @ApiOperation(value="历史出库单-分页列表查询", notes="历史出库单-分页列表查询") + @GetMapping(value = "/list") + public Result<IPage<ShipmentHeaderHistory>> queryPageList(ShipmentHeaderHistory shipmentHeaderHistory, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ShipmentHeaderHistory> queryWrapper = QueryGenerator.initQueryWrapper(shipmentHeaderHistory, req.getParameterMap()); + Page<ShipmentHeaderHistory> page = new Page<>(pageNo, pageSize); + IPage<ShipmentHeaderHistory> pageList = shipmentHeaderHistoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + + /** + * 编辑 + * @param shipmentHeaderHistory + * @return + */ + @AutoLog(value = "历史出库单-编辑") + @ApiOperation(value="历史出库单-编辑", notes="历史出库单-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody ShipmentHeaderHistory shipmentHeaderHistory) { + shipmentHeaderHistoryService.updateById(shipmentHeaderHistory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * @param id + * @return + */ + @AutoLog(value = "历史出库单-通过id删除") + @ApiOperation(value="历史出库单-通过id删除", notes="历史出库单-通过id删除") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + shipmentHeaderHistoryService.delMain(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @AutoLog(value = "历史出库单-批量删除") + @ApiOperation(value="历史出库单-批量删除", notes="历史出库单-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.shipmentHeaderHistoryService.delBatchMain(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + + /*---------------------------------主表处理-end-------------------------------------*/ + + + /*--------------------------------子表处理-历史出库单明细-begin----------------------------------------------*/ + /** + * 通过主表ID查询 + * @return + */ + //@AutoLog(value = "历史出库单明细-通过主表ID查询") + @ApiOperation(value="历史出库单明细-通过主表ID查询", notes="历史出库单明细-通过主表ID查询") + @GetMapping(value = "/listShipmentDetailHistoryByMainId") + public Result<IPage<ShipmentDetailHistory>> listShipmentDetailHistoryByMainId(ShipmentDetailHistory shipmentDetailHistory, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ShipmentDetailHistory> queryWrapper = QueryGenerator.initQueryWrapper(shipmentDetailHistory, req.getParameterMap()); + Page<ShipmentDetailHistory> page = new Page<ShipmentDetailHistory>(pageNo, pageSize); + IPage<ShipmentDetailHistory> pageList = shipmentDetailHistoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + + /** + * 编辑 + * @param shipmentDetailHistory + * @return + */ + @AutoLog(value = "历史出库单明细-编辑") + @ApiOperation(value="历史出库单明细-编辑", notes="历史出库单明细-编辑") + @RequestMapping(value = "/editShipmentDetailHistory", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> editShipmentDetailHistory(@RequestBody ShipmentDetailHistory shipmentDetailHistory) { + shipmentDetailHistoryService.updateById(shipmentDetailHistory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * @param id + * @return + */ + @AutoLog(value = "历史出库单明细-通过id删除") + @ApiOperation(value="历史出库单明细-通过id删除", notes="历史出库单明细-通过id删除") + @DeleteMapping(value = "/deleteShipmentDetailHistory") + public Result<String> deleteShipmentDetailHistory(@RequestParam(name="id",required=true) String id) { + shipmentDetailHistoryService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @AutoLog(value = "历史出库单明细-批量删除") + @ApiOperation(value="历史出库单明细-批量删除", notes="历史出库单明细-批量删除") + @DeleteMapping(value = "/deleteBatchShipmentDetailHistory") + public Result<String> deleteBatchShipmentDetailHistory(@RequestParam(name="ids",required=true) String ids) { + this.shipmentDetailHistoryService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /*--------------------------------子表处理-历史出库单明细-end----------------------------------------------*/ + + + + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentDetailHistory.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentDetailHistory.java new file mode 100644 index 0000000..0807e55 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentDetailHistory.java @@ -0,0 +1,134 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.jeecg.common.aspect.annotation.Dict; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.UnsupportedEncodingException; + +/** + * @Description: 历史出库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@TableName("shipment_detail_history") +@ApiModel(value="shipment_detail_history对象", description="历史出库单明细") +public class ShipmentDetailHistory implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + /**出库单ID*/ + @ApiModelProperty(value = "出库单ID") + private Integer shipmentId; + /**出库单编码*/ + @Excel(name = "出库单编码", width = 15) + @ApiModelProperty(value = "出库单编码") + private String shipmentCode; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主编码*/ + @Excel(name = "货主编码", width = 15) + @ApiModelProperty(value = "货主编码") + private String companyCode; + /**物料编码*/ + @Excel(name = "物料编码", width = 15) + @ApiModelProperty(value = "物料编码") + private String materialCode; + /**物料名称*/ + @Excel(name = "物料名称", width = 15) + @ApiModelProperty(value = "物料名称") + private String materialName; + /**物料规格*/ + @Excel(name = "物料规格", width = 15) + @ApiModelProperty(value = "物料规格") + private String materialSpec; + /**物料单位*/ + @Excel(name = "物料单位", width = 15) + @ApiModelProperty(value = "物料单位") + private String materialUnit; + /**单据数量*/ + @Excel(name = "单据数量", width = 15) + @ApiModelProperty(value = "单据数量") + private java.math.BigDecimal qty; + /**已收数量*/ + @Excel(name = "已收数量", width = 15) + @ApiModelProperty(value = "已收数量") + private java.math.BigDecimal taskQty; + /**库存状态*/ + @Excel(name = "库存状态", width = 15) + @Dict(dicCode = "inventory_status") + @ApiModelProperty(value = "库存状态") + private String inventoryStatus; + /**批次*/ + @Excel(name = "批次", width = 15) + @ApiModelProperty(value = "批次") + private String batch; + /**批号*/ + @Excel(name = "批号", width = 15) + @ApiModelProperty(value = "批号") + private String lot; + /**项目号*/ + @Excel(name = "项目号", width = 15) + @ApiModelProperty(value = "项目号") + private String project; + /**单据状态*/ + @Excel(name = "单据状态", width = 15) + @Dict(dicCode = "shipment_status") + @ApiModelProperty(value = "单据状态") + private Integer status; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**上游行号*/ + @Excel(name = "上游行号", width = 15) + @ApiModelProperty(value = "上游行号") + private String referLineNum; + /**目标出入口*/ + @Excel(name = "目标出入口", width = 15) + @ApiModelProperty(value = "目标出入口") + private String toPort; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新日期") + private Date updateTime; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentHeaderHistory.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentHeaderHistory.java new file mode 100644 index 0000000..1d77b43 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/entity/ShipmentHeaderHistory.java @@ -0,0 +1,107 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.jeecgframework.poi.excel.annotation.Excel; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@TableName("shipment_header_history") +@ApiModel(value="shipment_header_history对象", description="历史出库单") +public class ShipmentHeaderHistory implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + /**出库单编码*/ + @Excel(name = "出库单编码", width = 15) + @ApiModelProperty(value = "出库单编码") + private String code; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主编码*/ + @Excel(name = "货主编码", width = 15) + @ApiModelProperty(value = "货主编码") + private String companyCode; + /**出库单类型*/ + @Excel(name = "出库单类型", width = 15) + @ApiModelProperty(value = "出库单类型") + private String type; + /**头状态*/ + @Excel(name = "头状态", width = 15, dicCode = "shipment_status") + @Dict(dicCode = "shipment_status") + @ApiModelProperty(value = "头状态") + private Integer firstStatus; + /**尾状态*/ + @Excel(name = "尾状态", width = 15, dicCode = "shipment_status") + @Dict(dicCode = "shipment_status") + @ApiModelProperty(value = "尾状态") + private Integer lastStatus; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**客户编码*/ + @Excel(name = "客户编码", width = 15) + @ApiModelProperty(value = "客户编码") + private String customerCode; + /**总数量*/ + @Excel(name = "总数量", width = 15) + @ApiModelProperty(value = "总数量") + private java.math.BigDecimal totalQty; + /**总行数*/ + @Excel(name = "总行数", width = 15) + @ApiModelProperty(value = "总行数") + private Integer totalLines; + /**出库单备注*/ + @Excel(name = "出库单备注", width = 15) + @ApiModelProperty(value = "出库单备注") + private String remark; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新日期") + private Date updateTime; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentDetailHistoryMapper.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentDetailHistoryMapper.java new file mode 100644 index 0000000..73f9f13 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentDetailHistoryMapper.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper; + +import java.util.List; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: 历史出库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface ShipmentDetailHistoryMapper extends BaseMapper<ShipmentDetailHistory> { + + public boolean deleteByMainId(@Param("mainId") String mainId); + + public List<ShipmentDetailHistory> selectByMainId(@Param("mainId") String mainId); + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java new file mode 100644 index 0000000..3251796 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentHeaderHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface ShipmentHeaderHistoryMapper extends BaseMapper<ShipmentHeaderHistory> { + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentDetailHistoryMapper.xml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentDetailHistoryMapper.xml new file mode 100644 index 0000000..37c7470 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentDetailHistoryMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper.ShipmentDetailHistoryMapper"> + + <delete id="deleteByMainId" parameterType="java.lang.String"> + DELETE + FROM shipment_detail_history + WHERE + shipment_id = #{mainId} + </delete> + + <select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory"> + SELECT * + FROM shipment_detail_history + WHERE + shipment_id = #{mainId} + </select> +</mapper> diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentHeaderHistoryMapper.xml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentHeaderHistoryMapper.xml new file mode 100644 index 0000000..ce47bc9 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/mapper/xml/ShipmentHeaderHistoryMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper.ShipmentHeaderHistoryMapper"> + +</mapper> diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentDetailHistoryService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentDetailHistoryService.java new file mode 100644 index 0000000..10364c0 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentDetailHistoryService.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service; + +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 历史出库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface IShipmentDetailHistoryService extends IService<ShipmentDetailHistory> { + + public List<ShipmentDetailHistory> selectByMainId(String mainId); +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentHeaderHistoryService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentHeaderHistoryService.java new file mode 100644 index 0000000..99151a1 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/IShipmentHeaderHistoryService.java @@ -0,0 +1,35 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service; + +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentHeaderHistory; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.beans.factory.annotation.Autowired; +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +public interface IShipmentHeaderHistoryService extends IService<ShipmentHeaderHistory> { + + /** + * 删除一对多 + */ + public void delMain (String id); + + /** + * 批量删除一对多 + */ + public void delBatchMain (Collection<? extends Serializable> idList); + + + /** + * 根据删除的出库单主表ID新增历史出库单记录 + * @param id + */ + void saveById(String id); +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentDetailHistoryServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentDetailHistoryServiceImpl.java new file mode 100644 index 0000000..2c7be36 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentDetailHistoryServiceImpl.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.impl; + +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper.ShipmentDetailHistoryMapper; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentDetailHistoryService; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 历史出库单明细 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Service +public class ShipmentDetailHistoryServiceImpl extends ServiceImpl<ShipmentDetailHistoryMapper, ShipmentDetailHistory> implements IShipmentDetailHistoryService { + + @Autowired + private ShipmentDetailHistoryMapper shipmentDetailHistoryMapper; + + @Override + public List<ShipmentDetailHistory> selectByMainId(String mainId) { + return shipmentDetailHistoryMapper.selectByMainId(mainId); + } +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentHeaderHistoryServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentHeaderHistoryServiceImpl.java new file mode 100644 index 0000000..6522d8b --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/service/impl/ShipmentHeaderHistoryServiceImpl.java @@ -0,0 +1,110 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.impl; +import java.math.BigDecimal; +import java.util.Date; + +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptHeaderHistory; +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; +import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; +import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentHeaderHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.entity.ShipmentDetailHistory; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper.ShipmentDetailHistoryMapper; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.mapper.ShipmentHeaderHistoryMapper; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentDetailHistoryService; +import org.jeecg.modules.wms.shipment.shipmentHeaderHistory.service.IShipmentHeaderHistoryService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Collection; +import java.util.stream.Collectors; + +/** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Service +public class ShipmentHeaderHistoryServiceImpl extends ServiceImpl<ShipmentHeaderHistoryMapper, ShipmentHeaderHistory> implements IShipmentHeaderHistoryService { + + @Autowired + private ShipmentHeaderHistoryMapper shipmentHeaderHistoryMapper; + @Autowired + private ShipmentDetailHistoryMapper shipmentDetailHistoryMapper; + + @Autowired + private IShipmentHeaderService shipmentHeaderService; + @Autowired + private IShipmentDetailService shipmentDetailService; + @Autowired + private IShipmentDetailHistoryService shipmentDetailHistoryService; + + @Override + @Transactional + public void delMain(String id) { + shipmentDetailHistoryMapper.deleteByMainId(id); + shipmentHeaderHistoryMapper.deleteById(id); + } + + @Override + @Transactional + public void delBatchMain(Collection<? extends Serializable> idList) { + for(Serializable id:idList) { + shipmentDetailHistoryMapper.deleteByMainId(id.toString()); + shipmentHeaderHistoryMapper.deleteById(id); + } + } + + /** + * 根据删除的出库单主表ID新增历史出库单记录 + * @param id + */ + @Override + public void saveById(String id) { + ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id); + ShipmentHeaderHistory shipmentHeaderHistory = new ShipmentHeaderHistory(); + shipmentHeaderHistory.setCode(shipmentHeader.getCode()); + shipmentHeaderHistory.setWarehouseCode(shipmentHeader.getWarehouseCode()); + shipmentHeaderHistory.setCompanyCode(shipmentHeader.getCompanyCode()); + shipmentHeaderHistory.setType(shipmentHeader.getType()); + shipmentHeaderHistory.setFirstStatus(shipmentHeader.getFirstStatus()); + shipmentHeaderHistory.setLastStatus(shipmentHeader.getLastStatus()); + shipmentHeaderHistory.setReferCode(shipmentHeader.getReferCode()); + shipmentHeaderHistory.setCustomerCode(shipmentHeader.getCompanyCode()); + shipmentHeaderHistory.setTotalQty(shipmentHeader.getTotalQty()); + shipmentHeaderHistory.setTotalLines(shipmentHeader.getTotalLines()); + shipmentHeaderHistory.setRemark(shipmentHeader.getRemark()); + shipmentHeaderHistory.setUserdef1(shipmentHeader.getUserdef1()); + shipmentHeaderHistory.setUserdef2(shipmentHeader.getUserdef2()); + shipmentHeaderHistory.setUserdef3(shipmentHeader.getUserdef3()); + shipmentHeaderHistory.setCreateBy(shipmentHeader.getCreateBy()); + shipmentHeaderHistory.setCreateTime(shipmentHeader.getCreateTime()); + shipmentHeaderHistory.setUpdateBy(shipmentHeader.getUpdateBy()); + shipmentHeaderHistory.setUpdateTime(shipmentHeader.getUpdateTime()); + + shipmentHeaderHistoryMapper.insert(shipmentHeaderHistory); + List<ShipmentDetailHistory> shipmentDetailHistoryList = new ArrayList<>(); + List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(new LambdaQueryWrapper<ShipmentDetail>().eq(ShipmentDetail::getShipmentId, shipmentHeader.getId())); + for (ShipmentDetail detail : shipmentDetailList) { + ShipmentDetailHistory shipmentDetailHistory = new ShipmentDetailHistory(); + BeanUtils.copyProperties(detail, shipmentDetailHistory); + shipmentDetailHistoryList.add(shipmentDetailHistory); + } + List<ShipmentDetailHistory> newList = shipmentDetailHistoryList.stream().peek(detail -> detail.setShipmentId(shipmentHeaderHistory.getId())).collect(Collectors.toList()); + if (!shipmentDetailHistoryService.saveBatch(newList)){ + throw new ServiceException("批量新增失败"); + } + } + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/vo/ShipmentHeaderHistoryPage.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/vo/ShipmentHeaderHistoryPage.java new file mode 100644 index 0000000..ffff5b0 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeaderHistory/vo/ShipmentHeaderHistoryPage.java @@ -0,0 +1,114 @@ +package org.jeecg.modules.wms.shipment.shipmentHeaderHistory.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; + +import java.util.Date; +import java.util.List; + +/** + * @Description: 历史出库单 + * @Author: jeecg-boot + * @Date: 2022-12-19 + * @Version: V1.0 + */ +@Data +@ApiModel(value="shipment_header_historyPage对象", description="历史出库单") +public class ShipmentHeaderHistoryPage { + + /**主键*/ + @ApiModelProperty(value = "主键") + private String id; + /**出库单ID*/ + @ApiModelProperty(value = "出库单ID") + private Integer shipmentId; + /**出库单编码*/ + @Excel(name = "出库单编码", width = 15) + @ApiModelProperty(value = "出库单编码") + private String shipmentCode; + /**仓库编码*/ + @Excel(name = "仓库编码", width = 15) + @ApiModelProperty(value = "仓库编码") + private String warehouseCode; + /**货主*/ + @Excel(name = "货主", width = 15) + @ApiModelProperty(value = "货主") + private String companyCode; + /**出库单类型*/ + @Excel(name = "出库单类型", width = 15) + @ApiModelProperty(value = "出库单类型") + private String type; + /**头状态*/ + @Excel(name = "头状态", width = 15) + @ApiModelProperty(value = "头状态") + private Integer firstStatus; + /**尾状态*/ + @Excel(name = "尾状态", width = 15) + @ApiModelProperty(value = "尾状态") + private Integer lastStatus; + /**上游单号*/ + @Excel(name = "上游单号", width = 15) + @ApiModelProperty(value = "上游单号") + private String referCode; + /**供应商编码*/ + @Excel(name = "供应商编码", width = 15) + @ApiModelProperty(value = "供应商编码") + private String supplierCode; + /**单据数量*/ + @Excel(name = "单据数量", width = 15) + @ApiModelProperty(value = "单据数量") + private java.math.BigDecimal qty; + /**已收数量*/ + @Excel(name = "已收数量", width = 15) + @ApiModelProperty(value = "已收数量") + private java.math.BigDecimal taskQty; + /**目标出出口*/ + @Excel(name = "目标出入口", width = 15) + @ApiModelProperty(value = "目标出入口") + private String toPort; + /**客户编码*/ + @Excel(name = "客户编码", width = 15) + @ApiModelProperty(value = "客户编码") + private String customerCode; + /**总行数*/ + @Excel(name = "总行数", width = 15) + @ApiModelProperty(value = "总行数") + private Integer totallines; + /**出库单备注*/ + @Excel(name = "出库单备注", width = 15) + @ApiModelProperty(value = "出库单备注") + private String remark; + /**备用字段1*/ + @Excel(name = "备用字段1", width = 15) + @ApiModelProperty(value = "备用字段1") + private String userdef1; + /**备用字段2*/ + @Excel(name = "备用字段2", width = 15) + @ApiModelProperty(value = "备用字段2") + private String userdef2; + /**备用字段3*/ + @Excel(name = "备用字段3", width = 15) + @ApiModelProperty(value = "备用字段3") + private String userdef3; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private Date updateTime; + + @ExcelCollection(name="历史出库单明细") + @ApiModelProperty(value = "历史出库单明细") + private List<ReceiptDetailHistory> receiptDetailHistoryList; + +} -- libgit2 0.22.2