Browse Source

1.箱量利润统计增加判断
2.OW-用箱费,超期费相关接口调试及修改
3.增加撤销费用明细接口

纪新园 5 months ago
parent
commit
c886291f47

+ 8 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java

@@ -383,6 +383,14 @@ public class TradingBoxController extends BladeController {
 	}
 
 	/**
+	 * 撤销合并生成费用明细
+	 */
+	@PostMapping("/revokeMergeGenerateCost")
+	public R revokeMergeGenerateCost(@Valid @RequestBody TradingBox tradingBox) {
+		return tradingBoxService.revokeMergeGenerateCost(tradingBox);
+	}
+
+	/**
 	 * 批量修改pod还箱堆存
 	 */
 	@PostMapping("/batchUpdatePodStation")

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/ITradingBoxService.java

@@ -78,4 +78,6 @@ public interface ITradingBoxService extends IService<TradingBox> {
 	R revokeCountPerDiem(TradingBox tradingBox);
 
 	R mergeGenerateCost(TradingBox tradingBox);
+
+	R revokeMergeGenerateCost(TradingBox tradingBox);
 }

+ 85 - 11
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java

@@ -26,7 +26,6 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.los.Util.BoxNumUtils;
 import org.springblade.los.Util.CurrencyUtils;
-import org.springblade.los.Util.MagicValues;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.cur.entity.BCurExrate;
@@ -2756,9 +2755,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			feeCenterItems.setAccountYear(year);
 			feeCenterItems.setAccountMonth(month);
 			feeCenterItems.setAccountDay(day);
-			feeCenterItems.setCorpId(tradingBox.getPurchaseCompanyId());
-			feeCenterItems.setCorpCnName(tradingBox.getPurchaseCompanyName());
-			feeCenterItems.setCorpEnName(tradingBox.getPurchaseCompanyName());
+			feeCenterItems.setCorpId(detail.getPurchaseCompanyId());
+			feeCenterItems.setCorpCnName(detail.getPurchaseCompanyName());
+			feeCenterItems.setCorpEnName(detail.getPurchaseCompanyName());
 			feeCenterItems.setPolId(tradingBox.getPolId());
 			feeCenterItems.setPolCode(tradingBox.getPolCode());
 			feeCenterItems.setPolCnName(tradingBox.getPolCname());
@@ -2882,10 +2881,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		tradingBoxFeesLambdaQueryWrapper.eq(FeeCenterItems::getIsDeleted, 0)
 			.eq(FeeCenterItems::getPid, tradingBox.getId())
 			.eq(FeeCenterItems::getTenantId, AuthUtil.getTenantId())
-			.eq(FeeCenterItems::getFeeCode, "BOX-ZJ")
+			.eq(FeeCenterItems::getFeeCode, "PerDiem")
 			.orderByDesc(FeeCenterItems::getCreateTime);
