package com.iamberry.rst.service.cm; import com.github.pagehelper.PageHelper; 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.DownsingleRuleInfo; import com.iamberry.rst.core.order.DownsingleRuleItemInfo; import com.iamberry.rst.core.order.PostInfo; import com.iamberry.rst.core.order.ProductColor; import com.iamberry.rst.core.page.PagedResult; import com.iamberry.rst.core.sys.SysConfig; import com.iamberry.rst.core.tools.LogisticsInfo; 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.rst.service.sys.mapper.SysConfigMapper; import com.iamberry.rst.util.PageUtil; import com.iamberry.wechat.tools.DateTimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.beans.Transient; import java.util.*; /** * Created by liuzhiwei on 2017/10/31. */ @Service public class SalesOrderServiceImpl implements SalesOrderService { private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class); @Autowired private SalesOrderMapper salesOrderMapper; @Autowired private ProductService productService; @Autowired private StoreInfoService storeInfoService; @Autowired private EfastOrderService efastOrderService; @Autowired private SalesOrderService salesOrderService; @Autowired private FittingsInfoMapper fittingsInfoMapper; @Autowired private SysConfigMapper sysConfigMapper; @Override public Integer addSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.addSalesOrder(salesOrder); } @Override @Transactional public Integer addSalesOrderManual(SalesOrder salesOrder) { salesOrderMapper.addSalesOrder(salesOrder); return null; } @Override public SalesOrder getSalesOrderById(Integer salesId) { return salesOrderMapper.getSalesOrderById(salesId); } @Override public Integer updateSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.updateSalesOrder(salesOrder); } @Transactional @Override public Integer updateOrderInfo(SalesOrder salesOrder) { int flag = 0; //删除订单项 flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId()); if (flag <= 0) { throw new RuntimeException("删除订单项失败!"); } //修改订单 salesOrderMapper.updateSalesOrder(salesOrder); if (flag <= 0) { throw new RuntimeException("修改订单失败!"); } //批量添加订单项数据 flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList()); if (flag <= 0) { throw new RuntimeException("增加订单项失败!"); } return flag; } @Override public Integer addSalesOrderList(List list) { return salesOrderMapper.addSalesOrderList(list); } @Override public List listSalesOrder(SalesOrder salesOrder) { return salesOrderMapper.listSalesOrder(salesOrder); } @Override public Integer listSalesOrderNum(SalesOrder salesOrder) { return salesOrderMapper.listSalesOrderNum(salesOrder); } @Override public PagedResult listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) { salesOrder.setStartOrderNO((pageNO-1) * pageSize); salesOrder.setEndOrderNO(pageSize); //查询订单列表信息 List orderList = salesOrderMapper.listSalesOrderNew(salesOrder); for(SalesOrder so : orderList){ SalesOrderItem salesOrderItem = new SalesOrderItem(); salesOrderItem.setItemOrderId(so.getSalesId()); List salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem); so.setSalesOrderItemList(salesOrderItemList); } PagedResult result = PageUtil.getPage(orderList); // 查询分页的数据 int count = salesOrderMapper.listSalesOrderNum(salesOrder); result.setTotal(count); if(count%pageSize==0){ count=count/pageSize; } else{ count=count/pageSize+1; } result.setPages(count); result.setPageNo(pageNO); return result; } @Override public List listWaitPrintOrderNum() { return salesOrderMapper.listWaitPrintOrderNum(); } @Override public PagedResult listAwaitSendSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) { PageHelper.startPage(pageNO, pageSize, isTotalNum); //查询订单列表信息 List orderList = salesOrderMapper.listAwaitSendSalesOrderPage(salesOrder); return PageUtil.getPage(orderList); } @Override @Transactional public boolean addOrderAndItem(SalesOrder salesOrder, List list) throws Exception { if (list == null || list.size() == 0) { throw new RuntimeException("获取订单信息出错!"); } SalesOrder verifyOrder = new SalesOrder(); verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId()); //查询该订单是否存在,如果存在,不需要再次添加到订单中 int count = salesOrderMapper.getOrderInfoCount(verifyOrder); if (count > 0) { return true; } //添加订单数据 try { int orderNum = salesOrderMapper.addSalesOrder(salesOrder); if (orderNum <= 0) { throw new RuntimeException("获取订单信息出错!"); } } catch (Exception e) { return true; } for (SalesOrderItem item : list) { item.setItemOrderId(salesOrder.getSalesId()); } //批量添加订单项数据 int itemNum = salesOrderMapper.addOrderItemList(list); if (itemNum <= 0) { throw new RuntimeException("获取订单信息出错!"); } 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; } public void parseOrder(SalesOrder oginerOrder, List listOrder) { // 订单项拆分完成,直接返回 if (oginerOrder.getSalesOrderItemList().size() <= 0) { return; } List listDownsingleRuleInfo = salesOrderService.listDownsingleRule(); if(listDownsingleRuleInfo.size() < 1){ listOrder.add(oginerOrder); return; } // 拆单,比较的是数量和产品 Map itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size()); for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) { SalesOrderItem itemTwo = new SalesOrderItem(); BeanUtils.copyProperties(item,itemTwo); itemMap.put(item.getItemColorBar(), itemTwo); } // 遍历拆单规则 int ruleCount = 0; for (DownsingleRuleInfo rule : listDownsingleRuleInfo) { // 一个拆单规则 int count = 0; for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) { if (itemMap.get(item.getDownsingleItemBar()) != null) { if (item.getDownsingleItemNum() <= itemMap.get(item.getDownsingleItemBar()).getItemNum()) { count ++; } } } if (count == rule.getDownsingleRuleItemList().size()) { // 满足拆单条件 SalesOrder newOrder = new SalesOrder(); BeanUtils.copyProperties(oginerOrder,newOrder); newOrder.setSalesOrderItemList(new ArrayList(count)); for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) { SalesOrderItem temp = new SalesOrderItem(); BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp); temp.setItemNum(item.getDownsingleItemNum()); newOrder.getSalesOrderItemList().add(temp); } listOrder.add(newOrder); // 继续递归 for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) { if (item.getDownsingleItemNum().equals(itemMap.get(item.getDownsingleItemBar()).getItemNum())) { // 数量和拆单规则相同,则删除原订单的订单项 /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/ for(int i = 0;i 0) { listOrder.add(oginerOrder); } } } ruleCount++; } } @Override @Transactional public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){ //合并订单项-------------statr List listItem = salesOrder.getSalesOrderItemList(); salesOrder.setSalesOrderItemList(null); List list = new ArrayList<>(); for (int i = 0;i listSalesOrder = new ArrayList<>(); salesOrder.setSalesOrderItemList(list); salesOrderService.parseOrder(salesOrder, listSalesOrder); //匹配拆单规则 分割订单-------------end boolean msg = false; //判断主从订单--------------------state if (listSalesOrder.size() > 0){ SalesOrder mainOrder = null; for (int s = 0;s < listSalesOrder.size();s++){ if(mainOrder == null){ for(int i = 0;i listSalesOrder) { Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode()); if(flag > 0){ throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!"); } int orderNum = salesOrderMapper.addSalesOrder(mainOrder); if (orderNum <= 0) { throw new RuntimeException("添加订单出错--------!"); } for (SalesOrderItem item : mainOrder.getSalesOrderItemList()) { item.setItemOrderId(mainOrder.getSalesId()); } //批量添加订单项数据 int itemNum = salesOrderMapper.addOrderItemList(mainOrder.getSalesOrderItemList()); if (itemNum <= 0) { throw new RuntimeException("添加订单出错--------!"); }else{ if(listSalesOrder.size() > 0){ for (int i = 0;i 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; } String endTime = sysConfigMapper.getSysConfig(1); for (int i = 0;i < orderList.size();i++) { JSONObject order = orderList.getJSONObject(i); //获取订单详情 JSONObject orderInfo = null; try{ orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code")); }catch (Exception e){ logger.info("获取订单失败;异常编号:505;失败原因:"+ e.getMessage() +"--获取失败订单号:" + orderList.getJSONObject(i).getString("deal_code")); } if (orderInfo == null) { continue; } if (!orderInfo.has("orders")) { continue; } //获取订单项集合 JSONArray itemArray = orderInfo.getJSONArray("orders"); if (itemArray == null || itemArray.size() == 0) { continue; } 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:作废 salesOrder.setSalesPostFirm(order.getString("shipping_name").trim());//快递方式代码 salesOrder.setSalesPostNum(order.getString("invoice_no").trim());//快递单号 salesOrder.setSalesOpenId(order.getString("mobile").trim());//唯一标识 salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name").trim()));//支付方式 salesOrder.setSalesPayTime(new Date(order.getLong("pay_time")*1000));//支付时间 salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言 salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言 salesOrder.setSalesAmount((int)(order.getDouble("order_amount")*100));//应付款 salesOrder.setSalesPayMoney((int)(order.getDouble("money_paid")*100));//已付款 salesOrder.setSalesAddressName(order.getString("consignee").trim());//收货人 String mobile = order.getString("mobile").replaceAll("[\\u00A0]+", "").trim(); salesOrder.setSalesAddressTel(mobile);//收货人电话 salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址 salesOrder.setSalesShippingFee((int)(order.getDouble("shipping_fee")*100));//邮费 salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间 if (order.getInt("shipping_status") == 1) { if(order.has("delivery_time")){ salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间 }else{ salesOrder.setSalesSendTime(new Date());//发货时间 } } 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);//订单类型 endTime = order.getString("create_time"); //获取 //查询店铺信息 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("goods_number"));//商品数量 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) { continue; } fittingsInfo = Fittings.get(0); item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码 item.setItemNum(itemJson.getInt("goods_number"));//商品数量 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); } } //添加订单和订单项 try{ salesOrderService.addOrderAndItem(salesOrder,itemList); }catch (Exception e){ logger.info("添加订单失败,异常编号:505;失败原因:+"+ e.getMessage() +"Efast编号:"+ salesOrder.getSalesOrderId()); } } SysConfig sysConfig = new SysConfig(1,endTime); sysConfigMapper.updateSysConfig(sysConfig); } @Override @Transactional public boolean syncEfastOrder(JSONObject orderInfo) throws Exception { if (orderInfo == null) { throw new RuntimeException("获取Efast订单信息出错!"); } if (!orderInfo.has("orders")) { throw new RuntimeException("获取Efast订单信息出错!"); } //获取订单项集合 JSONArray itemArray = orderInfo.getJSONArray("orders"); if (itemArray == null || itemArray.size() == 0) { throw new RuntimeException("获取Efast订单信息出错!"); } SalesOrder salesOrder = new SalesOrder(); salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号 salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号 salesOrder.setSalesOrderStatus(1);//订单状态 salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中 salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款 salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态 salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货 salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定 salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货 salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废 salesOrder.setSalesPostFirm(new String(orderInfo.getString("shipping_name")).trim());//快递方式代码 salesOrder.setSalesPostNum(new String(orderInfo.getString("invoice_no")).trim());//快递单号 salesOrder.setSalesOpenId(orderInfo.getString("mobile").trim());//唯一标识 salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name").trim()));//支付方式 salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间 salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言 salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言 salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款 salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款 salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人 String mobile = orderInfo.getString("mobile").replaceAll("[\\u00A0]+", ""); salesOrder.setSalesAddressTel(mobile.trim());//收货人电话 salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址 salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费 salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间 if (orderInfo.getInt("shipping_status") == 1) { if(orderInfo.has("delivery_time")){ salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间 }else{ salesOrder.setSalesSendTime(new Date());//发货时间 } } 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(); if (orderInfo.has("sd_id")) { storeInfo.setStoreEfast(orderInfo.getString("sd_id")); } else { storeInfo.setStoreEfast("1"); } 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_barcode")); List colorList = productService.listproductAndColor(color); if (colorList != null && colorList.size() > 0) { color = colorList.get(0); item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码 item.setItemNum(itemJson.getInt("goods_number"));//商品数量 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_barcode")); List Fittings = fittingsInfoMapper.listFittings(fittingsInfo); if (Fittings == null || Fittings.size() == 0) { continue; } fittingsInfo = Fittings.get(0); item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码 item.setItemNum(itemJson.getInt("goods_number"));//商品数量 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); } } boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList); if (flag) { return true; } else { throw new RuntimeException("添加订单项出错!"); } } @Override public Integer getOrderInfoCount(SalesOrder salesOrder) { return salesOrderMapper.getOrderInfoCount(salesOrder); } @Override public List listOrderExcel(SalesOrder salesOrder) { return salesOrderMapper.listOrderExcel(salesOrder); } @Override public Integer listOrderExcelNum(SalesOrder salesOrder) { return salesOrderMapper.listOrderExcelNum(salesOrder); } @Override public Integer delOrder(String orderId) { return salesOrderMapper.delOrder(orderId); } @Override @Transactional public Integer delSalesOrder(Integer id) { // 检查客诉是否使用订单,如果有使用订单,无法删除 salesOrderMapper.delOrderItem(id); salesOrderMapper.delSalesOrder(id); return 1; } @Override public Integer updateOrderItem(SalesOrderItem salesOrderItem) { return salesOrderMapper.updateOrderItem(salesOrderItem); } @Override public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) { return salesOrderMapper.getSalesOrderByLogistics(salesOrder); } @Override public Integer updateOrderListIsDownload(List list) { return salesOrderMapper.updateOrderListIsDownload(list); } @Override public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) { return salesOrderMapper.updateSalesOrderByDealCode(salesOrder); } @Override public List getLogisticsInfo(LogisticsInfo logisticsInfo) { return salesOrderMapper.getLogisticsInfo(logisticsInfo); } @Override public List listDownsingleRule() { return salesOrderMapper.listDownsingleRule(); } @Override public Integer getIsMachine(String colorBar) { return salesOrderMapper.getIsMachine(colorBar); } @Override public Integer getOrderBySalesDealCodeNum(String code) { return salesOrderMapper.getOrderBySalesDealCodeNum(code); } @Override public Integer listSalesOrderAndItemNum(SalesOrder salesOrder) { return salesOrderMapper.listSalesOrderAndItemNum(salesOrder); } @Override public List listSalesOrderAndItem(SalesOrder salesOrder) { return salesOrderMapper.listSalesOrderAndItem(salesOrder); } @Override public Integer getSalesOrderNum(SalesOrder salesOrder) { return salesOrderMapper.getSalesOrderNum(salesOrder); } @Transactional @Override public Integer listConfirmSalesOrderByBatch(String salesBatchId) { Integer flag = 0; SalesOrder salesOrder = new SalesOrder(); salesOrder.setSalesBatchId(salesBatchId); List salesOrderList = salesOrderMapper.listSalesOrder(salesOrder); if(salesOrderList == null || salesOrderList.size() < 1){ throw new RuntimeException("查询订单失败!"); } for (SalesOrder so:salesOrderList){ flag = salesOrderService.confirmSalesOrder(so.getSalesId()); } return flag; } @Override public Integer noticeDistribution(SalesOrder salesOrder) { // 检查订单是否已经有了配送方式,如果没有不允许通知配货 SalesOrder temp = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId()); if (temp == null || temp.getSalesPostFirm() == null || temp.getSalesPostFirm().isEmpty()) { return 0; } return salesOrderMapper.noticeDistribution(salesOrder); } @Transactional @Override public Integer confirmSalesOrder(Integer saleId) { /* * 查询订单 * 查询订单项 * 删除订单 * 修改查询的订单状态 * 添加订单 */ if(saleId == null ){ throw new RuntimeException("确认订单-订单id异常!"); } SalesOrder salesOrder = salesOrderMapper.getSalesOrderById(saleId); if(salesOrder == null){ throw new RuntimeException("确认订单-订单异常!"); } Integer flag = 0; SalesOrderItem salesOrderItem = new SalesOrderItem(); salesOrderItem.setItemOrderId(salesOrder.getSalesId()); List salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem); if(salesOrderItemList == null || salesOrderItemList.size()<1){ throw new RuntimeException("确认订单-查询订单项失败!"); } salesOrder.setSalesOrderItemList(salesOrderItemList); flag = salesOrderMapper.delOrderById(salesOrder.getSalesId()); if(flag < 1){ throw new RuntimeException("确认订单-删除订单失败!"); } flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId()); if(flag < 1){ throw new RuntimeException("确认订单-删除订单项失败!"); } //1:确认 状态 salesOrder.setSalesStatus(1); boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder); if(!fl){ throw new RuntimeException("确认订单-添加订单失败!"); } return flag; } @Override public Integer distributionExpress(SalesOrder salesOrder) { return salesOrderMapper.distributionExpress(salesOrder); } @Override public Integer listSalesPostFirm(SalesOrder salesOrder) { return salesOrderMapper.listSalesPostFirm(salesOrder); } @Override public SalesOrder getSalesOrderByPostNum(String postNum) { return salesOrderMapper.getSalesOrderByPostNum(postNum); } @Override public Integer updateDeliver(SalesOrder salesOrder) { return salesOrderMapper.updateDeliver(salesOrder); } }