Commit 46475c29 张少辉

1.库存缺料信息优化

2.过期报表增加查询
1 个父辈 03af62cc
......@@ -158,7 +158,7 @@ public class ReelConsumptionController {
if (cell == null){
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"});
}
String value = cell.getStringCellValue();
String value = getCellValueAsString(cell);
if (StringUtils.isEmpty(value)) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"});
}
......@@ -296,7 +296,7 @@ public class ReelConsumptionController {
} else {
ReelConsumption reelConsumption = reelConsumptionManager.get(id);
if (reelConsumption != null) {
dto.setPartNumber(reelConsumption.getId());
dto.setPartNumber(reelConsumption.getPartNumber());
dto.setId(reelConsumption.getId());
dto.setReplaceGroup(reelConsumption.getReplaceGroup());
Map<String, ReelConsumptionInventory> oldInventoryMap = reelConsumption.getInventoryMap();
......@@ -508,4 +508,34 @@ public class ReelConsumptionController {
}
FileUtil.downloadExcel(headerList, datas, response);
}
/**
* 通用方法:将单元格值转换为字符串,适配所有单元格类型
* @param cell Excel单元格
* @return 字符串值,空单元格返回空字符串
*/
private String getCellValueAsString(Cell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue().trim(); // 去首尾空格
case NUMERIC:
// 处理数值型:纯数字转字符串(避免科学计数法)
double numericValue = cell.getNumericCellValue();
// 整数直接转成整数字符串,小数保留原始值
if (numericValue == Math.floor(numericValue)) {
return String.valueOf((long) numericValue);
} else {
return String.valueOf(numericValue);
}
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case BLANK:
return "";
default:
return "";
}
}
}
......@@ -229,7 +229,27 @@ public class InnerReportController {
@AnonymousAccess
public PageData getExpire(BcQuery query, Pageable pageable) {
Query q = QueryHelp.getQuery(query);
q.addCriteria(Criteria.where("barcode").exists(true)/*.and("barcode.expireDate").lt(new Date())*/);
Criteria c = Criteria.where("barcode").exists(true);
String expireStatus = query.getExpireStatus();
Date startDate, endDate;
if ("0".equals(expireStatus)) {
startDate = new Date();
endDate = DateUtil.offsetDay(startDate, 7);
c.and("barcode.expireDate").gte(startDate).lt(endDate);
} else if ("1".equals(expireStatus)) {
startDate = DateUtil.offsetDay(new Date(), 7);
endDate = DateUtil.offsetDay(new Date(), 30);
c.and("barcode.expireDate").gte(startDate).lt(endDate);
} else if ("2".equals(expireStatus)) {
List<Criteria> orCriList = new ArrayList<>();
orCriList.add(Criteria.where("barcode").exists(true).and("barcode.expireDate").gt(new Date()));
orCriList.add(Criteria.where("barcode").exists(true).and("barcode.expireDate").exists(false));
c.orOperator(orCriList);
} else if ("3".equals(expireStatus)) {
endDate = new Date();
c.and("barcode.expireDate").lt(endDate);
}
q.addCriteria(c);
PageData<StoragePos> pageData = storagePosManager.findByPage(q, pageable);
List<BCExpire> expireList = getBCExpire(pageData.getContent());
return new PageData(expireList, pageData.getTotalElements());
......@@ -366,11 +386,19 @@ public class InnerReportController {
BeanUtils.copyProperties(barcode, expire);
expire.setPlant("");
expire.setFactory("");
if (expire.getExpireDate() != null) {
expire.setExpireDays(ExpireDateUtil.getExpireDays(expire.getExpireDate()));
}
expire.setReelAmount(1);
expire.setPosName(dataCache.getStorageById(storagePos.getStorageId()).getName() + "[" + storagePos.getPosName() + "]");
if (barcode.getExpireDate() != null){
long days = ExpireDateUtil.getExpireDays(barcode.getExpireDate());
expire.setExpireDays(days);
String reelStatus = ExpireDateUtil.getReelStatus(days);
expire.setRemark(reelStatus);
} else {
expire.setExpireDays(0);
expire.setRemark("");
}
expireList.add(expire);
}
return expireList;
......
......@@ -230,14 +230,14 @@ public class TowerInventoryController {
count = count + allPartNumberInventory.getOrDefault(replacePartNumber, 0);
}
towerInventory.setCurrentInventory(count);
towerInventory.setCurrentInventory(allPartNumberInventory.getOrDefault(towerInventory.getPartNumber(), 0));
// 缺料计算
if (minNeedInventory == 0) {
towerInventory.setShortageDisks(0);
towerInventory.setShortagePercentage("0%");
} else {
int shortageDisks = Math.max(0, minNeedInventory - count);
int shortageDisks = minNeedInventory - count;
towerInventory.setShortageDisks(shortageDisks);
double percentage = (double) shortageDisks / minNeedInventory * 100;
......
......@@ -43,4 +43,6 @@ public class BcQuery {
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> updateDate;
private String expireStatus;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!