Browse Source

2024年9月23日17:27:50

纪新园 1 year ago
parent
commit
429f9e85d0

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/Storage.java

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.los.trade.entity;
 package org.springblade.los.trade.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
@@ -24,6 +25,7 @@ import lombok.Data;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 /**
 /**
  * 贸易代理-仓库表实体类
  * 贸易代理-仓库表实体类
@@ -93,5 +95,8 @@ public class Storage implements Serializable {
 	@ApiModelProperty(value = "仓库名称")
 	@ApiModelProperty(value = "仓库名称")
 	private String cname;
 	private String cname;
 
 
+	@TableField(exist = false)
+	private List<StorageFeeItems> storageFeeItemsList;
+
 
 
 }
 }

+ 11 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/StorageFeeItems.java

@@ -105,11 +105,21 @@ public class StorageFeeItems implements Serializable {
 	@ApiModelProperty(value = "结束天数")
 	@ApiModelProperty(value = "结束天数")
 	private Integer enDays;
 	private Integer enDays;
 	/**
 	/**
+	 * 商品类别
+	 */
+	@ApiModelProperty(value = "商品类别")
+	private String goodsType;
+	/**
 	 * 单价
 	 * 单价
 	 */
 	 */
-	@ApiModelProperty(value = "单价")
+	@ApiModelProperty(value = "单价(收)")
 	private BigDecimal price;
 	private BigDecimal price;
 	/**
 	/**
+	 * 单价
+	 */
+	@ApiModelProperty(value = "单价(付)")
+	private BigDecimal priceC;
+	/**
 	 * 费用名称
 	 * 费用名称
 	 */
 	 */
 	@ApiModelProperty(value = "费用名称")
 	@ApiModelProperty(value = "费用名称")
@@ -120,5 +130,4 @@ public class StorageFeeItems implements Serializable {
 	@ApiModelProperty(value = "费用名称")
 	@ApiModelProperty(value = "费用名称")
 	private String feeName;
 	private String feeName;
 
 
-
 }
 }

+ 5 - 4
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
@@ -607,8 +606,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				measurement = measurement.add(details.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				measurement = measurement.add(details.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 
 
 			}
 			}
-		}
-		else if ("MH".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
+		} else if ("MH".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
 			Bills details = baseMapper.selectOne(new LambdaQueryWrapper<Bills>()
 			Bills details = baseMapper.selectOne(new LambdaQueryWrapper<Bills>()
 				.select(Bills::getAmountDr, Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd
 				.select(Bills::getAmountDr, Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd
 					, Bills::getAmountProfitUsd, Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc
 					, Bills::getAmountProfitUsd, Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc
@@ -2244,7 +2242,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FilesCenter::getIsDeleted, 0)
 			.eq(FilesCenter::getIsDeleted, 0)
 			.eq(FilesCenter::getPid, detail.getId()));
 			.eq(FilesCenter::getPid, detail.getId()));
-		if (!dispatchVehiclesList.isEmpty()) {
+		if (!filesCenterList.isEmpty()) {
 			detail.setFilesList(filesCenterList);
 			detail.setFilesList(filesCenterList);
 		} else {
 		} else {
 			detail.setFilesList(new ArrayList<>());
 			detail.setFilesList(new ArrayList<>());
@@ -2525,6 +2523,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					}
 					}
 				}
 				}
 				item.setPid(bills.getId());
 				item.setPid(bills.getId());
