CustomerServiceImpl.java 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. package com.iamberry.rst.service.cm;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.rst.core.address.City;
  4. import com.iamberry.rst.core.address.District;
  5. import com.iamberry.rst.core.address.Province;
  6. import com.iamberry.rst.core.cm.*;
  7. import com.iamberry.rst.core.order.EfastOrder;
  8. import com.iamberry.rst.core.order.OrderItem;
  9. import com.iamberry.rst.core.order.Product;
  10. import com.iamberry.rst.core.order.ProductColor;
  11. import com.iamberry.rst.core.page.PagedResult;
  12. import com.iamberry.rst.faces.cm.CustomerService;
  13. import com.iamberry.rst.faces.order.EfastOrderService;
  14. import com.iamberry.rst.service.address.mapper.AddressMapper;
  15. import com.iamberry.rst.service.cm.mapper.*;
  16. import com.iamberry.rst.service.order.EfastOrderServiceImpl;
  17. import com.iamberry.rst.service.product.mapper.ProductMapper;
  18. import com.iamberry.rst.util.PageUtil;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. @Service
  27. public class CustomerServiceImpl implements CustomerService {
  28. @Autowired
  29. private CustomerInfoMapper customerInfoMapper;
  30. @Autowired
  31. private RepairMapper repairMapper;
  32. @Autowired
  33. private BackGoodsMapper backGoodsMapper;
  34. @Autowired
  35. private NoreasonBackMapper noreasonBackMapper;
  36. @Autowired
  37. private ReissueMapper reissueMapper;
  38. @Autowired
  39. private RenewedMapper renewedMapper;
  40. @Autowired
  41. private ClosedFittingMapper closedFittingMapper;
  42. @Autowired
  43. private ClosedProdcueMapper closedProdcueMapper;
  44. @Autowired
  45. private SendProdcueMapper sendProdcueMapper;
  46. @Autowired
  47. private SendFittingMapper sendFittingMapper;
  48. @Autowired
  49. private SalesOrderMapper salesOrderMapper;
  50. @Autowired
  51. private CustomerService customerService;
  52. @Autowired
  53. private VisitMapper visitMapper; //回访
  54. @Autowired
  55. private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper; //仓储
  56. @Autowired
  57. private ComplaintDetectInfoMapper complaintDetectInfoMapper; //品检
  58. @Autowired
  59. private QuestionDescribeMapper questionDescribeMapper; //客诉问题
  60. @Autowired
  61. private AddressMapper addressMapper; //地址
  62. @Autowired
  63. private ProductMapper productMapper; //产品
  64. @Autowired
  65. private ComplaintSignclosedProductInfoMapper complaintSignclosedProductInfoMapper;
  66. @Autowired
  67. private FittingsInfoMapper fittingsInfoMapper;
  68. @Autowired
  69. private EfastOrderService efastOrderService;
  70. @Override
  71. public CustomerInfo getCustomerInfo(Integer customerId) {
  72. return customerInfoMapper.getCustomerInfo(customerId);
  73. }
  74. @Override
  75. @Transactional
  76. public Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder) throws Exception{
  77. //添加客诉基本信息
  78. Integer flag = 0;
  79. flag = customerInfoMapper.insert(customerInfo);
  80. if(flag < 1){
  81. throw new Exception("添加客诉失败");
  82. }
  83. QuestionDescribe questionDescribe = new QuestionDescribe();
  84. questionDescribe.setCustomerId(customerInfo.getCustomerId());
  85. questionDescribe.setDescribeTitle(customerInfo.getDescribeTitle()); //客诉问题标题
  86. questionDescribe.setDescribeContent(customerInfo.getDescribeContent()); //客诉问题描述
  87. questionDescribe.setDescribeHandleDesc(customerInfo.getDescribeHandleDesc()); //处理描述
  88. flag = questionDescribeMapper.insert(questionDescribe);
  89. if(flag < 1){
  90. throw new Exception("添加客诉失败");
  91. }
  92. if ("2".equals(customerInfo.getCustomerIsVisit())) {
  93. Visit visit = new Visit();
  94. visit.setCustomerId(customerInfo.getCustomerId());
  95. visit.setAdminId(customerInfo.getVisitAdminId());
  96. visit.setVisitName(customerInfo.getVisitName());
  97. visit.setVisitTel(customerInfo.getVisitTel());
  98. visit.setVisitDate(customerInfo.getVisitDate());
  99. visit.setVisitTimeSelect(customerInfo.getVisitTimeSelect());
  100. visit.setVisitStatus(1); //回访状态
  101. flag = visitMapper.addVisitInfo(visit);
  102. if(flag < 1){
  103. throw new Exception("添加客诉失败");
  104. }
  105. }
  106. if (2 == customerInfo.getCustomerCounselType() &&
  107. (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
  108. customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)
  109. ){
  110. salesOrder = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
  111. CustomerCommon customerCommon = customerInfo.getCustomerCommon();
  112. customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
  113. customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
  114. customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
  115. customerCommon.setRelationState(1); //状态 默认使用中
  116. customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
  117. customerCommon.setTransactionNumber(customerInfo.getTransactionNumber()); //外部交易号
  118. /* 初始化产品类型,名称,配件名称 */
  119. this.setName(customerCommon);
  120. ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo(); //品质检测
  121. ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
  122. Map<String,Object> map;
  123. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  124. case 3: //换新
  125. map = this.sendEfastOrder(customerCommon,salesOrder); //换新需要向Efast推送一条换新发货的订单
  126. if(map.get("status") == 1){
  127. customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  128. complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  129. }else{
  130. throw new Exception("换新创建Efast订单失败");
  131. }
  132. complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  133. this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  134. complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  135. this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  136. break;
  137. case 4: //维修
  138. map = this.sendEfastOrder(customerCommon,salesOrder); //维修需要向Efast推送一条维修发货的订单
  139. if(map.get("status") == 1){
  140. customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  141. complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  142. }else{
  143. throw new Exception("维修创建Efast订单失败");
  144. }
  145. complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  146. this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  147. complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  148. this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  149. break;
  150. case 5: //补发 不用创建仓储签收任务
  151. map = this.sendEfastOrder(customerCommon,salesOrder); //补发需要向Efast推送一条发货的订单
  152. if(map.get("status") == 1){
  153. customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  154. complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  155. }else{
  156. throw new Exception("补发创建Efast订单失败");
  157. }
  158. break;
  159. case 6: //退货
  160. complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  161. this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  162. complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  163. this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  164. break;
  165. case 7: //无理由退货
  166. complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  167. this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  168. complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  169. this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  170. break;
  171. }
  172. customerCommon.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储id
  173. Object object = CustomerCommon.getRelation(customerInfo.getCustomerIsSolve(), customerCommon);
  174. Integer relationId = 0;
  175. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  176. case 3: //换新
  177. Renewed renewed = (Renewed) object;
  178. flag = renewedMapper.insert(renewed);
  179. relationId = renewed.getRenewedId();
  180. break;
  181. case 4: //维修
  182. Repair repair = (Repair) object;
  183. flag = repairMapper.insert(repair);
  184. relationId = repair.getRepairId();
  185. break;
  186. case 5: //补发
  187. Reissue reissue = (Reissue) object;
  188. flag = reissueMapper.insert(reissue);
  189. relationId = reissue.getReissueId();
  190. break;
  191. case 6: //退货
  192. BackGoods backGoods = (BackGoods) object;
  193. flag = backGoodsMapper.insert(backGoods);
  194. relationId = backGoods.getBackGoodsId();
  195. break;
  196. case 7: //无理由退货
  197. NoreasonBack noreasonBack = (NoreasonBack) object;
  198. flag = noreasonBackMapper.insert(noreasonBack);
  199. relationId = noreasonBack.getNoreasonBackId();
  200. break;
  201. }
  202. if (flag < 1) {
  203. throw new Exception("添加客诉处理结果失败");
  204. }
  205. customerCommon.setRelationId(relationId);
  206. CustomerCommon.setProduceOrFitting(customerInfo.getCustomerIsSolve(),customerCommon);
  207. if(customerCommon.getClosedFittings()!=null && customerCommon.getClosedFittings().size() > 0){
  208. closedFittingMapper.insert(customerCommon.getClosedFittings());
  209. }
  210. if(customerCommon.getClosedProdcues() != null && customerCommon.getClosedProdcues().size()>0){
  211. closedProdcueMapper.insert(customerCommon.getClosedProdcues());
  212. }
  213. if(customerCommon.getSendProdcues() != null && customerCommon.getSendProdcues().size() > 0){
  214. sendProdcueMapper.insert(customerCommon.getSendProdcues());
  215. }
  216. if(customerCommon.getSendFittings() != null && customerCommon.getSendFittings().size() > 0){
  217. sendFittingMapper.insert(customerCommon.getSendFittings());
  218. }
  219. }
  220. return flag;
  221. }
  222. /**
  223. * 初始化
  224. * @param cc
  225. */
  226. private void setName(CustomerCommon cc){
  227. for (int i=0;i<cc.getSendProdcues().size();i++) {
  228. Product product = productMapper.getProduce(cc.getSendProdcues().get(i).getProductId());
  229. cc.getSendProdcues().get(i).setSendProduceName(product.getProductName());
  230. cc.getSendProdcues().get(i).setProductType(product.getProductType());
  231. cc.getSendProdcues().get(i).setProductNumber(product.getProductNumber());
  232. ProductColor productColor = productMapper.getProduceColor(cc.getSendProdcues().get(i).getColorId());
  233. cc.getSendProdcues().get(i).setProductColor(productColor);
  234. }
  235. for (int i=0;i<cc.getSendFittings().size();i++) {
  236. FittingsInfo fittingsInfo = fittingsInfoMapper.getFittingsById( cc.getSendFittings().get(i).getFittingsId());
  237. cc.getSendFittings().get(i).setFittingsId(fittingsInfo.getFittingsId());
  238. }
  239. for (int i=0;i<cc.getClosedProdcues().size();i++) {
  240. Product product = productMapper.getProductById(cc.getSendProdcues().get(i).getProductId());
  241. cc.getClosedProdcues().get(i).setClosedProductName(product.getProductName());
  242. cc.getClosedProdcues().get(i).setProductType(product.getProductType());
  243. cc.getClosedProdcues().get(i).setProductNumber(product.getProductNumber());
  244. ProductColor productColor = productMapper.getProduceColor(cc.getSendProdcues().get(i).getColorId());
  245. cc.getSendProdcues().get(i).setProductColor(productColor);
  246. }
  247. for (int i=0;i<cc.getClosedFittings().size();i++) {
  248. FittingsInfo fittingsInfo = fittingsInfoMapper.getFittingsById(cc.getClosedFittings().get(i).getFittingsId());
  249. cc.getClosedFittings().get(i).setFittingsId(fittingsInfo.getFittingsId());
  250. }
  251. }
  252. /**
  253. * 添加品检
  254. * @param complaintDetectInfo
  255. * @param customerCommon
  256. * @return
  257. */
  258. @Transactional
  259. public void saveComplaintDetectInfo(ComplaintDetectInfo complaintDetectInfo,CustomerCommon customerCommon) throws Exception{
  260. Integer flag = 0;
  261. List<ComplaintDetectInfo> complaintDetectInfoList = new ArrayList<ComplaintDetectInfo>();
  262. complaintDetectInfo.setCustomerId(customerCommon.getCustomerId()); //添加客诉
  263. complaintDetectInfo.setDetectState(1); //状态 1待仓库转入
  264. complaintDetectInfo.setDetectRevolutionProduced(1); //是否转入生产部门 1待转入
  265. for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
  266. ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
  267. for(int j=0; j<closedProdcue.getClosedProdcueNumber();j++){
  268. complaintDetectInfo.setProductId(closedProdcue.getProductId());
  269. complaintDetectInfo.setDetectProductType(closedProdcue.getProductType());
  270. complaintDetectInfo.setDetectProductNumber(closedProdcue.getProductNumber());
  271. }
  272. complaintDetectInfoList.add(complaintDetectInfo);
  273. }
  274. if(complaintDetectInfoList.size() > 0){
  275. flag = complaintDetectInfoMapper.insertList(complaintDetectInfoList);
  276. }
  277. if(flag < 1){
  278. throw new Exception("添加品检失败");
  279. }
  280. }
  281. /**
  282. * 添加仓储
  283. * @param customerCommon
  284. * @return
  285. */
  286. @Transactional
  287. public void saveComplaintSignclosedInfo(ComplaintSignclosedInfo complaintSignclosedInfo,CustomerCommon customerCommon)throws Exception{
  288. Integer flag;
  289. complaintSignclosedInfo.setSignclosedType(1); //客诉寄回
  290. complaintSignclosedInfo.setSignclosedIsQuality(1); //是否平品检 1:需要品检
  291. complaintSignclosedInfo.setSignclosedIsInto(2); //是否已转入品检 2:未转入品检
  292. complaintSignclosedInfo.setSignclosedState(2); //处理状态 2:未签收
  293. complaintSignclosedInfo.setSignclosedObjectsState(3); //物件状态 3:暂未签收
  294. complaintSignclosedInfo.setSignclosedCustomerId(customerCommon.getCustomerId()); //客诉id
  295. flag = complaintSignclosedInfoMapper.insert(complaintSignclosedInfo);
  296. if(flag < 1){
  297. throw new Exception("添加签收失败");
  298. }
  299. //添加代签收表
  300. List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfoArrayList = new ArrayList<>();
  301. AwaitingSignclosedProductInfo awaitingSignclosedProductInfo = new AwaitingSignclosedProductInfo();
  302. awaitingSignclosedProductInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //仓储id
  303. awaitingSignclosedProductInfo.setSignclosedProductType(1); //类型为产品
  304. for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
  305. ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
  306. awaitingSignclosedProductInfo.setProductNum(closedProdcue.getClosedProdcueNumber());
  307. awaitingSignclosedProductInfo.setSignclosedProductId(closedProdcue.getProductId()); //产品id
  308. awaitingSignclosedProductInfo.setSignclosedProductColor(closedProdcue.getColorId()); //颜色id
  309. awaitingSignclosedProductInfo.setProductName(closedProdcue.getClosedProductName()); //产品名称
  310. awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
  311. }
  312. awaitingSignclosedProductInfo.setSignclosedProductType(2); //类型为配件
  313. for(int i=0 ;i< customerCommon.getClosedFittings().size();i++){
  314. ClosedFitting closedFitting = customerCommon.getClosedFittings().get(i);
  315. awaitingSignclosedProductInfo.setProductNum(closedFitting.getClosedFittingNumber());
  316. awaitingSignclosedProductInfo.setSignclosedProductId(closedFitting.getFittingsId()); //配件id
  317. awaitingSignclosedProductInfo.setSignclosedProductColor(null);
  318. awaitingSignclosedProductInfo.setProductName(closedFitting.getFittingName()); //配件名称
  319. awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
  320. }
  321. flag = complaintSignclosedProductInfoMapper.insertList(awaitingSignclosedProductInfoArrayList);
  322. if(flag < 1){
  323. throw new Exception("添加签收产品失败");
  324. }
  325. }
  326. /**
  327. * 向Efast推送订单 仅换新,维修 ,补发
  328. * @return
  329. */
  330. @Transactional
  331. public Map<String,Object> sendEfastOrder(CustomerCommon customerCommon,SalesOrder salesOrder) throws Exception{
  332. Map<String,Object> map = new HashMap<String,Object>();
  333. List<EfastOrder> orderList = new ArrayList<EfastOrder>();
  334. List<OrderItem> itemList = new ArrayList<OrderItem>();
  335. Integer num = 0; //产品数量
  336. Integer amout = 0; //商品总价
  337. String orderProductBarCode = ""; //产品sku
  338. String productName = ""; //产品名称
  339. for(int i=0;i<customerCommon.getSendProdcues().size();i++){
  340. SendProdcue sendProdcue = customerCommon.getSendProdcues().get(i);
  341. OrderItem orderItem = new OrderItem();
  342. orderItem.setItemProductName(sendProdcue.getSendProduceName());
  343. orderItem.setItemProductNum(sendProdcue.getSendProdcueNumber());
  344. orderItem.setItemProductPrice(sendProdcue.getProductColor().getColorPrice());
  345. orderItem.setItemColorBar(sendProdcue.getProductColor().getColorBar());
  346. itemList.add(orderItem);
  347. orderProductBarCode = sendProdcue.getProductColor().getColorBar();
  348. productName = sendProdcue.getSendProduceName();
  349. num += sendProdcue.getSendProdcueNumber();
  350. amout += sendProdcue.getProductColor().getColorPrice();
  351. }
  352. EfastOrder efastOrder = new EfastOrder();
  353. efastOrder.setOrderAddressName(customerCommon.getRelationSendName());//收货人姓名
  354. efastOrder.setOrderAddressTel(customerCommon.getRelationSendTel());//收货人电话
  355. efastOrder.setOrderOpenId("1");//身份证
  356. String[] address = customerCommon.getRelationSendMergeAddress().split("-");
  357. efastOrder.setOrderProvince(address[0]);
  358. efastOrder.setOrderCity(address[1]);
  359. efastOrder.setOrderArea(address[2]);
  360. efastOrder.setOrderAddress(customerCommon.getRelationSendAddress());
  361. efastOrder.setOrderStatus(2);
  362. efastOrder.setOrderNum(num); //产品数量
  363. efastOrder.setOrderAmount(amout); //商品总价
  364. efastOrder.setOrderPayMoney(amout); //已付款
  365. //支付方式
  366. switch (salesOrder.getSalesPayType()){
  367. case 1: //微信支付
  368. efastOrder.setOrderPayType(1);
  369. break;
  370. case 2: //现金支付
  371. efastOrder.setOrderPayType(2);
  372. break;
  373. case 3:
  374. break;
  375. case 4: //刷卡支付
  376. efastOrder.setOrderPayType(4);
  377. break;
  378. case 5: //支付宝支付
  379. efastOrder.setOrderPayType(5);
  380. break;
  381. }
  382. efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
  383. efastOrder.setOrderProductName(productName); //产品名称
  384. efastOrder.setOrderId(customerCommon.getTransactionNumber()); //外部交易号
  385. efastOrder.setOid(1);
  386. orderList.add(efastOrder);
  387. Integer status = 1;
  388. Map<String,Object> orderMap = new HashMap<String,Object>();
  389. try {
  390. orderMap = efastOrderService.sendOrder(orderList,itemList);
  391. } catch (Exception e) {
  392. status = 0;
  393. }
  394. List<EfastOrder> oList = (List<EfastOrder>) orderMap.get("efastOrderList");
  395. if(oList == null || oList.size() < 1){
  396. status = 0;
  397. }
  398. map.put("status",status);
  399. map.put("EfastOrderId",oList.get(0).getEfastOrderId());
  400. return map;
  401. }
  402. @Override
  403. public Integer updateCustomerInfo(CustomerInfo record) {
  404. return customerInfoMapper.updateCustomerInfo(record);
  405. }
  406. @Override
  407. public PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum) {
  408. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  409. //查询客诉列表
  410. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  411. //查询售后维修集合
  412. Repair repairInfo = new Repair();
  413. repairInfo.setRepairState(1);
  414. List<Repair> repairList = repairMapper.listRepair(repairInfo);
  415. //查询售后退货集合
  416. BackGoods backGoodsInfo = new BackGoods();
  417. backGoodsInfo.setBackGoodsState(1);
  418. List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(backGoodsInfo);
  419. //查询售后无理由退货集合
  420. NoreasonBack noreasonBackInfo = new NoreasonBack();
  421. noreasonBackInfo.setNoreasonBackState(1);
  422. List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(noreasonBackInfo);
  423. //查询售后补发集合
  424. Reissue reissueInfo = new Reissue();
  425. reissueInfo.setReissueState(1);
  426. List<Reissue> reissueList = reissueMapper.listReissue(reissueInfo);
  427. //查询售后换新集合
  428. Renewed renewedInfo = new Renewed();
  429. renewedInfo.setRenewedState(1);
  430. List<Renewed> renewedList = renewedMapper.listRenewed(renewedInfo);
  431. if (customerList != null && customerList.size() > 0) {
  432. for (CustomerInfo customer : customerList) {
  433. switch (customer.getCustomerIsSolve().intValue()) {
  434. case 3: //换新
  435. for (Renewed renewed : renewedList) {
  436. if (renewed.getCustomerId().intValue() == customer.getCustomerId()) {
  437. customer.setBackStatus(renewed.getRenewedBackStatus());
  438. customer.setSendStatus(renewed.getRenewedSendStatus());
  439. customer.setSalesTime(renewed.getSalesPayTime());
  440. break;
  441. }
  442. }
  443. break;
  444. case 4: //维修
  445. for (Repair repair : repairList) {
  446. if (repair.getCustomerId().intValue() == customer.getCustomerId()) {
  447. customer.setBackStatus(repair.getRepairBackStatus());
  448. customer.setSendStatus(repair.getRepairSendStatus());
  449. customer.setSalesTime(repair.getSalesPayTime());
  450. break;
  451. }
  452. }
  453. break;
  454. case 5: //补发
  455. for (Reissue reissue : reissueList) {
  456. if (reissue.getCustomerId().intValue() == customer.getCustomerId()) {
  457. customer.setSendStatus(reissue.getReissueSendStatus());
  458. customer.setSalesTime(reissue.getSalesPayTime());
  459. break;
  460. }
  461. }
  462. break;
  463. case 6: //退货
  464. for (BackGoods backGoods : backGoodsList) {
  465. if (backGoods.getCustomerId().intValue() == customer.getCustomerId()) {
  466. customer.setBackStatus(backGoods.getBackGoodsBackStatus());
  467. customer.setSalesTime(backGoods.getSalesPayTime());
  468. break;
  469. }
  470. }
  471. break;
  472. case 7: //无理由退货
  473. for (NoreasonBack noreasonBack : noreasonBackList) {
  474. if (noreasonBack.getCustomerId().intValue() == customer.getCustomerId()) {
  475. customer.setBackStatus(noreasonBack.getNoreasonBackBackStatus());
  476. customer.setSalesTime(noreasonBack.getSalesPayTime());
  477. break;
  478. }
  479. }
  480. break;
  481. }
  482. }
  483. }
  484. return PageUtil.getPage(customerList);
  485. }
  486. @Override
  487. public Map<String,Object> getCustomerInfo(CustomerInfo customerInfo) {
  488. Map<String,Object> map = new HashMap<String,Object>();
  489. CustomerCommon customerCommon = new CustomerCommon();
  490. //查询客诉列表
  491. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  492. if (customerList == null || customerList.size() == 0) {
  493. return null;
  494. }
  495. CustomerInfo customer = customerList.get(0);
  496. map.put("customer",customer);
  497. int orderId = 0;
  498. switch (customer.getCustomerIsSolve().intValue()) {
  499. case 3://换新
  500. Renewed renewedInfo = new Renewed();
  501. renewedInfo.setRenewedState(1);
  502. renewedInfo.setCustomerId(customerInfo.getCustomerId());
  503. //查询售后换新详情
  504. renewedInfo = renewedMapper.getRenewedInfo(renewedInfo);
  505. orderId = renewedInfo.getOrderId();
  506. customerCommon = CustomerCommon.getCustomerCommon(3,renewedInfo);
  507. customerCommon = customerService.selectProdcueAndFitting(customerCommon,3);
  508. break;
  509. case 4://维修
  510. Repair repairInfo = new Repair();
  511. repairInfo.setRepairState(1);
  512. repairInfo.setCustomerId(customerInfo.getCustomerId());
  513. //查询售后维修集合
  514. repairInfo = repairMapper.getRepairInfo(repairInfo);
  515. orderId = repairInfo.getOrderId();
  516. customerCommon = CustomerCommon.getCustomerCommon(4,repairInfo);
  517. customerCommon = customerService.selectProdcueAndFitting(customerCommon,4);
  518. break;
  519. case 5://补发
  520. Reissue reissueInfo = new Reissue();
  521. reissueInfo.setReissueState(1);
  522. reissueInfo.setCustomerId(customerInfo.getCustomerId());
  523. //查询售后补发集合
  524. List<Reissue> reissueList = reissueMapper.listReissue(reissueInfo);
  525. if (reissueList == null || reissueList.size() == 0) {
  526. return null;
  527. }
  528. reissueInfo = reissueList.get(0);
  529. orderId = reissueInfo.getOrderId();
  530. customerCommon = CustomerCommon.getCustomerCommon(5,reissueInfo);
  531. customerCommon = customerService.selectProdcueAndFitting(customerCommon,5);
  532. break;
  533. case 6://退货
  534. //查询售后退货集合
  535. BackGoods backGoodsInfo = new BackGoods();
  536. backGoodsInfo.setBackGoodsState(1);
  537. backGoodsInfo.setCustomerId(customerInfo.getCustomerId());
  538. List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(backGoodsInfo);
  539. if (backGoodsList == null || backGoodsList.size() == 0) {
  540. return null;
  541. }
  542. backGoodsInfo = backGoodsList.get(0);
  543. orderId = backGoodsInfo.getOrderId();
  544. customerCommon = CustomerCommon.getCustomerCommon(6,backGoodsInfo);
  545. customerCommon = customerService.selectProdcueAndFitting(customerCommon,6);
  546. break;
  547. case 7://无理由退货
  548. //查询售后无理由退货集合
  549. NoreasonBack noreasonBackInfo = new NoreasonBack();
  550. noreasonBackInfo.setNoreasonBackState(1);
  551. noreasonBackInfo.setCustomerId(customerInfo.getCustomerId());
  552. List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(noreasonBackInfo);
  553. if (noreasonBackList == null || noreasonBackList.size() == 0) {
  554. return null;
  555. }
  556. noreasonBackInfo = noreasonBackList.get(0);
  557. orderId = noreasonBackInfo.getOrderId();
  558. customerCommon = CustomerCommon.getCustomerCommon(7,noreasonBackInfo);
  559. customerCommon = customerService.selectProdcueAndFitting(customerCommon,7);
  560. break;
  561. }
  562. SalesOrder salesOrder = new SalesOrder();
  563. salesOrder.setSalesId(orderId);
  564. //查询订单信息
  565. List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(salesOrder);
  566. if (orderList != null && orderList.size() > 0) {
  567. SalesOrder order = orderList.get(0);
  568. SalesOrderItem salesOrderItem = new SalesOrderItem();
  569. salesOrderItem.setItemOrderId(order.getSalesId());
  570. order.setSalesOrderItemList(salesOrderMapper.listSalesOrderItem(salesOrderItem));
  571. map.put("salesOrder",order);
  572. } else {
  573. map.put("salesOrder",null);
  574. }
  575. map.put("customerCommon",customerCommon);
  576. return map;
  577. }
  578. @Override
  579. public CustomerCommon selectProdcueAndFitting(CustomerCommon customerCommon, int isSolve) {
  580. if (customerCommon == null || customerCommon.getRelationId() == null) {
  581. return customerCommon;
  582. }
  583. List<SendProdcue> sendProdcues = null;
  584. List<SendFitting> sendFittings = null;
  585. List<ClosedFitting> closedfittings = null;
  586. List<ClosedProdcue> closedProdcues = null;
  587. SendProdcue sendProdcue = new SendProdcue();
  588. SendFitting sendFitting = new SendFitting();
  589. ClosedFitting fitting = new ClosedFitting();
  590. ClosedProdcue closedProdcue = new ClosedProdcue();
  591. switch (isSolve) {
  592. case 3://换新
  593. sendProdcue.setRelationId(customerCommon.getRelationId());
  594. sendProdcue.setSendProduceType(3);
  595. //查询寄出产品集合
  596. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  597. sendFitting.setRelationId(customerCommon.getRelationId());
  598. sendFitting.setSendFittingType(3);
  599. //查询寄出配件集合
  600. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  601. fitting.setRelationId(customerCommon.getRelationId());
  602. fitting.setClosedFittingType(3);
  603. //查询寄回配件集合
  604. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  605. closedProdcue.setRelationId(customerCommon.getRelationId());
  606. closedProdcue.setClosedProdcueType(3);
  607. //查询寄回产品集合
  608. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  609. break;
  610. case 4://维修
  611. sendProdcue.setRelationId(customerCommon.getRelationId());
  612. sendProdcue.setSendProduceType(4);
  613. //查询寄出产品集合
  614. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  615. sendFitting.setRelationId(customerCommon.getRelationId());
  616. sendFitting.setSendFittingType(4);
  617. //查询寄出配件集合
  618. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  619. fitting.setRelationId(customerCommon.getRelationId());
  620. fitting.setClosedFittingType(4);
  621. //查询寄回配件集合
  622. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  623. closedProdcue.setRelationId(customerCommon.getRelationId());
  624. closedProdcue.setClosedProdcueType(4);
  625. //查询寄回产品集合
  626. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  627. break;
  628. case 5://补发
  629. sendProdcue.setRelationId(customerCommon.getRelationId());
  630. sendProdcue.setSendProduceType(5);
  631. //查询寄出产品集合
  632. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  633. sendFitting.setRelationId(customerCommon.getRelationId());
  634. sendFitting.setSendFittingType(5);
  635. //查询寄出配件集合
  636. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  637. break;
  638. case 6://退货
  639. fitting.setRelationId(customerCommon.getRelationId());
  640. fitting.setClosedFittingType(6);
  641. //查询寄回配件集合
  642. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  643. closedProdcue.setRelationId(customerCommon.getRelationId());
  644. closedProdcue.setClosedProdcueType(6);
  645. //查询寄回产品集合
  646. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  647. break;
  648. case 7://无理由退货
  649. fitting.setRelationId(customerCommon.getRelationId());
  650. fitting.setClosedFittingType(7);
  651. //查询寄回配件集合
  652. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  653. closedProdcue.setRelationId(customerCommon.getRelationId());
  654. closedProdcue.setClosedProdcueType(7);
  655. //查询寄回产品集合
  656. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  657. break;
  658. }
  659. customerCommon.setClosedFittings(closedfittings);
  660. customerCommon.setClosedProdcues(closedProdcues);
  661. customerCommon.setSendProdcues(sendProdcues);
  662. customerCommon.setSendFittings(sendFittings);
  663. return customerCommon;
  664. }
  665. @Override
  666. public BackGoods getBackGoods(BackGoods backGoods) {
  667. //获取退货集合
  668. List<BackGoods> backList = backGoodsMapper.listBackGoods(backGoods);
  669. if (backList == null || backList.size() == 0) {
  670. return null;
  671. }
  672. BackGoods goods = backList.get(0);
  673. ClosedProdcue closedProdcue = new ClosedProdcue();
  674. closedProdcue.setRelationId(goods.getBackGoodsId());
  675. closedProdcue.setClosedProdcueType(6);
  676. //查询寄回产品集合
  677. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  678. ClosedFitting fitting = new ClosedFitting();
  679. fitting.setRelationId(goods.getBackGoodsId());
  680. fitting.setClosedFittingType(6);
  681. //查询寄回配件集合
  682. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  683. if (prodcueList != null && prodcueList.size() > 0) {
  684. goods.setClosedProdcues(prodcueList);
  685. }
  686. if (fittingList != null && fittingList.size() > 0) {
  687. goods.setClosedFittings(fittingList);
  688. }
  689. return goods;
  690. }
  691. @Override
  692. public NoreasonBack getNoreasonBack(NoreasonBack noreasonBack) {
  693. //获取无理由退货
  694. List<NoreasonBack> backList = noreasonBackMapper.listNoreasonBack(noreasonBack);
  695. if (backList == null || backList.size() == 0) {
  696. return null;
  697. }
  698. NoreasonBack noreasonBackInfo = backList.get(0);
  699. ClosedProdcue closedProdcue = new ClosedProdcue();
  700. closedProdcue.setRelationId(noreasonBackInfo.getNoreasonBackId());
  701. closedProdcue.setClosedProdcueType(7);
  702. //查询寄回产品集合
  703. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  704. ClosedFitting fitting = new ClosedFitting();
  705. fitting.setRelationId(noreasonBackInfo.getNoreasonBackId());
  706. fitting.setClosedFittingType(7);
  707. //查询寄回配件集合
  708. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  709. if (prodcueList != null && prodcueList.size() > 0) {
  710. noreasonBackInfo.setClosedProdcues(prodcueList);
  711. }
  712. if (fittingList != null && fittingList.size() > 0) {
  713. noreasonBackInfo.setClosedFittings(fittingList);
  714. }
  715. return noreasonBackInfo;
  716. }
  717. @Override
  718. public Reissue getReissue(Reissue reissue) {
  719. //查询售后补发信息
  720. List<Reissue> reissueList = reissueMapper.listReissue(reissue);
  721. if (reissueList == null || reissueList.size() == 0) {
  722. return null;
  723. }
  724. Reissue reissueInfo = reissueList.get(0);
  725. ClosedProdcue closedProdcue = new ClosedProdcue();
  726. closedProdcue.setRelationId(reissueInfo.getReissueId());
  727. closedProdcue.setClosedProdcueType(6);
  728. //查询寄回产品集合
  729. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  730. ClosedFitting fitting = new ClosedFitting();
  731. fitting.setRelationId(reissueInfo.getReissueId());
  732. fitting.setClosedFittingType(6);
  733. //查询寄回配件集合
  734. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  735. if (prodcueList != null && prodcueList.size() > 0) {
  736. reissueInfo.setClosedProdcues(prodcueList);
  737. }
  738. if (fittingList != null && fittingList.size() > 0) {
  739. reissueInfo.setClosedFittings(fittingList);
  740. }
  741. return reissueInfo;
  742. }
  743. @Override
  744. public Renewed getRenewedInfo(Renewed renewed) {
  745. renewed = renewedMapper.getRenewedInfo(renewed);
  746. if (renewed == null){
  747. return null;
  748. }
  749. ClosedProdcue closedProdcue = new ClosedProdcue();
  750. closedProdcue.setRelationId(renewed.getRenewedId());
  751. closedProdcue.setClosedProdcueType(3);
  752. //查询寄回产品集合
  753. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  754. ClosedFitting fitting = new ClosedFitting();
  755. fitting.setRelationId(renewed.getRenewedId());
  756. fitting.setClosedFittingType(3);
  757. //查询寄回配件集合
  758. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  759. if (prodcueList != null && prodcueList.size() > 0) {
  760. renewed.setClosedProdcues(prodcueList);
  761. }
  762. if (fittingList != null && fittingList.size() > 0) {
  763. renewed.setClosedFittings(fittingList);
  764. }
  765. return renewed;
  766. }
  767. @Override
  768. public Repair getRepairInfo(Repair repair) {
  769. repair = repairMapper.getRepairInfo(repair);
  770. if (repair == null) {
  771. return null;
  772. }
  773. ClosedProdcue closedProdcue = new ClosedProdcue();
  774. closedProdcue.setRelationId(repair.getRepairId());
  775. closedProdcue.setClosedProdcueType(4);
  776. //查询寄回产品集合
  777. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  778. ClosedFitting fitting = new ClosedFitting();
  779. fitting.setRelationId(repair.getRepairId());
  780. fitting.setClosedFittingType(4);
  781. //查询寄回配件集合
  782. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  783. if (prodcueList != null && prodcueList.size() > 0) {
  784. repair.setClosedProdcues(prodcueList);
  785. }
  786. if (fittingList != null && fittingList.size() > 0) {
  787. repair.setClosedFittings(fittingList);
  788. }
  789. return repair;
  790. }
  791. }