From 64c2d830fc088e124c481ad1a1e85a15586a4577 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 5 Feb 2024 19:08:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=9B=98=E7=82=B9=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E7=BB=9F=E8=AE=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 库存盘点实时统计修改 --- .../admin/storage/StorageController.java | 1 + .../module/heli/dal/mysql/pn/PnMapper.java | 2 +- .../module/heli/dal/mysql/rg/RgMapper.java | 2 +- .../mysql/storagelog/StorageLogNowMapper.java | 1 + .../dal/mysql/warehouse/WarehouseMapper.java | 2 +- .../mapper/storagelog/StorageLogNowMapper.xml | 2 +- .../src/views/heli/storage/StorageOut.vue | 86 ++++++++++--------- sql/v1.3.0/1.structure.sql | 25 ++++++ 8 files changed, 75 insertions(+), 46 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index db67486a..e19d9dd2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -94,6 +94,7 @@ public class StorageController { List logList = BeanUtils.toBean(matList,StorageLogDO.class); // 同步库存单状态到日志,便于以后统计 for (StorageLogDO log : logList){ + log.setId(null); log.setStatus(targetDo.getStatus()); } // 批量保存当前库存物料日志信息 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java index af21388c..37c7cb9c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java @@ -37,7 +37,7 @@ public interface PnMapper extends BaseMapperX { } default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "pn_name","rg_id","wh_id").lambda()); + return selectMaps(new QueryWrapper().select("id", "pn_name","rg_id","wh_id").eq("pn_status","1").lambda()); } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java index 1bc6a966..cc5a9d5c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java @@ -35,7 +35,7 @@ public interface RgMapper extends BaseMapperX { default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "rg_name","wh_id").lambda()); + return selectMaps(new QueryWrapper().select("id", "rg_name","wh_id").eq("rg_status","1").lambda()); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java index ad28faed..dab54a7b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java @@ -32,6 +32,7 @@ public interface StorageLogNowMapper extends BaseMapperX { .eq(reqVO.getWhId()!= null,StorageLogNowDO::getWhId, reqVO.getWhId()) .eq(reqVO.getRgId()!= null,StorageLogNowDO::getRgId, reqVO.getRgId()) .eq(reqVO.getPnId()!= null,StorageLogNowDO::getPnId, reqVO.getPnId()) + .ne(true,StorageLogNowDO::getStorageOkQty,0) .like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogNowDO::getMatName, reqVO.getMatName()) .like(!StringUtils.isEmpty(reqVO.getMatCode()), StorageLogNowDO::getMatCode, reqVO.getMatCode()) .like(!StringUtils.isEmpty(reqVO.getLotNo()),StorageLogNowDO::getLotNo, reqVO.getLotNo()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java index 8cf5f934..2fe1563a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java @@ -42,7 +42,7 @@ public interface WarehouseMapper extends BaseMapperX { default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "wh_name").lambda()); + return selectMaps(new QueryWrapper().select("id", "wh_name").eq("wh_status","1").lambda()); } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml index 29efbe76..f0a73ad1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml @@ -57,7 +57,7 @@ (select label from system_dict_data where dict_type='heli_material_unit' and value= mat.unit) as mat_unit, brand as mat_brand,'' as wh_id, '' as wh_name,'' as rg_id,'' as rg_name,'' as pn_id,'' as pn_name,'' lot_no,short_name,0 as storage_ok_qty - from base_material as mat where virtual_part='N' and not exists(select id from v_storage_material_now where wh_id=#{whId} and id=mat.id) + from base_material as mat where virtual_part='N' and mat.status=1 and not exists(select id from v_storage_material_now where wh_id=#{whId} and id=mat.id) ) t diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue index f24063f6..7d8aa430 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue @@ -369,52 +369,54 @@ const handleStockType = async (typeid) => { } const handleStatus = async (num) => { - // 校验表单 - await formRef.value.validate() - if (formData.value.matItemDOList.length === 0) { - message.alertWarning('请添加物料信息!') - return - } - // 校验子表单 - try { - await matSubFormRef.value.validate() - } catch (e) { - return - } - //获取最新库存信息 - const matCurrentData = await StorageMatApi.getStorageMatList(0) - var hasRestNum = true - formData.value.matItemDOList.forEach((rest) => { - if ( - matCurrentData.find( - (mat) => - mat.matId == rest.matId && - mat.pnId == rest.pnId && - mat.matRest < Number(rest.storageOkQty) - ) !== undefined || rest.storageOkQty.length ==0 - ) { - hasRestNum = false + formData.value.status = num + const data = formData.value as unknown as StorageApi.StorageVO + if(num==2){ + + // 校验表单 + await formRef.value.validate() + if (formData.value.matItemDOList.length === 0) { + message.alertWarning('请添加物料信息!') + return } - }) - if (!hasRestNum) { - message.alertWarning('物料库存不足') - return - } - - // 提示用户是否保存出库信息 - await message.confirm('确认'+(num==2?'提交':'作废')+'出库信息?') - //保存表单数据 - await saveFormData() + // 校验子表单 + try { + await matSubFormRef.value.validate() + } catch (e) { + return + } + //获取最新库存信息 + const matCurrentData = await StorageMatApi.getStorageMatList(0) + var hasRestNum = true + formData.value.matItemDOList.forEach((rest) => { + if ( + matCurrentData.find( + (mat) => + mat.matId == rest.matId && + mat.pnId == rest.pnId && + mat.matRest < Number(rest.storageOkQty) + ) !== undefined || rest.storageOkQty.length ==0 + ) { + hasRestNum = false + } + }) + if (!hasRestNum) { + message.alertWarning('物料库存不足') + return + } + // 提示用户是否保存出库信息 + await message.confirm('确认提交出库信息?') + //保存表单数据 + await saveFormData() - formData.value.status = num + data.outbound = useUserStore().getUser.id - const dataUpdate = formData.value as unknown as StorageApi.StorageVO - if (num == 2) { - dataUpdate.outbound = useUserStore().getUser.id - } else { - dataUpdate.cancel = useUserStore().getUser.id + }else{ + await StorageApi.updateStorage(data) + data.cancel = useUserStore().getUser.id + commonResult = 'common.updateSuccess' } - await StorageApi.updateStorageStatus(dataUpdate) + await StorageApi.updateStorageStatus(data) message.success(t('common.updateSuccess')) diff --git a/sql/v1.3.0/1.structure.sql b/sql/v1.3.0/1.structure.sql index cb51164f..a3740d8d 100644 --- a/sql/v1.3.0/1.structure.sql +++ b/sql/v1.3.0/1.structure.sql @@ -70,3 +70,28 @@ CREATE TABLE `pro_process_design_progress` ( ALTER TABLE project_deliver_order MODIFY COLUMN `deliver_mode` CHAR ( 1 ) COMMENT '发货方式'; ALTER TABLE wms_storage ADD COLUMN `v_mat_name` varchar(128) COMMENT '虚拟物料名称'; + + +CREATE OR REPLACE VIEW v_storage_material_now AS +select `t`.`deleted` AS `deleted`,`t`.`id` AS `id`,`t`.`creator` AS `creator`,`t`.`updater` AS `updater`,cast('2000-01-01 00:00' as date) AS `create_time`,cast('2000-01-01 00:00' as date) AS `update_time`, + `t`.`tenant_id` AS `tenant_id`,`t`.`mat_code` AS `mat_code`,`t`.`mat_name` AS `mat_name`, + `t`.`mat_type` AS `mat_type`,`t`.`mat_spec` AS `mat_spec`,`t`.`mat_unit` AS `mat_unit`,`t`.`mat_brand` AS `mat_brand`,`t`.`wh_id` AS `wh_id`,`t`.`wh_name` AS `wh_name`,`t`.`rg_id` AS `rg_id`, + `t`.`rg_name` AS `rg_name`,`t`.`pn_id` AS `pn_id`,`t`.`pn_name` AS `pn_name`,'' AS `lot_no`,`t`.`short_name` AS `short_name`,sum(`t`.`storage_ok_qty`) AS `storage_ok_qty` +from ( + select 0 AS `deleted`,`mat`.`id` AS `id`,`mat`.`creator` AS `creator`,`mat`.`updater` AS `updater`,`mat`.`tenant_id` AS `tenant_id`,`mat`.`code` AS `mat_code`,`mat`.`name` AS `mat_name`, + (select `mes-heli`.`system_dict_data`.`label` from `mes-heli`.`system_dict_data` where ((`mes-heli`.`system_dict_data`.`dict_type` = 'heli_material_type') and (`mes-heli`.`system_dict_data`.`value` = `mat`.`material_type`))) AS `mat_type`, + (case when (isnull(`mat`.`short_name`) = TRUE) then '' else `mat`.`short_name` end) AS `short_name`, + (case when (isnull(`mat`.`spec`) = TRUE) then '' else `mat`.`spec` end) AS `mat_spec`, + (case when (isnull(`mat`.`brand`) = TRUE) then '' else `mat`.`brand` end) AS `mat_brand`, + (select `mes-heli`.`system_dict_data`.`label` from `mes-heli`.`system_dict_data` where ((`mes-heli`.`system_dict_data`.`dict_type` = 'heli_material_unit') and (`mes-heli`.`system_dict_data`.`value` = `mat`.`unit`))) AS `mat_unit`, + `wh`.`id` AS `wh_id`,`wh`.`wh_name` AS `wh_name`,`rg`.`id` AS `rg_id`,`rg`.`rg_name` AS `rg_name`,`pn`.`id` AS `pn_id`,`pn`.`pn_name` AS `pn_name`, + (case when (isnull(`lg`.`lot_no`) = 1) then '' else `lg`.`lot_no` end) AS `lot_no`, + (case when ((`st`.`stock_type` = 1) and (`lg`.`status` = 2)) then `lg`.`storage_ok_qty` when ((`st`.`stock_type` = 1) and (`lg`.`status` = 3)) then (-(1) * `lg`.`storage_ok_qty`) when ((`st`.`stock_type` = 2) and (`lg`.`status` = 2)) then (-(1) * `lg`.`storage_ok_qty`) when ((`st`.`stock_type` = 2) and (`lg`.`status` = 3)) then `lg`.`storage_ok_qty` else `lg`.`storage_ok_qty` end) AS `storage_ok_qty` + from (((((`mes-heli`.`wms_storage_log` `lg` + left join `mes-heli`.`wms_storage` `st` on((`lg`.`stock_id` = `st`.`id`))) + left join `mes-heli`.`base_material` `mat` on((`lg`.`mat_id` = `mat`.`id`))) + left join `mes-heli`.`wms_wh` `wh` on((`lg`.`wh_id` = `wh`.`id`))) + left join `mes-heli`.`wms_rg` `rg` on((`lg`.`rg_id` = `rg`.`id`))) + left join `mes-heli`.`wms_pn` `pn` on((`lg`.`pn_id` = `pn`.`id`))) + where ((`st`.`deleted` = 0) and (`mat`.`deleted` = 0) and (`wh`.`deleted` = 0) and (`rg`.`deleted` = 0) and (`pn`.`deleted` = 0))) `t` +group by `t`.`deleted`,`t`.`id`,`t`.`creator`,`t`.`updater`,`t`.`tenant_id`,`t`.`mat_code`,`t`.`mat_name`,`t`.`mat_type`,`t`.`mat_spec`,`t`.`mat_unit`,`t`.`mat_brand`,`t`.`wh_id`,`t`.`wh_name`,`t`.`rg_id`,`t`.`rg_name`,`t`.`pn_id`,`t`.`pn_name`,`t`.`short_name`