|
|
@ -1,6 +1,7 @@ |
|
|
|
package com.qs.serve.modules.oms.service.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
@ -30,6 +31,7 @@ import com.qs.serve.modules.oms.common.OmsOrderCheckState; |
|
|
|
import com.qs.serve.modules.oms.entity.*; |
|
|
|
import com.qs.serve.modules.oms.entity.bo.*; |
|
|
|
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; |
|
|
|
import com.qs.serve.modules.oms.entity.dto.OmsSaleOrderChange; |
|
|
|
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; |
|
|
|
import com.qs.serve.modules.oms.entity.dto.XltOrderDTO; |
|
|
|
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; |
|
|
@ -107,7 +109,11 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms |
|
|
|
if(invCodes.size()>0){ |
|
|
|
List<GoodsSku> skuList = goodsSkuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().in(GoodsSku::getSkuCode,invCodes)); |
|
|
|
for (OmsPlanParam.InvItem item : invItemList) { |
|
|
|
item.setFactory(skuList.stream().filter(sku -> sku.getSkuCode().equals(item.getInvCode())).findFirst().get().getBelong()); |
|
|
|
for (GoodsSku sku : skuList) { |
|
|
|
if(sku.getSkuCode().equals(item.getInvCode())){ |
|
|
|
item.setFactory(sku.getBelong()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
String result = HttpUtil.doPost(url, JsonUtil.objectToJson(invItemList),null); |
|
|
@ -942,6 +948,150 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms |
|
|
|
return spuAssesInfoList; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<OmsSaleOrderChange> getChangeLog(String orderCode) { |
|
|
|
// 获取订单历史版本列表并按创建时间正序排序
|
|
|
|
List<OmsSaleOrder> orderList = this.listHistoryOrderByCode(orderCode); |
|
|
|
if(CollUtil.isEmpty(orderList)) { |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
|
|
|
|
// 按创建时间正序排序
|
|
|
|
orderList = orderList.stream() |
|
|
|
.sorted(Comparator.comparing(OmsSaleOrder::getCreateTime)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
Map<String, OmsSaleOrderChange> versionChanges = new HashMap<>(); |
|
|
|
|
|
|
|
// 第一个订单作为基准参照物
|
|
|
|
OmsSaleOrder baseOrder = orderList.get(0); |
|
|
|
List<OmsSaleOrderItem> baseItems = baseOrder.getItemList(); |
|
|
|
|
|
|
|
try { |
|
|
|
OmsSaleOrderChange change = new OmsSaleOrderChange(); |
|
|
|
if(baseOrder.getOrderStatusCombo().equals(0)){ |
|
|
|
change.setUserName(baseOrder.getUserName()); |
|
|
|
}else { |
|
|
|
change.setUserName(baseOrder.getConfirmUserName()); |
|
|
|
} |
|
|
|
change.setOptionType("新增"); |
|
|
|
change.setVersion(baseOrder.getVersion()); |
|
|
|
change.setTime(baseOrder.getUpdateTime()); |
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
if(CollUtil.isNotEmpty(baseItems)){ |
|
|
|
for (OmsSaleOrderItem baseItem : baseItems) { |
|
|
|
sb.append(String.format("商品[%s] 数量:%d,价格:%.2f\n", |
|
|
|
baseItem.getSkuCode(), |
|
|
|
baseItem.getQuantity(), |
|
|
|
baseItem.getSalesPrice())); |
|
|
|
} |
|
|
|
change.setRemark(sb.toString()); |
|
|
|
} |
|
|
|
versionChanges.put(baseOrder.getVersion(), change); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
// 从第二个订单开始比较变化
|
|
|
|
for(int i = 1; i < orderList.size(); i++) { |
|
|
|
OmsSaleOrder currentOrder = orderList.get(i); |
|
|
|
List<OmsSaleOrderItem> currentItems = currentOrder.getItemList(); |
|
|
|
String currentVersion = currentOrder.getVersion(); |
|
|
|
|
|
|
|
// 获取或创建当前版本的变更记录
|
|
|
|
OmsSaleOrderChange versionChange = versionChanges.computeIfAbsent(currentVersion, k -> { |
|
|
|
OmsSaleOrderChange change = new OmsSaleOrderChange(); |
|
|
|
change.setVersion(currentVersion); |
|
|
|
change.setUserName(currentOrder.getConfirmUserName()); |
|
|
|
change.setTime(currentOrder.getUpdateTime()); |
|
|
|
return change; |
|
|
|
}); |
|
|
|
|
|
|
|
List<String> remarks = new ArrayList<>(); |
|
|
|
boolean hasAdd = false; |
|
|
|
boolean hasModify = false; |
|
|
|
boolean hasDelete = false; |
|
|
|
|
|
|
|
// 比较商品变化
|
|
|
|
if(CollUtil.isNotEmpty(baseItems) && CollUtil.isNotEmpty(currentItems)) { |
|
|
|
Set<String> matchedSkus = new HashSet<>(); |
|
|
|
|
|
|
|
// 检查新增和修改的商品
|
|
|
|
for(OmsSaleOrderItem currentItem : currentItems) { |
|
|
|
boolean found = false; |
|
|
|
for(OmsSaleOrderItem baseItem : baseItems) { |
|
|
|
if(currentItem.getSkuCode().equals(baseItem.getSkuCode())) { |
|
|
|
found = true; |
|
|
|
matchedSkus.add(currentItem.getSkuCode()); |
|
|
|
|
|
|
|
// 检查数量变化
|
|
|
|
if(!currentItem.getQuantity().equals(baseItem.getQuantity())) { |
|
|
|
hasModify = true; |
|
|
|
remarks.add(String.format("[改数量] 商品[%s]数量从%d变更为%d", |
|
|
|
currentItem.getSkuCode(), |
|
|
|
baseItem.getQuantity(), |
|
|
|
currentItem.getQuantity())); |
|
|
|
} |
|
|
|
|
|
|
|
// 检查销售价变化
|
|
|
|
if(currentItem.getSalesPrice() != null && baseItem.getSalesPrice() != null |
|
|
|
&& currentItem.getSalesPrice().compareTo(baseItem.getSalesPrice()) != 0) { |
|
|
|
hasModify = true; |
|
|
|
remarks.add(String.format("[改价格] 商品[%s]销售价从%.2f变更为%.2f", |
|
|
|
currentItem.getSkuCode(), |
|
|
|
baseItem.getSalesPrice(), |
|
|
|
currentItem.getSalesPrice())); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 新增的商品
|
|
|
|
if(!found) { |
|
|
|
hasAdd = true; |
|
|
|
remarks.add(String.format("[新增] 商品[%s]数量%d", |
|
|
|
currentItem.getSkuCode(), |
|
|
|
currentItem.getQuantity())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查删除的商品
|
|
|
|
for(OmsSaleOrderItem baseItem : baseItems) { |
|
|
|
if(!matchedSkus.contains(baseItem.getSkuCode())) { |
|
|
|
hasDelete = true; |
|
|
|
remarks.add(String.format("[删除] 商品[%s]", baseItem.getSkuCode())); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 设置操作类型
|
|
|
|
if(hasDelete && !hasAdd && !hasModify) { |
|
|
|
versionChange.setOptionType("删除"); |
|
|
|
} else if(hasAdd || hasModify) { |
|
|
|
versionChange.setOptionType("修改"); |
|
|
|
}else { |
|
|
|
versionChange.setOptionType("无变动"); |
|
|
|
} |
|
|
|
|
|
|
|
// 合并备注信息
|
|
|
|
if(!remarks.isEmpty()) { |
|
|
|
String existingRemark = versionChange.getRemark(); |
|
|
|
String newRemarks = String.join("\n", remarks); |
|
|
|
versionChange.setRemark(existingRemark == null ? newRemarks : |
|
|
|
existingRemark + "\n" + newRemarks); |
|
|
|
} |
|
|
|
|
|
|
|
// 更新基准订单为当前订单,用于下一轮比较
|
|
|
|
baseOrder = currentOrder; |
|
|
|
baseItems = currentItems; |
|
|
|
} |
|
|
|
|
|
|
|
// 将Map的values转为List并按time排序
|
|
|
|
return versionChanges.values().stream() |
|
|
|
.sorted(Comparator.comparing(OmsSaleOrderChange::getTime)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<OmsSaleOrder> listHistoryOrderByCode(String code) { |
|
|
|
List<OmsSaleOrder> omsSaleOrderList = this.list(new LambdaQueryWrapper<OmsSaleOrder>() |
|
|
|