|
@@ -35,6 +35,8 @@ import org.jeecg.modules.billet.billetOriginalProductRecord.dto.LengthCountQuery
|
|
|
import org.jeecg.modules.billet.billetOriginalProductRecord.entity.BilletOriginalProductRecord;
|
|
|
import org.jeecg.modules.billet.billetOriginalProductRecord.service.IBilletOriginalProductRecordService;
|
|
|
import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
+import org.jeecg.modules.billet.billetOriginalProductRecord.vo.BilletDetailsInfo;
|
|
|
+import org.jeecg.modules.billet.billetOriginalProductRecord.vo.BilletStatisticsDetail;
|
|
|
import org.jeecg.modules.billet.billetOriginalProductRecord.vo.LengthCountVO;
|
|
|
import org.jeecg.modules.billet.storageBill.entity.HeatsActualsInfo;
|
|
|
import org.jeecg.modules.billet.storageBill.entity.StorageBillPrint;
|
|
@@ -74,9 +76,6 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
|
@Autowired
|
|
|
private IBilletHotsendBaseService billetHotsendBaseService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private IHeatsActualsService heatsActualsService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private IBilletBasicInfoService billetBasicInfoService;
|
|
|
|
|
@@ -847,6 +846,702 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
|
return heatsActualsInfoList;
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation(value="钢坯棒一棒二棒三上若统计明细查询", notes="钢坯棒一棒二棒三上若统计明细查询")
|
|
|
+ @GetMapping(value = "/queryBilletStatisticsDetailByCcmNo")
|
|
|
+ public Result<List<BilletDetailsInfo>> queryBilletStatisticsDetailByCcmNo(@RequestParam(name="ccmNo") String ccmNo,
|
|
|
+ @RequestParam(name="changeShiftId", required = false) String changeShiftId,
|
|
|
+ @RequestParam(name="queryDate", required = false) String queryDate,
|
|
|
+ @RequestParam(name="queryType") String queryType) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ if (queryType.equals("1") && oConvertUtils.isNotEmpty(queryDate)){
|
|
|
+ // 查询棒一,指定日期的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubOneStatisticsByDate(ccmNo, queryDate);
|
|
|
+ }else if(queryType.equals("1") && oConvertUtils.isNotEmpty(changeShiftId)){
|
|
|
+ // 查询棒一,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubOneStatisticsByShiftId(ccmNo, changeShiftId);
|
|
|
+ }else if(queryType.equals("2") && oConvertUtils.isNotEmpty(queryDate)){
|
|
|
+ // 查询棒二,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubTwoStatisticsByDate(ccmNo, queryDate);
|
|
|
+ }else if(queryType.equals("2") && oConvertUtils.isNotEmpty(changeShiftId)){
|
|
|
+ // 查询棒二,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubTwoStatisticsByShiftId(ccmNo, changeShiftId);
|
|
|
+ }else if(queryType.equals("3") && oConvertUtils.isNotEmpty(queryDate)){
|
|
|
+ // 查询棒三,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubThreeStatisticsByDate(ccmNo, queryDate);
|
|
|
+ }else if(queryType.equals("3") && oConvertUtils.isNotEmpty(changeShiftId)){
|
|
|
+ // 查询棒三,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollClubThreeStatisticsByShiftId(ccmNo, changeShiftId);
|
|
|
+ }else if(queryType.equals("4") && oConvertUtils.isNotEmpty(queryDate)){
|
|
|
+ // 查询上若,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollOutShippStatisticsByDate(ccmNo, queryDate);
|
|
|
+ }else if(queryType.equals("4") && oConvertUtils.isNotEmpty(changeShiftId)){
|
|
|
+ // 查询上若,指定班次的统计明细
|
|
|
+ billetDetailsInfoList = queryRollOutShippStatisticsByShiftId(ccmNo, changeShiftId);
|
|
|
+ }
|
|
|
+ return Result.OK(billetDetailsInfoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 棒一统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param queryDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubOneStatisticsByDate(String ccmNo, String queryDate) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ String queryDateTime = queryDate + " 00:00:00";
|
|
|
+ Date date = DateUtils.parseDatetime(queryDateTime);
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(date);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(date);
|
|
|
+
|
|
|
+ // 通过铸机号、开始时间、结束时间查询
|
|
|
+ QueryWrapper<BilletOriginalProductRecord> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("ccm_no", ccmNo);
|
|
|
+ queryWrapper.between("create_time", startTime, endTime);
|
|
|
+ List<BilletOriginalProductRecord> billetOriginalProductRecordList = billetOriginalProductRecordService.list(queryWrapper);
|
|
|
+ if (oConvertUtils.listIsEmpty(billetOriginalProductRecordList)){
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, BilletStatisticsDetail> statisticsMap = new HashMap<>();
|
|
|
+
|
|
|
+ int grandTotalCount = 0;
|
|
|
+ double grandTotalWeight = 0.0d;
|
|
|
+
|
|
|
+ for (BilletOriginalProductRecord record : billetOriginalProductRecordList) {
|
|
|
+ String rollClubOneDetails = record.getRollClubOneDetails();
|
|
|
+ if (rollClubOneDetails != null && !rollClubOneDetails.isEmpty()) {
|
|
|
+ try {
|
|
|
+ JSONObject detailsJson = JSON.parseObject(rollClubOneDetails);
|
|
|
+ // 此处totalCount未被使用,可以考虑移除
|
|
|
+ int totalCount = detailsJson.getIntValue("directRollingTotalCount");
|
|
|
+ grandTotalCount += totalCount;
|
|
|
+
|
|
|
+ JSONObject lengthGroupCount = detailsJson.getJSONObject("lengthGroupCount");
|
|
|
+ if (lengthGroupCount != null) {
|
|
|
+ for (Map.Entry<String, Object> entry : lengthGroupCount.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ // 增加类型检查,避免潜在的空指针异常
|
|
|
+ int count = Integer.parseInt(entry.getValue().toString());
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ updateStatistics(statisticsMap, size, count, sizeValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("解析rollClubOneDetails失败: {}", rollClubOneDetails, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ grandTotalWeight = statisticsMap.values().stream()
|
|
|
+ .mapToDouble(BilletStatisticsDetail::getBlankOutput)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ if (!statisticsMap.isEmpty()) {
|
|
|
+ BilletDetailsInfo info = new BilletDetailsInfo();
|
|
|
+ info.setCcmNo(ccmNo);
|
|
|
+ info.setCounts(grandTotalCount);
|
|
|
+ info.setTotalWeight(grandTotalWeight);
|
|
|
+
|
|
|
+ List<BilletStatisticsDetail> detailsList = new ArrayList<>(statisticsMap.values());
|
|
|
+ info.setRollClubOneStatisticsList(detailsList);
|
|
|
+
|
|
|
+ billetDetailsInfoList.add(info);
|
|
|
+ }
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 棒一统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param changeShiftId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubOneStatisticsByShiftId(String ccmNo, String changeShiftId) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ // 根据铸机号、交班记录ID,获取交班记录中的班别、班次、创建时间
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getId, changeShiftId).eq(BilletHotsendChangeShift::getCcmNo, ccmNo);
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
+ log.info("{}{}", "查询棒一统计明细失败,交班记录为空!", ccmNo + "交班ID:" + changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ String shift = billetHotsendChangeShift.getShift();
|
|
|
+ String shiftGroup = billetHotsendChangeShift.getShiftGroup();
|
|
|
+
|
|
|
+ Date startTime = billetHotsendChangeShift.getCreateTime();
|
|
|
+ Date endTime;
|
|
|
+ if (oConvertUtils.isEmpty(billetHotsendChangeShift.getChangeShiftTime())) {
|
|
|
+ endTime = new Date();
|
|
|
+ } else {
|
|
|
+ endTime = billetHotsendChangeShift.getChangeShiftTime();
|
|
|
+ }
|
|
|
+ // 通过铸机号、开始时间、结束时间查询 钢坯原始生产记录
|
|
|
+ QueryWrapper<BilletOriginalProductRecord> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("ccm_no", ccmNo);
|
|
|
+ queryWrapper1.eq("shift", shift);
|
|
|
+ queryWrapper1.eq("shift_group", shiftGroup);
|
|
|
+ queryWrapper1.between("create_time", startTime, endTime);
|
|
|
+ List<BilletOriginalProductRecord> billetOriginalProductRecordList = billetOriginalProductRecordService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsEmpty(billetOriginalProductRecordList)){
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ Map<String, BilletStatisticsDetail> statisticsMap = new HashMap<>();
|
|
|
+
|
|
|
+ int grandTotalCount = 0;
|
|
|
+ double grandTotalWeight = 0.0d;
|
|
|
+
|
|
|
+ for (BilletOriginalProductRecord record : billetOriginalProductRecordList) {
|
|
|
+ String rollClubOneDetails = record.getRollClubOneDetails();
|
|
|
+ if (rollClubOneDetails != null && !rollClubOneDetails.isEmpty()) {
|
|
|
+ try {
|
|
|
+ JSONObject detailsJson = JSON.parseObject(rollClubOneDetails);
|
|
|
+ int totalCount = detailsJson.getIntValue("directRollingTotalCount");
|
|
|
+ grandTotalCount += totalCount;
|
|
|
+ JSONObject lengthGroupCount = detailsJson.getJSONObject("lengthGroupCount");
|
|
|
+ if (lengthGroupCount != null) {
|
|
|
+ for (Map.Entry<String, Object> entry : lengthGroupCount.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ // 增加类型检查,避免潜在的空指针异常
|
|
|
+ int count = Integer.parseInt(entry.getValue().toString());
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ updateStatistics(statisticsMap, size, count, sizeValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("解析rollClubOneDetails失败: {}", rollClubOneDetails, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ grandTotalWeight = statisticsMap.values().stream()
|
|
|
+ .mapToDouble(BilletStatisticsDetail::getBlankOutput)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ if (!statisticsMap.isEmpty()) {
|
|
|
+ BilletDetailsInfo info = new BilletDetailsInfo();
|
|
|
+ info.setCcmNo(ccmNo);
|
|
|
+ info.setCounts(grandTotalCount);
|
|
|
+ info.setTotalWeight(grandTotalWeight);
|
|
|
+ List<BilletStatisticsDetail> detailsList = new ArrayList<>(statisticsMap.values());
|
|
|
+ info.setRollClubOneStatisticsList(detailsList);
|
|
|
+ billetDetailsInfoList.add(info);
|
|
|
+ }
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 棒二统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param queryDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubTwoStatisticsByDate(String ccmNo, String queryDate) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ String queryDateTime = queryDate + " 00:00:00";
|
|
|
+ Date date = DateUtils.parseDatetime(queryDateTime);
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(date);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(date);
|
|
|
+
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "棒二")
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper);
|
|
|
+
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定日期棒二统计信息查询装运单打印表为空!", queryDate);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollClubTwoStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 棒二统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param changeShiftId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubTwoStatisticsByShiftId(String ccmNo, String changeShiftId) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ // 根据铸机号、交班记录ID,获取交班记录中的班别、班次、创建时间
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getId, changeShiftId).eq(BilletHotsendChangeShift::getCcmNo, ccmNo);
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
+ log.info("{}{}", "查询指定班次,棒二统计明细失败,交班记录为空!", ccmNo + "交班ID:" + changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ String shift = billetHotsendChangeShift.getShift();
|
|
|
+ String shiftGroup = billetHotsendChangeShift.getShiftGroup();
|
|
|
+
|
|
|
+ Date startTime = billetHotsendChangeShift.getCreateTime();
|
|
|
+ Date endTime;
|
|
|
+ if (oConvertUtils.isEmpty(billetHotsendChangeShift.getChangeShiftTime())) {
|
|
|
+ endTime = new Date();
|
|
|
+ } else {
|
|
|
+ endTime = billetHotsendChangeShift.getChangeShiftTime();
|
|
|
+ }
|
|
|
+ String shiftAndShiftGroup = shift + "/" + shiftGroup;
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "棒二")
|
|
|
+ .eq(StorageBillPrint::getClasses, shiftAndShiftGroup)
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定班次棒二统计信息查询装运单打印表为空!", changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollClubTwoStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 棒三统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param queryDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubThreeStatisticsByDate(String ccmNo, String queryDate) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ String queryDateTime = queryDate + " 00:00:00";
|
|
|
+ Date date = DateUtils.parseDatetime(queryDateTime);
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(date);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(date);
|
|
|
+
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "棒三")
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper);
|
|
|
+
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定日期棒三统计信息查询装运单打印表为空!", queryDate);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollClubThreeStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 棒三统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param changeShiftId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollClubThreeStatisticsByShiftId(String ccmNo, String changeShiftId) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ // 根据铸机号、交班记录ID,获取交班记录中的班别、班次、创建时间
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getId, changeShiftId).eq(BilletHotsendChangeShift::getCcmNo, ccmNo);
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
+ log.info("{}{}", "查询指定班次,棒三统计明细失败,交班记录为空!", ccmNo + "交班ID:" + changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ String shift = billetHotsendChangeShift.getShift();
|
|
|
+ String shiftGroup = billetHotsendChangeShift.getShiftGroup();
|
|
|
+
|
|
|
+ Date startTime = billetHotsendChangeShift.getCreateTime();
|
|
|
+ Date endTime;
|
|
|
+ if (oConvertUtils.isEmpty(billetHotsendChangeShift.getChangeShiftTime())) {
|
|
|
+ endTime = new Date();
|
|
|
+ } else {
|
|
|
+ endTime = billetHotsendChangeShift.getChangeShiftTime();
|
|
|
+ }
|
|
|
+ String shiftAndShiftGroup = shift + "/" + shiftGroup;
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "棒三")
|
|
|
+ .eq(StorageBillPrint::getClasses, shiftAndShiftGroup)
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定班次,棒三统计信息查询,装运单打印表为空!", changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollClubThreeStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 上若统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param queryDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollOutShippStatisticsByDate(String ccmNo, String queryDate) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ String queryDateTime = queryDate + " 00:00:00";
|
|
|
+ Date date = DateUtils.parseDatetime(queryDateTime);
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(date);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(date);
|
|
|
+
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "上若")
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper);
|
|
|
+
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定日期上若统计信息查询装运单打印表为空!", queryDate);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollOutShippStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 上若统计明细查询
|
|
|
+ * @param ccmNo
|
|
|
+ * @param changeShiftId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<BilletDetailsInfo> queryRollOutShippStatisticsByShiftId(String ccmNo, String changeShiftId) {
|
|
|
+ List<BilletDetailsInfo> billetDetailsInfoList = new ArrayList<>();
|
|
|
+ // 根据铸机号、交班记录ID,获取交班记录中的班别、班次、创建时间
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getId, changeShiftId).eq(BilletHotsendChangeShift::getCcmNo, ccmNo);
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
+ log.info("{}{}", "查询指定班次,上若统计明细失败,交班记录为空!", ccmNo + "交班ID:" + changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ String shift = billetHotsendChangeShift.getShift();
|
|
|
+ String shiftGroup = billetHotsendChangeShift.getShiftGroup();
|
|
|
+
|
|
|
+ Date startTime = billetHotsendChangeShift.getCreateTime();
|
|
|
+ Date endTime;
|
|
|
+ if (oConvertUtils.isEmpty(billetHotsendChangeShift.getChangeShiftTime())) {
|
|
|
+ endTime = new Date();
|
|
|
+ } else {
|
|
|
+ endTime = billetHotsendChangeShift.getChangeShiftTime();
|
|
|
+ }
|
|
|
+ String shiftAndShiftGroup = shift + "/" + shiftGroup;
|
|
|
+ // 根据铸机号、开始时间、结束时间查询查询装运单打印表
|
|
|
+ LambdaQueryWrapper<StorageBillPrint> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(StorageBillPrint::getCcmNo, ccmNo)
|
|
|
+ .eq(StorageBillPrint::getDestination, "上若")
|
|
|
+ .eq(StorageBillPrint::getClasses, shiftAndShiftGroup)
|
|
|
+ .between(StorageBillPrint::getArrivalTime, startTime, endTime)
|
|
|
+ .orderByDesc(StorageBillPrint::getArrivalTime);
|
|
|
+ List<StorageBillPrint> storageBillPrintList = storageBillPrintService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillPrintList)) {
|
|
|
+ log.info("{}{}", "指定班次,上若统计信息查询,装运单打印表为空!", changeShiftId);
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+ // 创建并初始化BilletDetailsInfo对象
|
|
|
+ BilletDetailsInfo billetDetailsInfo = new BilletDetailsInfo();
|
|
|
+ billetDetailsInfo.setCcmNo(ccmNo); // 设置铸机号
|
|
|
+
|
|
|
+ // 按定尺(size)分组统计
|
|
|
+ Map<String, List<StorageBillPrint>> sizeGroupMap = storageBillPrintList.stream()
|
|
|
+ .filter(item -> item.getSize() != null && item.getAmountTotal() != null)
|
|
|
+ .collect(Collectors.groupingBy(StorageBillPrint::getSize));
|
|
|
+
|
|
|
+ // 计算每个分组的统计结果
|
|
|
+ List<BilletStatisticsDetail> statisticsDetails = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<StorageBillPrint>> entry : sizeGroupMap.entrySet()) {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<StorageBillPrint> groupItems = entry.getValue();
|
|
|
+
|
|
|
+ // 计算总支数
|
|
|
+ Integer totalAmount = groupItems.stream()
|
|
|
+ .mapToInt(StorageBillPrint::getAmountTotal)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算总重量: (size/1000) * amountTotal * 0.2265,保留4位小数
|
|
|
+ double totalWeight = groupItems.stream()
|
|
|
+ .filter(item -> item.getAmountTotal() != null)
|
|
|
+ .mapToDouble(item -> {
|
|
|
+ try {
|
|
|
+ double sizeValue = Double.parseDouble(size);
|
|
|
+ return (sizeValue / 1000) * item.getAmountTotal() * 0.2265;
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ // 保留4位小数
|
|
|
+ totalWeight = Math.round(totalWeight * 10000.0) / 10000.0;
|
|
|
+
|
|
|
+ // 创建统计明细对象并添加到结果列表
|
|
|
+ BilletStatisticsDetail detail = new BilletStatisticsDetail(totalAmount, totalWeight, size);
|
|
|
+ statisticsDetails.add(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置统计结果到BilletDetailsInfo对象
|
|
|
+ billetDetailsInfo.setRollOutShippStatisticsList(statisticsDetails);
|
|
|
+
|
|
|
+ // 计算并设置总车次、总支数和总重量
|
|
|
+ billetDetailsInfo.setAllCarNum(storageBillPrintList.size()); // 总车次为记录数
|
|
|
+ billetDetailsInfo.setCounts(statisticsDetails.stream().mapToInt(BilletStatisticsDetail::getAmountTotal).sum());
|
|
|
+ billetDetailsInfo.setTotalWeight(statisticsDetails.stream().mapToDouble(BilletStatisticsDetail::getBlankOutput).sum());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ billetDetailsInfoList.add(billetDetailsInfo);
|
|
|
+
|
|
|
+ return billetDetailsInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 筛选指定流号的数据
|
|
|
* @param billetList 钢坯信息列表
|
|
@@ -921,4 +1616,22 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 提取的计算方法
|
|
|
+ private void updateStatistics(Map<String, BilletStatisticsDetail> statisticsMap,
|
|
|
+ String size, int count, double sizeValue) {
|
|
|
+ statisticsMap.compute(size, (k, v) -> {
|
|
|
+ // 计算weight
|
|
|
+ double localWeight = (sizeValue / 1000) * count * 0.2265;
|
|
|
+ localWeight = BigDecimal.valueOf(localWeight)
|
|
|
+ .setScale(4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+
|
|
|
+ BilletStatisticsDetail detail = v != null ? v :
|
|
|
+ new BilletStatisticsDetail(0, 0.0, size);
|
|
|
+ detail.setAmountTotal(detail.getAmountTotal() + count);
|
|
|
+ detail.setBlankOutput(detail.getBlankOutput() + localWeight);
|
|
|
+ return detail;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
}
|