From c51d7cc8418e782817a2bf411753a3af1ef74a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B8=85?= Date: Sat, 9 Aug 2025 18:20:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/bo/ErpMaterialPickingBo.java | 1 - .../ErpMaterialInventoryRecordMapper.java | 6 +-- .../impl/ErpMaterialCheckServiceImpl.java | 10 +++- ...ErpMaterialInventoryRecordServiceImpl.java | 2 +- .../impl/ErpMaterialPickingServiceImpl.java | 5 +- .../ErpMaterialInventoryRecordMapper.xml | 14 +++--- .../resources/mapper/ErpMaterialMapper.xml | 49 +------------------ .../views/business/materialCheck/index.vue | 47 ++++++++++-------- .../views/business/materialPicking/index.vue | 2 + .../views/business/materialReturns/index.vue | 13 ++++- .../views/business/materialStock/index.vue | 28 +++++------ .../settlementMaterial/info/index2.vue | 6 +-- 12 files changed, 83 insertions(+), 100 deletions(-) diff --git a/maintain-business/src/main/java/com/maintain/business/domain/bo/ErpMaterialPickingBo.java b/maintain-business/src/main/java/com/maintain/business/domain/bo/ErpMaterialPickingBo.java index 40f93a6..81b9ade 100644 --- a/maintain-business/src/main/java/com/maintain/business/domain/bo/ErpMaterialPickingBo.java +++ b/maintain-business/src/main/java/com/maintain/business/domain/bo/ErpMaterialPickingBo.java @@ -62,7 +62,6 @@ public class ErpMaterialPickingBo extends BaseEntity { /** * 供应商ID */ - @NotNull(message = "供应商不能为空", groups = { AddGroup.class, EditGroup.class }) private Long vendorId; /** diff --git a/maintain-business/src/main/java/com/maintain/business/mapper/ErpMaterialInventoryRecordMapper.java b/maintain-business/src/main/java/com/maintain/business/mapper/ErpMaterialInventoryRecordMapper.java index 9b0161c..d6f8722 100644 --- a/maintain-business/src/main/java/com/maintain/business/mapper/ErpMaterialInventoryRecordMapper.java +++ b/maintain-business/src/main/java/com/maintain/business/mapper/ErpMaterialInventoryRecordMapper.java @@ -56,12 +56,12 @@ public interface ErpMaterialInventoryRecordMapper extends BaseMapperPlus queryListByWarehouseIdAndMaterialId(@Param("warehouseId") Long warehouseId, @Param("materialId") Long materialId, @Param("type") String type); + List queryListByWarehouseIdAndMaterialId(@Param("warehouseId") Long warehouseId, @Param("vendorId") Long vendorId, @Param("materialId") Long materialId, @Param("type") String type); /** - * 根据仓库ID以及物料ID动态计算物料库存 + * 根据仓库ID\供应商ID\物料ID动态计算物料库存 */ - ErpMaterialInventoryRecordVo queryMaterialByWarehouseIdAndMaterialId(@Param("warehouseId") Long warehouseId, @Param("materialId") Long materialId); + ErpMaterialInventoryRecordVo queryMaterialByWarehouseIdAndMaterialId(@Param("warehouseId") Long warehouseId, @Param("vendorId") Long vendorId, @Param("materialId") Long materialId); } diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialCheckServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialCheckServiceImpl.java index b81055d..1d1353a 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialCheckServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialCheckServiceImpl.java @@ -242,7 +242,7 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { /* 查询物料 */ ErpMaterial material = materialMapper.selectById(item.getMaterialId()); /* 查询物料库存 */ - ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.queryMaterialByWarehouseIdAndMaterialId(bo.getWarehouseId(), item.getMaterialId()); + ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.queryMaterialByWarehouseIdAndMaterialId(bo.getWarehouseId(), item.getVendorId(), item.getMaterialId()); /* 如果recordVo为空,说明改物料没有过库存变动记录数据,默认给0 */ BigDecimal inventory = new BigDecimal("0"); if (null != recordVo) { @@ -253,12 +253,14 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { ErpMaterialPutawayInfo putawayInfo = BeanUtil.toBean(material, ErpMaterialPutawayInfo.class); putawayInfo.setPutawayNumber(item.getCheckNum().subtract(inventory)); putawayInfo.setMaterialId(item.getMaterialId()); + putawayInfo.setVendorId(item.getVendorId()); putawayInfo.setId(null); putawayInfoList.add(putawayInfo); }else if (item.getResultState().equals(CheckInfoState.TWO.getCode())) { ErpMaterialPickingInfo pickingInfo = BeanUtil.toBean(material, ErpMaterialPickingInfo.class); pickingInfo.setCollectNumber(inventory.subtract(item.getCheckNum())); pickingInfo.setMaterialId(item.getMaterialId()); + pickingInfo.setVendorId(item.getVendorId()); pickingInfo.setId(null); pickingInfoList.add(pickingInfo); } @@ -272,6 +274,7 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { putaway.setState(PutawayState.TWO.getCode()); putaway.setWarehouseId(materialCheck.getWarehouseId()); putaway.setWarehouseName(materialCheck.getWarehouseName()); + putaway.setCreateDeptId(LoginHelper.getDeptId()); materialPutawayMapper.insert(putaway); materialPutawayInfoMapper.insertBatch( putawayInfoList @@ -285,6 +288,7 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { record.setInfoId(item.getId()); record.setMaterialId(item.getMaterialId()); record.setWarehouseId(warehouse.getId()); + record.setVendorId(item.getVendorId()); record.setDeptId(warehouse.getDeptId()); record.setNumber(item.getPutawayNumber()); record.setPrice(item.getPutawayPrice()); @@ -301,6 +305,7 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { picking.setType(PickingType.TWO.getCode()); picking.setState(PickingState.TWO.getCode()); picking.setOutTime(new Date()); + picking.setCreateDeptId(LoginHelper.getDeptId()); materialPickingMapper.insert(picking); materialPickingInfoMapper.insertBatch( pickingInfoList @@ -314,11 +319,12 @@ public class ErpMaterialCheckServiceImpl implements IErpMaterialCheckService { record.setInfoId(item.getId()); record.setMaterialId(item.getMaterialId()); record.setWarehouseId(warehouse.getId()); + record.setVendorId(item.getVendorId()); record.setDeptId(warehouse.getDeptId()); record.setNumber(item.getCollectNumber()); record.setPrice(item.getPrice()); record.setMoney(item.getMoney()); - record.setType(InventoryType.putaway.getCode()); + record.setType(InventoryType.picking.getCode()); return record; }).collect(Collectors.toList()) ); diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialInventoryRecordServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialInventoryRecordServiceImpl.java index a7ddeee..173aee3 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialInventoryRecordServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialInventoryRecordServiceImpl.java @@ -101,7 +101,7 @@ public class ErpMaterialInventoryRecordServiceImpl implements IErpMaterialInvent */ @Override public List queryListByMaterialId(ErpMaterialInventoryRecordBo bo) { - return baseMapper.queryListByWarehouseIdAndMaterialId(bo.getWarehouseId(), bo.getMaterialId(), bo.getType()); + return baseMapper.queryListByWarehouseIdAndMaterialId(bo.getWarehouseId(), bo.getVendorId(), bo.getMaterialId(), bo.getType()); } private LambdaQueryWrapper buildQueryWrapper(ErpMaterialInventoryRecordBo bo) { diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialPickingServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialPickingServiceImpl.java index fd724a1..e870b28 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialPickingServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpMaterialPickingServiceImpl.java @@ -104,7 +104,10 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService LambdaQueryWrapper putawayInfoLambdaQueryWrapper = Wrappers.lambdaQuery(); putawayInfoLambdaQueryWrapper.eq(ErpMaterialPutawayInfo::getMaterialId, infoVo.getMaterialId()); List putawayInfoVos = putawayInfoMapper.selectVoList(putawayInfoLambdaQueryWrapper); - Set priceSet = putawayInfoVos.stream().map(ErpMaterialPutawayInfoVo::getPutawayPrice).collect(Collectors.toSet()); + Set priceSet = putawayInfoVos.stream() + .map(ErpMaterialPutawayInfoVo::getPutawayPrice) + .filter(Objects::nonNull) // 排除 null 值 + .collect(Collectors.toSet()); infoVo.setPriceList(priceSet); } pickingVo.setPickingInfoList(infoVoList); diff --git a/maintain-business/src/main/resources/mapper/ErpMaterialInventoryRecordMapper.xml b/maintain-business/src/main/resources/mapper/ErpMaterialInventoryRecordMapper.xml index 8b21b5f..30dd083 100644 --- a/maintain-business/src/main/resources/mapper/ErpMaterialInventoryRecordMapper.xml +++ b/maintain-business/src/main/resources/mapper/ErpMaterialInventoryRecordMapper.xml @@ -64,22 +64,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE type = '1' GROUP BY warehouse_id, material_id, vendor_id) put ON r.warehouse_id = put.warehouse_id AND r.material_id = put.material_id AND r.vendor_id = put.vendor_id - LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS retNumber + LEFT JOIN(SELECT warehouse_id, vendor_id, material_id, SUM(number) AS retNumber FROM erp_material_inventory_record WHERE type = '2' - GROUP BY warehouse_id, material_id, vendor_id) ret + GROUP BY warehouse_id, vendor_id, material_id) ret ON r.warehouse_id = ret.warehouse_id AND r.material_id = ret.material_id AND r.vendor_id = ret.vendor_id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS picNumber FROM erp_material_inventory_record WHERE type = '3' - GROUP BY warehouse_id, material_id, vendor_id) pic + GROUP BY warehouse_id, vendor_id, material_id) pic ON r.warehouse_id = pic.warehouse_id AND r.material_id = pic.material_id AND r.vendor_id = pic.vendor_id LEFT JOIN(SELECT warehouse_id, material_id, vendor_id, SUM(number) AS bacNumber FROM erp_material_inventory_record WHERE type = '4' - GROUP BY warehouse_id, material_id, vendor_id) bac + GROUP BY warehouse_id, vendor_id, material_id) bac ON r.warehouse_id = bac.warehouse_id AND r.material_id = bac.material_id AND r.vendor_id = bac.vendor_id - GROUP BY r.warehouse_id, r.material_id, r.vendor_id + GROUP BY r.warehouse_id, r.vendor_id, r.material_id ) t @@ -175,7 +175,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN erp_material_picking_info pi ON r.info_id = pi.id LEFT JOIN erp_material_picking mp ON pi.picking_id = mp.id - WHERE r.warehouse_id = #{warehouseId} AND r.material_id = #{materialId} and r.type = #{type} + WHERE r.warehouse_id = #{warehouseId} AND r.vendor_id = #{vendorId} AND r.material_id = #{materialId} and r.type = #{type} - WHERE t.warehouse_id = #{warehouseId} AND t.material_id = #{materialId} + WHERE t.warehouse_id = #{warehouseId} AND t.vendor_id = #{vendorId} AND t.material_id = #{materialId} diff --git a/maintain-ui/src/views/business/materialCheck/index.vue b/maintain-ui/src/views/business/materialCheck/index.vue index 9da8359..5674cf6 100644 --- a/maintain-ui/src/views/business/materialCheck/index.vue +++ b/maintain-ui/src/views/business/materialCheck/index.vue @@ -117,7 +117,7 @@ size="mini" type="text" icon="el-icon-edit" - :disabled="scope.row.state === 1" + :disabled="scope.row.checkState === 2" @click="handleUpdate(scope.row)" v-hasPermi="['business:materialCheck:edit']" >修改 @@ -125,7 +125,7 @@ size="mini" type="text" icon="el-icon-delete" - :disabled="scope.row.state === 1" + :disabled="scope.row.checkState === 2" @click="handleDelete(scope.row)" v-hasPermi="['business:materialCheck:remove']" >删除 @@ -133,7 +133,7 @@ size="mini" type="text" icon="el-icon-check" - :disabled="scope.row.state === 1" + :disabled="scope.row.checkState === 2" @click="handleCheck(scope.row)" v-hasPermi="['business:materialCheck:check']" >结束盘点 @@ -246,15 +246,16 @@ - - 新增 - + + + 初始化 + @@ -263,7 +264,6 @@ - @@ -330,6 +330,7 @@ + @@ -338,7 +339,6 @@ - @@ -457,15 +457,16 @@ import { addMaterialCheck, delMaterialCheck, getMaterialCheck, - listMaterialCheck, materialCheck, + listMaterialCheck, + materialCheck, updateMaterialCheck } from '@/api/business/materialCheck' import Treeselect from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' -import { getCurrentDeptTree } from '@/api/business/unit' -import {listSiteWarehouse, listWarehouseAll} from '@/api/business/siteWarehouse' -import {customListAll, customListAllByWarehouseId, listMaterial} from '@/api/business/material' -import { formatDate } from '@/utils' +import {getCurrentDeptTree} from '@/api/business/unit' +import {listWarehouseAll} from '@/api/business/siteWarehouse' +import {customListAll, customListAllByWarehouseId} from '@/api/business/material' +import {formatDate} from '@/utils' export default { name: "MaterialCheck", @@ -605,13 +606,13 @@ export default { }, // 仓库变更 warehouseChange(warehouseId) { - this.infoLoading = true + // this.infoLoading = true this.form.checkInfoList = [] - customListAll({ ...this.queryMaterialParams, warehouseId}).then(response => { - this.materialList = response.rows; - this.materialTotal = response.total; - this.infoLoading = false - }); + // customListAll({ ...this.queryMaterialParams, warehouseId}).then(response => { + // this.materialList = response.rows; + // this.materialTotal = response.total; + // this.infoLoading = false + // }); }, // 盘点数量更改 checkNumChange() { @@ -747,8 +748,14 @@ export default { }, /* 移除按钮操作 */ handleRowDelete(row) { + console.log('row', row); this.form.checkInfoList = this.form.checkInfoList.filter(item =>{ - return item.materialId !== row.materialId + console.log('item', item) + return !( + item.warehouseId === row.warehouseId && + item.vendorId === row.vendorId && + item.materialId === row.materialId + ); }) }, // 取消按钮 diff --git a/maintain-ui/src/views/business/materialPicking/index.vue b/maintain-ui/src/views/business/materialPicking/index.vue index 3969b99..ce86aba 100644 --- a/maintain-ui/src/views/business/materialPicking/index.vue +++ b/maintain-ui/src/views/business/materialPicking/index.vue @@ -718,6 +718,8 @@ export default { this.form.carId = res.data.carId this.open2 = true; }) + }else { + this.open2 = true; } }); }, diff --git a/maintain-ui/src/views/business/materialReturns/index.vue b/maintain-ui/src/views/business/materialReturns/index.vue index 2f6c38f..3054c08 100644 --- a/maintain-ui/src/views/business/materialReturns/index.vue +++ b/maintain-ui/src/views/business/materialReturns/index.vue @@ -242,7 +242,7 @@ @@ -511,6 +511,17 @@ export default { if (valid) { this.buttonLoading = true; this.form.returnsInfoBoList = this.materialList + let isTrue = false; + this.form.returnsInfoBoList.forEach(item => { + if (item.returnsNumber < 1) { + isTrue = true; + } + }) + if (isTrue) { + this.$modal.msgError('退货数量不能小于1') + this.buttonLoading = false; + return + } if (this.form.id != null) { updateMaterialReturns(this.form).then(response => { this.$modal.msgSuccess("修改成功"); diff --git a/maintain-ui/src/views/business/materialStock/index.vue b/maintain-ui/src/views/business/materialStock/index.vue index ee6ddd9..2c546cd 100644 --- a/maintain-ui/src/views/business/materialStock/index.vue +++ b/maintain-ui/src/views/business/materialStock/index.vue @@ -272,34 +272,34 @@ export default { /** 修改按钮操作 */ handleUpdate(row) { this.open = true; - this.title = `物资【${row.materialName}】库存记录`; - let {warehouseId, materialId, type} = row - this.getPutawayInfoList(warehouseId, materialId) - this.getReturnsInfoList(warehouseId, materialId) - this.getPickingInfoList(warehouseId, materialId) - this.getBackInfoList(warehouseId, materialId) + this.title = `【${row.warehouseName}】【${row.vendorName}】【${row.materialName}】库存记录`; + let {warehouseId, vendorId, materialId, type} = row + this.getPutawayInfoList(warehouseId, vendorId, materialId) + this.getReturnsInfoList(warehouseId, vendorId, materialId) + this.getPickingInfoList(warehouseId, vendorId, materialId) + this.getBackInfoList(warehouseId, vendorId, materialId) }, /** 查询物料入库明细列表 */ - getPutawayInfoList(warehouseId, materialId) { - listByMaterialId({warehouseId, materialId, type: 1}).then(response => { + getPutawayInfoList(warehouseId, vendorId, materialId) { + listByMaterialId({warehouseId, vendorId, materialId, type: 1}).then(response => { this.materialPutawayInfoList = response.data; }); }, /** 查询物料退货明细列表 */ - getReturnsInfoList(warehouseId, materialId) { - listByMaterialId({warehouseId, materialId, type: 2}).then(response => { + getReturnsInfoList(warehouseId, vendorId, materialId) { + listByMaterialId({warehouseId, vendorId, materialId, type: 2}).then(response => { this.materialReturnsInfoList = response.data; }); }, /** 查询物料出库列表 */ - getPickingInfoList(warehouseId, materialId) { - listByMaterialId({warehouseId, materialId, type: 3}).then(response => { + getPickingInfoList(warehouseId, vendorId, materialId) { + listByMaterialId({warehouseId, vendorId, materialId, type: 3}).then(response => { this.materialPickingInfoList = response.data; }); }, /** 查询物料退料列表 */ - getBackInfoList(warehouseId, materialId) { - listByMaterialId({warehouseId, materialId, type: 4}).then(response => { + getBackInfoList(warehouseId, vendorId, materialId) { + listByMaterialId({warehouseId, vendorId, materialId, type: 4}).then(response => { this.materialBackInfoList = response.data; }); }, diff --git a/maintain-ui/src/views/business/settlementMaterial/info/index2.vue b/maintain-ui/src/views/business/settlementMaterial/info/index2.vue index 7e934b2..0877226 100644 --- a/maintain-ui/src/views/business/settlementMaterial/info/index2.vue +++ b/maintain-ui/src/views/business/settlementMaterial/info/index2.vue @@ -203,8 +203,8 @@