盘库前端页面为负数问题

This commit is contained in:
Ledo 2025-07-06 09:43:59 +08:00
parent 05d944ecd4
commit 4ffb6db0a2
12 changed files with 130 additions and 52 deletions

View File

@ -64,7 +64,7 @@ public class StorageCheckController {
@PreAuthorize("@ss.hasPermission('heli:storage-mat:create')")
public CommonResult<Long> createStorageCheckMat(@Valid @RequestBody List<StorageCheckMatSaveReqVO> createReqVO, @RequestParam("checkId") Long checkId) {
storageCheckMatService.deleteCheckMatList(checkId);
storageCheckMatService.deleteCheckMatListNew(checkId);
for (StorageCheckMatSaveReqVO item : createReqVO) {
item.setId(null);

View File

@ -88,5 +88,5 @@ public class StorageInventoryPageReqVO extends PageParam {
@Schema(description = "是否排除库存为0的物料")
private Integer noZero;
@Schema(description = "是否全部数据")
private boolean isALL;
private Integer selectAll;
}

View File

@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*;
import org.apache.ibatis.annotations.Param;
/**
* 盘点物料 Mapper
@ -35,10 +36,12 @@ public interface StorageCheckMatMapper extends BaseMapperX<StorageCheckMatDO> {
.orderByDesc(StorageCheckMatDO::getId));
}
int deleteCheckMatList(@Param("checkId") Long checkId);
default List<StorageCheckMatDO> selectListByCheckID(Long checkId) {
return selectList(new LambdaQueryWrapperX<StorageCheckMatDO>()
.eqIfPresent(StorageCheckMatDO::getCheckId, checkId)
.orderByDesc(StorageCheckMatDO::getId));
}
}
}

View File

@ -116,6 +116,7 @@ public interface StorageInventoryMapper extends BaseMapperX<StorageInventoryDO>
List<StorageInventoryDO> selectNowList(StorageInventoryPageReqVO reqVO);
List<StorageInventoryDO> selectNowListAll(StorageInventoryPageReqVO reqVO);
default PageResult<StorageInventoryDO> getStorageNowPageAll(StorageLogPageReqVO pageReqVO){
// MPJLambdaWrapper<MaterialDO> query = new MPJLambdaWrapper<>();
//

View File

@ -170,7 +170,7 @@ public class StorageCheckServiceImpl implements StorageCheckService {
//要同步设置
} else {
storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(storageMatDO.getStorageOkQty()));
storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty());
}
if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) {
@ -188,7 +188,7 @@ public class StorageCheckServiceImpl implements StorageCheckService {
wrapper.eq(StorageInventoryDO::getDeleted, 0);
StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper);
if (ObjectUtil.isNotEmpty(storageInventoryDO)) {
storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty()));
storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty());
}
if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) {
BigDecimal bigDecimal = new BigDecimal(storageMatDO.getOnemoney());

View File

@ -55,5 +55,5 @@ public interface StorageCheckMatService {
List<StorageCheckMatDO> getStorageMatListByCheckId(Long id);
Integer deleteCheckMatList(Long checkId);
Integer deleteCheckMatListNew(Long checkId);
}

View File

@ -146,4 +146,10 @@ public class StorageCheckMatServiceImpl implements StorageCheckMatService {
return storageCheckMatMapper.deleteByMap(columnMap);
}
@Override
public Integer deleteCheckMatListNew(Long checkId) {
//删除条件
return storageCheckMatMapper.deleteCheckMatList(checkId);
}
}

View File

@ -86,8 +86,8 @@ public class StorageInventoryServiceImpl implements StorageInventoryService {
return storageInventoryMapper.selectNoZero(queryReqVO);
}else{
// 筛选全部的实时库存数据包含未分配仓库的物料信息和已分配仓库的物料信息
if(queryReqVO.isALL()){
return storageInventoryMapper.selectNowList(queryReqVO);
if(queryReqVO.getSelectAll() == 1){
return storageInventoryMapper.selectNowListAll(queryReqVO);
}else{
return storageInventoryMapper.selectNowList(queryReqVO);
}

View File

@ -8,5 +8,7 @@
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
<delete id="deleteCheckMatList" parameterType="java.lang.Long" >
delete from wms_storage_check_mat where check_id = #{checkId}
</delete>
</mapper>

View File

@ -54,44 +54,6 @@
AND t.tenant_id = 2
GROUP BY
t.id
UNION ALL
-- 第二部分:查询不在库存中的物料
SELECT
mat.id as id,
mat.id as material_id,
mat.spec as boom_spec,
mat.unit as boom_unit,
mat.code AS mat_code,
mat.name AS mat_name,
(SELECT label FROM system_dict_data WHERE dict_type = 'heli_material_type' AND value = mat.material_type) AS mat_type,
mat.spec AS mat_spec,
(SELECT label FROM system_dict_data WHERE dict_type = 'heli_material_unit' AND value = mat.unit) AS mat_unit,
mat.brand AS mat_brand,
'' AS wh_id,
'' AS wh_name,
'' AS rg_id,
'' AS rg_name,
'' AS pn_id,
'' AS pn_name,
'' AS lot_no,
0 AS price,
mat.short_name as short_name,
0 AS mat_rest,
1 as exist
FROM
base_material AS mat
WHERE
mat.virtual_part = 'N'
AND mat.status = 1
AND NOT EXISTS (
SELECT 1 FROM wms_storage_inventory ml
WHERE ml.wh_id = #{whId}
AND ml.material_id = mat.id
AND ml.tenant_id = 2
)
AND mat.tenant_id = 2
) gh
<where>
<if test="matCode != null and matCode != ''">
@ -106,4 +68,104 @@
</where>
ORDER BY gh.mat_code
</select>
<select id="selectNowListAll"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory.vo.StorageInventoryPageReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO">
SELECT DISTINCT *
FROM (
-- 第一部分:查询当前库存中的物料
SELECT
t.material_id as id,
t.material_id as material_id,
t.boom_spec as boom_spec,
t.boom_unit as boom_unit,
m.name AS mat_name,
m.code AS mat_code,
d.label AS mat_type,
m.spec AS mat_spec,
m.brand AS mat_band,
d1.label AS mat_unit,
t.wh_id as wh_id,
t.rg_id as rg_id,
t.pn_id as pn_id,
w.wh_name AS wh_name,
r.rg_name AS rg_name,
p.pn_name AS pn_name,
t.lot_no as lot_no,
IFNULL(t.price, 0)as price,
t.short_name as short_name,
IFNULL(SUM(t.yard_amount), 0) AS mat_rest,
0 as exist
FROM
wms_storage_inventory t
LEFT JOIN base_material m ON m.id = t.material_id AND m.tenant_id = 2
LEFT JOIN system_dict_data d ON d.value = m.material_type AND d.dict_type = 'heli_material_type'
LEFT JOIN system_dict_data d1 ON d1.value = m.unit AND d1.dict_type = 'heli_material_unit'
LEFT JOIN wms_wh w ON w.id = t.wh_id AND w.tenant_id = 2
LEFT JOIN wms_rg r ON r.id = t.rg_id AND r.tenant_id = 2
LEFT JOIN wms_pn p ON p.id = t.pn_id AND p.tenant_id = 2
WHERE
t.deleted = 0
AND t.wh_id = #{whId}
AND m.virtual_part = 'N'
AND m.status = 1
AND t.tenant_id = 2
GROUP BY
t.id
UNION ALL
-- 第二部分:查询不在库存中的物料
SELECT
mat.id as id,
mat.id as material_id,
mat.spec as boom_spec,
mat.unit as boom_unit,
mat.code AS mat_code,
mat.name AS mat_name,
(SELECT label FROM system_dict_data WHERE dict_type = 'heli_material_type' AND value = mat.material_type) AS mat_type,
mat.spec AS mat_spec,
(SELECT label FROM system_dict_data WHERE dict_type = 'heli_material_unit' AND value = mat.unit) AS mat_unit,
mat.brand AS mat_brand,
'' AS wh_id,
'' AS wh_name,
'' AS rg_id,
'' AS rg_name,
'' AS pn_id,
'' AS pn_name,
'' AS lot_no,
0 AS price,
mat.short_name as short_name,
0 AS mat_rest,
1 as exist
FROM
base_material AS mat
WHERE
mat.virtual_part = 'N'
AND mat.status = 1
AND NOT EXISTS (
SELECT 1 FROM wms_storage_inventory ml
WHERE ml.wh_id = #{whId}
AND ml.material_id = mat.id
AND ml.tenant_id = 2
)
AND mat.tenant_id = 2
) gh
<where>
<if test="matCode != null and matCode != ''">
AND (gh.mat_code LIKE CONCAT('%', #{matCode}, '%') OR gh.mat_name LIKE CONCAT('%', #{matCode}, '%'))
</if>
<if test="matType != null and matType != ''">
AND gh.mat_type = #{matType}
</if>
<if test="matSpec != null and matSpec != ''">
AND gh.mat_spec LIKE CONCAT('%', #{matSpec}, '%')
</if>
<if test="matSpec != null and matSpec != ''">
AND gh.mat_spec LIKE CONCAT('%', #{matSpec}, '%')
</if>
</where>
ORDER BY gh.mat_code
</select>
</mapper>

View File

@ -135,7 +135,7 @@
<template #header> <span class="hl-table_header">*</span>盘点数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty" class="mb-0px!">
<el-input v-model="scope.row.storageOkQty" @change="(val)=>handleSub(val,scope)" :disabled="ctrView || ctrSave" />
<el-input-number v-model="scope.row.storageOkQty" :min="0" @change="(val)=>handleSub(val,scope)" :disabled="ctrView || ctrSave"/>
</el-form-item>
</template>
</el-table-column>
@ -151,7 +151,7 @@
<el-table-column prop="onemoney" label="单价" min-width="120" align="center">
<template #default="scope">
<el-form-item :prop="`${scope.$index}.onemoney`" class="mb-0px!" >
<el-input v-model="scope.row.onemoney" :disabled="ctrView || ctrSave" />
<el-input-number v-model="scope.row.onemoney" :min="0" :disabled="ctrView || ctrSave"/>
</el-form-item>
</template>
</el-table-column>
@ -733,7 +733,10 @@ const handleSub = async (pNum, scope) => {
//-------------------
// scope.row.matSub = Number(pNum) - Number(scope.row.matRest)
// console.log(typeof scope.row.matSub)
if(scope.row.storageOkQty < 0){
scope.row.storageOkQty = 0;
}
const matSubValue = Number(pNum) - Number(scope.row.matRest)
scope.row.matSub = matSubValue.toFixed(2) //
console.log(typeof scope.row.matSub)

View File

@ -94,7 +94,7 @@ const queryReqVo: any = reactive({
matCode: undefined,
matType: undefined,
matSpec: undefined,
isAll:false,
selectAll: 0,
})
/** 搜索按钮操作 */
const handleQuery = async () => {
@ -125,7 +125,7 @@ const getList = async () => {
}
const overallList = async () => {
// queryReqVo.pageSize = overallnum.value
queryReqVo.isAll = true
queryReqVo.selectAll = 1
const data1 = await SotrageInventoryApi.getStorageNowList(queryReqVo)
// queryReqVo.pageSize = 10
handleSelectionChange(data1)
@ -149,6 +149,7 @@ const open = async (noZero: number, whId?: number, isAll?: number) => {
getList()
chkboxEnable.value = isAll === 2 ? false : true
if (isAll == 2) {
queryReqVo.selectAll = 1
getList()
overallList()
}