+				if (ObjectUtils.isNull(item.getQuantity())) {
+					item.setQuantity(1);
+				}
 				if (item.getCntrTypeCode().contains("20")) {
 				if (item.getCntrTypeCode().contains("20")) {
 					V20 += item.getQuantity();
 					V20 += item.getQuantity();
 				} else if (item.getCntrTypeCode().contains("45")) {
 				} else if (item.getCntrTypeCode().contains("45")) {

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/trade/controller/StorageController.java

@@ -59,7 +59,7 @@ public class StorageController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入storage")
 	@ApiOperation(value = "详情", notes = "传入storage")
 	public R<Storage> detail(Storage storage) {
 	public R<Storage> detail(Storage storage) {
-		Storage detail = storageService.getOne(Condition.getQueryWrapper(storage));
+		Storage detail = storageService.detail(storage);
 		return R.data(detail);
 		return R.data(detail);
 	}
 	}
 
 
@@ -133,7 +133,7 @@ public class StorageController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入storage")
 	@ApiOperation(value = "新增或修改", notes = "传入storage")
 	public R submit(@Valid @RequestBody Storage storage) {
 	public R submit(@Valid @RequestBody Storage storage) {
-		return R.status(storageService.saveOrUpdate(storage));
+		return storageService.submit(storage);
 	}
 	}
 
 
 
 

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/IStorageService.java

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.los.trade.service;
 package org.springblade.los.trade.service;
 
 
+import org.springblade.core.tool.api.R;
 import org.springblade.los.trade.entity.Storage;
 import org.springblade.los.trade.entity.Storage;
 import org.springblade.los.trade.vo.StorageVO;
 import org.springblade.los.trade.vo.StorageVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -38,4 +39,7 @@ public interface IStorageService extends IService<Storage> {
 	 */
 	 */
 	IPage<StorageVO> selectStoragePage(IPage<StorageVO> page, StorageVO storage);
 	IPage<StorageVO> selectStoragePage(IPage<StorageVO> page, StorageVO storage);
 
 
+    R submit(Storage storage);
+
+	Storage detail(Storage storage);
 }
 }

+ 75 - 41
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InOutStorageServiceImpl.java

@@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
@@ -38,13 +37,14 @@ import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
 import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
 import org.springblade.los.trade.entity.AgentItems;
 import org.springblade.los.trade.entity.AgentItems;
 import org.springblade.los.trade.entity.InOutStorage;
 import org.springblade.los.trade.entity.InOutStorage;
-import org.springblade.los.trade.entity.StorageFee;
+import org.springblade.los.trade.entity.Storage;
 import org.springblade.los.trade.entity.StorageFeeItems;
 import org.springblade.los.trade.entity.StorageFeeItems;
 import org.springblade.los.trade.mapper.AgentItemsMapper;
 import org.springblade.los.trade.mapper.AgentItemsMapper;
 import org.springblade.los.trade.mapper.InOutStorageMapper;
 import org.springblade.los.trade.mapper.InOutStorageMapper;
 import org.springblade.los.trade.service.IInOutStorageService;
 import org.springblade.los.trade.service.IInOutStorageService;
 import org.springblade.los.trade.service.IStorageFeeItemsService;
 import org.springblade.los.trade.service.IStorageFeeItemsService;
 import org.springblade.los.trade.service.IStorageFeeService;
 import org.springblade.los.trade.service.IStorageFeeService;
+import org.springblade.los.trade.service.IStorageService;
 import org.springblade.los.trade.vo.InOutStorageVO;
 import org.springblade.los.trade.vo.InOutStorageVO;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.feign.ISysClient;
@@ -90,6 +90,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 
 
 	private final CurExrateMapper curExrateMapper;
 	private final CurExrateMapper curExrateMapper;
 
 
+	private final IStorageService storageService;
+
 	@Override
 	@Override
 	public IPage<InOutStorageVO> selectInOutStoragePage(IPage<InOutStorageVO> page, InOutStorageVO inOutStorage) {
 	public IPage<InOutStorageVO> selectInOutStoragePage(IPage<InOutStorageVO> page, InOutStorageVO inOutStorage) {
 		return page.setRecords(baseMapper.selectInOutStoragePage(page, inOutStorage));
 		return page.setRecords(baseMapper.selectInOutStoragePage(page, inOutStorage));
@@ -231,6 +233,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 						agentItemsMapper.updateById(items);
 						agentItemsMapper.updateById(items);
 					}
 					}
 				}
 				}
