Commit 46475c29 张少辉

1.库存缺料信息优化

2.过期报表增加查询
1 个父辈 03af62cc
...@@ -158,7 +158,7 @@ public class ReelConsumptionController { ...@@ -158,7 +158,7 @@ public class ReelConsumptionController {
if (cell == null){ if (cell == null){
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"});
} }
String value = cell.getStringCellValue(); String value = getCellValueAsString(cell);
if (StringUtils.isEmpty(value)) { if (StringUtils.isEmpty(value)) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"替代料分组"});
} }
...@@ -296,7 +296,7 @@ public class ReelConsumptionController { ...@@ -296,7 +296,7 @@ public class ReelConsumptionController {
} else { } else {
ReelConsumption reelConsumption = reelConsumptionManager.get(id); ReelConsumption reelConsumption = reelConsumptionManager.get(id);
if (reelConsumption != null) { if (reelConsumption != null) {
dto.setPartNumber(reelConsumption.getId()); dto.setPartNumber(reelConsumption.getPartNumber());
dto.setId(reelConsumption.getId()); dto.setId(reelConsumption.getId());
dto.setReplaceGroup(reelConsumption.getReplaceGroup()); dto.setReplaceGroup(reelConsumption.getReplaceGroup());
Map<String, ReelConsumptionInventory> oldInventoryMap = reelConsumption.getInventoryMap(); Map<String, ReelConsumptionInventory> oldInventoryMap = reelConsumption.getInventoryMap();
...@@ -508,4 +508,34 @@ public class ReelConsumptionController { ...@@ -508,4 +508,34 @@ public class ReelConsumptionController {
} }
FileUtil.downloadExcel(headerList, datas, response); 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 { ...@@ -229,7 +229,27 @@ public class InnerReportController {
@AnonymousAccess @AnonymousAccess
public PageData getExpire(BcQuery query, Pageable pageable) { public PageData getExpire(BcQuery query, Pageable pageable) {
Query q = QueryHelp.getQuery(query); 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); PageData<StoragePos> pageData = storagePosManager.findByPage(q, pageable);
List<BCExpire> expireList = getBCExpire(pageData.getContent()); List<BCExpire> expireList = getBCExpire(pageData.getContent());
return new PageData(expireList, pageData.getTotalElements()); return new PageData(expireList, pageData.getTotalElements());
...@@ -366,11 +386,19 @@ public class InnerReportController { ...@@ -366,11 +386,19 @@ public class InnerReportController {
BeanUtils.copyProperties(barcode, expire); BeanUtils.copyProperties(barcode, expire);
expire.setPlant(""); expire.setPlant("");
expire.setFactory(""); expire.setFactory("");
if (expire.getExpireDate() != null) {
expire.setExpireDays(ExpireDateUtil.getExpireDays(expire.getExpireDate()));
}
expire.setReelAmount(1); expire.setReelAmount(1);
expire.setPosName(dataCache.getStorageById(storagePos.getStorageId()).getName() + "[" + storagePos.getPosName() + "]"); 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); expireList.add(expire);
} }
return expireList; return expireList;
......
...@@ -230,14 +230,14 @@ public class TowerInventoryController { ...@@ -230,14 +230,14 @@ public class TowerInventoryController {
count = count + allPartNumberInventory.getOrDefault(replacePartNumber, 0); count = count + allPartNumberInventory.getOrDefault(replacePartNumber, 0);
} }
towerInventory.setCurrentInventory(count); towerInventory.setCurrentInventory(allPartNumberInventory.getOrDefault(towerInventory.getPartNumber(), 0));
// 缺料计算 // 缺料计算
if (minNeedInventory == 0) { if (minNeedInventory == 0) {
towerInventory.setShortageDisks(0); towerInventory.setShortageDisks(0);
towerInventory.setShortagePercentage("0%"); towerInventory.setShortagePercentage("0%");
} else { } else {
int shortageDisks = Math.max(0, minNeedInventory - count); int shortageDisks = minNeedInventory - count;
towerInventory.setShortageDisks(shortageDisks); towerInventory.setShortageDisks(shortageDisks);
double percentage = (double) shortageDisks / minNeedInventory * 100; double percentage = (double) shortageDisks / minNeedInventory * 100;
......
...@@ -43,4 +43,6 @@ public class BcQuery { ...@@ -43,4 +43,6 @@ public class BcQuery {
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate") @QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> updateDate; private BetweenData<Date> updateDate;
private String expireStatus;
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!