SalesOrderServiceImpl.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  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.DownsingleRuleInfo;
  8. import com.iamberry.rst.core.order.DownsingleRuleItemInfo;
  9. import com.iamberry.rst.core.order.ProductColor;
  10. import com.iamberry.rst.core.page.PagedResult;
  11. import com.iamberry.rst.core.sys.SysConfig;
  12. import com.iamberry.rst.core.tools.LogisticsInfo;
  13. import com.iamberry.rst.faces.cm.SalesOrderService;
  14. import com.iamberry.rst.faces.cm.StoreInfoService;
  15. import com.iamberry.rst.faces.order.EfastOrderService;
  16. import com.iamberry.rst.faces.product.ProductService;
  17. import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
  18. import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
  19. import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
  20. import com.iamberry.rst.util.PageUtil;
  21. import com.iamberry.wechat.tools.DateTimeUtil;
  22. import net.sf.json.JSONArray;
  23. import net.sf.json.JSONObject;
  24. import org.slf4j.Logger;
  25. import org.slf4j.LoggerFactory;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import java.beans.Transient;
  31. import java.util.*;
  32. /**
  33. * Created by liuzhiwei on 2017/10/31.
  34. */
  35. @Service
  36. public class SalesOrderServiceImpl implements SalesOrderService {
  37. private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class);
  38. @Autowired
  39. private SalesOrderMapper salesOrderMapper;
  40. @Autowired
  41. private ProductService productService;
  42. @Autowired
  43. private StoreInfoService storeInfoService;
  44. @Autowired
  45. private EfastOrderService efastOrderService;
  46. @Autowired
  47. private SalesOrderService salesOrderService;
  48. @Autowired
  49. private FittingsInfoMapper fittingsInfoMapper;
  50. @Autowired
  51. private SysConfigMapper sysConfigMapper;
  52. @Override
  53. public Integer addSalesOrder(SalesOrder salesOrder) {
  54. return salesOrderMapper.addSalesOrder(salesOrder);
  55. }
  56. @Override
  57. public SalesOrder getSalesOrderById(Integer salesId) {
  58. return salesOrderMapper.getSalesOrderById(salesId);
  59. }
  60. @Override
  61. public Integer updateSalesOrder(SalesOrder salesOrder) {
  62. return salesOrderMapper.updateSalesOrder(salesOrder);
  63. }
  64. @Override
  65. public Integer addSalesOrderList(List<SalesOrder> list) {
  66. return salesOrderMapper.addSalesOrderList(list);
  67. }
  68. @Override
  69. public List<SalesOrder> listSalesOrder(SalesOrder salesOrder) {
  70. return salesOrderMapper.listSalesOrder(salesOrder);
  71. }
  72. @Override
  73. public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
  74. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  75. //查询订单列表信息
  76. List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(salesOrder);
  77. return PageUtil.getPage(orderList);
  78. }
  79. @Override
  80. @Transient
  81. public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
  82. if (list == null || list.size() == 0) {
  83. throw new RuntimeException("获取订单信息出错!");
  84. }
  85. SalesOrder verifyOrder = new SalesOrder();
  86. verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
  87. //查询该订单是否存在,如果存在,不需要再次添加到订单中
  88. int count = salesOrderMapper.getOrderInfoCount(verifyOrder);
  89. if (count > 0) {
  90. return true;
  91. }
  92. //添加订单数据
  93. try {
  94. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  95. if (orderNum <= 0) {
  96. throw new RuntimeException("获取订单信息出错!");
  97. }
  98. } catch (Exception e) {
  99. return true;
  100. }
  101. for (SalesOrderItem item : list) {
  102. item.setItemOrderId(salesOrder.getSalesId());
  103. }
  104. //批量添加订单项数据
  105. int itemNum = salesOrderMapper.addOrderItemList(list);
  106. if (itemNum <= 0) {
  107. throw new RuntimeException("获取订单信息出错!");
  108. }
  109. return true;
  110. }
  111. @Override
  112. @Transactional
  113. public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
  114. //添加订单数据
  115. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  116. if (orderNum <= 0) {
  117. return salesOrder;
  118. }
  119. for (SalesOrderItem item : list) {
  120. item.setItemOrderId(salesOrder.getSalesId());
  121. }
  122. //批量添加订单项数据
  123. int itemNum = salesOrderMapper.addOrderItemList(list);
  124. if (itemNum <= 0) {
  125. return salesOrder;
  126. }
  127. return salesOrder;
  128. }
  129. public void parseOrder(SalesOrder oginerOrder, List<SalesOrder> listOrder) {
  130. // 订单项拆分完成,直接返回
  131. if (oginerOrder.getSalesOrderItemList().size() <= 0) {
  132. return;
  133. }
  134. List<DownsingleRuleInfo> listDownsingleRuleInfo = salesOrderService.listDownsingleRule();
  135. if(listDownsingleRuleInfo.size() < 1){
  136. listOrder.add(oginerOrder);
  137. return;
  138. }
  139. // 拆单,比较的是数量和产品
  140. Map<String, SalesOrderItem> itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size());
  141. for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) {
  142. SalesOrderItem itemTwo = new SalesOrderItem();
  143. BeanUtils.copyProperties(item,itemTwo);
  144. itemMap.put(item.getItemColorBar(), itemTwo);
  145. }
  146. // 遍历拆单规则
  147. int ruleCount = 0;
  148. for (DownsingleRuleInfo rule : listDownsingleRuleInfo) {
  149. // 一个拆单规则
  150. int count = 0;
  151. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  152. if (itemMap.get(item.getDownsingleItemBar()) != null) {
  153. if (item.getDownsingleItemNum() <= itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
  154. count ++;
  155. }
  156. }
  157. }
  158. if (count == rule.getDownsingleRuleItemList().size()) {
  159. // 满足拆单条件
  160. SalesOrder newOrder = new SalesOrder();
  161. BeanUtils.copyProperties(oginerOrder,newOrder);
  162. newOrder.setSalesOrderItemList(new ArrayList<SalesOrderItem>(count));
  163. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  164. SalesOrderItem temp = new SalesOrderItem();
  165. BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp);
  166. temp.setItemNum(item.getDownsingleItemNum());
  167. newOrder.getSalesOrderItemList().add(temp);
  168. }
  169. listOrder.add(newOrder);
  170. // 继续递归
  171. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  172. if (item.getDownsingleItemNum() == itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
  173. // 数量和拆单规则相同,则删除原订单的订单项
  174. /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/
  175. for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
  176. if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
  177. oginerOrder.getSalesOrderItemList().remove(i);
  178. }
  179. }
  180. } else {
  181. // SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
  182. SalesOrderItem orderItem = new SalesOrderItem();
  183. BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),orderItem);
  184. int oldCount = orderItem.getItemNum();
  185. /*orderItem.setItemNum(oldCount - item.getDownsingleItemNum());*/
  186. for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
  187. if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
  188. oginerOrder.getSalesOrderItemList().get(i).setItemNum(oldCount - item.getDownsingleItemNum());
  189. }
  190. }
  191. }
  192. }
  193. salesOrderService.parseOrder(oginerOrder, listOrder);
  194. break;
  195. } else {
  196. // 不满足, 继续下一个规则
  197. // 如果是最后一个拆单规则,则不拆单
  198. if ((ruleCount + 1) == listDownsingleRuleInfo.size()) {
  199. if (oginerOrder.getSalesOrderItemList().size() > 0) {
  200. listOrder.add(oginerOrder);
  201. }
  202. }
  203. }
  204. ruleCount++;
  205. }
  206. }
  207. @Override
  208. @Transactional
  209. public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
  210. //合并订单项-------------statr
  211. List<SalesOrderItem> listItem = salesOrder.getSalesOrderItemList();
  212. salesOrder.setSalesOrderItemList(null);
  213. List<SalesOrderItem> list = new ArrayList<>();
  214. for (int i = 0;i<listItem.size();i++){
  215. if(i < listItem.size() - 1 ){
  216. for(int j = 0;j<listItem.size();j++){
  217. if (i != j){
  218. if(listItem.get(i).getItemColorBar().equals(listItem.get(j).getItemColorBar())){
  219. listItem.get(i).setItemNum(listItem.get(i).getItemNum()+listItem.get(j).getItemNum());
  220. }
  221. }
  222. }
  223. }
  224. boolean bl = true;
  225. for (SalesOrderItem salesOrderItem : list){
  226. if(salesOrderItem.getItemColorBar().equals(listItem.get(i).getItemColorBar())){
  227. bl = false;
  228. }
  229. }
  230. if(bl){
  231. list.add(listItem.get(i));
  232. }
  233. }
  234. //合并订单项----------------------end
  235. //匹配拆单规则 分割订单-------------state
  236. List<SalesOrder> listSalesOrder = new ArrayList<>();
  237. salesOrder.setSalesOrderItemList(list);
  238. salesOrderService.parseOrder(salesOrder, listSalesOrder);
  239. //匹配拆单规则 分割订单-------------end
  240. boolean msg = false;
  241. //判断主从订单--------------------state
  242. if (listSalesOrder.size() > 0){
  243. SalesOrder mainOrder = null;
  244. for (int s = 0;s < listSalesOrder.size();s++){
  245. if(mainOrder == null){
  246. for(int i = 0;i<listSalesOrder.get(s).getSalesOrderItemList().size();i++){
  247. int isMachine = salesOrderService.getIsMachine(listSalesOrder.get(s).getSalesOrderItemList().get(i).getItemColorBar());
  248. if( isMachine == 1){//1:水机 2:其它产品 0:未查到
  249. mainOrder = listSalesOrder.get(s);
  250. listSalesOrder.remove(s);
  251. break;
  252. }
  253. }
  254. }
  255. }
  256. if(mainOrder == null){//如果不存有水机的订单则默认第一个订单为主订单
  257. mainOrder = listSalesOrder.get(0);
  258. listSalesOrder.remove(0);
  259. }
  260. //判断主从订单--------------------end
  261. msg = salesOrderService.addRstOrderinfo(mainOrder,listSalesOrder);
  262. }
  263. return msg;
  264. }
  265. @Override
  266. @Transactional
  267. public boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder) {
  268. Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode());
  269. if(flag > 0){
  270. throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!");
  271. }
  272. int orderNum = salesOrderMapper.addSalesOrder(mainOrder);
  273. if (orderNum <= 0) {
  274. throw new RuntimeException("添加订单出错--------!");
  275. }
  276. for (SalesOrderItem item : mainOrder.getSalesOrderItemList()) {
  277. item.setItemOrderId(mainOrder.getSalesId());
  278. }
  279. //批量添加订单项数据
  280. int itemNum = salesOrderMapper.addOrderItemList(mainOrder.getSalesOrderItemList());
  281. if (itemNum <= 0) {
  282. throw new RuntimeException("添加订单出错--------!");
  283. }else{
  284. if(listSalesOrder.size() > 0){
  285. for (int i = 0;i<listSalesOrder.size();i++){
  286. listSalesOrder.get(i).setSalesDealCode(listSalesOrder.get(i).getSalesDealCode()+"-"+(i+1));
  287. listSalesOrder.get(i).setSalesMainOrderId(mainOrder.getSalesId());
  288. listSalesOrder.get(i).setSalesId(null);
  289. orderNum = salesOrderMapper.addSalesOrder(listSalesOrder.get(i));
  290. if (orderNum <= 0) {
  291. throw new RuntimeException("添加订单出错--------!");
  292. }
  293. for (SalesOrderItem item : listSalesOrder.get(i).getSalesOrderItemList()) {
  294. item.setItemOrderId(listSalesOrder.get(i).getSalesId());
  295. }
  296. //批量添加订单项数据
  297. itemNum = salesOrderMapper.addOrderItemList(listSalesOrder.get(i).getSalesOrderItemList());
  298. if (itemNum <= 0) {
  299. throw new RuntimeException("添加订单出错--------!");
  300. }
  301. }
  302. }
  303. }
  304. return true;
  305. }
  306. @Override
  307. public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
  308. return salesOrderMapper.listSalesOrderItem(salesOrderItem);
  309. }
  310. @Override
  311. public Integer updateOrderList(JSONArray orderList, List<SalesOrder> list) {
  312. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  313. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  314. for (int i = 0;i < orderList.size();i++) {
  315. JSONObject orderInfo = orderList.getJSONObject(i);
  316. for (SalesOrder salesOrder : list) {
  317. if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId())
  318. && !(orderInfo.getInt("order_status") == salesOrder.getSalesStatus()
  319. && orderInfo.getInt("shipping_status") == salesOrder.getSalesShippingStatus()
  320. && orderInfo.getInt("pay_status") == salesOrder.getSalesPayStatus()
  321. && orderInfo.getInt("process_status") == salesOrder.getSalesProcessStatus()
  322. && orderInfo.getInt("is_send") == salesOrder.getSalesIsSend()
  323. && orderInfo.getInt("is_locked") == salesOrder.getSalesIsLocked()
  324. && orderInfo.getInt("is_separate") == salesOrder.getSalesIsSeparate()
  325. && orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm())
  326. && orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum())
  327. )) {
  328. SalesOrder order = new SalesOrder();
  329. order.setSalesId(salesOrder.getSalesId());
  330. order.setSalesStatus(orderInfo.getInt("order_status"));
  331. order.setSalesShippingStatus(orderInfo.getInt("shipping_status"));
  332. order.setSalesPayStatus(orderInfo.getInt("pay_status"));
  333. order.setSalesProcessStatus(orderInfo.getInt("process_status"));
  334. order.setSalesIsSend(orderInfo.getInt("is_send"));
  335. order.setSalesIsLocked(orderInfo.getInt("is_locked"));
  336. order.setSalesIsSeparate(orderInfo.getInt("is_separate"));
  337. order.setSalesPostFirm(orderInfo.getString("shipping_name"));
  338. order.setSalesPostNum(orderInfo.getString("invoice_no"));
  339. salesOrders.add(order);
  340. }
  341. }
  342. }
  343. if (salesOrders != null && salesOrders.size() > 0) {
  344. //批量修改订单状态等信息
  345. return salesOrderMapper.updateOrderList(salesOrders);
  346. } else {
  347. return 1;
  348. }
  349. }
  350. @Override
  351. public Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list) {
  352. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  353. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  354. for (int i = 0;i < orderList.size();i++) {
  355. JSONObject orderInfo = orderList.getJSONObject(i);
  356. for (SalesOrder salesOrder : list) {
  357. if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) {
  358. SalesOrder order = new SalesOrder();
  359. switch (orderInfo.getInt("process_type")) {
  360. case 1://退货
  361. order.setSalesOrderStatus(3);
  362. break;
  363. case 4://换货
  364. order.setSalesOrderStatus(2);
  365. break;
  366. default:
  367. order.setSalesOrderStatus(3);
  368. break;
  369. }
  370. order.setSalesId(salesOrder.getSalesId());
  371. salesOrders.add(order);
  372. }
  373. }
  374. }
  375. //批量修改订单状态等信息
  376. return salesOrderMapper.updateOrderList(list);
  377. }
  378. @Override
  379. public void addSalesOrderList(JSONObject obj) throws Exception{
  380. if (obj == null) {
  381. return;
  382. }
  383. JSONArray orderList = obj.getJSONArray("list");
  384. if (orderList == null || orderList.size() == 0) {
  385. return;
  386. }
  387. String endTime = sysConfigMapper.getSysConfig(1);
  388. for (int i = 0;i < orderList.size();i++) {
  389. JSONObject order = orderList.getJSONObject(i);
  390. //获取订单详情
  391. JSONObject orderInfo = null;
  392. try{
  393. orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
  394. }catch (Exception e){
  395. logger.info("获取订单失败;异常编号:505;失败原因:"+ e.getMessage() +"--获取失败订单号:" + orderList.getJSONObject(i).getString("deal_code"));
  396. }
  397. if (orderInfo == null) {
  398. continue;
  399. }
  400. if (!orderInfo.has("orders")) {
  401. continue;
  402. }
  403. //获取订单项集合
  404. JSONArray itemArray = orderInfo.getJSONArray("orders");
  405. if (itemArray == null || itemArray.size() == 0) {
  406. continue;
  407. }
  408. SalesOrder salesOrder = new SalesOrder();
  409. salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
  410. salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
  411. salesOrder.setSalesOrderStatus(1);//订单状态
  412. salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  413. salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  414. salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
  415. salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
  416. salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
  417. salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
  418. salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  419. salesOrder.setSalesPostFirm(order.getString("shipping_name").trim());//快递方式代码
  420. salesOrder.setSalesPostNum(order.getString("invoice_no").trim());//快递单号
  421. salesOrder.setSalesOpenId(order.getString("mobile").trim());//唯一标识
  422. salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name").trim()));//支付方式
  423. salesOrder.setSalesPayTime(new Date(order.getLong("pay_time")*1000));//支付时间
  424. salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
  425. salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
  426. salesOrder.setSalesAmount((int)(order.getDouble("order_amount")*100));//应付款
  427. salesOrder.setSalesPayMoney((int)(order.getDouble("money_paid")*100));//已付款
  428. salesOrder.setSalesAddressName(order.getString("consignee").trim());//收货人
  429. String mobile = order.getString("mobile").replaceAll("[\\u00A0]+", "").trim();
  430. salesOrder.setSalesAddressTel(mobile);//收货人电话
  431. salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
  432. salesOrder.setSalesShippingFee((int)(order.getDouble("shipping_fee")*100));//邮费
  433. salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
  434. if (order.getInt("shipping_status") == 1) {
  435. if(order.has("delivery_time")){
  436. salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  437. }else{
  438. salesOrder.setSalesSendTime(new Date());//发货时间
  439. }
  440. }
  441. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  442. salesOrder.setSalesPledgeMoney(0);//押金金额
  443. salesOrder.setSalesRemainDeposit(0);//待提取金额
  444. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  445. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  446. salesOrder.setSalesWaitMoney(0);//待付金额
  447. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  448. salesOrder.setSalesPayNumber("0000");//支付尾号
  449. salesOrder.setSalesType(1);//订单类型
  450. endTime = order.getString("create_time"); //获取
  451. //查询店铺信息
  452. StoreInfo storeInfo = new StoreInfo();
  453. storeInfo.setStoreEfast(order.getString("sd_id"));
  454. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  455. int storeId = 0;
  456. int companyId = 0;
  457. if (storeList != null && storeList.size() > 0) {
  458. storeInfo = storeList.get(0);
  459. storeId = storeInfo.getStoreId();
  460. companyId = storeInfo.getCompanyId();
  461. }
  462. salesOrder.setSalesStoreId(storeId);//店铺id
  463. salesOrder.setSalesCompanyId(companyId);//销售公司id
  464. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  465. for (int j = 0;j < itemArray.size();j++) {
  466. ProductColor color = new ProductColor();
  467. JSONObject itemJson = itemArray.getJSONObject(j);
  468. SalesOrderItem item = new SalesOrderItem();
  469. color.setColorBar(itemJson.getString("goods_sn"));
  470. List<ProductColor> colorList = productService.listproductAndColor(color);
  471. if (colorList != null && colorList.size() > 0) {
  472. color = colorList.get(0);
  473. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  474. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  475. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  476. item.setItemColorId(color.getColorId());
  477. item.setItemProductColor(color.getColorName());
  478. item.setItemProductDiscount(color.getColorDiscount());
  479. item.setItemProductId(color.getColorProductId());
  480. item.setItemProductName(color.getProductName());
  481. item.setItemProductPic(color.getColorPicture());
  482. item.setItemProductType(color.getProductType());
  483. item.setItemProductPrice(color.getColorPrice());
  484. item.setItemIsSource(1);
  485. itemList.add(item);
  486. } else {
  487. //获取配件信息
  488. FittingsInfo fittingsInfo = new FittingsInfo();
  489. fittingsInfo.setFittingsBar(itemJson.getString("goods_sn"));
  490. List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  491. if (Fittings == null || Fittings.size() == 0) {
  492. continue;
  493. }
  494. fittingsInfo = Fittings.get(0);
  495. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  496. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  497. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  498. item.setItemColorId(fittingsInfo.getFittingsId());
  499. item.setItemProductColor(fittingsInfo.getFittingsName());
  500. item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  501. item.setItemProductId(fittingsInfo.getProductId());
  502. item.setItemProductName(fittingsInfo.getFittingsName());
  503. item.setItemProductPic("");
  504. item.setItemProductType(0);
  505. item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  506. item.setItemIsSource(2);
  507. itemList.add(item);
  508. }
  509. }
  510. //添加订单和订单项
  511. try{
  512. salesOrderService.addOrderAndItem(salesOrder,itemList);
  513. }catch (Exception e){
  514. logger.info("添加订单失败,异常编号:505;失败原因:+"+ e.getMessage() +"Efast编号:"+ salesOrder.getSalesOrderId());
  515. }
  516. }
  517. SysConfig sysConfig = new SysConfig(1,endTime);
  518. sysConfigMapper.updateSysConfig(sysConfig);
  519. }
  520. @Override
  521. @Transient
  522. public boolean syncEfastOrder(JSONObject orderInfo) throws Exception {
  523. if (orderInfo == null) {
  524. throw new RuntimeException("获取Efast订单信息出错!");
  525. }
  526. if (!orderInfo.has("orders")) {
  527. throw new RuntimeException("获取Efast订单信息出错!");
  528. }
  529. //获取订单项集合
  530. JSONArray itemArray = orderInfo.getJSONArray("orders");
  531. if (itemArray == null || itemArray.size() == 0) {
  532. throw new RuntimeException("获取Efast订单信息出错!");
  533. }
  534. SalesOrder salesOrder = new SalesOrder();
  535. salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号
  536. salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号
  537. salesOrder.setSalesOrderStatus(1);//订单状态
  538. salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  539. salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  540. salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态
  541. salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货
  542. salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定
  543. salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货
  544. salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  545. salesOrder.setSalesPostFirm(new String(orderInfo.getString("shipping_name")).trim());//快递方式代码
  546. salesOrder.setSalesPostNum(new String(orderInfo.getString("invoice_no")).trim());//快递单号
  547. salesOrder.setSalesOpenId(orderInfo.getString("mobile").trim());//唯一标识
  548. salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name").trim()));//支付方式
  549. salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间
  550. salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言
  551. salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言
  552. salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款
  553. salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款
  554. salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人
  555. String mobile = orderInfo.getString("mobile").replaceAll("[\\u00A0]+", "");
  556. salesOrder.setSalesAddressTel(mobile.trim());//收货人电话
  557. salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址
  558. salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费
  559. salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间
  560. if (orderInfo.getInt("shipping_status") == 1) {
  561. if(orderInfo.has("delivery_time")){
  562. salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  563. }else{
  564. salesOrder.setSalesSendTime(new Date());//发货时间
  565. }
  566. }
  567. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  568. salesOrder.setSalesPledgeMoney(0);//押金金额
  569. salesOrder.setSalesRemainDeposit(0);//待提取金额
  570. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  571. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  572. salesOrder.setSalesWaitMoney(0);//待付金额
  573. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  574. salesOrder.setSalesPayNumber("0000");//支付尾号
  575. salesOrder.setSalesType(1);//订单类型
  576. //查询店铺信息
  577. StoreInfo storeInfo = new StoreInfo();
  578. if (orderInfo.has("sd_id")) {
  579. storeInfo.setStoreEfast(orderInfo.getString("sd_id"));
  580. } else {
  581. storeInfo.setStoreEfast("1");
  582. }
  583. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  584. int storeId = 0;
  585. int companyId = 0;
  586. if (storeList != null && storeList.size() > 0) {
  587. storeInfo = storeList.get(0);
  588. storeId = storeInfo.getStoreId();
  589. companyId = storeInfo.getCompanyId();
  590. }
  591. salesOrder.setSalesStoreId(storeId);//店铺id
  592. salesOrder.setSalesCompanyId(companyId);//销售公司id
  593. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  594. for (int j = 0;j < itemArray.size();j++) {
  595. ProductColor color = new ProductColor();
  596. JSONObject itemJson = itemArray.getJSONObject(j);
  597. SalesOrderItem item = new SalesOrderItem();
  598. color.setColorBar(itemJson.getString("goods_barcode"));
  599. List<ProductColor> colorList = productService.listproductAndColor(color);
  600. if (colorList != null && colorList.size() > 0) {
  601. color = colorList.get(0);
  602. item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  603. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  604. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  605. item.setItemColorId(color.getColorId());
  606. item.setItemProductColor(color.getColorName());
  607. item.setItemProductDiscount(color.getColorDiscount());
  608. item.setItemProductId(color.getColorProductId());
  609. item.setItemProductName(color.getProductName());
  610. item.setItemProductPic(color.getColorPicture());
  611. item.setItemProductType(color.getProductType());
  612. item.setItemProductPrice(color.getColorPrice());
  613. item.setItemIsSource(1);
  614. itemList.add(item);
  615. } else {
  616. //获取配件信息
  617. FittingsInfo fittingsInfo = new FittingsInfo();
  618. fittingsInfo.setFittingsBar(itemJson.getString("goods_barcode"));
  619. List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  620. if (Fittings == null || Fittings.size() == 0) {
  621. continue;
  622. }
  623. fittingsInfo = Fittings.get(0);
  624. item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  625. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  626. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  627. item.setItemColorId(fittingsInfo.getFittingsId());
  628. item.setItemProductColor(fittingsInfo.getFittingsName());
  629. item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  630. item.setItemProductId(fittingsInfo.getProductId());
  631. item.setItemProductName(fittingsInfo.getFittingsName());
  632. item.setItemProductPic("");
  633. item.setItemProductType(0);
  634. item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  635. item.setItemIsSource(2);
  636. itemList.add(item);
  637. }
  638. }
  639. boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList);
  640. if (flag) {
  641. return true;
  642. } else {
  643. throw new RuntimeException("添加订单项出错!");
  644. }
  645. }
  646. @Override
  647. public Integer getOrderInfoCount(SalesOrder salesOrder) {
  648. return salesOrderMapper.getOrderInfoCount(salesOrder);
  649. }
  650. @Override
  651. public List<SalesOrder> listOrderExcel(SalesOrder salesOrder) {
  652. return salesOrderMapper.listOrderExcel(salesOrder);
  653. }
  654. @Override
  655. public Integer listOrderExcelNum(SalesOrder salesOrder) {
  656. return salesOrderMapper.listOrderExcelNum(salesOrder);
  657. }
  658. @Override
  659. public Integer delOrder(String orderId) {
  660. return salesOrderMapper.delOrder(orderId);
  661. }
  662. @Override
  663. public Integer updateOrderItem(SalesOrderItem salesOrderItem) {
  664. return salesOrderMapper.updateOrderItem(salesOrderItem);
  665. }
  666. @Override
  667. public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) {
  668. return salesOrderMapper.getSalesOrderByLogistics(salesOrder);
  669. }
  670. @Override
  671. public Integer updateOrderListIsDownload(List<SalesOrder> list) {
  672. return salesOrderMapper.updateOrderListIsDownload(list);
  673. }
  674. @Override
  675. public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) {
  676. return salesOrderMapper.updateSalesOrderByDealCode(salesOrder);
  677. }
  678. @Override
  679. public List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo) {
  680. return salesOrderMapper.getLogisticsInfo(logisticsInfo);
  681. }
  682. @Override
  683. public List<DownsingleRuleInfo> listDownsingleRule() {
  684. return salesOrderMapper.listDownsingleRule();
  685. }
  686. @Override
  687. public Integer getIsMachine(String colorBar) {
  688. return salesOrderMapper.getIsMachine(colorBar);
  689. }
  690. @Override
  691. public Integer getOrderBySalesDealCodeNum(String code) {
  692. return salesOrderMapper.getOrderBySalesDealCodeNum(code);
  693. }
  694. @Override
  695. public List<SalesOrder> listSalesOrderAndItem(SalesOrder salesOrder) {
  696. return salesOrderMapper.listSalesOrderAndItem(salesOrder);
  697. }
  698. }