fix(xzdstoragelog): 优化物料选择显示和价格类型处理

This commit is contained in:
zxy 2026-04-03 15:57:30 +08:00
parent 918c57e233
commit 35b3451a53
6 changed files with 34 additions and 27 deletions

View File

@ -1,13 +1,12 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.wmsstoragedetail.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import lombok.Data;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 新中大入出库单子 Response VO")
@Data
@ -30,6 +29,10 @@ public class WmsStorageDetailRespVO {
@ExcelProperty("物料编码")
private String matCode;
@Schema(description = "物料名称")
@ExcelProperty("物料名称")
private String matName;
@Schema(description = "库位", example = "李四")
@ExcelProperty("库位")
private String rgName;

View File

@ -1,13 +1,12 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.wmsstoragedetail;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.math.BigDecimal;
/**
* 新中大入出库单子 DO
@ -58,4 +57,6 @@ public class WmsStorageDetailDO extends BaseDO {
*/
private BigDecimal price;
private String matName;
}

View File

@ -67,7 +67,8 @@ public interface StorageLogMapper extends BaseMapperX<StorageLogDO> {
.orderByDesc(StorageLogDO::getId);
query
.notIn(StorageLogDO::getStockMode, 24, 14)
.ne(WarehouseDO::getWhName, "虚拟仓库")
// .notIn(StorageLogDO::getStockMode, 24, 14)
.like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogDO::getMatName, reqVO.getMatName())
.like(!StringUtils.isEmpty(reqVO.getMatCode()), MaterialDO::getCode, reqVO.getMatCode())
.eq(!StringUtils.isEmpty(reqVO.getStockType()), StorageLogDO::getStockType, reqVO.getStockType())

View File

@ -156,6 +156,7 @@ public class StorageLogServiceImpl implements StorageLogService {
}
for (StorageLogDO logDO : pageResult.getList()) {
LambdaQueryWrapper<MaterialDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MaterialDO::getStatus, 1);
queryWrapper.like(logDO.getMatName() != null, MaterialDO::getName, logDO.getMatName());
queryWrapper.like(logDO.getMatSpec() != null, MaterialDO::getSpec, logDO.getMatSpec());
List<MaterialDO> materialDOS = materialMapper.selectList(queryWrapper);
@ -426,10 +427,9 @@ public class StorageLogServiceImpl implements StorageLogService {
// 1|临时暂估价 价格类型是这样的 | 分割会有问题
groupMap.forEach((key, logs) -> {
String[] parts = key.split("/");
String priceType = parts[0];
String supplierName = parts[1]; // 1|临时暂估价 价格类型是这样的 | 分割会有问题
String[] parts = key.split("/", -1);
String priceType = parts[0].isEmpty() ? null : parts[0];
String supplierName = parts[1].isEmpty() ? null : parts[1];
createAndSaveStorage(logs, configDO, userId, now, 1, priceType, supplierName);
});
}
@ -461,6 +461,9 @@ public class StorageLogServiceImpl implements StorageLogService {
storageDO.setStockType(stockType);
storageDO.setBusiType(stockType == 1 ? configDO.getBusiTypeIn() : configDO.getBusiTypeOut());
storageDO.setWhName(configDO.getWhName());
if (stockType == 1){
storageDO.setPriceType(priceType);
}
// 生成订单号 X202604+3位流水号 001 002
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(XZD_STORAGE.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber() + 1);
@ -468,7 +471,6 @@ public class StorageLogServiceImpl implements StorageLogService {
storageDO.setStockNo(XZD_STORAGE.getCode(serialNumberDO.getSerialNumber().toString()));
storageDO.setBusiDate(LocalDate.now());
storageDO.setSupplierName(supplierName);
storageDO.setPriceType(priceType);
storageDO.setDeptName(configDO.getDeptName());
storageDO.setStatus(1);
storageDO.setStockTime(now);
@ -498,9 +500,12 @@ public class StorageLogServiceImpl implements StorageLogService {
detailDO.setXzdWmsId(storageDO.getId());
detailDO.setStockNo(storageDO.getStockNo());
detailDO.setMatCode(logDO.getMatCode());
detailDO.setMatName(logDO.getMatName());
detailDO.setRgName(configDO.getRgName());
detailDO.setStockNum(logDO.getStorageOkQty());
detailDO.setPrice(logDO.getPrice());
if (logDO.getStockType() == 1){
detailDO.setPrice(logDO.getPrice());
}
detailDO.setCreateTime(now);
detailDO.setUpdateTime(now);
detailDO.setCreator(userId);
@ -517,7 +522,7 @@ public class StorageLogServiceImpl implements StorageLogService {
}
private String buildPriceSupplierKey(String priceType, String supplierName) {
return priceType + "/" + supplierName;
return (priceType == null ? "" : priceType) + "/" + (supplierName == null ? "" : supplierName);
}

View File

@ -36,6 +36,7 @@
>
<el-table-column type="index" width="80" label="序号" align="center" />
<el-table-column label="物料编码" align="center" prop="matCode" min-width="120" />
<el-table-column label="物料名称" align="center" prop="matName" min-width="120" />
<el-table-column label="库位" align="center" prop="rgName" min-width="120" />
<el-table-column label="数量" align="center" prop="stockNum" min-width="100" />
<el-table-column label="单价" align="center" prop="price" min-width="100" />

View File

@ -176,7 +176,7 @@
<el-option
v-for="dict in scope.row.materialDOList"
:key="dict.id"
:label="dict.code + ' ' + dict.name"
:label="dict.code + ' ' + dict.name + ' ' + dict.spec"
:value="dict.id"
/>
</el-select>
@ -190,12 +190,8 @@
<el-table-column label="价格类型" align="center" prop="priceType" min-width="190">
<template #default="scope">
<el-select v-model="scope.row.priceType" placeholder="请选择" class="!w-full" clearable>
<el-option
v-for="item in getIntDictOptions(DICT_TYPE.HELI_PRICE_TYPE)"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-option label="1|临时暂估价" value="1|临时暂估价" />
<el-option label="3|实价" value="3|实价" />
</el-select>
</template>
</el-table-column>