|
|
@@ -1436,7 +1436,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
auditProecessDTO.setOrderRemark(salesOrder.getOrderRemark());
|
|
|
auditProecessDTO.setGrossProfit(salesOrder.getGrossProfit());
|
|
|
auditProecessDTO.setGrossProfitRate(salesOrder.getGrossProfitRate());
|
|
|
- auditProecessDTO.setCorpId(salesOrder.getCorpId());
|
|
|
+ auditProecessDTO.setCorpId(salesOrder.getPurchaserId());
|
|
|
auditProecessDTO.setCheckType(order.getCheckType());
|
|
|
auditProecessDTO.setPathsLevelsList(auditPathsLevels);
|
|
|
auditProecessDTO.setActId(1);
|
|
|
@@ -1461,12 +1461,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
order.setOrgOrderNo(order.getOrgOrderNo());
|
|
|
order.setOrderRemark(salesOrder.getOrderRemark());
|
|
|
order.setStorageQuantity(salesOrder.getStorageQuantity());
|
|
|
+ order.setBillNo(salesOrder.getBillNo());
|
|
|
//出库生成仓储费
|
|
|
if ("CK".equals(salesOrder.getBillType())) {
|
|
|
this.paymentApply(order, "收费", OrderTypeEnum.STORAGE_FEE.getType());
|
|
|
this.paymentApply(order, "收费", "出库");
|
|
|
- }else if ("RK".equals(salesOrder.getBillType())){
|
|
|
- this.paymentApply(order, "付费", "入库");
|
|
|
+ } else if ("RK".equals(salesOrder.getBillType())) {
|
|
|
+ this.paymentApply(order, "申请", "入库");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -1487,7 +1488,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
throw new SecurityException("订单已审批通过请勿重复审批");
|
|
|
}
|
|
|
order.setStatus(3);
|
|
|
- order.setConfirmStatus("1");
|
|
|
+// order.setConfirmStatus("1");
|
|
|
order.setOrderStatus("审批通过");
|
|
|
|
|
|
// ===========================end 审核通过修改入出库订单信息==========================
|
|
|
@@ -1517,8 +1518,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
//盘点明细
|
|
|
List<OrderItems> PDOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
|
|
|
//入库明细
|
|
|
- PDOrderItemsLambdaQueryWrapper.eq(OrderItems::getPid, RKOrder.getId());
|
|
|
- List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
|
|
|
+ LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ RKOrderItemsLambdaQueryWrapper
|
|
|
+ .eq(OrderItems::getIsDeleted, 0)
|
|
|
+ .eq(OrderItems::getPid, RKOrder.getId())
|
|
|
+ .eq(OrderItems::getTenantId, AuthUtil.getTenantId());
|
|
|
+ List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
|
|
|
for (OrderItems orderItems : PDOrderItemsList) {
|
|
|
for (OrderItems RKOrderItems : RKOrderItemsList) {
|
|
|
//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
|
|
|
@@ -1531,8 +1536,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+ financeClient.updateByOrderId(order.getId());
|
|
|
baseMapper.updateById(order);
|
|
|
return R.success("审核通过");
|
|
|
}
|
|
|
@@ -1628,11 +1633,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
applyDTO.setCheckType(order.getCheckType());
|
|
|
applyDTO.setAccDate(order.getBusinesDate());
|
|
|
|
|
|
-
|
|
|
- List<Items> itemsList = new ArrayList<>();
|
|
|
-
|
|
|
- Items items = new Items();
|
|
|
-
|
|
|
//判断是否未仓储费
|
|
|
if (!OrderTypeEnum.STORAGE_FEE.getType().equals(itemType)) {
|
|
|
//获取订单明细信息
|
|
|
@@ -1649,82 +1649,92 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
LambdaQueryWrapper<OrderFees> orderFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
orderFeesLambdaQueryWrapper.eq(OrderFees::getIsDeleted, 0);
|
|
|
orderFeesLambdaQueryWrapper.eq(OrderFees::getPid, order.getId());
|
|
|
- orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 1);
|
|
|
+ if ("入库".equals(itemType)) {
|
|
|
+ orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 2);
|
|
|
+ } else {
|
|
|
+ orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 1);
|
|
|
+ }
|
|
|
List<OrderFees> orderFeesList = orderFeesService.list(orderFeesLambdaQueryWrapper);
|
|
|
if (CollectionUtils.isNotEmpty(orderFeesList)) {
|
|
|
- amount = amount.add(orderFeesList.stream().map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- if (order.getThisUsedProfit() != null) {
|
|
|
- amount = amount.subtract(order.getThisUsedProfit());
|
|
|
- }
|
|
|
- if (quantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
|
|
|
- }
|
|
|
- items.setItemType(itemType);
|
|
|
- items.setPrice(price);
|
|
|
- //账单数据
|
|
|
- items.setAmount(amount);
|
|
|
- items.setQuantity(quantity);
|
|
|
- items.setSrcOrderno(order.getOrgOrderNo());
|
|
|
- items.setCorpId(order.getPurchaserId());
|
|
|
- items.setSrcParentId(order.getId());
|
|
|
- items.setCurrency("CNY");
|
|
|
- items.setExchangeRate(new BigDecimal(1));
|
|
|
- items.setTaxRate(BigDecimal.ZERO);
|
|
|
- items.setSrcType(1);
|
|
|
- items.setTradeType(order.getTradeType());
|
|
|
- items.setUnit("条");
|
|
|
- items.setRemarks(order.getOrderRemark());
|
|
|
- //获取费用id
|
|
|
- R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
|
|
|
- if (fees.isSuccess() && fees.getData() != null) {
|
|
|
- items.setCostType(fees.getData().getId().toString());
|
|
|
- }
|
|
|
- itemsList.add(items);
|
|
|
- applyDTO.setItemsList(itemsList);
|
|
|
- if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
- //生成账单
|
|
|
- R paymentApply = financeClient.paymentApply(applyDTO);
|
|
|
- if (!paymentApply.isSuccess()) {
|
|
|
- throw new RuntimeException(paymentApply.getMsg());
|
|
|
+ for (OrderFees orderFees : orderFeesList) {
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ Items items = new Items();
|
|
|
+ amount = orderFees.getAmount();
|
|
|
+ if (order.getThisUsedProfit() != null) {
|
|
|
+ amount = amount.subtract(order.getThisUsedProfit());
|
|
|
+ }
|
|
|
+ if (quantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ items.setItemType(itemType);
|
|
|
+ items.setPrice(price);
|
|
|
+ //账单数据
|
|
|
+ items.setAmount(amount);
|
|
|
+ items.setQuantity(quantity);
|
|
|
+ items.setSrcOrderno(order.getOrgOrderNo());
|
|
|
+ items.setCorpId(orderFees.getCorpId());
|
|
|
+ items.setSrcParentId(order.getId());
|
|
|
+ items.setCurrency("CNY");
|
|
|
+ items.setExchangeRate(new BigDecimal(1));
|
|
|
+ items.setTaxRate(BigDecimal.ZERO);
|
|
|
+ items.setSrcType(1);
|
|
|
+ items.setTradeType(order.getTradeType());
|
|
|
+ items.setUnit("条");
|
|
|
+ items.setRemarks(order.getOrderRemark());
|
|
|
+ items.setSrcBillNo(order.getBillNo());
|
|
|
+ items.setStatusJT(1);
|
|
|
+ //获取费用id
|
|
|
+ R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
|
|
|
+ if (fees.isSuccess() && fees.getData() != null) {
|
|
|
+ items.setCostType(fees.getData().getId().toString());
|
|
|
}
|
|
|
- //给角色为财务的人发送消息
|
|
|
- R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
- if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
- R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
|
|
|
- if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
- for (User datum : userList.getData()) {
|
|
|
- //循环发送消息
|
|
|
- Message sendMessage = new Message();
|
|
|
- sendMessage.setParameter(String.valueOf(order.getId()));
|
|
|
- sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
- sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
- sendMessage.setToUserId(datum.getId());
|
|
|
- sendMessage.setToUserName(datum.getName());
|
|
|
- sendMessage.setMessageType(1);
|
|
|
- sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
- sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
- sendMessage.setCreateTime(new Date());
|
|
|
- sendMessage.setUrl(order.getUrl());
|
|
|
- sendMessage.setPageLabel(order.getPageLabel());
|
|
|
- sendMessage.setPageStatus(order.getPageStatus());
|
|
|
- sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpName() + "的订单 " + order.getSysNo() + "审核通过,请查看");
|
|
|
- R save = messageClient.save(sendMessage);
|
|
|
- if (!save.isSuccess()) {
|
|
|
- throw new SecurityException("发送消息失败");
|
|
|
+ itemsList.add(items);
|
|
|
+ applyDTO.setItemsList(itemsList);
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
+ //生成账单
|
|
|
+ R paymentApply = financeClient.paymentApply(applyDTO);
|
|
|
+ if (!paymentApply.isSuccess()) {
|
|
|
+ throw new RuntimeException(paymentApply.getMsg());
|
|
|
+ }
|
|
|
+ //给角色为财务的人发送消息
|
|
|
+ R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
+ if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
|
|
|
+ if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
+ for (User datum : userList.getData()) {
|
|
|
+ //循环发送消息
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(String.valueOf(order.getId()));
|
|
|
+ sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
+ sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
+ sendMessage.setToUserId(datum.getId());
|
|
|
+ sendMessage.setToUserName(datum.getName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl(order.getUrl());
|
|
|
+ sendMessage.setPageLabel(order.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(order.getPageStatus());
|
|
|
+ sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpName() + "的订单 " + order.getSysNo() + "审核通过,请查看");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //修改原数据表示已生成账单
|
|
|
+ //修改商品明细
|
|
|
+ orderItemsMapper.submitPay(order.getId());
|
|
|
+ //修改费用明细
|
|
|
+ orderFeesService.submitPay(order.getId());
|
|
|
}
|
|
|
- //修改原数据表示已生成账单
|
|
|
- //修改商品明细
|
|
|
- orderItemsMapper.submitPay(order.getId());
|
|
|
- //修改费用明细
|
|
|
- orderFeesService.submitPay(order.getId());
|
|
|
}
|
|
|
- }else{
|
|
|
-
|
|
|
}
|
|
|
} else {
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ Items items = new Items();
|
|
|
items.setItemType("仓储费");
|
|
|
|
|
|
int date = 0;
|
|
|
@@ -1757,16 +1767,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.eq(Agreement::getFeetypeId, "0")
|
|
|
.eq(Agreement::getDelFlag, "0")
|
|
|
.eq(Agreement::getTenantId, AuthUtil.getTenantId())
|
|
|
- .apply("FIND_IN_SET("+order.getStorageId()+",warehouse_id)");
|
|
|
+ .apply("FIND_IN_SET(" + order.getStorageId() + ",warehouse_id)");
|
|
|
Agreement agreement = agreementService.getOne(agreementLambdaQueryWrapper);
|
|
|
if (agreement == null) {
|
|
|
throw new SecurityException("未找到仓储费协议");
|
|
|
}
|
|
|
//获取实际收费天数 (存放天数减去免费天数)
|
|
|
- int days = date - agreement.getFreeDays();
|
|
|
-
|
|
|
- //业务天数
|
|
|
- date = date - agreement.getFreeDays();
|
|
|
+ int days = date;
|
|
|
|
|
|
//获取仓储费协议明细
|
|
|
LambdaQueryWrapper<Agreementitems> agreementItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -1775,16 +1782,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.orderByAsc(Agreementitems::getLineno)
|
|
|
.eq(Agreementitems::getDelFlag, "0");
|
|
|
List<Agreementitems> agreementItemsList = agreementitemsService.list(agreementItemsLambdaQueryWrapper);
|
|
|
+ int count = 0;
|
|
|
+ StringBuilder text = new StringBuilder();
|
|
|
for (Agreementitems agreementitems : agreementItemsList) {
|
|
|
- //判断实际存放天数是否大于本条结束天数
|
|
|
- if (days >= agreementitems.getEnDays()) {
|
|
|
- //本条收费天数乘以单价 = 所需收费金额
|
|
|
- amount = amount.add((new BigDecimal((agreementitems.getEnDays() - agreementitems.getFromDays()+1), MathContext.UNLIMITED)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
|
|
|
- //业务天数减去本条结束天数所得天数为下一条要收费天数
|
|
|
- date = date - (agreementitems.getEnDays() - agreementitems.getFromDays()+1);
|
|
|
+ if (count == 0 && days <= agreementitems.getEnDays()) {
|
|
|
+ break;
|
|
|
} else {
|
|
|
- //业务天数乘以单价 = 剩余所需收费金额
|
|
|
- amount = amount.add((new BigDecimal(date+1)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
|
|
|
+ //判断实际存放天数是否大于本条结束天数
|
|
|
+ if (days >= agreementitems.getEnDays()) {
|
|
|
+ //本条收费天数乘以单价 = 所需收费金额
|
|
|
+ amount = amount.add((new BigDecimal((agreementitems.getEnDays() - agreementitems.getFromDays() + 1), MathContext.UNLIMITED)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
|
|
|
+ //业务天数减去本条结束天数所得天数为下一条要收费天数
|
|
|
+ date = date - (agreementitems.getEnDays() - agreementitems.getFromDays() + 1);
|
|
|
+ text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(agreementitems.getEnDays() - agreementitems.getFromDays() + 1).append("+");
|
|
|
+ } else {
|
|
|
+ if (agreementitems.getPrice().compareTo(new BigDecimal(0)) > 0) {
|
|
|
+ //业务天数乘以单价 = 剩余所需收费金额
|
|
|
+ amount = amount.add((new BigDecimal(date + 1)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
|
|
|
+ text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(date + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ count++;
|
|
|
}
|
|
|
}
|
|
|
quantity = RKoOrder.getStorageQuantity();
|
|
|
@@ -1801,8 +1819,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
items.setTradeType(order.getTradeType());
|
|
|
items.setUnit("条");
|
|
|
items.setRemarks(order.getOrderRemark());
|
|
|
+ items.setSrcBillNo(order.getBillNo());
|
|
|
+ items.setStatusJT(1);
|
|
|
//获取费用id
|
|
|
- R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
|
|
|
+ R<FeesDesc> fees = feesDescClient.getFeesByName("仓储费");
|
|
|
if (fees.isSuccess() && fees.getData() != null) {
|
|
|
items.setCostType(fees.getData().getId().toString());
|
|
|
}
|
|
|
@@ -1814,6 +1834,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (!paymentApply.isSuccess()) {
|
|
|
throw new RuntimeException(paymentApply.getMsg());
|
|
|
}
|
|
|
+
|
|
|
+ //将仓储费添加到费用明细中
|
|
|
+ OrderFees orderFees = new OrderFees();
|
|
|
+ orderFees.setPid(order.getId());
|
|
|
+ orderFees.setItemId(fees.getData().getId());
|
|
|
+ orderFees.setCorpId(order.getPurchaserId());
|
|
|
+ orderFees.setQuantity(new BigDecimal("1"));
|
|
|
+ orderFees.setPrice(amount);
|
|
|
+ orderFees.setAmount(amount);
|
|
|
+ orderFees.setCurrency("CNY");
|
|
|
+ orderFees.setExchangeRate(new BigDecimal("1"));
|
|
|
+ orderFees.setUnit(ObjectUtils.isNull(agreementItemsList) ? "" : agreementItemsList.get(0).getFeeUnitId().toString());
|
|
|
+ orderFees.setFeesType(1);
|
|
|
+ orderFees.setRemarks(text.toString());
|
|
|
+ orderFees.setCreateTime(new Date());
|
|
|
+ orderFees.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderFees.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ orderFees.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderFeesService.save(orderFees);
|
|
|
+
|
|
|
//给角色为财务的人发送消息
|
|
|
R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|