盘库不生成单据

This commit is contained in:
Ledo 2025-07-05 22:46:22 +08:00
parent da6b435eeb
commit 05d944ecd4
3 changed files with 139 additions and 54 deletions

View File

@ -69,17 +69,18 @@ public class StorageCheckController {
item.setId(null);
double storageOkQty = Double.parseDouble(item.getStorageOkQty().toString());
double money = Double.parseDouble(item.getMoney().toString());
if (money != 0) {
BigDecimal moneyBD = new BigDecimal(money);
BigDecimal storageOkQtyBD = new BigDecimal(storageOkQty);
BigDecimal result = moneyBD.divide(storageOkQtyBD, 1, RoundingMode.HALF_UP);
item.setOnemoney(result.toString());
} else {
// 处理除数为零的情况例如设置一个默认值或返回一个错误
item.setOnemoney("0"); // 或者根据业务逻辑设置一个合适的值
}
// double money = Double.parseDouble(item.getMoney().toString());
//
// if (money != 0) {
// BigDecimal moneyBD = new BigDecimal(money);
// BigDecimal storageOkQtyBD = new BigDecimal(storageOkQty);
// BigDecimal result = moneyBD.divide(storageOkQtyBD, 1, RoundingMode.HALF_UP);
// item.setOnemoney(result.toString());
// } else {
// // 处理除数为零的情况例如设置一个默认值或返回一个错误
// item.setOnemoney("0"); // 或者根据业务逻辑设置一个合适的值
// }
// storageCheckMatService.createStorageCheckMat(item);

View File

@ -21,15 +21,18 @@ import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService
import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.print.DocFlavor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheck.StorageCheckDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
@ -135,19 +138,89 @@ public class StorageCheckServiceImpl implements StorageCheckService {
// 获取盘点单据物料信息
List<StorageCheckMatDO> storageCheckMats = storageCheckMatService.getStorageMatListByCheckId(checkId);
long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count();
long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count();
// long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count();
// long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count();
//20250705新逻辑
for (StorageCheckMatDO storageMatDO : storageCheckMats) {
BigDecimal dif = storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest());
if (dif.compareTo(BigDecimal.ZERO) > 0) {
//大于0 入库增加库额度
LambdaQueryWrapper<StorageInventoryDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId());
wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId());
wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId());
wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId());
wrapper.eq(StorageInventoryDO::getDeleted, 0);
StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper);
if (ObjectUtil.isEmpty(storageInventoryDO)) {
storageInventoryDO = new StorageInventoryDO();
storageInventoryDO.setMaterialId(storageMatDO.getMatId());
storageInventoryDO.setWhId(storageMatDO.getWhId());
storageInventoryDO.setRgId(storageMatDO.getRgId());
storageInventoryDO.setPnId(storageMatDO.getPnId());
storageInventoryDO.setYardAmount(storageMatDO.getStorageOkQty());
MaterialDO materialDO = materialMapper.selectById(storageMatDO.getMatId());
if (ObjectUtil.isNotEmpty(materialDO)) {
storageInventoryDO.setBoomUnit(materialDO.getUnit());
storageInventoryDO.setBoomName(materialDO.getName());
storageInventoryDO.setBoomSpec(materialDO.getSpec());
storageInventoryDO.setShortName(materialDO.getShortName());
storageInventoryDO.setBoomCode(materialDO.getCode());
}
if(hasStockIn>0){
// 库存类型为入库
saveStorage(storageCheckDO,1,2);
//要同步设置
} else {
storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().add(storageMatDO.getStorageOkQty()));
}
if(hasStockOut>0){
// 库存类型为出库
saveStorage(storageCheckDO,2,3);
if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) {
BigDecimal bigDecimal = new BigDecimal(storageMatDO.getOnemoney());
storageInventoryDO.setPrice(bigDecimal);
}
storageInventoryMapper.insertOrUpdate(storageInventoryDO);
} else {
//不然就是出库
LambdaQueryWrapper<StorageInventoryDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StorageInventoryDO::getWhId, storageMatDO.getWhId());
wrapper.eq(StorageInventoryDO::getMaterialId, storageMatDO.getMatId());
wrapper.eq(StorageInventoryDO::getRgId, storageMatDO.getRgId());
wrapper.eq(StorageInventoryDO::getPnId, storageMatDO.getPnId());
wrapper.eq(StorageInventoryDO::getDeleted, 0);
StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper);
if (ObjectUtil.isNotEmpty(storageInventoryDO)) {
storageInventoryDO.setYardAmount(storageInventoryDO.getYardAmount().subtract(storageMatDO.getStorageOkQty()));
}
if (storageMatDO.getOnemoney() != null && !storageMatDO.getOnemoney().trim().equals("")) {
BigDecimal bigDecimal = new BigDecimal(storageMatDO.getOnemoney());
storageInventoryDO.setPrice(bigDecimal);
}
storageInventoryMapper.insertOrUpdate(storageInventoryDO);
}
// 插入库存日志表
StorageLogDO storageLogDO = new StorageLogDO();
storageLogDO.setStockId(storageMatDO.getCheckId());
storageLogDO.setMatId(storageMatDO.getMatId());
storageLogDO.setWhId(storageMatDO.getWhId());
storageLogDO.setRgId(storageMatDO.getRgId());
storageLogDO.setPnId(storageMatDO.getPnId());
storageLogDO.setStorageOkQty(storageMatDO.getStorageOkQty().subtract(storageMatDO.getMatRest()));
storageLogDO.setLotNo(storageMatDO.getLotNo());
storageLogDO.setStatus(2);
storageLogMapper.insert(storageLogDO);
}
//同步插入日志
// if(hasStockIn>0){
// // 库存类型为入库
// saveStorage(storageCheckDO,1,2);
// }
// if(hasStockOut>0){
// // 库存类型为出库
// saveStorage(storageCheckDO,2,3);
// }
return true;
}
private void saveStorage(StorageCheckDO storageCheckDO, Integer stockType, Integer stockInType) {
LocalDateTime current = LocalDateTime.now();
@ -252,6 +325,7 @@ public class StorageCheckServiceImpl implements StorageCheckService {
}
}
}
private void saveStorageLog(StorageMatDO storageMatDO) {
// 插入库存日志表
StorageLogDO storageLogDO = new StorageLogDO();

View File

@ -140,15 +140,21 @@
</template>
</el-table-column>
<el-table-column prop="money" min-width="120" align="center" >
<!-- <el-table-column prop="money" min-width="120" align="center" >
<template #header> <span class="hl-table_header">*</span>金额</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.money`" :rules="subFormRules.money" class="mb-0px!" >
<el-input v-model="scope.row.money" :disabled="ctrView || ctrSave" />
</el-form-item>
</template>
</el-table-column> -->
<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-form-item>
</template>
</el-table-column>
<el-table-column prop="onemoney" label="单价" min-width="120" align="center"/>
@ -453,6 +459,10 @@ const getList = async (arrMat) => {
row.pnId = ''
row.matRest = 0
}
console.log(row.price)
if(row.price){
row.onemoney = row.price
}
formData.value.matItemDOList.push(row)
matCount = matCount + 1
}