+			}else{
+				inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice());
 			}
 			}
 		} else {
 		} else {
 			if (ObjectUtils.isNull(inOutStorage.getOutStorageDate())) {
 			if (ObjectUtils.isNull(inOutStorage.getOutStorageDate())) {
@@ -256,50 +260,27 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 			baseMapper.updateById(inStorage);
 			baseMapper.updateById(inStorage);
 			Bills bills = billsMapper.selectById(inOutStorage.getPid());
 			Bills bills = billsMapper.selectById(inOutStorage.getPid());
 			if (bills != null) {
 			if (bills != null) {
-				StorageFee storageFee = storageFeeService.getOne(new LambdaQueryWrapper<StorageFee>()
-					.eq(StorageFee::getTenantId, AuthUtil.getTenantId())
-					.eq(StorageFee::getIsDeleted, 0)
-					.eq(StorageFee::getStatus, 0)
-					.eq(StorageFee::getWarehouseId, inOutStorage.getWarehouseId())
-					.eq(StorageFee::getGoodsType, inOutStorage.getGoodsType())
-					.apply("find_in_set('" + bills.getCorpId() + "',corp_id)"));
-				if (storageFee == null) {
-					throw new RuntimeException("未查到可用仓储费规则,请先维护");
+				Storage storage = storageService.getById(inOutStorage.getWarehouseId());
+				if (storage == null) {
+					throw new RuntimeException("未查到可用仓库,请先维护");
 				}
 				}
-				List<StorageFeeItems> storageFeeItemsList = storageFeeItemsService.list(new LambdaQueryWrapper<StorageFeeItems>()
-					.eq(StorageFeeItems::getPid, storageFee.getId())
+				StorageFeeItems storageFeeItems = storageFeeItemsService.getOne(new LambdaQueryWrapper<StorageFeeItems>()
+					.eq(StorageFeeItems::getPid, storage.getId())
 					.eq(StorageFeeItems::getTenantId, AuthUtil.getTenantId())
 					.eq(StorageFeeItems::getTenantId, AuthUtil.getTenantId())
 					.eq(StorageFeeItems::getIsDeleted, 0)
 					.eq(StorageFeeItems::getIsDeleted, 0)
-					.orderByAsc(StorageFeeItems::getSort));
-				if (storageFeeItemsList.isEmpty()) {
-					throw new RuntimeException("请先维护仓储费规则明细");
+					.eq(StorageFeeItems::getGoodsType, inOutStorage.getGoodsType()));
+				if (ObjectUtils.isNull(storageFeeItems)) {
+					throw new RuntimeException("未查到可用仓储费规则,请先维护");
 				}
 				}
 				long nd = 1000 * 24 * 60 * 60;
 				long nd = 1000 * 24 * 60 * 60;
 				long diff = inOutStorage.getOutStorageDate().getTime() - inStorage.getStorageDate().getTime();
 				long diff = inOutStorage.getOutStorageDate().getTime() - inStorage.getStorageDate().getTime();
 				// 计算差多少天
 				// 计算差多少天
 				long day = diff / nd + 1L;
 				long day = diff / nd + 1L;
-				long dayLength = day;
 				StringBuilder remark = new StringBuilder("仓储费:");
 				StringBuilder remark = new StringBuilder("仓储费:");
-				BigDecimal amount = new BigDecimal("0.00");
 				BigDecimal outWeight = inOutStorage.getOutWeight().divide(new BigDecimal("1000"), 4, RoundingMode.HALF_UP);
 				BigDecimal outWeight = inOutStorage.getOutWeight().divide(new BigDecimal("1000"), 4, RoundingMode.HALF_UP);
-				for (StorageFeeItems item : storageFeeItemsList) {
-					int days = item.getEnDays() - item.getFromDays();
-					if (dayLength != 0) {
-						if (day >= days) {
-							dayLength = dayLength - days;
-							BigDecimal dayDecimal = new BigDecimal(days);
-							BigDecimal amountSum = dayDecimal.multiply(item.getPrice()).multiply(outWeight);
-							amount = amount.add(amountSum);
-							remark.append(days).append("天*").append(item.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
-						} else {
-							BigDecimal dayDecimal = new BigDecimal(dayLength);
-							BigDecimal amountSum = dayDecimal.multiply(item.getPrice()).multiply(outWeight);
-							amount = amount.add(amountSum);
-							remark.append(dayLength).append("天*").append(item.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
-							dayLength = days - dayLength;
-						}
-					}
-				}
+				BigDecimal dayDecimal = new BigDecimal(day);
+				BigDecimal amountSum = dayDecimal.multiply(storageFeeItems.getPrice()).multiply(outWeight);
+				remark.append(day).append("天*").append(storageFeeItems.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
 				FeeCenter feeCenter = new FeeCenter();
 				FeeCenter feeCenter = new FeeCenter();
 				feeCenter.setCreateTime(new Date());
 				feeCenter.setCreateTime(new Date());
 				feeCenter.setCreateUser(AuthUtil.getUserId());
 				feeCenter.setCreateUser(AuthUtil.getUserId());
@@ -327,9 +308,9 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenter.setPodCode(bills.getPodCode());
 				feeCenter.setPodCode(bills.getPodCode());
 				feeCenter.setPodCnName(bills.getPodCnName());
 				feeCenter.setPodCnName(bills.getPodCnName());
 				feeCenter.setPodEnName(bills.getPodEnName());
 				feeCenter.setPodEnName(bills.getPodEnName());
-				BFees fees = bFeesService.getById(storageFeeItemsList.get(0).getFeeId());
+				BFees fees = bFeesService.getById(storageFeeItems.getFeeId());
 				if (fees == null) {
 				if (fees == null) {
-					throw new RuntimeException("请先维护" + storageFeeItemsList.get(0).getFeeName() + "费用信息");
+					throw new RuntimeException("请先维护" + storageFeeItems.getFeeName() + "费用信息");
 				}
 				}
 				feeCenter.setFeeId(fees.getId());
 				feeCenter.setFeeId(fees.getId());
 				feeCenter.setFeeCode(fees.getCode());
 				feeCenter.setFeeCode(fees.getCode());
@@ -344,16 +325,67 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenter.setElementsEnName(fees.getElementsEnName());
 				feeCenter.setElementsEnName(fees.getElementsEnName());
 				feeCenter.setUnitNo("JOB");
 				feeCenter.setUnitNo("JOB");
 				feeCenter.setQuantity(new BigDecimal("1"));
 				feeCenter.setQuantity(new BigDecimal("1"));
-				feeCenter.setPrice(amount);
-				feeCenter.setAmount(amount);
+				feeCenter.setPrice(amountSum);
+				feeCenter.setAmount(amountSum);
 				feeCenter.setRemarks(remark.toString());
 				feeCenter.setRemarks(remark.toString());
 				feeCenter.setDays(Integer.parseInt(day + ""));
 				feeCenter.setDays(Integer.parseInt(day + ""));
 				feeCenter.setStorageDate(inOutStorage.getOutStorageDate());
 				feeCenter.setStorageDate(inOutStorage.getOutStorageDate());
 				feeCenter.setOutboundDate(inStorage.getStorageDate());
 				feeCenter.setOutboundDate(inStorage.getStorageDate());
 				feeCenter.setSrcItemId(inOutStorage.getId());
 				feeCenter.setSrcItemId(inOutStorage.getId());
 				feeCenterMapper.insert(feeCenter);
 				feeCenterMapper.insert(feeCenter);
+				StringBuilder remarkC = new StringBuilder("仓储费:");
+				BigDecimal amountSumC = dayDecimal.multiply(storageFeeItems.getPriceC()).multiply(outWeight);
+				remarkC.append(day).append("天*").append(storageFeeItems.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSumC).append("元 ");
+				FeeCenter feeCenterC = new FeeCenter();
+				feeCenterC.setCreateTime(new Date());
+				feeCenterC.setCreateUser(AuthUtil.getUserId());
+				feeCenterC.setCreateUserName(AuthUtil.getUserName());
+				if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+					feeCenterC.setCreateDept(bills.getCreateDept());
+					feeCenterC.setBranchId(bills.getBranchId());
+					feeCenterC.setCreateDeptName(bills.getCreateDeptName());
+				}
+				feeCenterC.setBusinessType(bills.getBusinessType());
+				feeCenterC.setPid(bills.getId());
+				feeCenterC.setLineNo(1L);
+				feeCenterC.setBillNo(bills.getBillNo());
+				feeCenterC.setBillDate(bills.getBillDate());
+				feeCenterC.setCorpId(bills.getCorpId());
+				feeCenterC.setCorpCnName(bills.getCorpCnName());
+				feeCenterC.setBillCorpId(bills.getCorpId());
+				feeCenterC.setBillCorpCnName(bills.getCorpCnName());
+				feeCenterC.setMblno(bills.getMblno());
+				feeCenterC.setPolId(bills.getPolId());
+				feeCenterC.setPolCode(bills.getPolCode());
+				feeCenterC.setPolCnName(bills.getPolCnName());
+				feeCenterC.setPolEnName(bills.getPolEnName());
+				feeCenterC.setPodId(bills.getPodId());
+				feeCenterC.setPodCode(bills.getPodCode());
+				feeCenterC.setPodCnName(bills.getPodCnName());
+				feeCenterC.setPodEnName(bills.getPodEnName());
+				feeCenterC.setFeeId(fees.getId());
+				feeCenterC.setFeeCode(fees.getCode());
+				feeCenterC.setFeeCnName(fees.getCnName());
+				feeCenterC.setFeeEnName(fees.getEnName());
+				feeCenterC.setDc("C");
+				feeCenterC.setCurCode(fees.getCurNo());
+				feeCenterC.setSort(1);
+				feeCenterC.setElementsId(fees.getAccElementId());
+				feeCenterC.setElementsCode(fees.getElementsCode());
+				feeCenterC.setElementsCnName(fees.getAccElementName());
+				feeCenterC.setElementsEnName(fees.getElementsEnName());
+				feeCenterC.setUnitNo("JOB");
+				feeCenterC.setQuantity(new BigDecimal("1"));
+				feeCenterC.setPrice(amountSumC);
+				feeCenterC.setAmount(amountSumC);
+				feeCenterC.setRemarks(remarkC.toString());
+				feeCenterC.setDays(Integer.parseInt(day + ""));
+				feeCenterC.setStorageDate(inOutStorage.getOutStorageDate());
+				feeCenterC.setOutboundDate(inStorage.getStorageDate());
+				feeCenterC.setSrcItemId(inOutStorage.getId());
+				feeCenterMapper.insert(feeCenterC);
 				inOutStorage.setStorageDays(Integer.parseInt(day + ""));
 				inOutStorage.setStorageDays(Integer.parseInt(day + ""));
-				inOutStorage.setStorageFeesAmount(amount);
+				inOutStorage.setStorageFeesAmount(amountSum);
 			}
 			}
 		}
 		}
 		baseMapper.updateById(inOutStorage);
 		baseMapper.updateById(inOutStorage);
@@ -569,6 +601,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				//仓储单价 = 单价 + 本次分摊金额
 				//仓储单价 = 单价 + 本次分摊金额
 				inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice().add(sharedAmount));
 				inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice().add(sharedAmount));
 				text = text + "仓储单价(单价 + 本次分摊金额):" + inOutStorage.getWarehouseUnitPrice() + ";";
 				text = text + "仓储单价(单价 + 本次分摊金额):" + inOutStorage.getWarehouseUnitPrice() + ";";
+			}else{
+				text = text + "仓储单价:" + inOutStorage.getPrice() + ";";
 			}
 			}
 			return R.data(text);
 			return R.data(text);
 		} else {
 		} else {

+ 88 - 3
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/StorageServiceImpl.java

@@ -16,13 +16,26 @@
  */
  */
 package org.springblade.los.trade.service.impl;
 package org.springblade.los.trade.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.trade.entity.Storage;
 import org.springblade.los.trade.entity.Storage;
-import org.springblade.los.trade.vo.StorageVO;
+import org.springblade.los.trade.entity.StorageFeeItems;
 import org.springblade.los.trade.mapper.StorageMapper;
 import org.springblade.los.trade.mapper.StorageMapper;
+import org.springblade.los.trade.service.IStorageFeeItemsService;
 import org.springblade.los.trade.service.IStorageService;
 import org.springblade.los.trade.service.IStorageService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.los.trade.vo.StorageVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 贸易代理-仓库表 服务实现类
  * 贸易代理-仓库表 服务实现类
@@ -31,11 +44,83 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2024-07-23
  * @since 2024-07-23
  */
  */
 @Service
 @Service
+@AllArgsConstructor
 public class StorageServiceImpl extends ServiceImpl<StorageMapper, Storage> implements IStorageService {
 public class StorageServiceImpl extends ServiceImpl<StorageMapper, Storage> implements IStorageService {
 
 
+	private final IDeptUtils deptUtils;
+
+	private final IStorageFeeItemsService storageFeeItemsService;
+
 	@Override
 	@Override
 	public IPage<StorageVO> selectStoragePage(IPage<StorageVO> page, StorageVO storage) {
 	public IPage<StorageVO> selectStoragePage(IPage<StorageVO> page, StorageVO storage) {
 		return page.setRecords(baseMapper.selectStoragePage(page, storage));
 		return page.setRecords(baseMapper.selectStoragePage(page, storage));
 	}
 	}
 
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submit(Storage storage) {
+		Long deptId = 0L;
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(deptUtils.getDeptPid())) {
+			deptId = deptUtils.getDeptPid();
+		}
+		List<Storage> count = baseMapper.selectList(new LambdaQueryWrapper<Storage>()
+			.eq(Storage::getTenantId, AuthUtil.getTenantId())
+			.eq(Storage::getIsDeleted, 0)
+			.eq(Storage::getCname, storage.getCname())
+		);
+		if (storage.getId() == null) {
+			if (!count.isEmpty()) {
+				throw new RuntimeException("仓库:" + storage.getCname() + "不允许重复");
+			}
+			storage.setCreateTime(new Date());
+			storage.setCreateUser(AuthUtil.getUserId());
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				storage.setCreateDept(deptId);
+			}
+		} else {
+			List<Long> ids = count.stream().map(Storage::getId).distinct().collect(Collectors.toList());
+			if (!count.isEmpty() && !ids.contains(storage.getId())) {
+				throw new RuntimeException("仓库:" + storage.getCname() + "不允许重复");
+			}
+			storage.setUpdateUser(AuthUtil.getUserId());
+			storage.setUpdateTime(new Date());
+		}
+		this.saveOrUpdate(storage);
+		if (ObjectUtils.isNotNull(storage.getStorageFeeItemsList()) && !storage.getStorageFeeItemsList().isEmpty()) {
+			for (StorageFeeItems item : storage.getStorageFeeItemsList()) {
+				long num = storage.getStorageFeeItemsList().stream().filter(e -> e.getFeeId().equals(item.getFeeId())).count();
+				if (num > 1) {
+					throw new RuntimeException("商品类别" + item.getGoodsType() + "不允许重复添加");
+				}
+				item.setPid(storage.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(deptId);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+				}
+			}
+			storageFeeItemsService.saveOrUpdateBatch(storage.getStorageFeeItemsList());
+		}
+		return R.data(storage);
+	}
+
+	@Override
+	public Storage detail(Storage storage) {
+		if (storage.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Storage detail = baseMapper.selectById(storage.getId());
+		detail.setStorageFeeItemsList(storageFeeItemsService.list(new LambdaQueryWrapper<StorageFeeItems>()
+			.eq(StorageFeeItems::getTenantId, AuthUtil.getTenantId())
+			.eq(StorageFeeItems::getIsDeleted, 0)
+			.eq(StorageFeeItems::getPid, detail.getId())));
+		return detail;
+	}
+
 }
 }