|
|
@@ -17,6 +17,7 @@
|
|
|
package org.springblade.land.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
@@ -421,29 +422,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@GlobalTransactional(rollbackFor = Exception.class)
|
|
|
public Long saveOrder(Order order) {
|
|
|
if (ObjectUtil.isEmpty(order.getId())) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- order.setAdminProfiles(corpMessage.getData().getAdminProfiles());
|
|
|
- }
|
|
|
-
|
|
|
+ order.setAdminProfiles(getCorpName(order.getCorpId()));
|
|
|
order.setOrderNo(getSerial());
|
|
|
order.setTenantId(AuthUtil.getTenantId());
|
|
|
order.setCreateUser(AuthUtil.getUserId());
|
|
|
order.setCreateTime(new Date());
|
|
|
baseMapper.insert(order);
|
|
|
} else {
|
|
|
+ order.setAdminProfiles(getCorpName(order.getCorpId()));
|
|
|
order.setUpdateUser(AuthUtil.getUserId());
|
|
|
order.setUpdateTime(new Date());
|
|
|
baseMapper.updateById(order);
|
|
|
}
|
|
|
|
|
|
- long orderId = order.getId();
|
|
|
-
|
|
|
BigDecimal freight = BigDecimal.ZERO;
|
|
|
List<OrderItem> itemList = order.getItemList();
|
|
|
for (OrderItem item : itemList) {
|
|
|
if (ObjectUtil.isEmpty(item.getId())) {
|
|
|
- item.setOrderId(orderId);
|
|
|
+ item.setOrderId(order.getId());
|
|
|
item.setBillNo(order.getBillNo());
|
|
|
item.setKind(1);
|
|
|
item.setShippingMode(order.getShippingMode());
|
|
|
@@ -469,46 +465,93 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
StringBuilder addressDetail = new StringBuilder();
|
|
|
- for (OrderAddress address : order.getOrderAddressList()) {
|
|
|
- if (ObjectUtil.isEmpty(address.getId())) {
|
|
|
- address.setOrderId(orderId);
|
|
|
- address.setTenantId(AuthUtil.getTenantId());
|
|
|
- address.setCreateUser(AuthUtil.getUserId());
|
|
|
- address.setCreateTime(new Date());
|
|
|
- orderAddressMapper.insert(address);
|
|
|
- } else {
|
|
|
- address.setUpdateUser(AuthUtil.getUserId());
|
|
|
- address.setUpdateTime(new Date());
|
|
|
- orderAddressMapper.updateById(address);
|
|
|
+ dealExtraInfo(order, addressDetail);
|
|
|
+
|
|
|
+ order.setFreight(freight);
|
|
|
+ if (addressDetail.length() > 0) {
|
|
|
+ order.setAddressDetail(addressDetail.deleteCharAt(addressDetail.lastIndexOf("\n")).toString());
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(itemList)) {
|
|
|
+ order.setArrivalTime(itemList.get(0).getArrivalTime());
|
|
|
+ }
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ return order.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class)
|
|
|
+ public Long changeOrder(Order order) {
|
|
|
+ order.setAdminProfiles(getCorpName(order.getCorpId()));
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ baseMapper.updateById(order);
|
|
|
+
|
|
|
+ BigDecimal freight = BigDecimal.ZERO;
|
|
|
+ List<OrderItem> itemList = order.getItemList();
|
|
|
+ for (OrderItem item : itemList) {
|
|
|
+ OrderItem itemTemp = orderItemMapper.selectById(item.getId());
|
|
|
+
|
|
|
+ item.setBillNo(order.getBillNo());
|
|
|
+ item.setShippingMode(order.getShippingMode());
|
|
|
+ item.setSalesman(order.getSalesman());
|
|
|
+ item.setSalesmanDept(order.getSalesmanDept());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ orderItemMapper.updateById(item);
|
|
|
+
|
|
|
+ freight = freight.add(item.getLandAmountD().multiply(new BigDecimal(String.valueOf(item.getCtnQuantity()))));
|
|
|
+
|
|
|
+ BigDecimal landWeight = new BigDecimal("0.000000");
|
|
|
+ if (item.getCtnQuantity() > 0) {
|
|
|
+ landWeight = item.getLandWeight().divide(new BigDecimal(item.getCtnQuantity()), 6, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
|
|
|
- if (StringUtil.isNotBlank(address.getAddress())) {
|
|
|
- addressDetail.append(address.getSort()).append(".")
|
|
|
- .append(address.getCorpName()).append("(")
|
|
|
- .append(address.getContacts()).append(" ")
|
|
|
- .append(address.getTel()).append(") ")
|
|
|
- .append(address.getAddress()).append("\n");
|
|
|
+ if (item.getCtnQuantity() >= itemTemp.getCtnQuantity()) {
|
|
|
+ List<OrderItem> itemKind = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
|
|
|
+ .eq(OrderItem::getParentId, item.getId())
|
|
|
+ .eq(OrderItem::getIsDeleted, 0)
|
|
|
+ );
|
|
|
+ for (OrderItem kind : itemKind) {
|
|
|
+ kind.setArrivalTime(item.getArrivalTime());
|
|
|
+ kind.setCtnType(item.getCtnType());
|
|
|
+ kind.setLandAmountD(item.getLandAmountD());
|
|
|
+ kind.setLandWeight(landWeight);
|
|
|
+ kind.setQuantity(item.getQuantity());
|
|
|
+ kind.setSize(item.getSize());
|
|
|
+ kind.setGoods(item.getGoods());
|
|
|
+ kind.setRemarks(item.getRemarks());
|
|
|
+ orderItemMapper.updateById(kind);
|
|
|
+ }
|
|
|
+
|
|
|
+ buildCtn(item.getCtnQuantity() - itemTemp.getCtnQuantity(), landWeight, order, item);
|
|
|
+ } else {
|
|
|
+ OrderItem temp = new OrderItem();
|
|
|
+ temp.setIsDeleted(1);
|
|
|
+ orderItemMapper.update(temp, new LambdaUpdateWrapper<OrderItem>().eq(OrderItem::getParentId, item.getId()));
|
|
|
+ buildCtn(item.getCtnQuantity(), landWeight, order, item);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- List<CommonFile> fileList = order.getFileList();
|
|
|
- fileList.forEach(file -> {
|
|
|
- if (ObjectUtil.isEmpty(file.getId())) {
|
|
|
- file.setPid(orderId);
|
|
|
- file.setSource(LandConstant.ORDER);
|
|
|
- }
|
|
|
+ order.getOrderItemList().forEach(item -> {
|
|
|
+ item.setBillNo(order.getBillNo());
|
|
|
+ item.setShippingMode(order.getShippingMode());
|
|
|
+ item.setSalesman(order.getSalesman());
|
|
|
+ item.setSalesmanDept(order.getSalesmanDept());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ orderItemMapper.updateById(item);
|
|
|
});
|
|
|
- commonFileClient.saveList(fileList);
|
|
|
+
|
|
|
+ StringBuilder addressDetail = new StringBuilder();
|
|
|
+ dealExtraInfo(order, addressDetail);
|
|
|
|
|
|
order.setFreight(freight);
|
|
|
if (addressDetail.length() > 0) {
|
|
|
order.setAddressDetail(addressDetail.deleteCharAt(addressDetail.lastIndexOf("\n")).toString());
|
|
|
}
|
|
|
- if (CollectionUtil.isNotEmpty(itemList)) {
|
|
|
- order.setArrivalTime(itemList.get(0).getArrivalTime());
|
|
|
- }
|
|
|
baseMapper.updateById(order);
|
|
|
- return orderId;
|
|
|
+ return order.getId();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -523,47 +566,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
for (OrderItem item : orderItemList) {
|
|
|
orderItemMapper.delete(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getParentId, item.getId()));
|
|
|
-
|
|
|
- Integer ctnQuantity = item.getCtnQuantity();
|
|
|
- if (ctnQuantity < 1) {
|
|
|
- return R.fail("数据异常,请检查箱量");
|
|
|
- }
|
|
|
- BigDecimal landWeight = item.getLandWeight().divide(new BigDecimal(ctnQuantity), 6, RoundingMode.HALF_UP);
|
|
|
- IntStream.range(0, ctnQuantity).forEach(i -> {
|
|
|
- OrderItem childItem = new OrderItem();
|
|
|
- BeanUtil.copy(item, childItem);
|
|
|
- childItem.setId(null);
|
|
|
- childItem.setParentId(item.getId());
|
|
|
- childItem.setCtnQuantity(1);
|
|
|
- childItem.setLandWeight(landWeight);
|
|
|
- childItem.setKind(2);
|
|
|
- childItem.setEntrustTime(new Date());
|
|
|
- childItem.setCreateUser(AuthUtil.getUserId());
|
|
|
- childItem.setCreateTime(new Date());
|
|
|
- orderItemMapper.insert(childItem);
|
|
|
-
|
|
|
- OrderChange change = new OrderChange();
|
|
|
- change.setItemId(childItem.getId());
|
|
|
- change.setContent("提交");
|
|
|
- change.setKind(1);
|
|
|
- change.setTenantId(AuthUtil.getTenantId());
|
|
|
- change.setChangeUser(AuthUtil.getUserId());
|
|
|
- change.setChangeTime(new Date());
|
|
|
- orderChangeMapper.insert(change);
|
|
|
- });
|
|
|
-
|
|
|
- if (StringUtil.isNotBlank(order.getAdminProfiles())) {
|
|
|
- List<String> idList = Arrays.asList(order.getAdminProfiles().split(","));
|
|
|
- idList.forEach(id -> {
|
|
|
- item.setSendUserId(Long.valueOf(id));
|
|
|
- Message message = MessageUtil.toUser(item, "TJ");
|
|
|
-
|
|
|
- R result = messageClient.save(message);
|
|
|
- if (!result.isSuccess()) {
|
|
|
- throw new SecurityException("发送消息失败");
|
|
|
- }
|
|
|
- });
|
|
|
+ BigDecimal landWeight = new BigDecimal("0.000000");
|
|
|
+ if (item.getCtnQuantity() > 0) {
|
|
|
+ landWeight = item.getLandWeight().divide(new BigDecimal(item.getCtnQuantity()), 6, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
+ buildCtn(item.getCtnQuantity(), landWeight, order, item);
|
|
|
}
|
|
|
|
|
|
Order oderTemp = new Order();
|
|
|
@@ -685,4 +692,83 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private String getCorpName(Long corpId) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ return corpMessage.getData().getAdminProfiles();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void buildCtn(Integer ctnQuantity, BigDecimal landWeight, Order order, OrderItem item) {
|
|
|
+ IntStream.range(0, ctnQuantity).forEach(i -> {
|
|
|
+ OrderItem childItem = new OrderItem();
|
|
|
+ BeanUtil.copy(item, childItem);
|
|
|
+ childItem.setId(null);
|
|
|
+ childItem.setParentId(item.getId());
|
|
|
+ childItem.setCtnQuantity(1);
|
|
|
+ childItem.setLandWeight(landWeight);
|
|
|
+ childItem.setKind(2);
|
|
|
+ childItem.setEntrustTime(new Date());
|
|
|
+ childItem.setCreateUser(AuthUtil.getUserId());
|
|
|
+ childItem.setCreateTime(new Date());
|
|
|
+ orderItemMapper.insert(childItem);
|
|
|
+
|
|
|
+ OrderChange change = new OrderChange();
|
|
|
+ change.setItemId(childItem.getId());
|
|
|
+ change.setContent("提交");
|
|
|
+ change.setKind(1);
|
|
|
+ change.setTenantId(AuthUtil.getTenantId());
|
|
|
+ change.setChangeUser(AuthUtil.getUserId());
|
|
|
+ change.setChangeTime(new Date());
|
|
|
+ orderChangeMapper.insert(change);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(order.getAdminProfiles())) {
|
|
|
+ List<String> idList = Arrays.asList(order.getAdminProfiles().split(","));
|
|
|
+ idList.forEach(id -> {
|
|
|
+ item.setSendUserId(Long.valueOf(id));
|
|
|
+ Message message = MessageUtil.toUser(item, "TJ");
|
|
|
+
|
|
|
+ R result = messageClient.save(message);
|
|
|
+ if (!result.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void dealExtraInfo(Order order, StringBuilder addressDetail) {
|
|
|
+ for (OrderAddress address : order.getOrderAddressList()) {
|
|
|
+ if (ObjectUtil.isEmpty(address.getId())) {
|
|
|
+ address.setOrderId(order.getId());
|
|
|
+ address.setTenantId(AuthUtil.getTenantId());
|
|
|
+ address.setCreateUser(AuthUtil.getUserId());
|
|
|
+ address.setCreateTime(new Date());
|
|
|
+ orderAddressMapper.insert(address);
|
|
|
+ } else {
|
|
|
+ address.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ address.setUpdateTime(new Date());
|
|
|
+ orderAddressMapper.updateById(address);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(address.getAddress())) {
|
|
|
+ addressDetail.append(address.getSort()).append(".")
|
|
|
+ .append(address.getCorpName()).append("(")
|
|
|
+ .append(address.getContacts()).append(" ")
|
|
|
+ .append(address.getTel()).append(") ")
|
|
|
+ .append(address.getAddress()).append("\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<CommonFile> fileList = order.getFileList();
|
|
|
+ fileList.forEach(file -> {
|
|
|
+ if (ObjectUtil.isEmpty(file.getId())) {
|
|
|
+ file.setPid(order.getId());
|
|
|
+ file.setSource(LandConstant.ORDER);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ commonFileClient.saveList(fileList);
|
|
|
+ }
|
|
|
+
|
|
|
}
|