|
|
@@ -294,19 +294,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
documentRecoveryService.removeById(documentRecovery.get(0).getId());
|
|
|
} else {*/
|
|
|
- R clientBillNo;
|
|
|
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
- String date2 = dateFormat.format(order.getBusinesDate());
|
|
|
- clientBillNo = serialClient.getBillNoByDate(substring, order.getTradeType(), order.getBillType(), date2);
|
|
|
- if (!clientBillNo.isSuccess()) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return R.fail(500, "生成订单编号失败");
|
|
|
- }
|
|
|
- order.setOrderNo((String) clientBillNo.getData());
|
|
|
- // 进口的orgOrderNo 存的是采购订单号 出口国内存的是本身的订单号码
|
|
|
- if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
- order.setOrgOrderNo((String) clientBillNo.getData());
|
|
|
- }
|
|
|
+ R clientBillNo;
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ String date2 = dateFormat.format(order.getBusinesDate());
|
|
|
+ clientBillNo = serialClient.getBillNoByDate(substring, order.getTradeType(), order.getBillType(), date2);
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成订单编号失败");
|
|
|
+ }
|
|
|
+ order.setOrderNo((String) clientBillNo.getData());
|
|
|
+ // 进口的orgOrderNo 存的是采购订单号 出口国内存的是本身的订单号码
|
|
|
+ if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
+ order.setOrgOrderNo((String) clientBillNo.getData());
|
|
|
+ }
|
|
|
// }
|
|
|
}
|
|
|
if ("CG".equals(order.getBillType()) && ObjectUtils.isNotNull(order.getSrcIds())) {
|
|
|
@@ -1640,7 +1640,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
} else if (OrderTypeEnum.EXPORT.getType().equals(order.getTradeType())) {
|
|
|
if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
|
|
|
this.paymentApplyFD(order, "收费", "销售");
|
|
|
- if(ObjectUtils.isNotNull(order.getProductionScheduling())){
|
|
|
+ if (ObjectUtils.isNotNull(order.getProductionScheduling())) {
|
|
|
LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(OrderItems::getPid, order.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
|
|
|
// 获取销售单明细数据
|
|
|
@@ -1695,7 +1695,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
throw new SecurityException("发送消息失败");
|
|
|
}
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(order.getDocumentaryDate()) && ObjectUtils.isNotNull(order.getDeliverQuantity())){
|
|
|
+ if (ObjectUtils.isNotNull(order.getDocumentaryDate()) && ObjectUtils.isNotNull(order.getDeliverQuantity())) {
|
|
|
LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(OrderItems::getPid, order.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
|
|
|
// 获取销售单明细数据
|
|
|
@@ -5664,7 +5664,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
Order selectOrder = baseMapper.selectById(order.getId());
|
|
|
if (ObjectUtils.isNotNull(selectOrder)) {
|
|
|
- if(ObjectUtils.isNotNull(selectOrder.getProductionScheduling())){
|
|
|
+ if (ObjectUtils.isNotNull(selectOrder.getProductionScheduling())) {
|
|
|
LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(OrderItems::getPid, selectOrder.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
|
|
|
// 获取销售单明细数据
|
|
|
@@ -6156,7 +6156,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
baseMapper.updateById(detail);
|
|
|
String[] arrs = new String[0];
|
|
|
- if(ObjectUtils.isNotNull(detail.getSrcIds())){
|
|
|
+ if (ObjectUtils.isNotNull(detail.getSrcIds())) {
|
|
|
arrs = detail.getSrcIds().split(",");
|
|
|
|
|
|
}
|
|
|
@@ -6194,7 +6194,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "正在排产中,请查看");
|
|
|
} else if (2 == order.getPurchaseStatusType()) {
|
|
|
sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已预计货好,请查看");
|
|
|
- } else*/ if (3 == order.getPurchaseStatusType()) {
|
|
|
+ } else*/
|
|
|
+ if (3 == order.getPurchaseStatusType()) {
|
|
|
sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已采购完成,请查看");
|
|
|
}
|
|
|
R save = messageClient.save(sendMessage);
|
|
|
@@ -6318,19 +6319,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
sendMessage.setCreateTime(new Date());
|
|
|
sendMessage.setPageLabel(selectOrder.getPageLabel());
|
|
|
sendMessage.setPageStatus(selectOrder.getPageStatus());
|
|
|
- sendMessage.setUrl("/exportTrade/salesContract/index");
|
|
|
- sendMessage.setToUserId(selectOrder.getCreateUser());
|
|
|
- sendMessage.setToUserName(selectOrder.getCreateUserName());
|
|
|
- sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已撤销排产,请查看");
|
|
|
+ sendMessage.setUrl("/exportTrade/salesContract/index");
|
|
|
+ sendMessage.setToUserId(selectOrder.getCreateUser());
|
|
|
+ sendMessage.setToUserName(selectOrder.getCreateUserName());
|
|
|
+ sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已撤销排产,请查看");
|
|
|
|
|
|
- selectOrder.setProductionScheduling("待采购");
|
|
|
- selectOrder.setOrderStatus("待采购");
|
|
|
- selectOrder.setProductionSchedulingDate(null);
|
|
|
+ selectOrder.setProductionScheduling("待采购");
|
|
|
+ selectOrder.setOrderStatus("待采购");
|
|
|
+ selectOrder.setProductionSchedulingDate(null);
|
|
|
|
|
|
- R save = messageClient.save(sendMessage);
|
|
|
- if (!save.isSuccess()) {
|
|
|
- throw new SecurityException("发送消息失败");
|
|
|
- }
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
/*if (true) {
|
|
|
sendMessage.setUrl("/exportTrade/invoice/index");
|
|
|
sendMessage.setToUserId(selectOrder.getDocumenterId());
|
|
|
@@ -7995,18 +7996,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
- public R synchronization(Long billId, String ordNo,String primaryOrdNo) {
|
|
|
- Order order= new Order();
|
|
|
+ public R synchronization(Long billId, String ordNo, String primaryOrdNo) {
|
|
|
+ Order order = new Order();
|
|
|
order.setId(billId);
|
|
|
order.setOrgOrderNo(ordNo);
|
|
|
order.setOrderNo(ordNo);
|
|
|
order.setOldOrderNo(primaryOrdNo);
|
|
|
baseMapper.updateById(order);
|
|
|
List<Order> orderList = baseMapper.selectList(new LambdaQueryWrapper<Order>()
|
|
|
- .eq(Order::getTenantId,AuthUtil.getTenantId())
|
|
|
- .eq(Order::getIsDeleted,0)
|
|
|
- .eq(Order::getSrcId,billId)
|
|
|
- .eq(Order::getBillType,"CG"));
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Order::getIsDeleted, 0)
|
|
|
+ .eq(Order::getSrcId, billId)
|
|
|
+ .eq(Order::getBillType, "CG"));
|
|
|
for (Order item : orderList) {
|
|
|
if (ObjectUtils.isNotNull(ordNo)) {
|
|
|
item.setOrgOrderNo(ordNo);
|
|
|
@@ -8027,10 +8028,126 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (!accList.isEmpty()) {
|
|
|
financeClient.submitList(accList);
|
|
|
}
|
|
|
- deliveryClient.updateOrdNo(billId,ordNo);
|
|
|
+ deliveryClient.updateOrdNo(billId, ordNo);
|
|
|
return R.success("操作成功");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R generateBills(String ids, String billId) {
|
|
|
+ Order order = baseMapper.selectById(billId);
|
|
|
+ if (order.getBelongToCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getBelongToCorpId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ order.setBelongToCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取客户中文名
|
|
|
+ if (order.getCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ order.setCorpsName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal amount = BigDecimal.ZERO;//对账金额 销售订单生成的金额 销售金额-本次使用返利金额+费用明细
|
|
|
+ BigDecimal price = BigDecimal.ZERO;//对账单价
|
|
|
+ ApplyDTO applyDTO = new ApplyDTO();
|
|
|
+ applyDTO.setBillType("收费");
|
|
|
+ applyDTO.setTradeType(order.getTradeType());
|
|
|
+ applyDTO.setDc("D");
|
|
|
+ applyDTO.setBelongCompany(order.getBelongToCorpName());
|
|
|
+ applyDTO.setUrl(order.getUrl());
|
|
|
+ applyDTO.setPageStatus(order.getPageStatus());
|
|
|
+ applyDTO.setPageLabel(order.getPageLabel());
|
|
|
+ applyDTO.setCheckType(order.getCheckType());
|
|
|
+ applyDTO.setAccDate(order.getBusinesDate());
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ List<OrderFees> orderFeesList = orderFeesService.list(new LambdaQueryWrapper<OrderFees>()
|
|
|
+ .eq(OrderFees::getIsDeleted, 0)
|
|
|
+ .eq(OrderFees::getWhetherGenerateBills, 0)
|
|
|
+ .eq(OrderFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .apply("find_in_set(id,'" + ids + "')"));
|
|
|
+ if (CollectionUtils.isNotEmpty(orderFeesList)) {
|
|
|
+ for (OrderFees item : orderFeesList) {
|
|
|
+ item.setWhetherGenerateBills(1);
|
|
|
+ }
|
|
|
+ orderFeesService.updateBatchById(orderFeesList);
|
|
|
+ BigDecimal amountCnyD = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal amountUsdD = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if ("CNY".equals(order.getCurrency())) {
|
|
|
+ amountUsdD = amountUsdD.multiply(order.getExchangeRate());
|
|
|
+ amount = amount.add(amountCnyD).add(amountUsdD);
|
|
|
+ } else {
|
|
|
+ amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ amount = amount.add(amountCnyD).add(amountUsdD);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ price = amount;
|
|
|
+ Items items = new Items();
|
|
|
+ items.setBelongToCorpId(order.getBelongToCorpId());
|
|
|
+ if (ObjectUtils.isNotNull(order.getOrgOrderNo())) {
|
|
|
+ items.setSrcOrderno(order.getOrgOrderNo());
|
|
|
+ } else {
|
|
|
+ items.setSrcOrderno(order.getOrderNo());
|
|
|
+ }
|
|
|
+ items.setItemType("销售");
|
|
|
+ items.setCorpId(order.getCorpId());
|
|
|
+ items.setSrcParentId(order.getId());
|
|
|
+ items.setCurrency(order.getCurrency());
|
|
|
+ items.setExchangeRate(new BigDecimal(1));
|
|
|
+ items.setTaxRate(BigDecimal.ZERO);
|
|
|
+ items.setSrcType(1);
|
|
|
+ items.setTradeType(order.getTradeType());
|
|
|
+ items.setChargeMember(order.getChargeMember());
|
|
|
+ items.setAmount(amount);
|
|
|
+ items.setQuantity(new BigDecimal(1));
|
|
|
+ items.setPrice(price);
|
|
|
+ items.setUnit("条");
|
|
|
+ items.setRemarks(order.getPaymentTypeDescription());
|
|
|
+ //获取费用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());
|
|
|
+ }
|
|
|
+ //给角色为财务的人发送消息
|
|
|
+ R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
+ if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), null, null);
|
|
|
+ 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.getCorpsName() + "的销售订单 " + order.getOrderNo() + "审核通过,请查看");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 状态统计
|
|
|
* <p>
|
|
|
@@ -8647,28 +8764,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.eq(OrderFees::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(OrderFees::getPid, order.getId()));
|
|
|
if (CollectionUtils.isNotEmpty(orderFeesList)) {
|
|
|
-// BigDecimal amountCnyC = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 2 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
-// BigDecimal amountUsdC = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 2 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ for (OrderFees item : orderFeesList) {
|
|
|
+ item.setWhetherGenerateBills(1);
|
|
|
+ }
|
|
|
+ orderFeesService.updateBatchById(orderFeesList);
|
|
|
BigDecimal amountCnyD = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal amountUsdD = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if ("CNY".equals(order.getCurrency())) {
|
|
|
-// amountUsdC = amountUsdC.multiply(order.getExchangeRate());
|
|
|
amountUsdD = amountUsdD.multiply(order.getExchangeRate());
|
|
|
-// amount = amount.add(amountCnyD).add(amountUsdD).subtract(amountCnyC).subtract(amountUsdC);
|
|
|
amount = amount.add(amountCnyD).add(amountUsdD);
|
|
|
} else {
|
|
|
-// amountCnyC = amountCnyC.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
-// amount = amount.add(amountCnyD).add(amountUsdD).subtract(amountCnyC).subtract(amountUsdC);
|
|
|
amount = amount.add(amountCnyD).add(amountUsdD);
|
|
|
}
|
|
|
}
|
|
|
price = amount;
|
|
|
Items items = new Items();
|
|
|
items.setBelongToCorpId(order.getBelongToCorpId());
|
|
|
- if(ObjectUtils.isNotNull(order.getOrgOrderNo())){
|
|
|
+ if (ObjectUtils.isNotNull(order.getOrgOrderNo())) {
|
|
|
items.setSrcOrderno(order.getOrgOrderNo());
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
items.setSrcOrderno(order.getOrderNo());
|
|
|
}
|
|
|
items.setItemType(itemType);
|