|
@@ -5,6 +5,8 @@ import com.iamberry.rst.core.address.District;
|
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
import com.iamberry.rst.core.cm.StoreInfo;
|
|
|
+import com.iamberry.rst.core.dm.DealerChannel;
|
|
|
+import com.iamberry.rst.core.dm.DealerProduct;
|
|
|
import com.iamberry.rst.core.order.*;
|
|
|
import com.iamberry.rst.core.page.PageRequest;
|
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
@@ -18,6 +20,8 @@ import com.iamberry.rst.core.tools.LogisticsInfo;
|
|
|
import com.iamberry.rst.faces.address.AddressService;
|
|
|
import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
import com.iamberry.rst.faces.cm.StoreInfoService;
|
|
|
+import com.iamberry.rst.faces.dm.DealerChannelService;
|
|
|
+import com.iamberry.rst.faces.dm.DealerProductService;
|
|
|
import com.iamberry.rst.faces.order.EfastOrderService;
|
|
|
import com.iamberry.rst.faces.order.LogisticsInfoService;
|
|
|
import com.iamberry.rst.faces.order.OrderBatchService;
|
|
@@ -93,14 +97,17 @@ public class AdminOrderController {
|
|
|
private OrderBatchService orderBatchService;
|
|
|
@Autowired
|
|
|
private LogisticsInfoService logisticsInfoService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private DealerChannelService dealerChannelService;
|
|
|
@Autowired
|
|
|
private ExcelUtil excelUtil;
|
|
|
@Autowired
|
|
|
private GenerateKeyUtil generateKeyUtil;
|
|
|
-
|
|
|
@Autowired
|
|
|
private AddressService addressService;
|
|
|
+ @Autowired
|
|
|
+ private DealerProductService dealerProductService;
|
|
|
+
|
|
|
/**
|
|
|
* 进入更换滤芯页面
|
|
|
*
|
|
@@ -1045,17 +1052,113 @@ public class AdminOrderController {
|
|
|
salesOrders.setSalesBatchId(batchId);
|
|
|
//增加订单方式 1:手动增加 2:Excel导入
|
|
|
|
|
|
- //计算订单总金额
|
|
|
- Integer itemProductPrice=0; //产品市场价
|
|
|
- Integer itemProductDiscount=0; //产品折扣价
|
|
|
- for (SalesOrderItem salesOrderItem:salesOrders.getSalesOrderItemList()) {
|
|
|
- itemProductPrice += salesOrderItem.getItemProductPrice() * salesOrderItem.getItemNum();
|
|
|
- itemProductDiscount += salesOrderItem.getItemProductDiscount() * salesOrderItem.getItemNum();
|
|
|
- }
|
|
|
- salesOrders.setSalesAmount(itemProductPrice);
|
|
|
- salesOrders.setSalesPayMoney(itemProductDiscount);
|
|
|
+ try{
|
|
|
+ DealerChannel dealerChannel = new DealerChannel();
|
|
|
+ boolean flag = true;
|
|
|
+ if(salesOrders.getSalesStoreId() != null){
|
|
|
+ dealerChannel.setStoreId(salesOrders.getSalesStoreId());
|
|
|
+ List<DealerChannel> dealerChannelList = dealerChannelService.getDealerChannelList(dealerChannel);
|
|
|
+ if(dealerChannelList!= null && dealerChannelList.size() > 0){
|
|
|
+ dealerChannel = dealerChannelList.get(0);
|
|
|
+ }else{
|
|
|
+ salesOrders.setSalesDealCode("1"); //salesDealCode
|
|
|
+ throw new Exception("订单导入失败-查询店铺对应客户信息失败,店铺ID:"+salesOrders.getSalesStoreId()+"。");
|
|
|
+ }
|
|
|
+
|
|
|
+ DealerProduct smallDp = new DealerProduct();
|
|
|
+ smallDp.setDealerId(dealerChannel.getDealerId());
|
|
|
+ smallDp.setDealChannelId(dealerChannel.getDealChannelId());
|
|
|
+ List<DealerProduct> smallDpList = dealerProductService.getProductByChannelList(smallDp);
|
|
|
+
|
|
|
+ //表示分配剩余总金额
|
|
|
+ Integer lastTotal = salesOrders.getSalesAmount();
|
|
|
+ for (int p =0 ;p<salesOrders.getSalesOrderItemList().size(); p++ ){
|
|
|
+ SalesOrderItem salesOrderItem = salesOrders.getSalesOrderItemList().get(p);
|
|
|
+
|
|
|
+ //获取当前该产品对应客户的价格
|
|
|
+ Integer newPrice=0;
|
|
|
+ if(smallDpList != null && smallDpList.size() > 0){
|
|
|
+ boolean isHaveColorId = false;
|
|
|
+ for (DealerProduct dp:smallDpList) {
|
|
|
+ if(Objects.equals(dp.getColorId(), salesOrderItem.getItemColorId())){
|
|
|
+ if(1 == dp.getDealProdStoreArea()){
|
|
|
+ // 1:全部店铺
|
|
|
+ newPrice = dp.getDealProdPrice();
|
|
|
+ }else{
|
|
|
+ // 2:部分店铺
|
|
|
+ //for (DealerProductStore dps:dp.getDealerProductStoreList()) {
|
|
|
+ //if(salesOrders.getSalesStoreId().equals(dps.getStoreId())){
|
|
|
+ // newPrice = dp.getDealProdPrice();
|
|
|
+ //}
|
|
|
+ //}
|
|
|
+ newPrice = dp.getDealProdPrice();
|
|
|
+ }
|
|
|
+ isHaveColorId = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isHaveColorId){
|
|
|
+ salesOrders.setSalesDealCode("1"); //salesDealCode
|
|
|
+ throw new Exception("订单导入-未能从该客户中获取到对应产品的信息,客户名称:"+dealerChannel.getDealerName()+",---产品:"+ salesOrderItem.getItemProductName()+"("+ salesOrderItem.getItemProductColor() +")。");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ salesOrders.setSalesDealCode("1"); //salesDealCode
|
|
|
+ throw new Exception("订单导入-未能从该客户中获取到对应产品的信息,客户名称:"+dealerChannel.getDealerName()+",---产品:"+ salesOrderItem.getItemProductName()+"("+ salesOrderItem.getItemProductColor() +")。");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(flag){
|
|
|
+ if(1 == dealerChannel.getDealerSelfOperated()){
|
|
|
+ //是否自营 1:自营
|
|
|
+
|
|
|
+ if((p+1) >= salesOrders.getSalesOrderItemList().size() ) {
|
|
|
+ //最后一个赋值剩余值,防止出现少一分的情况
|
|
|
+ salesOrderItem.setItemTotal(lastTotal);
|
|
|
+ }else{
|
|
|
+ //计算订单总价(*数量) 因为上面判断了单个,所以订单项最低也会有一个,不可能为0
|
|
|
+ Integer allPrice = 0;
|
|
|
+ for ( SalesOrderItem sdi : salesOrders.getSalesOrderItemList()){
|
|
|
+ for (DealerProduct dp:smallDpList) {
|
|
|
+ if(Objects.equals(dp.getColorId(),sdi.getItemColorId())){
|
|
|
+ allPrice += sdi.getItemNum()*dp.getDealProdPrice();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //当前产品总价
|
|
|
+ Integer aoncePrice = newPrice*salesOrderItem.getItemNum();
|
|
|
+
|
|
|
+ //计算比例
|
|
|
+ Double priceRate = Double.valueOf(aoncePrice) / Double.valueOf(allPrice);
|
|
|
+
|
|
|
+ //当前订单项按照比例得出的实际总价
|
|
|
+ Double itemTotalByDouble = lastTotal * priceRate;
|
|
|
+ Integer itemTotal = itemTotalByDouble.intValue();
|
|
|
+ salesOrderItem.setItemTotal(itemTotal);
|
|
|
+ //减去当前订单项的金额
|
|
|
+ lastTotal -= itemTotal;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //2:非自营
|
|
|
+ salesOrderItem.setItemProductDiscount(newPrice);
|
|
|
+ salesOrderItem.setItemProductPrice(newPrice);
|
|
|
+ salesOrderItem.setItemTotal(newPrice*salesOrderItem.getItemNum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ salesOrders.setSalesDealCode("1"); //salesDealCode
|
|
|
+ throw new Exception("订单导入-获取店铺ID失败,店铺ID:"+salesOrders.getSalesStoreId()+"。");
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算订单总金额
|
|
|
+// Integer itemProductPrice=0; //产品市场价
|
|
|
+// Integer itemProductDiscount=0; //产品折扣价
|
|
|
+ for (SalesOrderItem salesOrderItem:salesOrders.getSalesOrderItemList()) {
|
|
|
+ salesOrderItem.setItemProductPrice(0);
|
|
|
+ salesOrderItem.setItemProductDiscount(0);
|
|
|
+ }
|
|
|
+ salesOrders.setSalesPayMoney(salesOrders.getSalesAmount());
|
|
|
+
|
|
|
|
|
|
- try{
|
|
|
// bl = salesOrderService.addRstOrderAndIteminfo(salesOrders);
|
|
|
// if(bl == false){
|
|
|
// logger.info("合并订单出错+:"+bl + "错误交易号为:"+salesDealCode);
|
|
@@ -1071,7 +1174,8 @@ public class AdminOrderController {
|
|
|
// sb.append(salesDealCode+"\r\n");
|
|
|
// }
|
|
|
bl = salesOrderService.addRstOrderinfo(salesOrders,new ArrayList<SalesOrder>(),null);
|
|
|
- }catch (RuntimeException e){
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
logger.info("插入订单失败;错误信息" + e.getMessage());
|
|
|
for(EfastOrder efastOrderStyle:orderEfasts){
|
|
|
if(salesDealCode.equals(efastOrderStyle.getPlatformOrderId())){
|
|
@@ -1134,6 +1238,8 @@ public class AdminOrderController {
|
|
|
}
|
|
|
String orderId = efastOrder.getPlatformOrderId();
|
|
|
salesOrder = mapsalesOrderList.get(orderId);
|
|
|
+
|
|
|
+ Integer total = -1;
|
|
|
if (salesOrder == null) {
|
|
|
// 没有订单
|
|
|
salesOrderList = new ArrayList<SalesOrder>();
|
|
@@ -1159,13 +1265,18 @@ public class AdminOrderController {
|
|
|
salesOrderItem.setItemProductPic(productColor.getColorPicture());
|
|
|
salesOrderItem.setItemProductColor(productColor.getColorName());
|
|
|
salesOrderItem.setItemColorBar(productColor.getColorBar());
|
|
|
- salesOrderItem.setItemProductPrice(efastOrder.getOrderProductPrice());
|
|
|
- salesOrderItem.setItemProductDiscount(efastOrder.getOrderProductDiscount());
|
|
|
+ salesOrderItem.setItemTotal(efastOrder.getOrderTotal());
|
|
|
+// salesOrderItem.setItemProductPrice(efastOrder.getOrderProductPrice());
|
|
|
+// salesOrderItem.setItemProductDiscount(efastOrder.getOrderProductDiscount());
|
|
|
+ total = efastOrder.getOrderTotal();
|
|
|
salesOrderItem.setItemIsSource(1);
|
|
|
}
|
|
|
salesOrderItemList.add(salesOrderItem);
|
|
|
salesAmount += productColor.getColorDiscount();
|
|
|
|
|
|
+ salesOrder.setSalesAmount(total);
|
|
|
+ salesOrder.setSalesPayMoney(total);
|
|
|
+
|
|
|
salesOrder.setSalesOpenId("0");
|
|
|
salesOrder.setSalesDiscountMoney(salesAmount);
|
|
|
salesOrder.setSalesPledgeMoney(salesAmount);
|
|
@@ -1188,6 +1299,11 @@ public class AdminOrderController {
|
|
|
String newArea = efastOrder.getOrderArea();
|
|
|
newArea = newArea.replaceAll("高新技术产业开发区|高新技术开发区|技术开发区|经济开发区|自治区|地区|自治县","");
|
|
|
|
|
|
+ //去掉全角和半角空格
|
|
|
+ byte bytes[] = {(byte) 0xC2,(byte) 0xA0};
|
|
|
+ String UTFSpace = new String(bytes,"utf-8");
|
|
|
+ newArea = newArea.replaceAll(UTFSpace, "");
|
|
|
+
|
|
|
String lastNewArea = newArea.substring(newArea.length()-1,newArea.length());
|
|
|
lastNewArea = lastNewArea.replaceAll("县|区|镇|乡|市|州|洲","");
|
|
|
|
|
@@ -1207,8 +1323,6 @@ public class AdminOrderController {
|
|
|
|
|
|
salesOrder.setSalesAddressTel(efastOrder.getOrderAddressTel());
|
|
|
salesOrder.setSalesAddressName(efastOrder.getOrderAddressName());
|
|
|
-// salesOrder.setSalesAmount(efastOrder.getOrderAmount());
|
|
|
-// salesOrder.setSalesPayMoney(efastOrder.getOrderPayMoney());
|
|
|
salesOrder.setSalesPayType(1);
|
|
|
salesOrder.setSalesWaitMoney(efastOrder.getOrderAmount() - efastOrder.getOrderPayMoney());
|
|
|
salesOrder.setSalesShippingFee(0);
|