-		List<FeeCenterItems> feeCenterItemsList = feeCenterItemsService.list(tradingBoxFeesLambdaQueryWrapper);
-		List<FeeCenterItems> feeCenterItems = feeCenterItemsList.stream().filter(e -> e.getFeeCode().equals("BOX-ZJ")).collect(Collectors.toList());
+		List<FeeCenterItems> feeCenterItems = feeCenterItemsService.list(tradingBoxFeesLambdaQueryWrapper);
 		List<TradingBoxItem> itemList = new ArrayList<>();
 		for (TradingBoxItem item : tradingBoxItemList) {
 			if (ObjectUtils.isNull(item.getRentStartDate())) {
@@ -2931,10 +2929,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			.eq(FeeCenter::getIsDeleted, 0)
 			.eq(FeeCenter::getPid, detail.getId()));
 		List<FeeCenter> feeCenterList = new ArrayList<>();
-		List<String> boxCodeList = tradingBox.getFeeCenterItemsList().stream().map(FeeCenterItems::getCntrNo).filter(Objects::nonNull)
+		List<String> boxCodeList = tradingBox.getFeeCenterItemsList().stream().map(FeeCenterItems::getUnitNo).filter(Objects::nonNull)
 			.distinct().collect(Collectors.toList());
 		for (String item : boxCodeList) {
-			FeeCenterItems centerItems = tradingBox.getFeeCenterItemsList().stream().filter(e -> e.getCntrNo().equals(item))
+			FeeCenterItems centerItems = tradingBox.getFeeCenterItemsList().stream().filter(e -> e.getUnitNo().equals(item))
 				.collect(Collectors.toList()).get(0);
 			FeeCenter feeCenter = new FeeCenter();
 			feeCenter.setBillType("箱东");
@@ -2960,9 +2958,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			feeCenter.setStorageDate(centerItems.getStorageDate());
 			feeCenter.setDays(centerItems.getDays());
 			feeCenter.setExrate(centerItems.getExrate());
-			feeCenter.setAmount(centerItems.getAmount());
+			feeCenter.setPrice(tradingBox.getFeeCenterItemsList().stream().filter(e -> e.getUnitNo().equals(item))
+				.map(FeeCenterItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			feeCenter.setAmount(feeCenter.getPrice());
 			feeCenter.setAmountLoc(centerItems.getAmount().multiply(feeCenter.getExrate()));
-			feeCenter.setPrice(centerItems.getAmount());
 			feeCenter.setRemarks(centerItems.getRemarks());
 			feeCenter.setQuantity(new BigDecimal("1"));
 			feeCenter.setOutboundDate(tradingBox.getRentDate());
@@ -3049,4 +3048,79 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		return R.data(tradingBox);
 	}
 
+	@Override
+	public R revokeMergeGenerateCost(TradingBox tradingBox) {
+		if (tradingBox.getId() == null || ObjectUtils.isNull(tradingBox.getFeeCenterItemsList()) || tradingBox.getFeeCenterItemsList().isEmpty()) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		TradingBox detail = baseMapper.selectById(tradingBox.getId());
+		List<Long> idList = tradingBox.getFeeCenterItemsList().stream().map(FeeCenterItems::getFeeCenterId).distinct().collect(Collectors.toList());
+		List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, detail.getId())
+			.in(FeeCenter::getId, idList));
+		if (feeCenters.isEmpty()) {
+			throw new RuntimeException("未查到费用明细");
+		}
+		feeCenterService.removeByIds(feeCenters.stream().map(FeeCenter::getId).collect(Collectors.toList()));
+		//费用数据
+		BigDecimal amountD = new BigDecimal("0.00");
+		BigDecimal amountC = new BigDecimal("0.00");
+		BigDecimal amountDUsd = new BigDecimal("0.00");
+		BigDecimal amountCUsd = new BigDecimal("0.00");
+		BigDecimal amountDrLoc = new BigDecimal("0.00");
+		BigDecimal amountCrLoc = new BigDecimal("0.00");
+		String exrateType = currencyUtils.standardCurrency(AuthUtil.getDeptId());
+		List<BCurExrate> curExrateList = currencyUtils.obtainRate(new Date(), "1", AuthUtil.getDeptId());
+		for (FeeCenter item : feeCenters) {
+			item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+			if (exrateType.equals(item.getCurCode())) {
+				if ("D".equals(item.getDc())) {
+					amountD = amountD.add(item.getAmount());
+					amountDrLoc = amountDrLoc.add(item.getAmount());
+				} else {
+					amountC = amountC.add(item.getAmount());
+					amountCrLoc = amountCrLoc.add(item.getAmount());
+				}
+			} else {
+				if ("D".equals(item.getDc())) {
+					amountDUsd = amountDUsd.add(item.getAmount());
+					amountDrLoc = amountDrLoc.add(item.getAmountLoc());
+				} else {
+					amountCUsd = amountCUsd.add(item.getAmount());
+					amountCrLoc = amountCrLoc.add(item.getAmountLoc());
+				}
+			}
+		}
+		detail.setAmountD(detail.getAmountD().subtract(amountD));
+		detail.setAmountDUsd(detail.getAmountDUsd().subtract(amountDUsd));
+		detail.setTotalAmountD(detail.getTotalAmountD().subtract(amountDrLoc));
+		detail.setAmountC(detail.getAmountC().subtract(amountC));
+		detail.setAmountCUsd(detail.getAmountCUsd().subtract(amountCUsd));
+		detail.setTotalAmountC(detail.getTotalAmountC().subtract(amountCrLoc));
+		detail.setProfit(detail.getAmountD().subtract(detail.getAmountC()));
+		detail.setProfitUsd(detail.getAmountDUsd().subtract(detail.getAmountCUsd()));
+		detail.setTotalProfit(detail.getTotalAmountD().subtract(detail.getTotalAmountC()));
+		baseMapper.updateById(detail);
+		List<FeeCenterItems> feeCenterItemsList = new ArrayList<>();
+		List<FeeCenterItems> feeCenterItems = feeCenterItemsService.list(new LambdaQueryWrapper<FeeCenterItems>()
+			.eq(FeeCenterItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenterItems::getIsDeleted, 0)
+			.in(FeeCenterItems::getFeeCenterId, idList)
+			.eq(FeeCenterItems::getWhetherGenerateCost, "1"));
+		for (FeeCenterItems centerItems : feeCenterItems) {
+			centerItems.setUpdateTime(new Date());
+			centerItems.setUpdateUserName(AuthUtil.getUserName());
+			centerItems.setUpdateUser(AuthUtil.getUserId());
+			centerItems.setWhetherGenerateCost("0");
+			centerItems.setFeeCenterId(0L);
+			feeCenterItemsList.add(centerItems);
+		}
+		if (!feeCenterItemsList.isEmpty()) {
+			feeCenterItemsService.updateBatchById(feeCenterItemsList);
+		}
+		return R.data(tradingBox);
+	}
+
 }

