SalesOrderServiceImpl.java 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524
  1. package com.iamberry.rst.service.cm;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.redis.RedisUtils;
  4. import com.iamberry.rst.core.address.Province;
  5. import com.iamberry.rst.core.cm.FittingsInfo;
  6. import com.iamberry.rst.core.cm.SalesOrder;
  7. import com.iamberry.rst.core.cm.SalesOrderItem;
  8. import com.iamberry.rst.core.cm.StoreInfo;
  9. import com.iamberry.rst.core.fm.ComplaintDetectInfo;
  10. import com.iamberry.rst.core.fm.InventoryInfo;
  11. import com.iamberry.rst.core.fm.InventoryLog;
  12. import com.iamberry.rst.core.order.*;
  13. import com.iamberry.rst.core.page.PagedResult;
  14. import com.iamberry.rst.core.sys.Admin;
  15. import com.iamberry.rst.core.sys.SysConfig;
  16. import com.iamberry.rst.core.tools.LogisticsInfo;
  17. import com.iamberry.rst.faces.address.AddressService;
  18. import com.iamberry.rst.faces.cm.InventoryService;
  19. import com.iamberry.rst.faces.cm.SalesOrderService;
  20. import com.iamberry.rst.faces.cm.StoreInfoService;
  21. import com.iamberry.rst.faces.order.EfastOrderService;
  22. import com.iamberry.rst.faces.order.OrderWarehouseService;
  23. import com.iamberry.rst.faces.product.ProductService;
  24. import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
  25. import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
  26. import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
  27. import com.iamberry.rst.service.fm.mapper.InventoryLogMapper;
  28. import com.iamberry.rst.service.fm.mapper.InventoryMapper;
  29. import com.iamberry.rst.service.order.mapper.LogisticsInfoMapper;
  30. import com.iamberry.rst.service.order.mapper.ProvincesLogisticsMapper;
  31. import com.iamberry.rst.service.product.mapper.ProductMapper;
  32. import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
  33. import com.iamberry.rst.util.PageUtil;
  34. import com.iamberry.wechat.tools.DateTimeUtil;
  35. import com.iamberry.wechat.tools.payUtil.DatetimeUtil;
  36. import net.sf.json.JSONArray;
  37. import net.sf.json.JSONObject;
  38. import org.slf4j.Logger;
  39. import org.slf4j.LoggerFactory;
  40. import org.springframework.beans.BeanUtils;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.stereotype.Service;
  43. import org.springframework.transaction.annotation.Transactional;
  44. import java.beans.Transient;
  45. import java.sql.SQLException;
  46. import java.text.SimpleDateFormat;
  47. import java.util.*;
  48. /**
  49. * Created by liuzhiwei on 2017/10/31.
  50. */
  51. @Service
  52. public class SalesOrderServiceImpl implements SalesOrderService {
  53. private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class);
  54. @Autowired
  55. private SalesOrderMapper salesOrderMapper;
  56. @Autowired
  57. private ProductService productService;
  58. @Autowired
  59. private StoreInfoService storeInfoService;
  60. @Autowired
  61. private EfastOrderService efastOrderService;
  62. @Autowired
  63. private SalesOrderService salesOrderService;
  64. @Autowired
  65. private FittingsInfoMapper fittingsInfoMapper;
  66. @Autowired
  67. private SysConfigMapper sysConfigMapper;
  68. @Autowired
  69. private AddressService addressService;
  70. @Autowired
  71. private ProvincesLogisticsMapper provincesLogisticsMapper;
  72. @Autowired
  73. private ProductMapper productMapper;
  74. @Autowired
  75. private InventoryMapper inventoryMapper;
  76. @Autowired
  77. private InventoryLogMapper inventoryLogMapper;
  78. @Autowired
  79. private ComplaintDetectInfoMapper complaintDetectInfoMapper;
  80. @Autowired
  81. private OrderWarehouseService orderWarehouseService;
  82. @Autowired
  83. private InventoryService inventoryService;
  84. @Override
  85. public Integer addSalesOrder(SalesOrder salesOrder) {
  86. return salesOrderMapper.addSalesOrder(salesOrder);
  87. }
  88. @Override
  89. @Transactional
  90. public Integer addSalesOrderManual(SalesOrder salesOrder) {
  91. salesOrderMapper.addSalesOrder(salesOrder);
  92. return null;
  93. }
  94. @Override
  95. public SalesOrder getSalesOrderById(Integer salesId) {
  96. return salesOrderMapper.getSalesOrderById(salesId);
  97. }
  98. @Override
  99. @Transactional(rollbackFor = {SQLException.class, RuntimeException.class})
  100. public Integer updateSalesOrder(SalesOrder salesOrder) {
  101. Integer res = salesOrderMapper.updateSalesOrder(salesOrder);
  102. if (res == null || res <= 0) {
  103. return 0;
  104. }
  105. // 作废订单时需要返还库存
  106. if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 3){
  107. // 如果已出库则返还库存
  108. SalesOrder so = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
  109. if(so.getSalesDeliver() == 2){
  110. returnInventory(salesOrder.getSalesId(),so.getSalesWarehouseId());
  111. }
  112. }
  113. return 1;
  114. }
  115. @Transactional
  116. @Override
  117. public Integer updateOrderInfo(SalesOrder salesOrder) {
  118. //删除订单项
  119. int flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
  120. if (flag <= 0) {
  121. throw new RuntimeException("删除订单项失败!");
  122. }
  123. //修改订单
  124. flag = salesOrderMapper.updateSalesOrder(salesOrder);
  125. if (flag <= 0) {
  126. throw new RuntimeException("修改订单失败!");
  127. }
  128. //批量添加订单项数据
  129. flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
  130. if (flag <= 0) {
  131. throw new RuntimeException("增加订单项失败!");
  132. }
  133. // 更新Redis缓存
  134. Map<String,String> map = System.getenv();
  135. String name = map.get("COMPUTERNAME");
  136. if ("iZ94klno8qrZ".equalsIgnoreCase(name)) {
  137. name = "RST_";
  138. } else {
  139. name = "adv_";
  140. }
  141. RedisUtils.del(name + "ORDER_ITEM_" + salesOrder.getSalesId());
  142. return flag;
  143. }
  144. @Override
  145. public Integer addSalesOrderList(List<SalesOrder> list) {
  146. return salesOrderMapper.addSalesOrderList(list);
  147. }
  148. @Override
  149. public List<SalesOrder> listSalesOrder(SalesOrder salesOrder) {
  150. return salesOrderMapper.listSalesOrder(salesOrder);
  151. }
  152. @Override
  153. public Integer listSalesOrderNum(SalesOrder salesOrder) {
  154. return salesOrderMapper.listSalesOrderNum(salesOrder);
  155. }
  156. @Override
  157. public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
  158. salesOrder.setStartOrderNO((pageNO-1) * pageSize);
  159. salesOrder.setEndOrderNO(pageSize);
  160. //查询订单列表信息
  161. List<SalesOrder> orderList = salesOrderMapper.listSalesOrderNew(salesOrder);
  162. for(SalesOrder so : orderList){
  163. SalesOrderItem salesOrderItem = new SalesOrderItem();
  164. salesOrderItem.setItemOrderId(so.getSalesId());
  165. List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
  166. //去除已退货的订单项
  167. int num = salesOrderItemList.size();
  168. for(int i = 0;i< num;){
  169. SalesOrderItem item = salesOrderItemList.get(i);
  170. if(item.getItemNum().intValue() == item.getItemReturnNum().intValue()){
  171. salesOrderItemList.remove(i);
  172. num = salesOrderItemList.size();
  173. i = 0;
  174. }else{
  175. i++;
  176. }
  177. }
  178. for(SalesOrderItem item : salesOrderItemList){//判断是否包含净水机 1是 2否
  179. if(item.getColorIsMachine() != null){
  180. if(item.getColorIsMachine() == 1){
  181. so.setIsDevelop(1);
  182. }else{
  183. so.setIsDevelop(2);
  184. }
  185. }else{
  186. so.setIsDevelop(1);
  187. }
  188. }
  189. so.setSalesOrderItemList(salesOrderItemList);
  190. }
  191. PagedResult<SalesOrder> result = PageUtil.getPage(orderList);
  192. // 查询分页的数据
  193. int count = salesOrderMapper.listSalesOrderNum(salesOrder);
  194. result.setTotal(count);
  195. if(count%pageSize==0){
  196. count=count/pageSize;
  197. } else{
  198. count=count/pageSize+1;
  199. }
  200. result.setPages(count);
  201. result.setPageNo(pageNO);
  202. result.setPageSize(pageSize);
  203. return result;
  204. }
  205. @Override
  206. public List<PostInfo> listWaitPrintOrderNum(Integer salesWarehouseId) {
  207. return salesOrderMapper.listWaitPrintOrderNum(salesWarehouseId);
  208. }
  209. @Override
  210. public PagedResult<SalesOrder> listAwaitSendSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
  211. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  212. //查询订单列表信息
  213. List<SalesOrder> orderList = salesOrderMapper.listAwaitSendSalesOrderPage(salesOrder);
  214. return PageUtil.getPage(orderList);
  215. }
  216. @Override
  217. @Transactional
  218. public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
  219. if (list == null || list.size() == 0) {
  220. throw new RuntimeException("获取订单信息出错!");
  221. }
  222. SalesOrder verifyOrder = new SalesOrder();
  223. verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
  224. //查询该订单是否存在,如果存在,不需要再次添加到订单中
  225. int count = salesOrderMapper.getOrderInfoCount(verifyOrder);
  226. if (count > 0) {
  227. return true;
  228. }
  229. //添加订单数据
  230. try {
  231. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  232. if (orderNum <= 0) {
  233. throw new RuntimeException("获取订单信息出错!");
  234. }
  235. } catch (Exception e) {
  236. return true;
  237. }
  238. for (SalesOrderItem item : list) {
  239. item.setItemOrderId(salesOrder.getSalesId());
  240. }
  241. //批量添加订单项数据
  242. int itemNum = salesOrderMapper.addOrderItemList(list);
  243. if (itemNum <= 0) {
  244. throw new RuntimeException("获取订单信息出错!");
  245. }
  246. return true;
  247. }
  248. @Override
  249. @Transactional
  250. public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
  251. //添加订单数据
  252. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  253. if (orderNum <= 0) {
  254. return salesOrder;
  255. }
  256. for (SalesOrderItem item : list) {
  257. item.setItemOrderId(salesOrder.getSalesId());
  258. }
  259. //批量添加订单项数据
  260. int itemNum = salesOrderMapper.addOrderItemList(list);
  261. if (itemNum <= 0) {
  262. return salesOrder;
  263. }
  264. return salesOrder;
  265. }
  266. @Override
  267. public void parseOrder(SalesOrder oginerOrder, List<SalesOrder> listOrder) {
  268. // 订单项拆分完成,直接返回
  269. if (oginerOrder.getSalesOrderItemList().size() <= 0) {
  270. return;
  271. }
  272. List<DownsingleRuleInfo> listDownsingleRuleInfo = salesOrderService.listDownsingleRule();
  273. if(listDownsingleRuleInfo.size() < 1){
  274. listOrder.add(oginerOrder);
  275. return;
  276. }
  277. // 拆单,比较的是数量和产品
  278. Map<String, SalesOrderItem> itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size());
  279. for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) {
  280. SalesOrderItem itemTwo = new SalesOrderItem();
  281. BeanUtils.copyProperties(item,itemTwo);
  282. itemMap.put(item.getItemColorBar(), itemTwo);
  283. }
  284. // 遍历拆单规则
  285. int ruleCount = 0;
  286. for (DownsingleRuleInfo rule : listDownsingleRuleInfo) {
  287. // 一个拆单规则
  288. int count = 0;
  289. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  290. if (itemMap.get(item.getDownsingleItemBar()) != null) {
  291. if (item.getDownsingleItemNum() <= itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
  292. count ++;
  293. }
  294. }
  295. }
  296. if (count == rule.getDownsingleRuleItemList().size()) {
  297. // 满足拆单条件
  298. SalesOrder newOrder = new SalesOrder();
  299. BeanUtils.copyProperties(oginerOrder,newOrder);
  300. newOrder.setSalesOrderItemList(new ArrayList<SalesOrderItem>(count));
  301. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  302. SalesOrderItem temp = new SalesOrderItem();
  303. BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp);
  304. temp.setItemNum(item.getDownsingleItemNum());
  305. newOrder.getSalesOrderItemList().add(temp);
  306. }
  307. listOrder.add(newOrder);
  308. // 继续递归
  309. for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
  310. if (item.getDownsingleItemNum().equals(itemMap.get(item.getDownsingleItemBar()).getItemNum())) {
  311. // 数量和拆单规则相同,则删除原订单的订单项
  312. /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/
  313. for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
  314. if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
  315. oginerOrder.getSalesOrderItemList().remove(i);
  316. }
  317. }
  318. } else {
  319. // SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
  320. SalesOrderItem orderItem = new SalesOrderItem();
  321. BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),orderItem);
  322. int oldCount = orderItem.getItemNum();
  323. /*orderItem.setItemNum(oldCount - item.getDownsingleItemNum());*/
  324. for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
  325. if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
  326. oginerOrder.getSalesOrderItemList().get(i).setItemNum(oldCount - item.getDownsingleItemNum());
  327. }
  328. }
  329. }
  330. }
  331. salesOrderService.parseOrder(oginerOrder, listOrder);
  332. break;
  333. } else {
  334. // 不满足, 继续下一个规则
  335. // 如果是最后一个拆单规则,则不拆单
  336. if ((ruleCount + 1) == listDownsingleRuleInfo.size()) {
  337. if (oginerOrder.getSalesOrderItemList().size() > 0) {
  338. listOrder.add(oginerOrder);
  339. }
  340. }
  341. }
  342. ruleCount++;
  343. }
  344. }
  345. @Override
  346. @Transactional
  347. public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
  348. //合并订单项-------------statr
  349. List<SalesOrderItem> listItem = salesOrder.getSalesOrderItemList();
  350. salesOrder.setSalesOrderItemList(null);
  351. List<SalesOrderItem> list = new ArrayList<>();
  352. for (int i = 0;i<listItem.size();i++){
  353. if(i < listItem.size() - 1 ){
  354. for(int j = 0;j<listItem.size();j++){
  355. if (i != j){
  356. if(listItem.get(i).getItemColorBar().equals(listItem.get(j).getItemColorBar())){
  357. listItem.get(i).setItemNum(listItem.get(i).getItemNum()+listItem.get(j).getItemNum());
  358. }
  359. }
  360. }
  361. }
  362. boolean bl = true;
  363. for (SalesOrderItem salesOrderItem : list){
  364. if(salesOrderItem.getItemColorBar().equals(listItem.get(i).getItemColorBar())){
  365. bl = false;
  366. }
  367. }
  368. if(bl){
  369. list.add(listItem.get(i));
  370. }
  371. }
  372. //合并订单项----------------------end
  373. //匹配拆单规则 分割订单-------------state
  374. List<SalesOrder> listSalesOrder = new ArrayList<>();
  375. salesOrder.setSalesOrderItemList(list);
  376. salesOrderService.parseOrder(salesOrder, listSalesOrder);
  377. //匹配拆单规则 分割订单-------------end
  378. boolean msg = false;
  379. /*根据省份来分配物流公司*/
  380. salesOrderService.setProvincesLogistics(listSalesOrder);
  381. //判断主从订单--------------------state
  382. if (listSalesOrder.size() > 0){
  383. SalesOrder mainOrder = null;
  384. for (int s = 0;s < listSalesOrder.size();s++){
  385. if(mainOrder == null){
  386. for(int i = 0;i<listSalesOrder.get(s).getSalesOrderItemList().size();i++){
  387. int isMachine = salesOrderService.getIsMachine(listSalesOrder.get(s).getSalesOrderItemList().get(i).getItemColorBar());
  388. if( isMachine == 1){//1:水机 2:其它产品 0:未查到
  389. mainOrder = listSalesOrder.get(s);
  390. listSalesOrder.remove(s);
  391. break;
  392. }
  393. }
  394. }
  395. }
  396. if(mainOrder == null){//如果不存有水机的订单则默认第一个订单为主订单
  397. mainOrder = listSalesOrder.get(0);
  398. listSalesOrder.remove(0);
  399. }
  400. //判断主从订单--------------------end
  401. msg = salesOrderService.addRstOrderinfo(mainOrder,listSalesOrder,null);
  402. }
  403. return msg;
  404. }
  405. @Override
  406. @Transactional
  407. public boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder,String[] detectIds) {
  408. Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode());
  409. if(flag > 0){
  410. throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!");
  411. }
  412. if(mainOrder.getSalesCreateTime() == null){
  413. /*保证时间与以前一样*/
  414. mainOrder.setSalesCreateTime(new Date());
  415. }
  416. int orderNum = salesOrderMapper.addSalesOrder(mainOrder);
  417. if (orderNum <= 0) {
  418. throw new RuntimeException("添加订单出错--------!");
  419. }
  420. for (SalesOrderItem item : mainOrder.getSalesOrderItemList()) {
  421. item.setItemOrderId(mainOrder.getSalesId());
  422. }
  423. //批量添加订单项数据
  424. int itemNum = salesOrderMapper.addOrderItemList(mainOrder.getSalesOrderItemList());
  425. if (itemNum <= 0) {
  426. throw new RuntimeException("添加订单出错--------!");
  427. }else{
  428. if(listSalesOrder.size() > 0){
  429. for (int i = 0;i<listSalesOrder.size();i++){
  430. listSalesOrder.get(i).setSalesDealCode(listSalesOrder.get(i).getSalesDealCode()+"-"+(i+1));
  431. listSalesOrder.get(i).setSalesOrderId(listSalesOrder.get(i).getSalesOrderId()+"-"+(i+1));
  432. listSalesOrder.get(i).setSalesMainOrderId(mainOrder.getSalesId());
  433. listSalesOrder.get(i).setSalesId(null);
  434. orderNum = salesOrderMapper.addSalesOrder(listSalesOrder.get(i));
  435. if (orderNum <= 0) {
  436. throw new RuntimeException("添加订单出错--------!");
  437. }
  438. for (SalesOrderItem item : listSalesOrder.get(i).getSalesOrderItemList()) {
  439. item.setItemOrderId(listSalesOrder.get(i).getSalesId());
  440. }
  441. //批量添加订单项数据
  442. itemNum = salesOrderMapper.addOrderItemList(listSalesOrder.get(i).getSalesOrderItemList());
  443. if (itemNum <= 0) {
  444. throw new RuntimeException("添加订单出错--------!");
  445. }
  446. }
  447. }
  448. }
  449. //修为维修记录为已下单
  450. if(detectIds != null){
  451. if(detectIds.length > 0){
  452. for(String detectId : detectIds){
  453. ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
  454. detectInfo.setDetectId(Integer.valueOf(detectId));
  455. detectInfo.setDetectPlaceorder(2);
  456. detectInfo.setSalesOrderId(mainOrder.getSalesOrderId());
  457. /*detectInfo.setDetectSalesId(mainOrder.getSalesId());*/
  458. complaintDetectInfoMapper.updateDetectById(detectInfo);
  459. }
  460. }
  461. }
  462. return true;
  463. }
  464. /**
  465. * 根据省份来分配物流公司
  466. * @param listSalesOrder
  467. * @return
  468. */
  469. @Override
  470. public void setProvincesLogistics(List<SalesOrder> listSalesOrder){
  471. for (SalesOrder salesOrder:listSalesOrder) {
  472. boolean flag = false;
  473. for (SalesOrderItem salesOrderItem:salesOrder.getSalesOrderItemList()) {
  474. ProductColor productColor = productService.getColorByBar(salesOrderItem.getItemColorBar());
  475. if(productColor.getColorIsMachine() == 1){
  476. flag = true;
  477. }
  478. }
  479. if(flag){
  480. String addresses[] = salesOrder.getSalesAddressInfo().split("-");
  481. if(addresses == null || addresses.length < 3){
  482. addresses = salesOrder.getSalesAddressInfo().split(" ");
  483. }
  484. if(addresses == null || addresses.length < 3){
  485. addresses = salesOrder.getSalesAddressInfo().split("_");
  486. }
  487. if(addresses == null || addresses.length < 3){
  488. break;
  489. }
  490. String provincesStr = addresses[0];
  491. provincesStr = provincesStr.substring(0,2);
  492. ProvincesLogistics provincesLogistics = new ProvincesLogistics();
  493. provincesLogistics.setProvince(provincesStr);
  494. List<ProvincesLogistics> provincesLogisticsList = provincesLogisticsMapper.getProvincesLogisticsList(provincesLogistics);
  495. if(provincesLogisticsList == null || provincesLogisticsList.size() < 1){
  496. /*未查到地址*/
  497. break;
  498. }
  499. //设置快递公司
  500. provincesLogistics = provincesLogisticsList.get(0);
  501. if(provincesLogistics.getLogisticsRstCode() != null){
  502. salesOrder.setSalesPostFirm(provincesLogistics.getLogisticsRstCode());
  503. }
  504. }
  505. }
  506. }
  507. @Override
  508. public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
  509. // 通过计算机名称来判断服务器环境
  510. Map<String,String> map = System.getenv();
  511. String name = map.get("COMPUTERNAME");
  512. if ("iZ94klno8qrZ".equalsIgnoreCase(name)) {
  513. name = "RST_";
  514. } else {
  515. name = "adv_";
  516. }
  517. // 获取数据
  518. String key = name + "ORDER_ITEM_" + salesOrderItem.getItemOrderId();
  519. List<SalesOrderItem> list = RedisUtils.list(key, SalesOrderItem.class);
  520. if (list == null ) {
  521. list = salesOrderMapper.listSalesOrderItem(salesOrderItem);
  522. RedisUtils.put(key, list);
  523. RedisUtils.expire(key, new Date(259200000 + System.currentTimeMillis()));
  524. }
  525. return list;
  526. }
  527. @Override
  528. public Integer updateOrderList(JSONArray orderList, List<SalesOrder> list) {
  529. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  530. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  531. for (int i = 0;i < orderList.size();i++) {
  532. JSONObject orderInfo = orderList.getJSONObject(i);
  533. for (SalesOrder salesOrder : list) {
  534. if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId())
  535. && !(orderInfo.getInt("order_status") == salesOrder.getSalesStatus()
  536. && orderInfo.getInt("shipping_status") == salesOrder.getSalesShippingStatus()
  537. && orderInfo.getInt("pay_status") == salesOrder.getSalesPayStatus()
  538. && orderInfo.getInt("process_status") == salesOrder.getSalesProcessStatus()
  539. && orderInfo.getInt("is_send") == salesOrder.getSalesIsSend()
  540. && orderInfo.getInt("is_locked") == salesOrder.getSalesIsLocked()
  541. && orderInfo.getInt("is_separate") == salesOrder.getSalesIsSeparate()
  542. && orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm())
  543. && orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum())
  544. )) {
  545. SalesOrder order = new SalesOrder();
  546. order.setSalesId(salesOrder.getSalesId());
  547. order.setSalesStatus(orderInfo.getInt("order_status"));
  548. order.setSalesShippingStatus(orderInfo.getInt("shipping_status"));
  549. order.setSalesPayStatus(orderInfo.getInt("pay_status"));
  550. order.setSalesProcessStatus(orderInfo.getInt("process_status"));
  551. order.setSalesIsSend(orderInfo.getInt("is_send"));
  552. order.setSalesIsLocked(orderInfo.getInt("is_locked"));
  553. order.setSalesIsSeparate(orderInfo.getInt("is_separate"));
  554. order.setSalesPostFirm(orderInfo.getString("shipping_name"));
  555. order.setSalesPostNum(orderInfo.getString("invoice_no"));
  556. salesOrders.add(order);
  557. }
  558. }
  559. }
  560. if (salesOrders != null && salesOrders.size() > 0) {
  561. //批量修改订单状态等信息
  562. return salesOrderMapper.updateOrderList(salesOrders);
  563. } else {
  564. return 1;
  565. }
  566. }
  567. @Override
  568. public Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list) {
  569. List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
  570. //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
  571. for (int i = 0;i < orderList.size();i++) {
  572. JSONObject orderInfo = orderList.getJSONObject(i);
  573. for (SalesOrder salesOrder : list) {
  574. if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) {
  575. SalesOrder order = new SalesOrder();
  576. switch (orderInfo.getInt("process_type")) {
  577. case 1://退货
  578. order.setSalesOrderStatus(3);
  579. break;
  580. case 4://换货
  581. order.setSalesOrderStatus(2);
  582. break;
  583. default:
  584. order.setSalesOrderStatus(3);
  585. break;
  586. }
  587. order.setSalesId(salesOrder.getSalesId());
  588. salesOrders.add(order);
  589. }
  590. }
  591. }
  592. //批量修改订单状态等信息
  593. return salesOrderMapper.updateOrderList(list);
  594. }
  595. @Override
  596. public void addSalesOrderList(JSONObject obj) throws Exception{
  597. if (obj == null) {
  598. return;
  599. }
  600. JSONArray orderList = obj.getJSONArray("list");
  601. if (orderList == null || orderList.size() == 0) {
  602. return;
  603. }
  604. String endTime = sysConfigMapper.getSysConfig(1);
  605. for (int i = 0;i < orderList.size();i++) {
  606. JSONObject order = orderList.getJSONObject(i);
  607. //获取订单详情
  608. JSONObject orderInfo = null;
  609. try{
  610. orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
  611. }catch (Exception e){
  612. logger.info("获取订单失败;异常编号:505;失败原因:"+ e.getMessage() +"--获取失败订单号:" + orderList.getJSONObject(i).getString("deal_code"));
  613. }
  614. if (orderInfo == null) {
  615. continue;
  616. }
  617. if (!orderInfo.has("orders")) {
  618. continue;
  619. }
  620. //获取订单项集合
  621. JSONArray itemArray = orderInfo.getJSONArray("orders");
  622. if (itemArray == null || itemArray.size() == 0) {
  623. continue;
  624. }
  625. SalesOrder salesOrder = new SalesOrder();
  626. salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
  627. salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
  628. salesOrder.setSalesOrderStatus(1);//订单状态
  629. salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  630. salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  631. salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
  632. salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
  633. salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
  634. salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
  635. salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  636. salesOrder.setSalesPostFirm(order.getString("shipping_name").trim());//快递方式代码
  637. salesOrder.setSalesPostNum(order.getString("invoice_no").trim());//快递单号
  638. salesOrder.setSalesOpenId(order.getString("mobile").trim());//唯一标识
  639. salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name").trim()));//支付方式
  640. salesOrder.setSalesPayTime(new Date(order.getLong("pay_time")*1000));//支付时间
  641. salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
  642. salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
  643. salesOrder.setSalesAmount((int)(order.getDouble("order_amount")*100));//应付款
  644. salesOrder.setSalesPayMoney((int)(order.getDouble("money_paid")*100));//已付款
  645. salesOrder.setSalesAddressName(order.getString("consignee").trim());//收货人
  646. String mobile = order.getString("mobile").replaceAll("[\\u00A0]+", "").trim();
  647. salesOrder.setSalesAddressTel(mobile);//收货人电话
  648. salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
  649. salesOrder.setSalesShippingFee((int)(order.getDouble("shipping_fee")*100));//邮费
  650. salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
  651. if (order.getInt("shipping_status") == 1) {
  652. if(order.has("delivery_time")){
  653. salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  654. }else{
  655. salesOrder.setSalesSendTime(new Date());//发货时间
  656. }
  657. }
  658. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  659. salesOrder.setSalesPledgeMoney(0);//押金金额
  660. salesOrder.setSalesRemainDeposit(0);//待提取金额
  661. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  662. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  663. salesOrder.setSalesWaitMoney(0);//待付金额
  664. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  665. salesOrder.setSalesPayNumber("0000");//支付尾号
  666. salesOrder.setSalesType(1);//订单类型
  667. endTime = order.getString("create_time"); //获取
  668. //查询店铺信息
  669. StoreInfo storeInfo = new StoreInfo();
  670. storeInfo.setStoreEfast(order.getString("sd_id"));
  671. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  672. int storeId = 0;
  673. int companyId = 0;
  674. if (storeList != null && storeList.size() > 0) {
  675. storeInfo = storeList.get(0);
  676. storeId = storeInfo.getStoreId();
  677. companyId = storeInfo.getCompanyId();
  678. }
  679. salesOrder.setSalesStoreId(storeId);//店铺id
  680. salesOrder.setSalesCompanyId(companyId);//销售公司id
  681. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  682. for (int j = 0;j < itemArray.size();j++) {
  683. ProductColor color = new ProductColor();
  684. JSONObject itemJson = itemArray.getJSONObject(j);
  685. SalesOrderItem item = new SalesOrderItem();
  686. color.setColorBar(itemJson.getString("goods_sn"));
  687. List<ProductColor> colorList = productService.listproductAndColor(color);
  688. if (colorList != null && colorList.size() > 0) {
  689. color = colorList.get(0);
  690. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  691. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  692. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  693. item.setItemColorId(color.getColorId());
  694. item.setItemProductColor(color.getColorName());
  695. item.setItemProductDiscount(color.getColorDiscount());
  696. item.setItemProductId(color.getColorProductId());
  697. item.setItemProductName(color.getProductName());
  698. item.setItemProductPic(color.getColorPicture());
  699. item.setItemProductType(color.getProductType());
  700. item.setItemProductPrice(color.getColorPrice());
  701. item.setItemIsSource(1);
  702. itemList.add(item);
  703. }
  704. // else {
  705. // //获取配件信息
  706. // FittingsInfo fittingsInfo = new FittingsInfo();
  707. // fittingsInfo.setFittingsBar(itemJson.getString("goods_sn"));
  708. // List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  709. // if (Fittings == null || Fittings.size() == 0) {
  710. // continue;
  711. // }
  712. // fittingsInfo = Fittings.get(0);
  713. // item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  714. // item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  715. // item.setItemCreateTime(salesOrder.getSalesCreateTime());
  716. // item.setItemColorId(fittingsInfo.getFittingsId());
  717. // item.setItemProductColor(fittingsInfo.getFittingsName());
  718. // item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  719. // item.setItemProductId(fittingsInfo.getProductId());
  720. // item.setItemProductName(fittingsInfo.getFittingsName());
  721. // item.setItemProductPic("");
  722. // item.setItemProductType(0);
  723. // item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  724. // item.setItemIsSource(2);
  725. // itemList.add(item);
  726. // }
  727. }
  728. //添加订单和订单项
  729. try{
  730. salesOrderService.addOrderAndItem(salesOrder,itemList);
  731. }catch (Exception e){
  732. logger.info("添加订单失败,异常编号:505;失败原因:+"+ e.getMessage() +"Efast编号:"+ salesOrder.getSalesOrderId());
  733. }
  734. }
  735. SysConfig sysConfig = new SysConfig(1,endTime);
  736. sysConfigMapper.updateSysConfig(sysConfig);
  737. }
  738. @Override
  739. @Transactional
  740. public boolean syncEfastOrder(JSONObject orderInfo) throws Exception {
  741. if (orderInfo == null) {
  742. throw new RuntimeException("获取Efast订单信息出错!");
  743. }
  744. if (!orderInfo.has("orders")) {
  745. throw new RuntimeException("获取Efast订单信息出错!");
  746. }
  747. //获取订单项集合
  748. JSONArray itemArray = orderInfo.getJSONArray("orders");
  749. if (itemArray == null || itemArray.size() == 0) {
  750. throw new RuntimeException("获取Efast订单信息出错!");
  751. }
  752. SalesOrder salesOrder = new SalesOrder();
  753. salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号
  754. salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号
  755. salesOrder.setSalesOrderStatus(1);//订单状态
  756. salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
  757. salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款
  758. salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态
  759. salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货
  760. salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定
  761. salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货
  762. salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
  763. salesOrder.setSalesPostFirm(new String(orderInfo.getString("shipping_name")).trim());//快递方式代码
  764. salesOrder.setSalesPostNum(new String(orderInfo.getString("invoice_no")).trim());//快递单号
  765. salesOrder.setSalesOpenId(orderInfo.getString("mobile").trim());//唯一标识
  766. salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name").trim()));//支付方式
  767. salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间
  768. salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言
  769. salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言
  770. salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款
  771. salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款
  772. salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人
  773. String mobile = orderInfo.getString("mobile").replaceAll("[\\u00A0]+", "");
  774. salesOrder.setSalesAddressTel(mobile.trim());//收货人电话
  775. salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址
  776. salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费
  777. salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间
  778. if (orderInfo.getInt("shipping_status") == 1) {
  779. if(orderInfo.has("delivery_time")){
  780. salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
  781. }else{
  782. salesOrder.setSalesSendTime(new Date());//发货时间
  783. }
  784. }
  785. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  786. salesOrder.setSalesPledgeMoney(0);//押金金额
  787. salesOrder.setSalesRemainDeposit(0);//待提取金额
  788. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  789. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  790. salesOrder.setSalesWaitMoney(0);//待付金额
  791. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  792. salesOrder.setSalesPayNumber("0000");//支付尾号
  793. salesOrder.setSalesType(1);//订单类型
  794. //查询店铺信息
  795. StoreInfo storeInfo = new StoreInfo();
  796. if (orderInfo.has("sd_id")) {
  797. storeInfo.setStoreEfast(orderInfo.getString("sd_id"));
  798. } else {
  799. storeInfo.setStoreEfast("1");
  800. }
  801. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  802. int storeId = 0;
  803. int companyId = 0;
  804. if (storeList != null && storeList.size() > 0) {
  805. storeInfo = storeList.get(0);
  806. storeId = storeInfo.getStoreId();
  807. companyId = storeInfo.getCompanyId();
  808. }
  809. salesOrder.setSalesStoreId(storeId);//店铺id
  810. salesOrder.setSalesCompanyId(companyId);//销售公司id
  811. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  812. for (int j = 0;j < itemArray.size();j++) {
  813. ProductColor color = new ProductColor();
  814. JSONObject itemJson = itemArray.getJSONObject(j);
  815. SalesOrderItem item = new SalesOrderItem();
  816. color.setColorBar(itemJson.getString("goods_barcode"));
  817. List<ProductColor> colorList = productService.listproductAndColor(color);
  818. if (colorList != null && colorList.size() > 0) {
  819. color = colorList.get(0);
  820. item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  821. item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  822. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  823. item.setItemColorId(color.getColorId());
  824. item.setItemProductColor(color.getColorName());
  825. item.setItemProductDiscount(color.getColorDiscount());
  826. item.setItemProductId(color.getColorProductId());
  827. item.setItemProductName(color.getProductName());
  828. item.setItemProductPic(color.getColorPicture());
  829. item.setItemProductType(color.getProductType());
  830. item.setItemProductPrice(color.getColorPrice());
  831. item.setItemIsSource(1);
  832. itemList.add(item);
  833. }
  834. // else {
  835. // //获取配件信息
  836. // FittingsInfo fittingsInfo = new FittingsInfo();
  837. // fittingsInfo.setFittingsBar(itemJson.getString("goods_barcode"));
  838. // List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
  839. // if (Fittings == null || Fittings.size() == 0) {
  840. // continue;
  841. // }
  842. // fittingsInfo = Fittings.get(0);
  843. // item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
  844. // item.setItemNum(itemJson.getInt("goods_number"));//商品数量
  845. // item.setItemCreateTime(salesOrder.getSalesCreateTime());
  846. // item.setItemColorId(fittingsInfo.getFittingsId());
  847. // item.setItemProductColor(fittingsInfo.getFittingsName());
  848. // item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  849. // item.setItemProductId(fittingsInfo.getProductId());
  850. // item.setItemProductName(fittingsInfo.getFittingsName());
  851. // item.setItemProductPic("");
  852. // item.setItemProductType(0);
  853. // item.setItemProductPrice(fittingsInfo.getFittingsPrice());
  854. // item.setItemIsSource(2);
  855. // itemList.add(item);
  856. // }
  857. }
  858. boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList);
  859. if (flag) {
  860. return true;
  861. } else {
  862. throw new RuntimeException("添加订单项出错!");
  863. }
  864. }
  865. @Override
  866. public Integer getOrderInfoCount(SalesOrder salesOrder) {
  867. return salesOrderMapper.getOrderInfoCount(salesOrder);
  868. }
  869. @Override
  870. public List<SalesOrder> listOrderExcel(SalesOrder salesOrder) {
  871. return salesOrderMapper.listOrderExcel(salesOrder);
  872. }
  873. @Override
  874. public Integer listOrderExcelNum(SalesOrder salesOrder) {
  875. return salesOrderMapper.listOrderExcelNum(salesOrder);
  876. }
  877. @Override
  878. public Integer delOrder(String orderId) {
  879. return salesOrderMapper.delOrder(orderId);
  880. }
  881. @Override
  882. @Transactional
  883. public Integer delSalesOrder(Integer id) {
  884. //查询出库状态判断是否需要返还库存
  885. SalesOrder so = salesOrderMapper.getSalesOrderById(id);
  886. if(so.getSalesDeliver() == 2){
  887. returnInventory(id,so.getSalesWarehouseId());
  888. }
  889. //判断是否绑定维修信息,并解除绑定
  890. if(so != null){
  891. //查询封装售后维修编号
  892. List<ComplaintDetectInfo> listDetect = complaintDetectInfoMapper.listComplaintDetectBySalesId(so.getSalesOrderId());
  893. if(listDetect != null && listDetect.size() > 0){
  894. for (ComplaintDetectInfo info: listDetect){
  895. ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
  896. detectInfo.setDetectId(info.getDetectId());
  897. detectInfo.setDetectPlaceorder(1);
  898. detectInfo.setSalesOrderId("");
  899. complaintDetectInfoMapper.updateDetectById(detectInfo);
  900. }
  901. }
  902. }
  903. // 检查客诉是否使用订单,如果有使用订单,无法删除
  904. salesOrderMapper.delOrderItem(id);
  905. salesOrderMapper.delSalesOrder(id);
  906. return 1;
  907. }
  908. @Override
  909. public Integer updateOrderItem(SalesOrderItem salesOrderItem) {
  910. return salesOrderMapper.updateOrderItem(salesOrderItem);
  911. }
  912. @Override
  913. public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) {
  914. return salesOrderMapper.getSalesOrderByLogistics(salesOrder);
  915. }
  916. @Override
  917. public Integer updateOrderListIsDownload(List<SalesOrder> list) {
  918. return salesOrderMapper.updateOrderListIsDownload(list);
  919. }
  920. @Override
  921. public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) {
  922. return salesOrderMapper.updateSalesOrderByDealCode(salesOrder);
  923. }
  924. @Override
  925. public List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo) {
  926. return salesOrderMapper.getLogisticsInfo(logisticsInfo);
  927. }
  928. @Override
  929. public List<DownsingleRuleInfo> listDownsingleRule() {
  930. return salesOrderMapper.listDownsingleRule();
  931. }
  932. @Override
  933. public Integer getIsMachine(String colorBar) {
  934. return salesOrderMapper.getIsMachine(colorBar);
  935. }
  936. @Override
  937. public Integer getOrderBySalesDealCodeNum(String code) {
  938. return salesOrderMapper.getOrderBySalesDealCodeNum(code);
  939. }
  940. @Override
  941. public Integer listSalesOrderAndItemNum(SalesOrder salesOrder) {
  942. return salesOrderMapper.listSalesOrderAndItemNum(salesOrder);
  943. }
  944. @Override
  945. public List<SalesOrder> listSalesOrderAndItem(SalesOrder salesOrder) {
  946. return salesOrderMapper.listSalesOrderAndItem(salesOrder);
  947. }
  948. @Override
  949. public Integer getSalesOrderNum(SalesOrder salesOrder) {
  950. return salesOrderMapper.getSalesOrderNum(salesOrder);
  951. }
  952. @Transactional
  953. @Override
  954. public Integer listConfirmSalesOrderByBatch(String salesBatchId) {
  955. Integer flag = 0;
  956. SalesOrder salesOrder = new SalesOrder();
  957. salesOrder.setSalesBatchId(salesBatchId);
  958. List<SalesOrder> salesOrderList = salesOrderMapper.listSalesOrder(salesOrder);
  959. if(salesOrderList == null || salesOrderList.size() < 1){
  960. throw new RuntimeException("查询订单失败!");
  961. }
  962. for (SalesOrder so:salesOrderList){
  963. flag = salesOrderService.confirmSalesOrder(so.getSalesId());
  964. }
  965. return flag;
  966. }
  967. @Override
  968. public Integer noticeDistribution(SalesOrder salesOrder) {
  969. // 检查订单是否已经有了配送方式,如果没有不允许通知配货 -- 移到controller中自己添加
  970. // SalesOrder temp = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
  971. // if (temp == null || temp.getSalesPostFirm() == null || temp.getSalesPostFirm().isEmpty()) {
  972. // return 0;
  973. // }
  974. return salesOrderMapper.noticeDistribution(salesOrder);
  975. }
  976. @Transactional
  977. @Override
  978. public Integer confirmSalesOrder(Integer saleId) {
  979. /*
  980. * 查询订单
  981. * 查询订单项
  982. * 删除订单
  983. * 修改查询的订单状态
  984. * 添加订单
  985. */
  986. if(saleId == null ){
  987. throw new RuntimeException("确认订单-订单id异常!");
  988. }
  989. SalesOrder salesOrder = salesOrderMapper.getSalesOrderById(saleId);
  990. if(salesOrder == null){
  991. throw new RuntimeException("确认订单-订单异常!");
  992. }
  993. Integer flag = 0;
  994. SalesOrderItem salesOrderItem = new SalesOrderItem();
  995. salesOrderItem.setItemOrderId(salesOrder.getSalesId());
  996. List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
  997. if(salesOrderItemList == null || salesOrderItemList.size()<1){
  998. throw new RuntimeException("确认订单-查询订单项失败!");
  999. }
  1000. salesOrder.setSalesOrderItemList(salesOrderItemList);
  1001. flag = salesOrderMapper.delOrderById(salesOrder.getSalesId());
  1002. if(flag < 1){
  1003. throw new RuntimeException("确认订单-删除订单失败!");
  1004. }
  1005. flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
  1006. if(flag < 1){
  1007. throw new RuntimeException("确认订单-删除订单项失败!");
  1008. }
  1009. //1:确认 状态
  1010. salesOrder.setSalesStatus(1);
  1011. boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
  1012. if(!fl){
  1013. throw new RuntimeException("确认订单-添加订单失败!");
  1014. }
  1015. return flag;
  1016. }
  1017. @Override
  1018. public Integer distributionExpress(SalesOrder salesOrder) {
  1019. return salesOrderMapper.distributionExpress(salesOrder);
  1020. }
  1021. @Override
  1022. public Integer listSalesPostFirm(SalesOrder salesOrder) {
  1023. return salesOrderMapper.listSalesPostFirm(salesOrder);
  1024. }
  1025. @Override
  1026. public Integer listSalesPostFirmByIds(SalesOrder salesOrder) {
  1027. return salesOrderMapper.listSalesPostFirmByIds(salesOrder);
  1028. }
  1029. @Override
  1030. public SalesOrder getSalesOrderByPostNum(String postNum) {
  1031. return salesOrderMapper.getSalesOrderByPostNum(postNum);
  1032. }
  1033. @Transactional
  1034. @Override
  1035. public synchronized Integer updateDeliver(SalesOrder salesOrder) {
  1036. Integer flag = salesOrderMapper.updateDeliver(salesOrder);
  1037. if(flag < 1){
  1038. throw new RuntimeException("出库失败,订单出库失败。");
  1039. }
  1040. boolean isMachineRetuen = false; //是否原机退回
  1041. ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();
  1042. complaintDetectInfo.setSalesOrderId(salesOrder.getSalesOrderId());
  1043. List<ComplaintDetectInfo> complaintDetectInfoList = complaintDetectInfoMapper.listComplaintDetectByOrderId(complaintDetectInfo);
  1044. if(complaintDetectInfoList != null && complaintDetectInfoList.size() > 0) {
  1045. ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
  1046. if (5 == cdinfo.getDetectProcessingResults()) { //detectProcessingResults
  1047. isMachineRetuen = true;
  1048. }
  1049. }
  1050. if(isMachineRetuen){
  1051. //减去售后仓库不良品
  1052. ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
  1053. InventoryInfo inventoryInfo1 = new InventoryInfo();
  1054. inventoryInfo1.setInventoryDefectiveProductNum(1);
  1055. inventoryInfo1.setInventoryProductColorId(cdinfo.getProductColorId());
  1056. inventoryInfo1.setWarehouseId(2);
  1057. inventoryInfo1.setInventoryRecentRecord("维修机器-原机返回(维修ID:" + cdinfo.getDetectNumber() + ")");
  1058. flag = inventoryService.minusInventory(inventoryInfo1);
  1059. if (flag < 1) {
  1060. throw new RuntimeException("出库失败。维修库存调整失败");
  1061. }
  1062. }else{ //正常库存出库(包含正常销售与售后)
  1063. if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
  1064. if(!salesOrderService.updateInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
  1065. throw new RuntimeException("出库失败,【出库】库存修改失败。");
  1066. }
  1067. }
  1068. if(salesOrder.getSalesDeliver() == 1){//标记未出库,修改库存
  1069. if(!salesOrderService.returnInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
  1070. throw new RuntimeException("出库失败,【返还库存】库存修改失败。");
  1071. }
  1072. }
  1073. }
  1074. return flag;
  1075. }
  1076. //减少库存
  1077. @Transactional
  1078. @Override
  1079. public boolean updateInventory(Integer salesId,Integer salesWarehouseId){
  1080. OrderWarehouse orderWarehouse = orderWarehouseService.getOrderWarehouseById(salesWarehouseId);
  1081. if(orderWarehouse == null){
  1082. throw new RuntimeException("【出库】更新库存失败,查询仓库信息失败。");
  1083. }
  1084. String warehouseName = orderWarehouse.getWarehouseName();
  1085. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1086. salesOrderItem.setItemOrderId(salesId);
  1087. List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
  1088. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1089. for(SalesOrderItem item : listOrderitem){
  1090. InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
  1091. if(info != null){
  1092. if(info.getInventoryGoodProductNum() >= item.getItemNum()){
  1093. info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());
  1094. info.setInventoryRecentRecord(sdf.format(new Date())+"出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
  1095. Integer flag = inventoryMapper.updateById(info);
  1096. if(flag < 1){
  1097. throw new RuntimeException("【出库】更新库存失败,库存修改失败。");
  1098. }
  1099. //添加日志
  1100. InventoryLog inventoryLog = new InventoryLog();
  1101. inventoryLog.setLogProductName(info.getInventoryProductName());
  1102. inventoryLog.setLogProductBar(info.getInventoryProductBar());
  1103. inventoryLog.setLogRemainingNum(item.getItemNum());
  1104. inventoryLog.setLogType(2);
  1105. inventoryLog.setLogOperationType(2);
  1106. inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
  1107. inventoryLog.setLogQualityType(1);
  1108. inventoryLog.setLogWarehouseId(salesWarehouseId);
  1109. flag = inventoryLogMapper.insert(inventoryLog);
  1110. if(flag < 1){
  1111. throw new RuntimeException("【出库】更新库存失败,增加库存记录失败。");
  1112. }
  1113. }else{
  1114. throw new RuntimeException("【出库】更新库存失败,"+ warehouseName +"["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存不足。");
  1115. }
  1116. }else{
  1117. throw new RuntimeException("【出库】更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
  1118. }
  1119. }
  1120. return true;
  1121. }
  1122. //标记未出库时返还库存
  1123. @Transactional
  1124. @Override
  1125. public boolean returnInventory(Integer salesId,Integer salesWarehouseId){
  1126. OrderWarehouse orderWarehouse = orderWarehouseService.getOrderWarehouseById(salesWarehouseId);
  1127. if(orderWarehouse == null){
  1128. throw new RuntimeException("【返还库存】更新库存失败,查询仓库信息失败。");
  1129. }
  1130. String warehouseName = orderWarehouse.getWarehouseName();
  1131. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1132. salesOrderItem.setItemOrderId(salesId);
  1133. List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
  1134. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1135. for(SalesOrderItem item : listOrderitem){
  1136. InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
  1137. if(info != null){
  1138. info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
  1139. info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
  1140. Integer flag = inventoryMapper.updateById(info);
  1141. if(flag < 1){
  1142. throw new RuntimeException("【返还库存】更新库存失败,库存修改失败。");
  1143. }
  1144. //添加日志
  1145. InventoryLog inventoryLog = new InventoryLog();
  1146. inventoryLog.setLogProductName(info.getInventoryProductName());
  1147. inventoryLog.setLogProductBar(info.getInventoryProductBar());
  1148. inventoryLog.setLogRemainingNum(item.getItemNum());
  1149. inventoryLog.setLogType(1);
  1150. inventoryLog.setLogOperationType(1);
  1151. inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
  1152. inventoryLog.setLogQualityType(1);
  1153. inventoryLog.setLogWarehouseId(salesWarehouseId);
  1154. flag = inventoryLogMapper.insert(inventoryLog);
  1155. if(flag < 1){
  1156. throw new RuntimeException("【返还库存】更新库存失败,增加库存记录失败。");
  1157. }
  1158. }else{
  1159. throw new RuntimeException("【返还库存】更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
  1160. }
  1161. }
  1162. return true;
  1163. }
  1164. @Override
  1165. public List<SalesOrderItem> getDeliverNum(SalesOrder salesOrder) {
  1166. return salesOrderMapper.getDeliverNum(salesOrder);
  1167. }
  1168. @Override
  1169. public List<Date> getNotSendDate() {
  1170. return salesOrderMapper.getNotSendDate();
  1171. }
  1172. @Override
  1173. public List<SalesOrder> salesOrderListAndItem(SalesOrder salesOrder) {
  1174. return salesOrderMapper.salesOrderListAndItem(salesOrder);
  1175. }
  1176. @Override
  1177. public PagedResult<SalesOrder> salesOrderListAndItemPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
  1178. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  1179. List<SalesOrder> list = salesOrderMapper.salesOrderListAndItem(salesOrder);
  1180. return PageUtil.getPage(list);
  1181. }
  1182. @Override
  1183. public List<SalesOrderItem> selectSalesOrderItemList(Integer salesId) {
  1184. return salesOrderMapper.selectSalesOrderItemList(salesId);
  1185. }
  1186. @Transactional
  1187. @Override
  1188. public Boolean addCorrectInfo(OrderCorrectInfo orderCorrectInfo, String arrayItem, Admin admin) {
  1189. //添加更新信息
  1190. orderCorrectInfo.setAdminId(admin.getAdminId());
  1191. if(salesOrderMapper.addCorrectInfo(orderCorrectInfo) < 1){
  1192. throw new RuntimeException("更正订单-订单异常!");
  1193. }
  1194. //封装订单项数据
  1195. JSONArray jsonArray = JSONArray.fromObject(arrayItem);
  1196. List salesOrderItemList = ((List)JSONArray.toCollection(jsonArray, SalesOrderItem.class));
  1197. for(Object temp : salesOrderItemList){
  1198. SalesOrderItem salesOrderItem = (SalesOrderItem) temp;
  1199. //查询订单项原数量
  1200. SalesOrderItem orderItem = salesOrderMapper.getSalesOrderItem(salesOrderItem.getItemId());
  1201. OrderCorrectItem orderCorrectItem = new OrderCorrectItem();
  1202. orderCorrectItem.setCorrectId(orderCorrectInfo.getCorrectId());
  1203. orderCorrectItem.setOrderItemId(salesOrderItem.getItemId());
  1204. orderCorrectItem.setItemProductColor(salesOrderItem.getItemProductColor());
  1205. orderCorrectItem.setItemProductName(salesOrderItem.getItemProductName());
  1206. orderCorrectItem.setCorrectNum(salesOrderItem.getItemNum());
  1207. orderCorrectItem.setOldNum(orderItem.getItemNum());
  1208. if(orderItem.getItemNum().intValue() != salesOrderItem.getItemNum().intValue()){
  1209. //查询订单判断是否已出库
  1210. SalesOrder so = salesOrderMapper.getSalesOrderById(orderCorrectInfo.getItemOrderId());
  1211. if(so.getSalesDeliver() == 2){
  1212. //返还库存
  1213. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1214. InventoryInfo info = inventoryMapper.getByInventoryByBar(orderItem.getItemColorBar(),so.getSalesWarehouseId());
  1215. //添加日志
  1216. InventoryLog inventoryLog = new InventoryLog();
  1217. inventoryLog.setLogProductName(info.getInventoryProductName());
  1218. inventoryLog.setLogProductBar(info.getInventoryProductBar());
  1219. inventoryLog.setLogOperationType(1);
  1220. inventoryLog.setLogQualityType(1);
  1221. inventoryLog.setLogWarehouseId(1);
  1222. if(orderItem.getItemNum() > salesOrderItem.getItemNum()){//原数量大于更正后数量
  1223. info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + (orderItem.getItemNum() - salesOrderItem.getItemNum()));
  1224. info.setInventoryRecentRecord(sdf.format(new Date())+"更正订单返还库存:"+(orderItem.getItemNum() - salesOrderItem.getItemNum())+"件");
  1225. inventoryLog.setLogRemainingNum(orderItem.getItemNum() - salesOrderItem.getItemNum());
  1226. inventoryLog.setLogType(2);
  1227. inventoryLog.setLogDesc(sdf.format(new Date())+"更正订单返还库存:"+(orderItem.getItemNum() - salesOrderItem.getItemNum())+"件");
  1228. }else if(orderItem.getItemNum() < salesOrderItem.getItemNum()){
  1229. if(info.getInventoryGoodProductNum() > (salesOrderItem.getItemNum() - orderItem.getItemNum())){
  1230. info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - (salesOrderItem.getItemNum() - orderItem.getItemNum()));
  1231. info.setInventoryRecentRecord(sdf.format(new Date())+"更正订单减少库存:"+(orderItem.getItemNum() - salesOrderItem.getItemNum())+"件");
  1232. inventoryLog.setLogRemainingNum(salesOrderItem.getItemNum() - orderItem.getItemNum());
  1233. inventoryLog.setLogType(1);
  1234. inventoryLog.setLogDesc(sdf.format(new Date())+"更正订单减少库存:"+(salesOrderItem.getItemNum() - orderItem.getItemNum())+"件");
  1235. }else{
  1236. return false;
  1237. }
  1238. }
  1239. inventoryMapper.updateById(info);
  1240. inventoryLogMapper.insert(inventoryLog);
  1241. }
  1242. //修改订单项数量
  1243. orderItem.setItemNum(salesOrderItem.getItemNum());
  1244. if(salesOrderMapper.updateOrderItemById(orderItem) < 1){
  1245. throw new RuntimeException("更正订单-修改订单项数量失败!");
  1246. }
  1247. if(salesOrderMapper.addCorrectItem(orderCorrectItem) < 1){
  1248. throw new RuntimeException("更正订单-添加记录失败!");
  1249. }
  1250. }
  1251. }
  1252. return true;
  1253. }
  1254. //更正订单时返还库存
  1255. public boolean returnInventoryByItemId(Integer itemId){
  1256. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1257. salesOrderItem.setItemId(itemId);
  1258. List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
  1259. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1260. for(SalesOrderItem item : listOrderitem){
  1261. SalesOrder so = salesOrderMapper.getSalesOrderById(item.getItemOrderId());
  1262. InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),so.getSalesWarehouseId());
  1263. if(info != null){
  1264. info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
  1265. info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废订单返还库存:"+item.getItemNum()+"件");
  1266. inventoryMapper.updateById(info);
  1267. //添加日志
  1268. InventoryLog inventoryLog = new InventoryLog();
  1269. inventoryLog.setLogProductName(info.getInventoryProductName());
  1270. inventoryLog.setLogProductBar(info.getInventoryProductBar());
  1271. inventoryLog.setLogRemainingNum(item.getItemNum());
  1272. inventoryLog.setLogType(1);
  1273. inventoryLog.setLogOperationType(1);
  1274. inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废订单返还库存:"+item.getItemNum()+"件");
  1275. inventoryLog.setLogQualityType(1);
  1276. inventoryLog.setLogWarehouseId(1);
  1277. inventoryLogMapper.insert(inventoryLog);
  1278. }
  1279. }
  1280. return true;
  1281. }
  1282. @Override
  1283. public Integer addCorrectItem(OrderCorrectItem orderCorrectItem) {
  1284. return salesOrderMapper.addCorrectItem(orderCorrectItem);
  1285. }
  1286. @Override
  1287. public OrderCorrectInfo getOrderCorrectInfo(Integer correctId) {
  1288. return salesOrderMapper.getOrderCorrectInfo(correctId);
  1289. }
  1290. @Override
  1291. public List<OrderCorrectItem> listOrderCorrectItem(Integer correctId) {
  1292. return salesOrderMapper.listOrderCorrectItem(correctId);
  1293. }
  1294. @Override
  1295. public SalesOrderItem getSalesOrderItem(Integer itemId) {
  1296. return salesOrderMapper.getSalesOrderItem(itemId);
  1297. }
  1298. @Override
  1299. public Integer updateOrderItemById(SalesOrderItem salesOrderItem) {
  1300. return salesOrderMapper.updateOrderItemById(salesOrderItem);
  1301. }
  1302. @Override
  1303. public List<OrderCorrectInfo> listOrderCorrectInfo(Integer orderId) {
  1304. return salesOrderMapper.listOrderCorrectInfo(orderId);
  1305. }
  1306. @Override
  1307. public OrderWarehouse selectAdminWarehouse(Integer adminId) {
  1308. return salesOrderMapper.selectAdminWarehouse(adminId);
  1309. }
  1310. @Override
  1311. public List<OrderWarehouse> listOrderWarehouse() {
  1312. return salesOrderMapper.listOrderWarehouse();
  1313. }
  1314. @Transactional
  1315. @Override
  1316. public List<SalesOrder> salesOrderAndItemStat(SalesOrder salesOrder) {
  1317. return salesOrderMapper.salesOrderAndItemStat(salesOrder);
  1318. }
  1319. @Transactional
  1320. @Override
  1321. public Integer splitOrder(String mainOrderId, List<SalesOrder> salesOrderList) {
  1322. Integer flag = 0;
  1323. SalesOrder mainOrder = new SalesOrder();
  1324. mainOrder.setSalesDealCode(mainOrderId);
  1325. List<SalesOrder> orderList = salesOrderService.salesOrderListAndItem(mainOrder);
  1326. SalesOrder or = new SalesOrder();
  1327. or.setSalesMainOrderId(orderList.get(0).getSalesId());
  1328. //该订单为主订单
  1329. List<SalesOrder> sonSalesOrderList = salesOrderService.salesOrderListAndItem(or);
  1330. orderList.addAll(sonSalesOrderList);
  1331. for (SalesOrder salesOrder:salesOrderList) {
  1332. for (int j=0;j<orderList.size();j++){
  1333. if(salesOrder.getSalesDealCode().equals(orderList.get(j).getSalesDealCode())){
  1334. orderList.remove(j);
  1335. }
  1336. }
  1337. if(salesOrder.getSalesId() != null && salesOrder.getSalesShippingStatus() > 0){
  1338. continue;
  1339. }
  1340. //create order item
  1341. for (SalesOrderItem itemSaleItem:salesOrder.getSalesOrderItemList()) {
  1342. ProductColor productColor = productMapper.getProductBySku(itemSaleItem.getItemColorBar());
  1343. itemSaleItem.setItemProductId(productColor.getColorProductId());
  1344. itemSaleItem.setItemProductColor(productColor.getColorName());
  1345. itemSaleItem.setColorAbbreviation(productColor.getColorAbbreviation());
  1346. itemSaleItem.setProductAbbreviation(productColor.getColorAbbreviation());
  1347. itemSaleItem.setItemIsSource(1);
  1348. itemSaleItem.setItemProductDiscount(productColor.getColorDiscount());
  1349. itemSaleItem.setItemProductPrice(productColor.getColorPrice());
  1350. itemSaleItem.setItemProductPic(productColor.getColorPicture());
  1351. itemSaleItem.setItemProductName(productColor.getProductName());
  1352. itemSaleItem.setItemProductType(productColor.getProductType());
  1353. itemSaleItem.setItemColorId(productColor.getColorId());
  1354. if(salesOrder.getSalesId() != null){
  1355. itemSaleItem.setItemOrderId(salesOrder.getSalesId());
  1356. }
  1357. }
  1358. Integer salesId = salesOrder.getSalesId();
  1359. if(salesId == null){
  1360. //添加订单和订单项
  1361. salesOrderService.addOrderAndIteminfo(salesOrder,salesOrder.getSalesOrderItemList());
  1362. }else{
  1363. //其余全部做修改,删除订单项,添加新的订单项
  1364. flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
  1365. if(flag < 1){
  1366. throw new RuntimeException("删除订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
  1367. }
  1368. flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
  1369. if(flag < 1){
  1370. throw new RuntimeException("添加订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
  1371. }
  1372. }
  1373. }
  1374. for (SalesOrder soDelete:orderList) {
  1375. flag = salesOrderService.delSalesOrder(soDelete.getSalesId());
  1376. if(flag < 1){
  1377. throw new RuntimeException("删除订单失败,删除订单交易号:"+soDelete.getSalesDealCode());
  1378. }
  1379. }
  1380. return flag;
  1381. }
  1382. @Override
  1383. public AfterrulesInfo getAfterrulesInfo(Integer storeId) {
  1384. return salesOrderMapper.getAfterrulesInfo(storeId);
  1385. }
  1386. @Override
  1387. public Integer updateOrderItemReturnNum(SalesOrderItem salesOrderItem) {
  1388. return salesOrderMapper.updateOrderItemReturnNum(salesOrderItem);
  1389. }
  1390. @Override
  1391. public List<SmsSignatureInfo> listSmsSignatureInfo(SmsSignatureInfo smsSignatureInfo) {
  1392. return salesOrderMapper.listSmsSignatureInfo(smsSignatureInfo);
  1393. }
  1394. @Override
  1395. public List<SmsTemplateInfo> listSmsTemplateInfo(SmsTemplateInfo smsTemplateInfo) {
  1396. return salesOrderMapper.listSmsTemplateInfo(smsTemplateInfo);
  1397. }
  1398. @Override
  1399. public SalesOrder getStatusNum() {
  1400. return salesOrderMapper.getStatusNum();
  1401. }
  1402. @Override
  1403. public SalesOrder getSalesOrderByOrderId(String salesOrderId) {
  1404. return salesOrderMapper.getSalesOrderByOrderId(salesOrderId);
  1405. }
  1406. }