SalesOrderServiceImpl.java 26 KB

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