|
|
@@ -20,7 +20,6 @@ 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 io.seata.spring.annotation.GlobalTransactional;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
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.trade.entity.AgentItems;
|
|
|
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.mapper.AgentItemsMapper;
|
|
|
import org.springblade.los.trade.mapper.InOutStorageMapper;
|
|
|
import org.springblade.los.trade.service.IInOutStorageService;
|
|
|
import org.springblade.los.trade.service.IStorageFeeItemsService;
|
|
|
import org.springblade.los.trade.service.IStorageFeeService;
|
|
|
+import org.springblade.los.trade.service.IStorageService;
|
|
|
import org.springblade.los.trade.vo.InOutStorageVO;
|
|
|
import org.springblade.system.entity.Dept;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
@@ -90,6 +90,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
|
|
|
private final CurExrateMapper curExrateMapper;
|
|
|
|
|
|
+ private final IStorageService storageService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<InOutStorageVO> selectInOutStoragePage(IPage<InOutStorageVO> page, InOutStorageVO inOutStorage) {
|
|
|
return page.setRecords(baseMapper.selectInOutStoragePage(page, inOutStorage));
|
|
|
@@ -231,6 +233,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
agentItemsMapper.updateById(items);
|
|
|
}
|
|
|
}
|
|
|
+ }else{
|
|
|
+ inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice());
|
|
|
}
|
|
|
} else {
|
|
|
if (ObjectUtils.isNull(inOutStorage.getOutStorageDate())) {
|
|
|
@@ -256,50 +260,27 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
baseMapper.updateById(inStorage);
|
|
|
Bills bills = billsMapper.selectById(inOutStorage.getPid());
|
|
|
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::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 diff = inOutStorage.getOutStorageDate().getTime() - inStorage.getStorageDate().getTime();
|
|
|
// 计算差多少天
|
|
|
long day = diff / nd + 1L;
|
|
|
- long dayLength = day;
|
|
|
StringBuilder remark = new StringBuilder("仓储费:");
|
|
|
- BigDecimal amount = new BigDecimal("0.00");
|
|
|
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.setCreateTime(new Date());
|
|
|
feeCenter.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -327,9 +308,9 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
feeCenter.setPodCode(bills.getPodCode());
|
|
|
feeCenter.setPodCnName(bills.getPodCnName());
|
|
|
feeCenter.setPodEnName(bills.getPodEnName());
|
|
|
- BFees fees = bFeesService.getById(storageFeeItemsList.get(0).getFeeId());
|
|
|
+ BFees fees = bFeesService.getById(storageFeeItems.getFeeId());
|
|
|
if (fees == null) {
|
|
|
- throw new RuntimeException("请先维护" + storageFeeItemsList.get(0).getFeeName() + "费用信息");
|
|
|
+ throw new RuntimeException("请先维护" + storageFeeItems.getFeeName() + "费用信息");
|
|
|
}
|
|
|
feeCenter.setFeeId(fees.getId());
|
|
|
feeCenter.setFeeCode(fees.getCode());
|
|
|
@@ -344,16 +325,67 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
feeCenter.setElementsEnName(fees.getElementsEnName());
|
|
|
feeCenter.setUnitNo("JOB");
|
|
|
feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setPrice(amount);
|
|
|
- feeCenter.setAmount(amount);
|
|
|
+ feeCenter.setPrice(amountSum);
|
|
|
+ feeCenter.setAmount(amountSum);
|
|
|
feeCenter.setRemarks(remark.toString());
|
|
|
feeCenter.setDays(Integer.parseInt(day + ""));
|
|
|
feeCenter.setStorageDate(inOutStorage.getOutStorageDate());
|
|
|
feeCenter.setOutboundDate(inStorage.getStorageDate());
|
|
|
feeCenter.setSrcItemId(inOutStorage.getId());
|
|
|
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.setStorageFeesAmount(amount);
|
|
|
+ inOutStorage.setStorageFeesAmount(amountSum);
|
|
|
}
|
|
|
}
|
|
|
baseMapper.updateById(inOutStorage);
|
|
|
@@ -569,6 +601,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
|
|
|
//仓储单价 = 单价 + 本次分摊金额
|
|
|
inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice().add(sharedAmount));
|
|
|
text = text + "仓储单价(单价 + 本次分摊金额):" + inOutStorage.getWarehouseUnitPrice() + ";";
|
|
|
+ }else{
|
|
|
+ text = text + "仓储单价:" + inOutStorage.getPrice() + ";";
|
|
|
}
|
|
|
return R.data(text);
|
|
|
} else {
|