package com.iamberry.rst.service.cm; import com.iamberry.rst.core.cm.FittingsInfo; 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.order.ProductColor; import com.iamberry.rst.faces.cm.SalesOrderService; import com.iamberry.rst.faces.cm.StoreInfoService; import com.iamberry.rst.faces.order.EfastOrderService; import com.iamberry.rst.faces.product.ProductService; import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper; import com.iamberry.rst.service.cm.mapper.SalesOrderMapper; import com.iamberry.wechat.tools.DateTimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by liuzhiwei on 2017/10/31. */ @Service public class SalesOrderServiceImpl implements SalesOrderService { @Autowired private SalesOrderMapper salesOrderMapper; @Autowired private ProductService productService; @Autowired private StoreInfoService storeInfoService; @Autowired private EfastOrderService efastOrderService; @Autowired private SalesOrderService salesOrderService; @Autowired private FittingsInfoMapper fittingsInfoMapper; @Override public Integer addSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.addSalesOrder(salesOrder); } @Override public SalesOrder getSalesOrderById(Integer salesId) { return salesOrderMapper.getSalesOrderById(salesId); } @Override public Integer updateSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.updateSalesOrder(salesOrder); } @Override public Integer addSalesOrderList(List list) { return salesOrderMapper.addSalesOrderList(list); } @Override public List listSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.listSalesOrder(salesOrder); } @Override public boolean addOrderAndItem(SalesOrder salesOrder, List list) { if (list == null || list.size() == 0) { return false; } //查询该订单是否存在,如果存在,不需要再次添加到订单中 int count = salesOrderMapper.getOrderInfoCount(salesOrder); if (count > 0) { return true; } //添加订单数据 int orderNum = salesOrderMapper.addSalesOrder(salesOrder); if (orderNum <= 0) { return false; } for (SalesOrderItem item : list) { item.setItemOrderId(salesOrder.getSalesId()); } //批量添加订单项数据 int itemNum = salesOrderMapper.addOrderItemList(list); if (itemNum <= 0) { return false; } return true; } @Override @Transactional public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List list) { //添加订单数据 int orderNum = salesOrderMapper.addSalesOrder(salesOrder); if (orderNum <= 0) { return salesOrder; } for (SalesOrderItem item : list) { item.setItemOrderId(salesOrder.getSalesId()); } //批量添加订单项数据 int itemNum = salesOrderMapper.addOrderItemList(list); if (itemNum <= 0) { return salesOrder; } return salesOrder; } @Override public List listSalesOrderItem(SalesOrderItem salesOrderItem) { return salesOrderMapper.listSalesOrderItem(salesOrderItem); } @Override public Integer updateOrderList(JSONArray orderList, List list) { List salesOrders = new ArrayList(); //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步 for (int i = 0;i < orderList.size();i++) { JSONObject orderInfo = orderList.getJSONObject(i); for (SalesOrder salesOrder : list) { if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId()) && !(orderInfo.getInt("order_status") == salesOrder.getSalesStatus() && orderInfo.getInt("shipping_status") == salesOrder.getSalesShippingStatus() && orderInfo.getInt("pay_status") == salesOrder.getSalesPayStatus() && orderInfo.getInt("process_status") == salesOrder.getSalesProcessStatus() && orderInfo.getInt("is_send") == salesOrder.getSalesIsSend() && orderInfo.getInt("is_locked") == salesOrder.getSalesIsLocked() && orderInfo.getInt("is_separate") == salesOrder.getSalesIsSeparate() && orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm()) && orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum()) )) { SalesOrder order = new SalesOrder(); order.setSalesId(salesOrder.getSalesId()); order.setSalesStatus(orderInfo.getInt("order_status")); order.setSalesShippingStatus(orderInfo.getInt("shipping_status")); order.setSalesPayStatus(orderInfo.getInt("pay_status")); order.setSalesProcessStatus(orderInfo.getInt("process_status")); order.setSalesIsSend(orderInfo.getInt("is_send")); order.setSalesIsLocked(orderInfo.getInt("is_locked")); order.setSalesIsSeparate(orderInfo.getInt("is_separate")); order.setSalesPostFirm(orderInfo.getString("shipping_name")); order.setSalesPostNum(orderInfo.getString("invoice_no")); salesOrders.add(order); } } } if (salesOrders != null && salesOrders.size() > 0) { //批量修改订单状态等信息 return salesOrderMapper.updateOrderList(salesOrders); } else { return 1; } } @Override public Integer updateReturnOrderList(JSONArray orderList, List list) { List salesOrders = new ArrayList(); //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步 for (int i = 0;i < orderList.size();i++) { JSONObject orderInfo = orderList.getJSONObject(i); for (SalesOrder salesOrder : list) { if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) { SalesOrder order = new SalesOrder(); switch (orderInfo.getInt("process_type")) { case 1://退货 order.setSalesOrderStatus(3); break; case 4://换货 order.setSalesOrderStatus(2); break; default: order.setSalesOrderStatus(3); break; } order.setSalesId(salesOrder.getSalesId()); salesOrders.add(order); } } } //批量修改订单状态等信息 return salesOrderMapper.updateOrderList(list); } @Override public void addSalesOrderList(JSONObject obj) throws Exception{ if (obj == null) { return; } JSONArray orderList = obj.getJSONArray("list"); if (orderList == null || orderList.size() == 0) { return; } for (int i = 0;i < orderList.size();i++) { JSONObject order = orderList.getJSONObject(i); //获取订单详情 JSONObject orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code")); if (orderInfo == null) { return; } //获取订单项集合 JSONArray itemArray = orderInfo.getJSONArray("orders"); if (itemArray == null || itemArray.size() == 0) { return; } SalesOrder salesOrder = new SalesOrder(); salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号 salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号 salesOrder.setSalesOrderStatus(1);//订单状态 salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中 salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款 salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态 salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货 salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定 salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货 salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废 /*if (orderStatus == 2 || orderStatus == 3) { continue; }*/ salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码 salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号 salesOrder.setSalesOpenId(order.getString("mobile"));//唯一标识 salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name")));//支付方式 salesOrder.setSalesPayTime(new Date(order.getInt("pay_time")*1000));//支付时间 salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言 salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言 salesOrder.setSalesAmount(order.getInt("order_amount")*100);//应付款 salesOrder.setSalesPayMoney(order.getInt("money_paid")*100);//已付款 salesOrder.setSalesAddressName(order.getString("consignee"));//收货人 salesOrder.setSalesAddressTel(order.getString("mobile"));//收货人电话 salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址 salesOrder.setSalesShippingFee(order.getInt("shipping_fee")*100);//邮费 salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间 if (StringUtils.isNotEmpty(order.getString("delivery_time"))) { salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间 } salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额 salesOrder.setSalesPledgeMoney(0);//押金金额 salesOrder.setSalesRemainDeposit(0);//待提取金额 salesOrder.setSalesSendType(2);//发货方式,默认为物流发货 salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间 salesOrder.setSalesWaitMoney(0);//待付金额 salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额 salesOrder.setSalesPayNumber("0000");//支付尾号 salesOrder.setSalesType(1);//订单类型 //查询店铺信息 StoreInfo storeInfo = new StoreInfo(); storeInfo.setStoreEfast(order.getString("sd_id")); List storeList = storeInfoService.listStore(storeInfo); int storeId = 0; int companyId = 0; if (storeList != null && storeList.size() > 0) { storeInfo = storeList.get(0); storeId = storeInfo.getStoreId(); companyId = storeInfo.getCompanyId(); } salesOrder.setSalesStoreId(storeId);//店铺id salesOrder.setSalesCompanyId(companyId);//销售公司id List itemList = new ArrayList(); for (int j = 0;j < itemArray.size();j++) { ProductColor color = new ProductColor(); JSONObject itemJson = itemArray.getJSONObject(j); SalesOrderItem item = new SalesOrderItem(); color.setColorBar(itemJson.getString("goods_sn")); List colorList = productService.listproductAndColor(color); if (colorList != null || colorList.size() > 0) { color = colorList.get(0); item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码 item.setItemNum(itemJson.getInt("sn"));//商品数量 item.setItemCreateTime(salesOrder.getSalesCreateTime()); item.setItemColorId(color.getColorId()); item.setItemProductColor(color.getColorName()); item.setItemProductDiscount(color.getColorDiscount()); item.setItemProductId(color.getColorProductId()); item.setItemProductName(color.getProductName()); item.setItemProductPic(color.getColorPicture()); item.setItemProductType(color.getProductType()); item.setItemProductPrice(color.getColorPrice()); item.setItemIsSource(1); itemList.add(item); } else { //获取配件信息 FittingsInfo fittingsInfo = new FittingsInfo(); fittingsInfo.setFittingsBar(itemJson.getString("goods_sn")); List Fittings = fittingsInfoMapper.listFittings(fittingsInfo); if (Fittings == null || Fittings.size() == 0) { return; } fittingsInfo = Fittings.get(0); item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码 item.setItemNum(itemJson.getInt("sn"));//商品数量 item.setItemCreateTime(salesOrder.getSalesCreateTime()); item.setItemColorId(fittingsInfo.getFittingsId()); item.setItemProductColor(fittingsInfo.getFittingsName()); item.setItemProductDiscount(fittingsInfo.getFittingsDiscount()); item.setItemProductId(fittingsInfo.getProductId()); item.setItemProductName(fittingsInfo.getFittingsName()); item.setItemProductPic(""); item.setItemProductType(0); item.setItemProductPrice(fittingsInfo.getFittingsPrice()); item.setItemIsSource(2); itemList.add(item); } } //添加订单和订单项 salesOrderService.addOrderAndItem(salesOrder,itemList); } } @Override public Integer getOrderInfoCount(SalesOrder salesOrder) { return salesOrderMapper.getOrderInfoCount(salesOrder); } }