+ 7 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/impl/UpdateServiceImpl.java

@@ -996,6 +996,9 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 				try {
 					Date date = sdf.parse(item.getFieldValueNew());
 					fieldId.set(feeCenter, date);
+					if ("etd,eta".contains(item.getField())){
+						feeCenter.setBillDate(date);
+					}
 				} catch (ParseException e) {
 					e.printStackTrace();
 				}
@@ -1179,6 +1182,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 				try {
 					Date date = sdf.parse(item.getFieldValueNew());
 					fieldId.set(accBills, date);
+					if ("etd,eta".contains(item.getField())){
+						accBills.setBillDate(date);
+						accBills.setBusinessDate(date);
+					}
 				} catch (ParseException e) {
 					e.printStackTrace();
 				}

+ 12 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -917,6 +917,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 	public R<IPage<BoxNumberProfitExcel>> boxNumberProfitStatistics(IPage<BoxNumberProfitExcel> page, BoxNumberProfitQ boxNumberProfit) {
 		boxNumberProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			if (ObjectUtils.isNull(boxNumberProfit.getBillType())){
+				throw new RuntimeException("单据类型不能为空");
+			}
 			boxNumberProfit.setBranchId(AuthUtil.getDeptId());
 			if (!AuthUtil.getUserRole().contains("secondaryAdmin") && !AuthUtil.getUserRole().contains("财务")) {
 				if (AuthUtil.getUserRole().contains("业务员")) {
@@ -979,6 +982,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 	public R boxNumberProfitStatisticsSum(BoxNumberProfitQ boxNumberProfit) {
 		boxNumberProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			if (ObjectUtils.isNull(boxNumberProfit.getBillType())){
+				throw new RuntimeException("单据类型不能为空");
+			}
 			boxNumberProfit.setBranchId(AuthUtil.getDeptId());
 			if (!AuthUtil.getUserRole().contains("secondaryAdmin") && !AuthUtil.getUserRole().contains("财务")) {
 				if (AuthUtil.getUserRole().contains("业务员")) {
@@ -1081,6 +1087,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 	public List<BoxNumberProfitExcel> boxNumberProfitStatisticsList(BoxNumberProfitQ boxNumberProfit) {
 		boxNumberProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			if (ObjectUtils.isNull(boxNumberProfit.getBillType())){
+				throw new RuntimeException("单据类型不能为空");
+			}
 			boxNumberProfit.setBranchId(AuthUtil.getDeptId());
 			if (!AuthUtil.getUserRole().contains("secondaryAdmin") && !AuthUtil.getUserRole().contains("财务")) {
 				if (AuthUtil.getUserRole().contains("业务员")) {
@@ -1143,6 +1152,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 	public R boxNumberProfitStatisticsChart(BoxNumberProfitQ boxNumberProfit) {
 		boxNumberProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			if (ObjectUtils.isNull(boxNumberProfit.getBillType())){
+				throw new RuntimeException("单据类型不能为空");
+			}
 			boxNumberProfit.setBranchId(AuthUtil.getDeptId());
 			if (!AuthUtil.getUserRole().contains("secondaryAdmin") && !AuthUtil.getUserRole().contains("财务")) {
 				if (AuthUtil.getUserRole().contains("业务员")) {