SalesOrderServiceImpl.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. package com.iamberry.rst.service.cm;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.rst.core.cm.FittingsInfo;
  4. import com.iamberry.rst.core.cm.SalesOrder;
  5. import com.iamberry.rst.core.cm.SalesOrderItem;
  6. import com.iamberry.rst.core.cm.StoreInfo;
  7. import com.iamberry.rst.core.order.ProductColor;
  8. import com.iamberry.rst.core.page.PagedResult;
  9. import com.iamberry.rst.core.sys.SysConfig;
  10. import com.iamberry.rst.core.tools.LogisticsInfo;
  11. import com.iamberry.rst.faces.cm.SalesOrderService;
  12. import com.iamberry.rst.faces.cm.StoreInfoService;
  13. import com.iamberry.rst.faces.order.EfastOrderService;
  14. import com.iamberry.rst.faces.product.ProductService;
  15. import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
  16. import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
  17. import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
  18. import com.iamberry.rst.util.PageUtil;
  19. import com.iamberry.wechat.tools.DateTimeUtil;
  20. import net.sf.json.JSONArray;
  21. import net.sf.json.JSONNull;
  22. import net.sf.json.JSONObject;
  23. import org.apache.commons.lang.StringUtils;
  24. import org.slf4j.Logger;
  25. import org.slf4j.LoggerFactory;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import javax.xml.crypto.Data;
  30. import java.beans.Transient;
  31. import java.util.ArrayList;
  32. import java.util.Date;
  33. import java.util.List;
  34. /**
  35. * Created by liuzhiwei on 2017/10/31.
  36. */
  37. @Service
  38. public class SalesOrderServiceImpl implements SalesOrderService {
  39. private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class);
  40. @Autowired
  41. private SalesOrderMapper salesOrderMapper;
  42. @Autowired
  43. private ProductService productService;
  44. @Autowired
  45. private StoreInfoService storeInfoService;
  46. @Autowired
  47. private EfastOrderService efastOrderService;
  48. @Autowired
  49. private SalesOrderService salesOrderService;
  50. @Autowired
  51. private FittingsInfoMapper fittingsInfoMapper;
  52. @Autowired
  53. private SysConfigMapper sysConfigMapper;
  54. @Override
  55. public Integer addSalesOrder(SalesOrder salesOrder) {
  56. return salesOrderMapper.addSalesOrder(salesOrder);
  57. }
  58. @Override
  59. public SalesOrder getSalesOrderById(Integer salesId) {
  60. return salesOrderMapper.getSalesOrderById(salesId);
  61. }
  62. @Override
  63. public Integer updateSalesOrder(SalesOrder salesOrder) {
  64. return salesOrderMapper.updateSalesOrder(salesOrder);
  65. }
  66. @Override
  67. public Integer addSalesOrderList(List<SalesOrder> list) {
  68. return salesOrderMapper.addSalesOrderList(list);
  69. }
  70. @Override
  71. public List<SalesOrder> listSalesOrder(SalesOrder salesOrder) {
  72. return salesOrderMapper.listSalesOrder(salesOrder);
  73. }
  74. @Override
  75. public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
  76. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  77. //查询订单列表信息
  78. List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(salesOrder);
  79. return PageUtil.getPage(orderList);
  80. }
  81. @Override
  82. @Transient
  83. public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
  84. if (list == null || list.size() == 0) {
  85. throw new RuntimeException("获取订单信息出错!");
  86. }
  87. SalesOrder verifyOrder = new SalesOrder();
  88. verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
  89. //查询该订单是否存在,如果存在,不需要再次添加到订单中
  90. int count = salesOrderMapper.getOrderInfoCount(verifyOrder);
  91. if (count > 0) {
  92. return true;
  93. }
  94. //添加订单数据
  95. try {
  96. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  97. if (orderNum <= 0) {
  98. throw new RuntimeException("获取订单信息出错!");
  99. }
  100. }catch (Exception e){
  101. return true;
  102. }
  103. for (SalesOrderItem item : list) {
  104. item.setItemOrderId(salesOrder.getSalesId());
  105. }
  106. //批量添加订单项数据
  107. int itemNum = salesOrderMapper.addOrderItemList(list);
  108. if (itemNum <= 0) {
  109. throw new RuntimeException("获取订单信息出错!");
  110. }
  111. return true;
  112. }
  113. @Override
  114. @Transactional
  115. public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
  116. //添加订单数据
  117. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  118. if (orderNum <= 0) {
  119. return salesOrder;
  120. }
  121. for (SalesOrderItem item : list) {
  122. item.setItemOrderId(salesOrder.getSalesId());
  123. }
  124. //批量添加订单项数据
  125. int itemNum = salesOrderMapper.addOrderItemList(list);
  126. if (itemNum <= 0) {
  127. return salesOrder;
  128. }
  129. return salesOrder;
  130. }
  131. @Override
  132. @Transactional
  133. public boolean addRstOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
  134. //添加订单数据
  135. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  136. if (orderNum <= 0) {
  137. return false;
  138. }
  139. for (SalesOrderItem item : list) {
  140. item.setItemOrderId(salesOrder.getSalesId());
  141. }
  142. //批量添加订单项数据
  143. int itemNum = salesOrderMapper.addOrderItemList(list);
  144. if (itemNum <= 0) {
  145. return false;
  146. }
  147. return true;
  148. }
  149. @Override
  150. public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
  151. return salesOrderMapper.listSalesOrderItem(salesOrderItem);
  152. }
  153. @Override
  154. public Integer updateOrderList(JSONArray orderList, List<SalesOrder> list) {
  155. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  156. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  157. for (int i = 0;i < orderList.size();i++) {
  158. JSONObject orderInfo = orderList.getJSONObject(i);
  159. for (SalesOrder salesOrder : list) {
  160. if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId())
  161. && !(orderInfo.getInt("order_status") == salesOrder.getSalesStatus()
  162. && orderInfo.getInt("shipping_status") == salesOrder.getSalesShippingStatus()
  163. && orderInfo.getInt("pay_status") == salesOrder.getSalesPayStatus()
  164. && orderInfo.getInt("process_status") == salesOrder.getSalesProcessStatus()
  165. && orderInfo.getInt("is_send") == salesOrder.getSalesIsSend()
  166. && orderInfo.getInt("is_locked") == salesOrder.getSalesIsLocked()
  167. && orderInfo.getInt("is_separate") == salesOrder.getSalesIsSeparate()
  168. && orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm())
  169. && orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum())
  170. )) {
  171. SalesOrder order = new SalesOrder();
  172. order.setSalesId(salesOrder.getSalesId());
  173. order.setSalesStatus(orderInfo.getInt("order_status"));
  174. order.setSalesShippingStatus(orderInfo.getInt("shipping_status"));
  175. order.setSalesPayStatus(orderInfo.getInt("pay_status"));
  176. order.setSalesProcessStatus(orderInfo.getInt("process_status"));
  177. order.setSalesIsSend(orderInfo.getInt("is_send"));
  178. order.setSalesIsLocked(orderInfo.getInt("is_locked"));
  179. order.setSalesIsSeparate(orderInfo.getInt("is_separate"));
  180. order.setSalesPostFirm(orderInfo.getString("shipping_name"));
  181. order.setSalesPostNum(orderInfo.getString("invoice_no"));
  182. salesOrders.add(order);
  183. }
  184. }
  185. }
  186. if (salesOrders != null && salesOrders.size() > 0) {
  187. //批量修改订单状态等信息
  188. return salesOrderMapper.updateOrderList(salesOrders);
  189. } else {
  190. return 1;
  191. }
  192. }
  193. @Override
  194. public Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list) {
  195. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  196. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  197. for (int i = 0;i < orderList.size();i++) {
  198. JSONObject orderInfo = orderList.getJSONObject(i);
  199. for (SalesOrder salesOrder : list) {
  200. if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) {
  201. SalesOrder order = new SalesOrder();
  202. switch (orderInfo.getInt("process_type")) {
  203. case 1://退货
  204. order.setSalesOrderStatus(3);
  205. break;
  206. case 4://换货
  207. order.setSalesOrderStatus(2);
  208. break;
  209. default:
  210. order.setSalesOrderStatus(3);
  211. break;
  212. }
  213. order.setSalesId(salesOrder.getSalesId());
  214. salesOrders.add(order);
  215. }
  216. }
  217. }
  218. //批量修改订单状态等信息
  219. return salesOrderMapper.updateOrderList(list);
  220. }
  221. @Override
  222. public void addSalesOrderList(JSONObject obj) throws Exception{
  223. if (obj == null) {
  224. return;
  225. }
  226. JSONArray orderList = obj.getJSONArray("list");
  227. if (orderList == null || orderList.size() == 0) {
  228. return;
  229. }
  230. String endTime = sysConfigMapper.getSysConfig(1);
  231. for (int i = 0;i < orderList.size();i++) {
  232. JSONObject order = orderList.getJSONObject(i);
  233. //获取订单详情
  234. JSONObject orderInfo = null;
  235. try{
  236. orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
  237. }catch (Exception e){
  238. logger.info("获取订单失败;异常编号:505;失败原因:"+ e.getMessage() +"--获取失败订单号:" + orderList.getJSONObject(i).getString("deal_code"));
  239. }
  240. if (orderInfo == null) {
  241. continue;
  242. }
  243. if (!orderInfo.has("orders")) {
  244. continue;
  245. }
  246. //获取订单项集合
  247. JSONArray itemArray = orderInfo.getJSONArray("orders");
  248. if (itemArray == null || itemArray.size() == 0) {
  249. continue;
  250. }
  251. SalesOrder salesOrder = new SalesOrder();
  252. salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
  253. salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
  254. salesOrder.setSalesOrderStatus(1);//订单状态
  255. salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  256. salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  257. salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
  258. salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
  259. salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
  260. salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
  261. salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  262. salesOrder.setSalesPostFirm(order.getString("shipping_name").trim());//快递方式代码
  263. salesOrder.setSalesPostNum(order.getString("invoice_no").trim());//快递单号
  264. salesOrder.setSalesOpenId(order.getString("mobile").trim());//唯一标识
  265. salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name").trim()));//支付方式
  266. salesOrder.setSalesPayTime(new Date(order.getLong("pay_time")*1000));//支付时间
  267. salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
  268. salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
  269. salesOrder.setSalesAmount((int)(order.getDouble("order_amount")*100));//应付款
  270. salesOrder.setSalesPayMoney((int)(order.getDouble("money_paid")*100));//已付款
  271. salesOrder.setSalesAddressName(order.getString("consignee").trim());//收货人
  272. String mobile = order.getString("mobile").replaceAll("[\\u00A0]+", "").trim();
  273. salesOrder.setSalesAddressTel(mobile);//收货人电话
  274. salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
  275. salesOrder.setSalesShippingFee((int)(order.getDouble("shipping_fee")*100));//邮费
  276. salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
  277. if (order.getInt("shipping_status") == 1) {
  278. if(order.has("delivery_time")){
  279. salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  280. }else{
  281. salesOrder.setSalesSendTime(new Date());//发货时间
  282. }
  283. }
  284. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  285. salesOrder.setSalesPledgeMoney(0);//押金金额
  286. salesOrder.setSalesRemainDeposit(0);//待提取金额
  287. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  288. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  289. salesOrder.setSalesWaitMoney(0);//待付金额
  290. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  291. salesOrder.setSalesPayNumber("0000");//支付尾号
  292. salesOrder.setSalesType(1);//订单类型
  293. endTime = order.getString("create_time"); //获取
  294. //查询店铺信息
  295. StoreInfo storeInfo = new StoreInfo();
  296. storeInfo.setStoreEfast(order.getString("sd_id"));
  297. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  298. int storeId = 0;
  299. int companyId = 0;
  300. if (storeList != null && storeList.size() > 0) {
  301. storeInfo = storeList.get(0);
  302. storeId = storeInfo.getStoreId();
  303. companyId = storeInfo.getCompanyId();
  304. }
  305. salesOrder.setSalesStoreId(storeId);//店铺id
  306. salesOrder.setSalesCompanyId(companyId);//销售公司id
  307. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  308. for (int j = 0;j < itemArray.size();j++) {
  309. ProductColor color = new ProductColor();
  310. JSONObject itemJson = itemArray.getJSONObject(j);
  311. SalesOrderItem item = new SalesOrderItem();
  312. color.setColorBar(itemJson.getString("goods_sn"));
  313. List<ProductColor> colorList = productService.listproductAndColor(color);
  314. if (colorList != null && colorList.size() > 0) {
  315. color = colorList.get(0);
  316. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  317. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  318. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  319. item.setItemColorId(color.getColorId());
  320. item.setItemProductColor(color.getColorName());
  321. item.setItemProductDiscount(color.getColorDiscount());
  322. item.setItemProductId(color.getColorProductId());
  323. item.setItemProductName(color.getProductName());
  324. item.setItemProductPic(color.getColorPicture());
  325. item.setItemProductType(color.getProductType());
  326. item.setItemProductPrice(color.getColorPrice());
  327. item.setItemIsSource(1);
  328. itemList.add(item);
  329. } else {
  330. //获取配件信息
  331. FittingsInfo fittingsInfo = new FittingsInfo();
  332. fittingsInfo.setFittingsBar(itemJson.getString("goods_sn"));
  333. List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  334. if (Fittings == null || Fittings.size() == 0) {
  335. continue;
  336. }
  337. fittingsInfo = Fittings.get(0);
  338. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  339. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  340. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  341. item.setItemColorId(fittingsInfo.getFittingsId());
  342. item.setItemProductColor(fittingsInfo.getFittingsName());
  343. item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  344. item.setItemProductId(fittingsInfo.getProductId());
  345. item.setItemProductName(fittingsInfo.getFittingsName());
  346. item.setItemProductPic("");
  347. item.setItemProductType(0);
  348. item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  349. item.setItemIsSource(2);
  350. itemList.add(item);
  351. }
  352. }
  353. //添加订单和订单项
  354. try{
  355. salesOrderService.addOrderAndItem(salesOrder,itemList);
  356. }catch (Exception e){
  357. logger.info("添加订单失败,异常编号:505;失败原因:+"+ e.getMessage() +"Efast编号:"+ salesOrder.getSalesOrderId());
  358. }
  359. }
  360. SysConfig sysConfig = new SysConfig(1,endTime);
  361. sysConfigMapper.updateSysConfig(sysConfig);
  362. }
  363. @Override
  364. @Transient
  365. public boolean syncEfastOrder(JSONObject orderInfo) throws Exception {
  366. if (orderInfo == null) {
  367. throw new RuntimeException("获取Efast订单信息出错!");
  368. }
  369. if (!orderInfo.has("orders")) {
  370. throw new RuntimeException("获取Efast订单信息出错!");
  371. }
  372. //获取订单项集合
  373. JSONArray itemArray = orderInfo.getJSONArray("orders");
  374. if (itemArray == null || itemArray.size() == 0) {
  375. throw new RuntimeException("获取Efast订单信息出错!");
  376. }
  377. SalesOrder salesOrder = new SalesOrder();
  378. salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号
  379. salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号
  380. salesOrder.setSalesOrderStatus(1);//订单状态
  381. salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  382. salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  383. salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态
  384. salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货
  385. salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定
  386. salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货
  387. salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  388. salesOrder.setSalesPostFirm(new String(orderInfo.getString("shipping_name")).trim());//快递方式代码
  389. salesOrder.setSalesPostNum(new String(orderInfo.getString("invoice_no")).trim());//快递单号
  390. salesOrder.setSalesOpenId(orderInfo.getString("mobile").trim());//唯一标识
  391. salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name").trim()));//支付方式
  392. salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间
  393. salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言
  394. salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言
  395. salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款
  396. salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款
  397. salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人
  398. String mobile = orderInfo.getString("mobile").replaceAll("[\\u00A0]+", "");
  399. salesOrder.setSalesAddressTel(mobile.trim());//收货人电话
  400. salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址
  401. salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费
  402. salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间
  403. if (orderInfo.getInt("shipping_status") == 1) {
  404. if(orderInfo.has("delivery_time")){
  405. salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  406. }else{
  407. salesOrder.setSalesSendTime(new Date());//发货时间
  408. }
  409. }
  410. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  411. salesOrder.setSalesPledgeMoney(0);//押金金额
  412. salesOrder.setSalesRemainDeposit(0);//待提取金额
  413. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  414. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  415. salesOrder.setSalesWaitMoney(0);//待付金额
  416. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  417. salesOrder.setSalesPayNumber("0000");//支付尾号
  418. salesOrder.setSalesType(1);//订单类型
  419. //查询店铺信息
  420. StoreInfo storeInfo = new StoreInfo();
  421. if (orderInfo.has("sd_id")) {
  422. storeInfo.setStoreEfast(orderInfo.getString("sd_id"));
  423. } else {
  424. storeInfo.setStoreEfast("1");
  425. }
  426. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  427. int storeId = 0;
  428. int companyId = 0;
  429. if (storeList != null && storeList.size() > 0) {
  430. storeInfo = storeList.get(0);
  431. storeId = storeInfo.getStoreId();
  432. companyId = storeInfo.getCompanyId();
  433. }
  434. salesOrder.setSalesStoreId(storeId);//店铺id
  435. salesOrder.setSalesCompanyId(companyId);//销售公司id
  436. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  437. for (int j = 0;j < itemArray.size();j++) {
  438. ProductColor color = new ProductColor();
  439. JSONObject itemJson = itemArray.getJSONObject(j);
  440. SalesOrderItem item = new SalesOrderItem();
  441. color.setColorBar(itemJson.getString("goods_barcode"));
  442. List<ProductColor> colorList = productService.listproductAndColor(color);
  443. if (colorList != null && colorList.size() > 0) {
  444. color = colorList.get(0);
  445. item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  446. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  447. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  448. item.setItemColorId(color.getColorId());
  449. item.setItemProductColor(color.getColorName());
  450. item.setItemProductDiscount(color.getColorDiscount());
  451. item.setItemProductId(color.getColorProductId());
  452. item.setItemProductName(color.getProductName());
  453. item.setItemProductPic(color.getColorPicture());
  454. item.setItemProductType(color.getProductType());
  455. item.setItemProductPrice(color.getColorPrice());
  456. item.setItemIsSource(1);
  457. itemList.add(item);
  458. } else {
  459. //获取配件信息
  460. FittingsInfo fittingsInfo = new FittingsInfo();
  461. fittingsInfo.setFittingsBar(itemJson.getString("goods_barcode"));
  462. List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  463. if (Fittings == null || Fittings.size() == 0) {
  464. continue;
  465. }
  466. fittingsInfo = Fittings.get(0);
  467. item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  468. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  469. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  470. item.setItemColorId(fittingsInfo.getFittingsId());
  471. item.setItemProductColor(fittingsInfo.getFittingsName());
  472. item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  473. item.setItemProductId(fittingsInfo.getProductId());
  474. item.setItemProductName(fittingsInfo.getFittingsName());
  475. item.setItemProductPic("");
  476. item.setItemProductType(0);
  477. item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  478. item.setItemIsSource(2);
  479. itemList.add(item);
  480. }
  481. }
  482. boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList);
  483. if (flag) {
  484. return true;
  485. } else {
  486. throw new RuntimeException("添加订单项出错!");
  487. }
  488. }
  489. @Override
  490. public Integer getOrderInfoCount(SalesOrder salesOrder) {
  491. return salesOrderMapper.getOrderInfoCount(salesOrder);
  492. }
  493. @Override
  494. public List<SalesOrder> listOrderExcel(SalesOrder salesOrder) {
  495. return salesOrderMapper.listOrderExcel(salesOrder);
  496. }
  497. @Override
  498. public Integer delOrder(String orderId) {
  499. return salesOrderMapper.delOrder(orderId);
  500. }
  501. @Override
  502. public Integer updateOrderItem(SalesOrderItem salesOrderItem) {
  503. return salesOrderMapper.updateOrderItem(salesOrderItem);
  504. }
  505. @Override
  506. public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) {
  507. return salesOrderMapper.getSalesOrderByLogistics(salesOrder);
  508. }
  509. @Override
  510. public Integer updateOrderListIsDownload(List<SalesOrder> list) {
  511. return salesOrderMapper.updateOrderListIsDownload(list);
  512. }
  513. @Override
  514. public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) {
  515. return salesOrderMapper.updateSalesOrderByDealCode(salesOrder);
  516. }
  517. @Override
  518. public List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo) {
  519. return salesOrderMapper.getLogisticsInfo(logisticsInfo);
  520. }
  521. }