CustomerServiceImpl.java 90 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721
  1. package com.iamberry.rst.service.cm;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.rst.core.cm.*;
  4. import com.iamberry.rst.core.order.*;
  5. import com.iamberry.rst.core.page.PagedResult;
  6. import com.iamberry.rst.faces.cm.CustomerCommonService;
  7. import com.iamberry.rst.faces.cm.CustomerService;
  8. import com.iamberry.rst.faces.cm.RelationOrderService;
  9. import com.iamberry.rst.faces.order.EfastOrderService;
  10. import com.iamberry.rst.service.address.mapper.AddressMapper;
  11. import com.iamberry.rst.service.cm.mapper.*;
  12. import com.iamberry.rst.service.product.mapper.ProductMapper;
  13. import com.iamberry.rst.util.CustomerCommonUtil;
  14. import com.iamberry.rst.util.PageUtil;
  15. import net.sf.json.JSONObject;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.util.*;
  22. @Service
  23. public class CustomerServiceImpl implements CustomerService {
  24. private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class);
  25. @Autowired
  26. private CustomerInfoMapper customerInfoMapper;
  27. @Autowired
  28. private RepairMapper repairMapper;
  29. @Autowired
  30. private BackGoodsMapper backGoodsMapper;
  31. @Autowired
  32. private NoreasonBackMapper noreasonBackMapper;
  33. @Autowired
  34. private ReissueMapper reissueMapper;
  35. @Autowired
  36. private RenewedMapper renewedMapper;
  37. @Autowired
  38. private ClosedFittingMapper closedFittingMapper;
  39. @Autowired
  40. private ClosedProdcueMapper closedProdcueMapper;
  41. @Autowired
  42. private SendProdcueMapper sendProdcueMapper;
  43. @Autowired
  44. private SendFittingMapper sendFittingMapper;
  45. @Autowired
  46. private SalesOrderMapper salesOrderMapper;
  47. @Autowired
  48. private CustomerService customerService;
  49. @Autowired
  50. private VisitMapper visitMapper; //回访
  51. @Autowired
  52. private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper; //仓储
  53. @Autowired
  54. private ComplaintDetectInfoMapper complaintDetectInfoMapper; //品检
  55. @Autowired
  56. private QuestionDescribeMapper questionDescribeMapper; //客诉问题
  57. @Autowired
  58. private AddressMapper addressMapper; //地址
  59. @Autowired
  60. private ProductMapper productMapper; //产品
  61. @Autowired
  62. private ComplaintSignclosedProductInfoMapper complaintSignclosedProductInfoMapper;
  63. @Autowired
  64. private FittingsInfoMapper fittingsInfoMapper;
  65. @Autowired
  66. private EfastOrderService efastOrderService;
  67. @Autowired
  68. private StoreInfoMapper storeInfoMapper;
  69. @Autowired
  70. private CustomerCommonService customerCommonService;
  71. @Autowired
  72. private RelationOrderService relationOrderService;
  73. @Override
  74. public CustomerInfo getCustomerInfo(Integer customerId) {
  75. return customerInfoMapper.getCustomerInfo(customerId);
  76. }
  77. @Override
  78. @Transactional
  79. public Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder){
  80. Integer isNeedSelectOrder = customerInfo.getIsNeedSelectOrder();
  81. List<SalesOrder> orderList = new ArrayList<>();
  82. //添加客诉基本信息
  83. Integer flag = 0;
  84. flag = customerInfoMapper.insert(customerInfo);
  85. if(flag < 1){
  86. throw new RuntimeException("添加客诉失败");
  87. }
  88. logger.info("-----------添加客诉-添加客诉基本信息---------------");
  89. QuestionDescribe questionDescribe = new QuestionDescribe();
  90. questionDescribe.setCustomerId(customerInfo.getCustomerId());
  91. questionDescribe.setDescribeTitle(customerInfo.getDescribeTitle()); //客诉问题标题
  92. questionDescribe.setDescribeContent(customerInfo.getDescribeContent()); //客诉问题描述
  93. questionDescribe.setDescribeHandleDesc(customerInfo.getDescribeHandleDesc()); //处理描述
  94. flag = questionDescribeMapper.insert(questionDescribe);
  95. if(flag < 1){
  96. throw new RuntimeException("添加客诉问题失败");
  97. }
  98. logger.info("-----------添加客诉-添加客诉问题---------------");
  99. if ("2".equals(customerInfo.getCustomerIsVisit())) {
  100. Visit visit = new Visit();
  101. visit.setCustomerId(customerInfo.getCustomerId());
  102. visit.setAdminId(customerInfo.getAdminId());
  103. visit.setDesignatedAdminId(customerInfo.getVisitAdminId());
  104. visit.setVisitName(customerInfo.getVisitName());
  105. visit.setVisitTel(customerInfo.getVisitTel());
  106. visit.setVisitDate(customerInfo.getVisitDate());
  107. visit.setVisitTimeSelect(customerInfo.getVisitTimeSelect());
  108. visit.setVisitStatus(1); //回访状态
  109. flag = visitMapper.addVisitInfo(visit);
  110. if(flag < 1){
  111. throw new RuntimeException("添加客诉回访信息失败");
  112. }
  113. logger.info("-----------添加客诉-添加客诉回访信息---------------");
  114. }
  115. if (2 == customerInfo.getCustomerCounselType() &&
  116. (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
  117. customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)
  118. ){
  119. if(isNeedSelectOrder == 1){
  120. SalesOrder so = new SalesOrder();
  121. if(salesOrder.getIds()!= null && salesOrder.getIds().indexOf("_") > -1){
  122. String[] salesIds = salesOrder.getIds().split("_");
  123. so.setSalesIds(salesIds);
  124. orderList = salesOrderMapper.listSalesOrder(so);
  125. logger.info("-----------添加客诉-查询订单--------------");
  126. if(orderList == null || orderList.size() < 1){
  127. logger.info("-----------添加客诉-订单为空-请重新添加订单 --------------");
  128. throw new RuntimeException("添加客诉-订单为空-请重新添加订单");
  129. }
  130. }
  131. }
  132. CustomerCommon customerCommon = customerInfo.getCustomerCommon();
  133. customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
  134. customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
  135. customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
  136. customerCommon.setRelationState(1); //状态 默认使用中
  137. customerCommon.setTransactionNumber(customerInfo.getTransactionNumber()); //外部交易号
  138. // TODO: 2018/3/27 是否转账邮费,默认为不需要转账 : 0
  139. customerCommon.setRelationIsTransfer(0); //是否已转账邮费
  140. customerCommon.setRelationBackPostage(0); //邮费默认为0
  141. customerCommon.setRelationBackName(customerCommon.getRelationSendName()); //姓名
  142. customerCommon.setRelationBackTel(customerCommon.getRelationSendTel()); //电话号码
  143. /* 初始化产品类型,名称,配件名称 */
  144. customerService.setName(customerCommon);
  145. logger.info("-----------添加客诉-初始化产品,配件信息--------------");
  146. ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo(); //品质检测
  147. ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
  148. Map<String,Object> map;
  149. boolean isReturn = false;
  150. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  151. case 3: //换新
  152. // customerService.chargebackEfastOrder(customerCommon,salesOrder,2); //原订单生成退单
  153. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //换新需要向Efast推送一条换新发货的订单
  154. // if(map.get("status") == 1){
  155. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  156. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  157. // }else{
  158. // throw new RuntimeException("换新创建Efast订单失败");
  159. // }
  160. //complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  161. //customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  162. //complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  163. //customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  164. break;
  165. case 4: //维修
  166. // customerService.chargebackEfastOrder(customerCommon,salesOrder,2); //原订单生成退单
  167. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //维修需要向Efast推送一条维修发货的订单
  168. // if(map.get("status") == 1){
  169. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  170. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  171. // }else{
  172. // throw new RuntimeException("维修创建Efast订单失败");
  173. // }
  174. //complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  175. //customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  176. //complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  177. //customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  178. break;
  179. case 5: //补发 不用创建仓储签收任务
  180. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //补发需要向Efast推送一条发货的订单
  181. // if(map.get("status") == 1){
  182. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  183. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  184. // }else{
  185. // throw new RuntimeException("补发创建Efast订单失败");
  186. // }
  187. break;
  188. case 6: //退货
  189. // customerService.chargebackEfastOrder(customerCommon,salesOrder,3); //原订单生成退单
  190. //complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  191. //customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  192. //complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  193. //customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  194. break;
  195. case 7: //无理由退货
  196. // customerService.chargebackEfastOrder(customerCommon,salesOrder,3); //原订单生成退单
  197. //complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  198. //customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  199. //complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  200. //customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  201. break;
  202. }
  203. logger.info("-----------添加客诉-创建仓储/品检成功--------------");
  204. customerCommon.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储id
  205. /*将公共的对象 转换换新/维修/退款等*/
  206. Object object = CustomerCommonUtil.getRelation(customerInfo.getCustomerIsSolve(), customerCommon);
  207. Integer relationId = 0;
  208. Integer orderStatus = 1;
  209. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  210. case 3: //换新
  211. Renewed renewed = (Renewed) object;
  212. flag = renewedMapper.insert(renewed);
  213. relationId = renewed.getRenewedId();
  214. orderStatus = 2;
  215. break;
  216. case 4: //维修
  217. Repair repair = (Repair) object;
  218. flag = repairMapper.insert(repair);
  219. relationId = repair.getRepairId();
  220. orderStatus = 4;
  221. break;
  222. case 5: //补发
  223. Reissue reissue = (Reissue) object;
  224. flag = reissueMapper.insert(reissue);
  225. relationId = reissue.getReissueId();
  226. orderStatus = 5;
  227. break;
  228. case 6: //退货
  229. BackGoods backGoods = (BackGoods) object;
  230. flag = backGoodsMapper.insert(backGoods);
  231. relationId = backGoods.getBackGoodsId();
  232. orderStatus = 3;
  233. break;
  234. case 7: //无理由退货
  235. NoreasonBack noreasonBack = (NoreasonBack) object;
  236. flag = noreasonBackMapper.insert(noreasonBack);
  237. relationId = noreasonBack.getNoreasonBackId();
  238. orderStatus = 3;
  239. break;
  240. }
  241. if (flag < 1) {
  242. throw new RuntimeException("添加客诉处理结果失败");
  243. }
  244. logger.info("-----------添加客诉-添加换新/维修/补发/退货/无理由退货信息成功--------------");
  245. /*添加客诉-添加处理与订单关联表*/
  246. List<RelationOrder> relationOrderList = new ArrayList<>();
  247. for (SalesOrder sor : orderList) {
  248. RelationOrder ro = new RelationOrder();
  249. ro.setRelationType(customerInfo.getCustomerIsSolve());
  250. ro.setRelationId(relationId);
  251. ro.setSalesId(sor.getSalesId());
  252. relationOrderList.add(ro);
  253. }
  254. if(relationOrderList != null && relationOrderList.size() > 0){
  255. flag = relationOrderService.saveList(relationOrderList);
  256. if(flag < 1){
  257. throw new RuntimeException("添加客诉,关联订单失败");
  258. }
  259. }
  260. for (SalesOrder sor : orderList) {
  261. SalesOrder newOrder = new SalesOrder(); //salesOrderStatus
  262. newOrder.setSalesId(sor.getSalesId());
  263. newOrder.setSalesOrderStatus(orderStatus);
  264. flag = salesOrderMapper.updateSalesOrder(newOrder);
  265. if(flag < 1){
  266. throw new RuntimeException("添加客诉,修改订单失败");
  267. }
  268. }
  269. logger.info("-----------添加客诉-添加处理与订单关联表--------------");
  270. customerCommon.setRelationId(relationId);
  271. CustomerCommonUtil.setProduceOrFitting(customerInfo.getCustomerIsSolve(),customerCommon);
  272. if(customerCommon.getClosedFittings()!=null && customerCommon.getClosedFittings().size() > 0){
  273. closedFittingMapper.insert(customerCommon.getClosedFittings());
  274. }
  275. if(customerCommon.getClosedProdcues() != null && customerCommon.getClosedProdcues().size()>0){
  276. closedProdcueMapper.insert(customerCommon.getClosedProdcues());
  277. }
  278. if(customerCommon.getSendProdcues() != null && customerCommon.getSendProdcues().size() > 0){
  279. sendProdcueMapper.insert(customerCommon.getSendProdcues());
  280. }
  281. if(customerCommon.getSendFittings() != null && customerCommon.getSendFittings().size() > 0){
  282. sendFittingMapper.insert(customerCommon.getSendFittings());
  283. }
  284. logger.info("-----------添加客诉-寄回寄出产品配件成功--------------");
  285. }
  286. return flag;
  287. }
  288. @Override
  289. @Transactional
  290. public Integer updateCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder){
  291. Integer isNeedSelectOrder = customerInfo.getIsNeedSelectOrder();
  292. //查询旧的客诉类型信息
  293. CustomerCommon cc = customerInfo.getCustomerCommon();
  294. cc.setCustomerId(customerInfo.getCustomerId());
  295. List<CustomerCommon> ccList = customerCommonService.listCustomerCommon(cc);
  296. /*if(ccList.size() > 0){
  297. cc = ccList.get(0);
  298. }*/
  299. //删除旧的售后数据
  300. customerService.deleteCustomerAfterSales(customerInfo);
  301. List<SalesOrder> orderList = new ArrayList<>();
  302. //修改客诉基本信息
  303. Integer flag = 0;
  304. flag = customerInfoMapper.updateCustomerInfo(customerInfo);
  305. if(flag < 1){
  306. throw new RuntimeException("修改客诉失败");
  307. }
  308. logger.info("-----------修改客诉-修改客诉基本信息---------------");
  309. QuestionDescribe questionDescribe = new QuestionDescribe();
  310. // questionDescribe.setCustomerId(customerInfo.getCustomerId());
  311. questionDescribe.setDescribeId(customerInfo.getDescribeId());//客诉问题主键
  312. questionDescribe.setDescribeTitle(customerInfo.getDescribeTitle()); //客诉问题标题
  313. questionDescribe.setDescribeContent(customerInfo.getDescribeContent()); //客诉问题描述
  314. questionDescribe.setDescribeHandleDesc(customerInfo.getDescribeHandleDesc()); //处理描述
  315. questionDescribeMapper.updateByPrimaryKeySelective(questionDescribe);
  316. logger.info("-----------修改客诉-修改客诉问题---------------");
  317. if ("2".equals(customerInfo.getCustomerIsVisit())) {
  318. Visit visit = new Visit();
  319. visit.setCustomerId(customerInfo.getCustomerId());
  320. visit.setAdminId(customerInfo.getAdminId());
  321. visit.setDesignatedAdminId(customerInfo.getVisitAdminId());
  322. visit.setVisitName(customerInfo.getVisitName());
  323. visit.setVisitTel(customerInfo.getVisitTel());
  324. visit.setVisitDate(customerInfo.getVisitDate());
  325. visit.setVisitTimeSelect(customerInfo.getVisitTimeSelect());
  326. visit.setVisitStatus(1); //回访状态
  327. flag = visitMapper.addVisitInfo(visit);
  328. if(flag < 1){
  329. throw new RuntimeException("修改客诉回访失败");
  330. }
  331. logger.info("-----------修改客诉-修改客诉回访信息---------------");
  332. }
  333. if (2 == customerInfo.getCustomerCounselType() &&
  334. (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
  335. customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)
  336. ){
  337. if(isNeedSelectOrder == 1){
  338. SalesOrder so = new SalesOrder();
  339. if(salesOrder.getIds()!= null && salesOrder.getIds().indexOf("_") > -1){
  340. String[] salesIds = salesOrder.getIds().split("_");
  341. so.setSalesIds(salesIds);
  342. orderList = salesOrderMapper.listSalesOrder(so);
  343. logger.info("-----------修改客诉-查询订单--------------");
  344. }
  345. }
  346. CustomerCommon customerCommon = customerInfo.getCustomerCommon();
  347. if(ccList.size() > 0){
  348. cc = ccList.get(0);
  349. customerCommon.setRelationBackStatus(cc.getRelationBackStatus() == null ? 1:cc.getRelationBackStatus()); //寄回状态 1:未寄回
  350. customerCommon.setRelationSendStatus(cc.getRelationSendStatus() == null ? 1:cc.getRelationSendStatus()); //寄送状态 1:未寄送
  351. customerCommon.setRelationIsTransfer(cc.getRelationIsTransfer() == null ? 0:cc.getRelationIsTransfer()); //是否已转账邮费
  352. customerCommon.setRelationBackPostage(cc.getRelationBackPostage() == null ? 0:cc.getRelationBackPostage()); //邮费
  353. //旧的物流公司物流单号支付宝信息 邮费状态 efast订单号
  354. customerCommon.setRelationBackLogisticsCompany(cc.getRelationBackLogisticsCompany());//寄回物流公司
  355. customerCommon.setRelationBackLogisticsNo(cc.getRelationBackLogisticsNo());//寄回物流单号
  356. customerCommon.setRelationAlipay(cc.getRelationAlipay());//转账账户
  357. customerCommon.setRelationAlipayName(cc.getRelationAlipayName());//转账账户 (账户姓名)
  358. customerCommon.setRelationDesc(cc.getRelationDesc());//备注
  359. customerCommon.setRelationSendLogisticsCompany(cc.getRelationSendLogisticsCompany());//寄送物流公司
  360. customerCommon.setRelationSendLogisticsNo(cc.getRelationSendLogisticsNo());//寄送物流单号
  361. customerCommon.setSalesOrderId(cc.getSalesOrderId());//efast订单号
  362. }else{
  363. customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
  364. customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
  365. customerCommon.setRelationIsTransfer(0); //是否已转账邮费 0:不需要
  366. customerCommon.setRelationBackPostage(0); //邮费默认为0
  367. }
  368. customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
  369. customerCommon.setRelationState(1); //状态 默认使用中 //新
  370. if(isNeedSelectOrder == 1){
  371. customerCommon.setOrderId(salesOrder.getSalesId()); //订单id //新
  372. }
  373. customerCommon.setTransactionNumber(customerInfo.getTransactionNumber()); //外部交易号
  374. customerCommon.setIsNeedSelectOrder(isNeedSelectOrder); //是否需要添加订单
  375. customerCommon.setRelationBackName(customerCommon.getRelationSendName()); //姓名//新
  376. customerCommon.setRelationBackTel(customerCommon.getRelationSendTel()); //电话号码//新
  377. /* 初始化产品类型,名称,配件名称 */
  378. customerService.setName(customerCommon);
  379. logger.info("-----------修改客诉-初始化产品,配件信息--------------");
  380. ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo(); //品质检测
  381. ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
  382. Map<String,Object> map;
  383. boolean isReturn = false;
  384. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  385. case 3: //换新
  386. // customerService.chargebackEfastOrder(customerCommon,salesOrder,2); //原订单生成退单
  387. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //换新需要向Efast推送一条换新发货的订单
  388. // if(map.get("status") == 1){
  389. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  390. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  391. // }else{
  392. // throw new RuntimeException("换新创建Efast订单失败");
  393. // }
  394. // complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  395. // customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  396. // complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  397. // customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  398. break;
  399. case 4: //维修
  400. // customerService.chargebackEfastOrder(customerCommon,salesOrder,2); //原订单生成退单
  401. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //维修需要向Efast推送一条维修发货的订单
  402. // if(map.get("status") == 1){
  403. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  404. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  405. // }else{
  406. // throw new RuntimeException("维修创建Efast订单失败");
  407. // }
  408. // complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  409. // customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  410. // complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  411. // customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  412. break;
  413. case 5: //补发 不用创建仓储签收任务
  414. // map = customerService.sendEfastOrder(customerCommon,salesOrder); //补发需要向Efast推送一条发货的订单
  415. // if(map.get("status") == 1){
  416. // customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId"))); //存放Efast订单编号
  417. // complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId"))); //仓储签收表添加 发货的Efast订单id
  418. // }else{
  419. // throw new RuntimeException("补发创建Efast订单失败");
  420. // }
  421. break;
  422. case 6: //退货
  423. // customerService.chargebackEfastOrder(customerCommon,salesOrder,3); //原订单生成退单
  424. // complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  425. // customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  426. // complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  427. // customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  428. break;
  429. case 7: //无理由退货
  430. // customerService.chargebackEfastOrder(customerCommon,salesOrder,3); //原订单生成退单
  431. // complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId()); //原有订单的Efast的订单编号
  432. // customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
  433. // complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
  434. // customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon); //创建品检
  435. break;
  436. }
  437. logger.info("-----------修改客诉-创建仓储/品检成功--------------");
  438. customerCommon.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储id
  439. Object object = CustomerCommonUtil.getRelation(customerInfo.getCustomerIsSolve(), customerCommon);
  440. Integer relationId = 0;
  441. Integer orderStatus = 1;
  442. switch (customerInfo.getCustomerIsSolve()) { //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  443. case 3: //换新
  444. Renewed renewed = (Renewed) object;
  445. flag = renewedMapper.insert(renewed);
  446. relationId = renewed.getRenewedId();
  447. orderStatus = 2;
  448. break;
  449. case 4: //维修
  450. Repair repair = (Repair) object;
  451. flag = repairMapper.insert(repair);
  452. relationId = repair.getRepairId();
  453. orderStatus = 4;
  454. break;
  455. case 5: //补发
  456. Reissue reissue = (Reissue) object;
  457. flag = reissueMapper.insert(reissue);
  458. relationId = reissue.getReissueId();
  459. orderStatus = 5;
  460. break;
  461. case 6: //退货
  462. BackGoods backGoods = (BackGoods) object;
  463. flag = backGoodsMapper.insert(backGoods);
  464. relationId = backGoods.getBackGoodsId();
  465. orderStatus = 3;
  466. break;
  467. case 7: //无理由退货
  468. NoreasonBack noreasonBack = (NoreasonBack) object;
  469. flag = noreasonBackMapper.insert(noreasonBack);
  470. relationId = noreasonBack.getNoreasonBackId();
  471. orderStatus = 3;
  472. break;
  473. }
  474. if (flag < 1) {
  475. throw new RuntimeException("添加客诉处理结果失败");
  476. }
  477. logger.info("-----------修改客诉-添加换新/维修/补发/退货/无理由退货信息成功--------------");
  478. /*添加客诉-添加处理与订单关联表*/
  479. List<RelationOrder> relationOrderList = new ArrayList<>();
  480. for (SalesOrder sor : orderList) {
  481. RelationOrder ro = new RelationOrder();
  482. ro.setRelationType(customerInfo.getCustomerIsSolve());
  483. ro.setRelationId(relationId);
  484. ro.setSalesId(sor.getSalesId());
  485. relationOrderList.add(ro);
  486. }
  487. if(relationOrderList != null && relationOrderList.size() > 0){
  488. flag = relationOrderService.saveList(relationOrderList);
  489. if(flag < 1){
  490. throw new RuntimeException("添加客诉,关联订单失败");
  491. }
  492. }
  493. for (SalesOrder sor : orderList) {
  494. SalesOrder newOrder = new SalesOrder(); //salesOrderStatus
  495. newOrder.setSalesId(sor.getSalesId());
  496. newOrder.setSalesOrderStatus(orderStatus);
  497. flag = salesOrderMapper.updateSalesOrder(newOrder);
  498. if(flag < 1){
  499. throw new RuntimeException("添加客诉,修改订单状态失败");
  500. }
  501. }
  502. logger.info("-----------添加客诉-添加处理与订单关联表--------------");
  503. customerCommon.setRelationId(relationId);
  504. if(customerCommon.getIsNeedSelectOrder() == 1){
  505. CustomerCommonUtil.setProduceOrFitting(customerInfo.getCustomerIsSolve(),customerCommon);
  506. if(customerCommon.getClosedFittings()!=null && customerCommon.getClosedFittings().size() > 0){
  507. closedFittingMapper.insert(customerCommon.getClosedFittings());
  508. }
  509. if(customerCommon.getClosedProdcues() != null && customerCommon.getClosedProdcues().size() > 0){
  510. closedProdcueMapper.insert(customerCommon.getClosedProdcues());
  511. }
  512. if(customerCommon.getSendProdcues() != null && customerCommon.getSendProdcues().size() > 0){
  513. sendProdcueMapper.insert(customerCommon.getSendProdcues());
  514. }
  515. if(customerCommon.getSendFittings() != null && customerCommon.getSendFittings().size() > 0){
  516. sendFittingMapper.insert(customerCommon.getSendFittings());
  517. }
  518. logger.info("-----------添加客诉-寄回寄出产品配件成功--------------");
  519. }
  520. }
  521. return flag;
  522. }
  523. /**
  524. * 删除旧的售后数据
  525. * @param customer
  526. */
  527. @Override
  528. @Transactional
  529. public void deleteCustomerAfterSales(CustomerInfo customer){
  530. CustomerInfo customerInfo = customerInfoMapper.getCustomerInfo(customer.getCustomerId());
  531. //删除回访信息
  532. if ("2".equals(customerInfo.getCustomerIsVisit())){
  533. visitMapper.deleteByPrimaryKey(customer.getCustomerId());
  534. }
  535. //查询旧客诉类型,判断是否修改了客诉类型
  536. Integer oldIsSolve = customerInfo.getCustomerIsSolve();// //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  537. ClosedProdcue closedrecord = new ClosedProdcue();
  538. ClosedFitting closedRecord = new ClosedFitting();
  539. SendProdcue sendProdcue = new SendProdcue();
  540. SendFitting sendFitting = new SendFitting();
  541. CustomerCommon customerCommon = customerInfo.getCustomerCommon();
  542. SalesOrder salesOrder = new SalesOrder();
  543. if(oldIsSolve > 2){
  544. customerCommon = customerInfo.getCustomerCommon();
  545. customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
  546. customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
  547. customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
  548. customerCommon.setRelationState(1); //状态 默认使用中
  549. customerCommon.setTransactionNumber(customerInfo.getTransactionNumber()); //外部交易号
  550. customerCommon.setRelationIsTransfer(0); //是否已转账邮费 0:不需要
  551. customerCommon.setRelationBackPostage(0); //邮费默认为0
  552. customerCommon.setRelationBackName(customerCommon.getRelationSendName()); //姓名
  553. customerCommon.setRelationBackTel(customerCommon.getRelationSendTel()); //电话号码
  554. /* 初始化产品类型,名称,配件名称 */
  555. /*customerService.setName(customerCommon);*/
  556. }
  557. Integer relationId = 0;
  558. switch (oldIsSolve){
  559. case 3:
  560. //删除换新数据
  561. Renewed renewed = new Renewed();
  562. renewed.setCustomerId(customer.getCustomerId());
  563. //查询换新数据id
  564. renewed = renewedMapper.getRenewedInfo(renewed);
  565. relationId = renewed.getRenewedId();
  566. if(customer.getCustomerIsSolve() < 3){ //从维修换货补发修改为已解决或未解决时,原订单生成退单
  567. //salesOrder = salesOrderMapper.getSalesOrderById(renewed.getOrderId()); //salesOrder.getSalesId() 全场最佳,就你戏多
  568. //customerCommon.setOrderId(renewed.getOrderId()); //订单id
  569. SendProdcue record = new SendProdcue();
  570. record.setRelationId(renewed.getRenewedId());
  571. customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
  572. customerService.setName(customerCommon);
  573. //customerService.chargebackEfastOrder(customerCommon,salesOrder,8,2);
  574. }
  575. //删除寄出寄回产品
  576. closedRecord.setRelationId(renewed.getRenewedId());
  577. closedFittingMapper.deleteByPrimaryKey(closedRecord);
  578. closedrecord.setRelationId(renewed.getRenewedId());
  579. closedProdcueMapper.deleteByPrimaryKey(closedrecord);
  580. sendProdcue.setRelationId(renewed.getRenewedId());
  581. sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
  582. sendFitting.setRelationId(renewed.getRenewedId());
  583. sendFittingMapper.deleteByPrimaryKey(sendFitting);
  584. renewedMapper.deleteByPrimaryKey(renewed);
  585. break;
  586. case 4:
  587. //删除维修数据
  588. Repair repair = new Repair();
  589. repair.setCustomerId(customer.getCustomerId());
  590. //查询维修数据id
  591. repair = repairMapper.getRepairInfo(repair);
  592. relationId = repair.getRepairId();
  593. if(customer.getCustomerIsSolve() < 3) { //从维修换货补发修改为已解决或未解决时,原订单生成退单
  594. //salesOrder = salesOrderMapper.getSalesOrderById(repair.getOrderId());
  595. //customerCommon.setOrderId(repair.getOrderId()); //订单id
  596. SendProdcue record = new SendProdcue();
  597. record.setRelationId(repair.getRepairId());
  598. customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
  599. customerService.setName(customerCommon);
  600. //customerService.chargebackEfastOrder(customerCommon, salesOrder, 8,2); //从维修换货补发修改为已解决或未解决时,原订单生成退单
  601. }
  602. //删除寄出寄回产品
  603. closedRecord.setRelationId(repair.getRepairId());
  604. closedFittingMapper.deleteByPrimaryKey(closedRecord);
  605. closedrecord.setRelationId(repair.getRepairId());
  606. closedProdcueMapper.deleteByPrimaryKey(closedrecord);
  607. sendProdcue.setRelationId(repair.getRepairId());
  608. sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
  609. sendFitting.setRelationId(repair.getRepairId());
  610. sendFittingMapper.deleteByPrimaryKey(sendFitting);
  611. repairMapper.deleteByPrimaryKey(repair);
  612. break;
  613. case 5:
  614. //删除补发数据
  615. Reissue reissue = new Reissue();
  616. reissue.setCustomerId(customer.getCustomerId());
  617. //查询补发数据id
  618. reissue = reissueMapper.getReissue(reissue);
  619. relationId = reissue.getReissueId();
  620. if(customer.getCustomerIsSolve() < 3) { //从维修换货补发修改为已解决或未解决时,原订单生成退单
  621. //salesOrder = salesOrderMapper.getSalesOrderById(reissue.getOrderId());
  622. //customerCommon.setOrderId(reissue.getOrderId()); //订单id
  623. SendProdcue record = new SendProdcue();
  624. record.setRelationId(reissue.getReissueId());
  625. customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
  626. customerService.setName(customerCommon);
  627. //customerService.chargebackEfastOrder(customerCommon, salesOrder, 8,2); //从维修换货补发修改为已解决或未解决时,原订单生成退单
  628. }
  629. //删除寄出产品
  630. sendProdcue.setRelationId(reissue.getReissueId());
  631. sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
  632. sendFitting.setRelationId(reissue.getReissueId());
  633. sendFittingMapper.deleteByPrimaryKey(sendFitting);
  634. reissueMapper.deleteByPrimaryKey(reissue);
  635. break;
  636. case 6:
  637. //删除退货数据
  638. BackGoods backGoods = new BackGoods();
  639. backGoods.setCustomerId(customer.getCustomerId());
  640. //查询维修数据id
  641. backGoods = backGoodsMapper.getBackGoods(backGoods);
  642. relationId = backGoods.getBackGoodsId();
  643. //删除寄出寄回产品
  644. closedRecord.setRelationId(backGoods.getBackGoodsId());
  645. closedFittingMapper.deleteByPrimaryKey(closedRecord);
  646. closedrecord.setRelationId(backGoods.getBackGoodsId());
  647. closedProdcueMapper.deleteByPrimaryKey(closedrecord);
  648. backGoodsMapper.deleteByPrimaryKey(backGoods);
  649. break;
  650. case 7:
  651. //删除无理由退货数据
  652. NoreasonBack noreasonBack = new NoreasonBack();
  653. noreasonBack.setCustomerId(customer.getCustomerId());
  654. //查询维修数据id
  655. noreasonBack = noreasonBackMapper.getNoreasonBack(noreasonBack);
  656. relationId = noreasonBack.getNoreasonBackId();
  657. //删除寄出寄回产品
  658. closedRecord.setRelationId(noreasonBack.getNoreasonBackId());
  659. closedFittingMapper.deleteByPrimaryKey(closedRecord);
  660. closedrecord.setRelationId(noreasonBack.getNoreasonBackId());
  661. closedProdcueMapper.deleteByPrimaryKey(closedrecord);
  662. noreasonBackMapper.deleteByPrimaryKey(noreasonBack);
  663. break;
  664. }
  665. /*恢复订单状态*/
  666. RelationOrder relationOrder = new RelationOrder();
  667. relationOrder.setRelationType(oldIsSolve);
  668. relationOrder.setRelationId(relationId);
  669. List<RelationOrder> relationOrderList = relationOrderService.getRelationOrderList(relationOrder);
  670. for (int k=0; k<relationOrderList.size();k++){
  671. SalesOrder newOrder = new SalesOrder(); //salesOrderStatus
  672. newOrder.setSalesId(relationOrderList.get(k).getSalesId());
  673. newOrder.setSalesOrderStatus(1); //恢复订单到之前的状态
  674. Integer flag = salesOrderMapper.updateSalesOrder(newOrder);
  675. }
  676. /* 删除掉订单与处理的关联表 */
  677. relationOrderService.deleteByRelationId(relationId);
  678. }
  679. @Override
  680. public Integer selectNotSolvedCustomer(CustomerInfo customerInfo) {
  681. List<CustomerInfo> listCustomer = customerInfoMapper.listCustomer(customerInfo);
  682. return listCustomer.size();
  683. }
  684. @Override
  685. public List<CustomerInfo> listOnCustomer(CustomerInfo customerInfo) {
  686. List<CustomerInfo> customerList = customerInfoMapper.listOnCustomer(customerInfo);
  687. //查询售后维修集合
  688. Repair repairInfo = new Repair();
  689. repairInfo.setRepairState(1);
  690. List<Repair> repairList = repairMapper.listRepair(repairInfo);
  691. //查询售后退货集合
  692. BackGoods backGoodsInfo = new BackGoods();
  693. backGoodsInfo.setBackGoodsState(1);
  694. List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(backGoodsInfo);
  695. //查询售后无理由退货集合
  696. NoreasonBack noreasonBackInfo = new NoreasonBack();
  697. noreasonBackInfo.setNoreasonBackState(1);
  698. List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(noreasonBackInfo);
  699. //查询售后补发集合
  700. Reissue reissueInfo = new Reissue();
  701. reissueInfo.setReissueState(1);
  702. List<Reissue> reissueList = reissueMapper.listReissue(reissueInfo);
  703. //查询售后换新集合
  704. Renewed renewedInfo = new Renewed();
  705. renewedInfo.setRenewedState(1);
  706. List<Renewed> renewedList = renewedMapper.listRenewed(renewedInfo);
  707. if (customerList != null && customerList.size() > 0) {
  708. for (CustomerInfo customer : customerList) {
  709. switch (customer.getCustomerIsSolve().intValue()) {
  710. case 3: //换新
  711. for (Renewed renewed : renewedList) {
  712. if (renewed.getCustomerId().intValue() == customer.getCustomerId()) {
  713. customer.setBackStatus(renewed.getRenewedBackStatus());
  714. customer.setSendStatus(renewed.getRenewedSendStatus());
  715. customer.setSalesTime(renewed.getSalesPayTime());
  716. customer.setSendLogisticsNo(renewed.getRenewedSendLogisticsNo());
  717. customer.setSendLogisticsCompany(renewed.getRenewedSendLogisticsCompany());
  718. customer.setBackLogisticsNo(renewed.getRenewedBackLogisticsNo());
  719. customer.setBackLogisticsCompany(renewed.getRenewedBackLogisticsCompany());
  720. break;
  721. }
  722. }
  723. break;
  724. case 4: //维修
  725. for (Repair repair : repairList) {
  726. if (repair.getCustomerId().intValue() == customer.getCustomerId()) {
  727. customer.setBackStatus(repair.getRepairBackStatus());
  728. customer.setSendStatus(repair.getRepairSendStatus());
  729. customer.setSalesTime(repair.getSalesPayTime());
  730. customer.setSendLogisticsNo(repair.getRepairSendLogisticsNo());
  731. customer.setSendLogisticsCompany(repair.getRepairSendLogisticsCompany());
  732. customer.setBackLogisticsNo(repair.getRepairBackLogisticsNo());
  733. customer.setBackLogisticsCompany(repair.getRepairBackLogisticsCompany());
  734. break;
  735. }
  736. }
  737. break;
  738. case 5: //补发
  739. for (Reissue reissue : reissueList) {
  740. if (reissue.getCustomerId().intValue() == customer.getCustomerId()) {
  741. customer.setSendStatus(reissue.getReissueSendStatus());
  742. customer.setSalesTime(reissue.getSalesPayTime());
  743. customer.setBackLogisticsNo(reissue.getReissueSendLogisticsNo());
  744. customer.setBackLogisticsCompany(reissue.getReissueSendLogisticsCompany());
  745. break;
  746. }
  747. }
  748. break;
  749. case 6: //退货
  750. for (BackGoods backGoods : backGoodsList) {
  751. if (backGoods.getCustomerId().intValue() == customer.getCustomerId()) {
  752. customer.setBackStatus(backGoods.getBackGoodsBackStatus());
  753. customer.setSalesTime(backGoods.getSalesPayTime());
  754. customer.setSendLogisticsNo(backGoods.getBackGoodsBackLogisticsNo());
  755. break;
  756. }
  757. }
  758. break;
  759. case 7: //无理由退货
  760. for (NoreasonBack noreasonBack : noreasonBackList) {
  761. if (noreasonBack.getCustomerId().intValue() == customer.getCustomerId()) {
  762. customer.setBackStatus(noreasonBack.getNoreasonBackBackStatus());
  763. customer.setSalesTime(noreasonBack.getSalesPayTime());
  764. customer.setSendLogisticsNo(noreasonBack.getNoreasonBackBackLogisticsNo());
  765. customer.setSendLogisticsCompany(noreasonBack.getNoreasonBackBackLogisticsCompany());
  766. break;
  767. }
  768. }
  769. break;
  770. }
  771. }
  772. }
  773. return customerList;
  774. }
  775. /**
  776. * 产品配件初始化
  777. * @param cc
  778. */
  779. @Transactional
  780. public void setName(CustomerCommon cc){
  781. for (int i=0;i<cc.getSendProdcues().size();i++) {
  782. ProductColor productColor = productMapper.getProductBySku(cc.getSendProdcues().get(i).getColorBar());
  783. cc.getSendProdcues().get(i).setProductColor(productColor);
  784. cc.getSendProdcues().get(i).setColorId(productColor.getColorId());
  785. Product product = productMapper.getProduce(productColor.getColorProductId());
  786. cc.getSendProdcues().get(i).setProductId(product.getProductId());
  787. cc.getSendProdcues().get(i).setSendProduceName(product.getProductName());
  788. cc.getSendProdcues().get(i).setProductType(product.getProductType());
  789. cc.getSendProdcues().get(i).setProductNumber(product.getProductNumber());
  790. }
  791. for (int i=0;i<cc.getSendFittings().size();i++) {
  792. FittingsInfo fittingsInfo = productMapper.getFittingsBySku( cc.getSendFittings().get(i).getColorBar());
  793. cc.getSendFittings().get(i).setFittingsId(fittingsInfo.getFittingsId());
  794. cc.getSendFittings().get(i).setProductId(fittingsInfo.getFittingsId());
  795. cc.getSendFittings().get(i).setSendFittingsName(fittingsInfo.getFittingsName());
  796. Product product = productMapper.getProduce(fittingsInfo.getProductId());
  797. cc.getSendFittings().get(i).setSendFittingsName(product.getProductName());
  798. }
  799. for (int i=0;i<cc.getClosedProdcues().size();i++) {
  800. ProductColor productColor = productMapper.getProductBySku(cc.getClosedProdcues().get(i).getColorBar());
  801. cc.getClosedProdcues().get(i).setProductColor(productColor);
  802. cc.getClosedProdcues().get(i).setColorId(productColor.getColorId());
  803. Product product = productMapper.getProduce(productColor.getColorProductId());
  804. cc.getClosedProdcues().get(i).setProductId(product.getProductId());
  805. cc.getClosedProdcues().get(i).setClosedProductName(product.getProductName());
  806. cc.getClosedProdcues().get(i).setProductType(product.getProductType());
  807. cc.getClosedProdcues().get(i).setProductNumber(product.getProductNumber());
  808. }
  809. for (int i=0;i<cc.getClosedFittings().size();i++) {
  810. FittingsInfo fittingsInfo = productMapper.getFittingsBySku(cc.getClosedFittings().get(i).getColorBar());
  811. cc.getClosedFittings().get(i).setFittingsId(fittingsInfo.getFittingsId());
  812. cc.getClosedFittings().get(i).setProductId(fittingsInfo.getProductId());
  813. cc.getClosedFittings().get(i).setClosedFittingsName(fittingsInfo.getFittingsName());
  814. Product product = productMapper.getProduce(fittingsInfo.getProductId());
  815. cc.getClosedFittings().get(i).setClosedProductName(product.getProductName());
  816. }
  817. }
  818. /**
  819. * 添加品检
  820. * @param complaintDetectInfo
  821. * @param customerCommon
  822. * @return
  823. */
  824. @Transactional
  825. public void saveComplaintDetectInfo(ComplaintDetectInfo complaintDetectInfo,CustomerCommon customerCommon){
  826. if(customerCommon.getIsNeedSelectOrder() == 2){
  827. return;
  828. }
  829. Integer flag = 0;
  830. List<ComplaintDetectInfo> complaintDetectInfoList = new ArrayList<ComplaintDetectInfo>();
  831. for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
  832. ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
  833. for(int j=0; j<closedProdcue.getClosedProdcueNumber();j++){
  834. ComplaintDetectInfo cd = new ComplaintDetectInfo();
  835. cd.setSignclosedId(complaintDetectInfo.getSignclosedId());
  836. cd.setCustomerId(customerCommon.getCustomerId()); //添加客诉
  837. cd.setDetectState(1); //状态 1待仓库转入
  838. cd.setDetectRevolutionProduced(1); //是否转入生产部门 1待转入
  839. cd.setDetectIsMaintenance(1); //是否需要维修,1 需要 2不需要
  840. cd.setProductId(closedProdcue.getProductId());
  841. cd.setDetectProductType(closedProdcue.getProductType());
  842. if(closedProdcue.getProductNumber() == null || "".equals(closedProdcue.getProductNumber())){
  843. cd.setDetectProductNumber("0");
  844. }else{
  845. cd.setDetectProductNumber(closedProdcue.getProductNumber());
  846. }
  847. complaintDetectInfoList.add(cd);
  848. }
  849. }
  850. if(complaintDetectInfoList.size() > 0){
  851. flag = complaintDetectInfoMapper.insertList(complaintDetectInfoList);
  852. }
  853. if(flag < 1){
  854. throw new RuntimeException("添加品检失败");
  855. }
  856. }
  857. /**
  858. * 添加仓储
  859. * @param customerCommon
  860. * @return
  861. */
  862. @Transactional
  863. public void saveComplaintSignclosedInfo(ComplaintSignclosedInfo complaintSignclosedInfo,CustomerCommon customerCommon){
  864. if(customerCommon.getIsNeedSelectOrder() == 2){
  865. return;
  866. }
  867. Integer flag;
  868. complaintSignclosedInfo.setSignclosedType(1); //客诉寄回
  869. complaintSignclosedInfo.setSignclosedIsQuality(1); //是否平品检 1:需要品检
  870. complaintSignclosedInfo.setSignclosedIsInto(2); //是否已转入品检 2:未转入品检
  871. complaintSignclosedInfo.setSignclosedState(2); //处理状态 2:未签收
  872. complaintSignclosedInfo.setSignclosedObjectsState(3); //物件状态 3:暂未签收
  873. complaintSignclosedInfo.setSignclosedCustomerId(customerCommon.getCustomerId()); //客诉id
  874. complaintSignclosedInfo.setSignclosedIsFittings(2);
  875. complaintSignclosedInfo.setSignclosedSendName(customerCommon.getRelationBackName()); //签收姓名
  876. complaintSignclosedInfo.setSignclosedSendTel(customerCommon.getRelationBackTel()); //签收手机
  877. complaintSignclosedInfo.setSignclosedAddrProvinces(customerCommon.getProvinceNumber()); //省
  878. complaintSignclosedInfo.setSignclosedAddrCity(customerCommon.getCityNumber()); //市
  879. flag = complaintSignclosedInfoMapper.insert(complaintSignclosedInfo);
  880. if(flag < 1){
  881. throw new RuntimeException("添加签收失败");
  882. }
  883. //添加代签收表
  884. List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfoArrayList = new ArrayList<>();
  885. for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
  886. ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
  887. for(int k=0;k<closedProdcue.getClosedProdcueNumber();k++){
  888. AwaitingSignclosedProductInfo awaitingSignclosedProductInfo = new AwaitingSignclosedProductInfo();
  889. awaitingSignclosedProductInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //仓储id
  890. awaitingSignclosedProductInfo.setSignclosedProductType(1); //类型为产品
  891. awaitingSignclosedProductInfo.setProductNum(1);
  892. awaitingSignclosedProductInfo.setSignclosedProductId(closedProdcue.getProductId()); //产品id
  893. awaitingSignclosedProductInfo.setSignclosedProductColor(closedProdcue.getColorId()); //颜色id
  894. awaitingSignclosedProductInfo.setProductName(closedProdcue.getClosedProductName()); //产品名称
  895. awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
  896. }
  897. }
  898. for(int i=0 ;i< customerCommon.getClosedFittings().size();i++){
  899. ClosedFitting closedFitting = customerCommon.getClosedFittings().get(i);
  900. for(int k=0;k<closedFitting.getClosedFittingNumber();k++){
  901. AwaitingSignclosedProductInfo awaitingSignclosedProductInfo = new AwaitingSignclosedProductInfo();
  902. awaitingSignclosedProductInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //仓储id
  903. awaitingSignclosedProductInfo.setSignclosedProductType(2); //类型为配件
  904. awaitingSignclosedProductInfo.setProductNum(1);
  905. awaitingSignclosedProductInfo.setSignclosedProductId(closedFitting.getFittingsId()); //配件id
  906. awaitingSignclosedProductInfo.setSignclosedProductColor(null);
  907. awaitingSignclosedProductInfo.setProductName(closedFitting.getClosedFittingsName()); //配件名称
  908. awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
  909. }
  910. }
  911. flag = complaintSignclosedProductInfoMapper.insertList(awaitingSignclosedProductInfoArrayList);
  912. if(flag < 1){
  913. throw new RuntimeException("添加签收产品失败");
  914. }
  915. }
  916. /**
  917. * 向Efast推送订单 仅换新,维修 ,补发
  918. * @return
  919. */
  920. @Transactional
  921. public Map<String,Object> sendEfastOrder(CustomerCommon customerCommon,SalesOrder salesOrder){
  922. Map<String,Object> map = new HashMap<String,Object>();
  923. List<EfastOrder> orderList = new ArrayList<EfastOrder>();
  924. List<OrderItem> itemList = new ArrayList<OrderItem>();
  925. Integer num = 0; //产品数量
  926. Integer amout = 0; //商品总价
  927. String orderProductBarCode = ""; //产品sku
  928. String productName = ""; //产品名称
  929. for(int i=0;i<customerCommon.getSendProdcues().size();i++){
  930. SendProdcue sendProdcue = customerCommon.getSendProdcues().get(i);
  931. OrderItem orderItem = new OrderItem();
  932. orderItem.setItemProductName(sendProdcue.getSendProduceName());
  933. orderItem.setItemProductNum(sendProdcue.getSendProdcueNumber());
  934. orderItem.setItemProductPrice(sendProdcue.getProductColor().getColorPrice());
  935. orderItem.setItemColorBar(sendProdcue.getProductColor().getColorBar());
  936. itemList.add(orderItem);
  937. orderProductBarCode = sendProdcue.getProductColor().getColorBar();
  938. productName = sendProdcue.getSendProduceName();
  939. num += sendProdcue.getSendProdcueNumber();
  940. amout += sendProdcue.getProductColor().getColorPrice();
  941. }
  942. EfastOrder efastOrder = new EfastOrder();
  943. efastOrder.setOrderAddressName(customerCommon.getRelationSendName());//收货人姓名
  944. efastOrder.setOrderAddressTel(customerCommon.getRelationSendTel());//收货人电话
  945. efastOrder.setOrderOpenId("1");//身份证
  946. String[] address = customerCommon.getRelationSendMergeAddress().split("-");
  947. efastOrder.setOrderProvince(address[0]);
  948. efastOrder.setOrderCity(address[1]);
  949. efastOrder.setOrderArea(address[2]);
  950. efastOrder.setOrderAddress(customerCommon.getRelationSendAddress());
  951. efastOrder.setOrderStatus(2);
  952. efastOrder.setOrderStoreId(salesOrder.getStoreEfast()); //设置efast店铺id
  953. efastOrder.setOrderNum(num); //产品数量
  954. efastOrder.setOrderAmount(amout); //商品总价
  955. efastOrder.setOrderPayMoney(amout); //已付款
  956. //支付方式
  957. switch (salesOrder.getSalesPayType()){
  958. case 1: //微信支付
  959. efastOrder.setOrderPayType(1);
  960. break;
  961. case 2: //现金支付
  962. efastOrder.setOrderPayType(2);
  963. break;
  964. case 3:
  965. break;
  966. case 4: //刷卡支付
  967. efastOrder.setOrderPayType(4);
  968. break;
  969. case 5: //支付宝支付
  970. efastOrder.setOrderPayType(5);
  971. break;
  972. default:
  973. efastOrder.setOrderPayType(2); //默认现金
  974. break;
  975. }
  976. efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
  977. efastOrder.setOrderProductName(productName); //产品名称
  978. efastOrder.setOrderId(customerCommon.getTransactionNumber()); //外部交易号
  979. efastOrder.setOid(1);
  980. orderList.add(efastOrder);
  981. Integer status = 1;
  982. Map<String,Object> orderMap = new HashMap<String,Object>();
  983. try {
  984. orderMap = efastOrderService.sendOrder(orderList,itemList);
  985. } catch (Exception e) {
  986. status = 0;
  987. }
  988. List<EfastOrder> oList = (List<EfastOrder>) orderMap.get("efastOrderList");
  989. if(oList == null || oList.size() < 1){
  990. status = 0;
  991. }
  992. map.put("status",status);
  993. if(oList != null && oList.size() > 0){
  994. map.put("EfastOrderId",oList.get(0).getOrderId());
  995. logger.info("换新,维修 ,补发向Efast 推送订单成功,订单号为:" + oList.get(0).getOrderId());
  996. }else{
  997. logger.info("换新,维修 ,补发向Efast 推送订单,推送失败,交易号为:" + customerCommon.getTransactionNumber());
  998. }
  999. return map;
  1000. }
  1001. @Override
  1002. public Integer getQuestionNumber(CustomerInfo customerInfo) {
  1003. return customerInfoMapper.getQuestionNumber(customerInfo);
  1004. }
  1005. /**
  1006. * 添加订单
  1007. * @return
  1008. */
  1009. @Transactional
  1010. public Integer addOrder(SalesOrder salesOrder) {
  1011. //添加订单数据
  1012. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  1013. if (orderNum <= 0) {
  1014. throw new RuntimeException("系统添加订单失败");
  1015. }
  1016. for (SalesOrderItem item : salesOrder.getSalesOrderItemList()) {
  1017. item.setItemOrderId(salesOrder.getSalesId());
  1018. }
  1019. //批量添加订单项数据
  1020. int itemNum = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
  1021. if (itemNum <= 0) {
  1022. throw new RuntimeException("系统添加订单项失败");
  1023. }
  1024. return orderNum;
  1025. }
  1026. @Override
  1027. public List<CustomerStatisticalInfo> listStatisticalCustomer() {
  1028. return customerInfoMapper.listStatisticalCustomer();
  1029. }
  1030. /**
  1031. * 向Efast推送订单--添加订单
  1032. * @return
  1033. */
  1034. @Transactional
  1035. public Map<String,Object> sendEfastOrder(SalesOrder salesOrder){
  1036. //添加订单数据
  1037. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  1038. if (orderNum <= 0) {
  1039. throw new RuntimeException("系统添加订单失败");
  1040. }
  1041. for (SalesOrderItem item : salesOrder.getSalesOrderItemList()) {
  1042. item.setItemOrderId(salesOrder.getSalesId());
  1043. }
  1044. //批量添加订单项数据
  1045. int itemNum = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
  1046. if (itemNum <= 0) {
  1047. throw new RuntimeException("系统添加订单项失败");
  1048. }
  1049. Map<String,Object> map = new HashMap<String,Object>();
  1050. List<EfastOrder> orderList = new ArrayList<EfastOrder>();
  1051. List<OrderItem> itemList = new ArrayList<OrderItem>();
  1052. Integer num = 0; //产品数量
  1053. Integer amout = 0; //商品总价
  1054. String orderProductBarCode = ""; //产品sku
  1055. String productName = ""; //产品名称
  1056. for(int i=0;i<salesOrder.getSalesOrderItemList().size();i++){
  1057. SalesOrderItem salesOrderItem = salesOrder.getSalesOrderItemList().get(i);
  1058. OrderItem orderItem = new OrderItem();
  1059. orderItem.setItemProductName(salesOrderItem.getItemProductName());
  1060. orderItem.setItemProductNum(salesOrderItem.getItemNum());
  1061. orderItem.setItemProductPrice(salesOrderItem.getItemProductPrice());
  1062. orderItem.setItemColorBar(salesOrderItem.getItemColorBar());
  1063. itemList.add(orderItem);
  1064. orderProductBarCode = salesOrderItem.getItemColorBar();
  1065. productName = salesOrderItem.getItemProductName();
  1066. num += salesOrderItem.getItemNum();
  1067. amout += salesOrderItem.getItemProductPrice();
  1068. }
  1069. EfastOrder efastOrder = new EfastOrder();
  1070. efastOrder.setOrderAddressName(salesOrder.getSalesAddressName());//收货人姓名
  1071. efastOrder.setOrderAddressTel(salesOrder.getSalesAddressTel());//收货人电话
  1072. efastOrder.setOrderOpenId("1");//身份证
  1073. efastOrder.setOrderRemark(salesOrder.getOrderNoteRemark()); //订单备注
  1074. efastOrder.setOrderBuyerRemark(salesOrder.getSalesUserRemark()); //买家备注
  1075. efastOrder.setOrderSellerRemark(salesOrder.getSalesAdminRemark()); //卖家备注
  1076. String[] address = salesOrder.getSalesAddressInfo().split("-");
  1077. efastOrder.setOrderProvince(address[0]);
  1078. efastOrder.setOrderCity(address[1]);
  1079. efastOrder.setOrderArea(address[2]);
  1080. String myAddress = "";
  1081. if(address.length > 4){
  1082. myAddress = address[3] + address[4];
  1083. }else{
  1084. myAddress = address[3];
  1085. }
  1086. efastOrder.setOrderAddress(myAddress);
  1087. efastOrder.setOrderStatus(1);
  1088. efastOrder.setOrderNum(num); //产品数量
  1089. efastOrder.setOrderAmount(amout); //商品总价
  1090. efastOrder.setOrderPayMoney(amout); //已付款
  1091. //支付方式
  1092. switch (salesOrder.getSalesPayType()){
  1093. case 1: //微信支付
  1094. efastOrder.setOrderPayType(1);
  1095. break;
  1096. case 2: //现金支付
  1097. efastOrder.setOrderPayType(2);
  1098. break;
  1099. case 3:
  1100. break;
  1101. case 4: //刷卡支付
  1102. efastOrder.setOrderPayType(4);
  1103. break;
  1104. case 5: //支付宝支付
  1105. efastOrder.setOrderPayType(5);
  1106. break;
  1107. default:
  1108. efastOrder.setOrderPayType(2); //默认现金
  1109. break;
  1110. }
  1111. efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
  1112. efastOrder.setOrderProductName(productName); //产品名称
  1113. efastOrder.setOrderId(salesOrder.getSalesDealCode()); //外部交易号
  1114. StoreInfo storeInfo = new StoreInfo();
  1115. storeInfo = storeInfoMapper.getStoreInfoById(salesOrder.getSalesStoreId());
  1116. efastOrder.setOrderStoreId(storeInfo.getStoreEfast());
  1117. efastOrder.setOid(1);
  1118. orderList.add(efastOrder);
  1119. Integer status = 1;
  1120. Map<String,Object> orderMap = new HashMap<String,Object>();
  1121. try {
  1122. orderMap = efastOrderService.sendOrder(orderList,itemList);
  1123. } catch (Exception e) {
  1124. status = 0;
  1125. }
  1126. List<EfastOrder> oList = (List<EfastOrder>) orderMap.get("efastOrderList");
  1127. if(oList == null || oList.size() < 1){
  1128. status = 0;
  1129. }
  1130. if(oList != null && oList.size() > 0){
  1131. map.put("EfastOrderId",oList.get(0).getOrderId());
  1132. SalesOrder sa = new SalesOrder();
  1133. sa.setSalesId(salesOrder.getSalesId());
  1134. sa.setSalesOrderId(oList.get(0).getOrderId());
  1135. orderNum = salesOrderMapper.updateSalesOrder(sa);
  1136. if (orderNum <= 0) {
  1137. throw new RuntimeException("系统修改订单失败,订单回滚,Efast交易号:"+salesOrder.getSalesDealCode());
  1138. }
  1139. }else{
  1140. throw new RuntimeException("添加Efast订单失败");
  1141. }
  1142. map.put("status",status);
  1143. return map;
  1144. }
  1145. /**
  1146. * 将原订单生成退货单
  1147. * @param customerCommon
  1148. * @param salesOrder
  1149. * @return
  1150. * @throws RuntimeException
  1151. */
  1152. @Transactional
  1153. public void chargebackEfastOrder(CustomerCommon customerCommon, SalesOrder salesOrder,Integer status,Integer returnType){
  1154. SalesOrder order = new SalesOrder();
  1155. order.setSalesId(salesOrder.getSalesId());
  1156. order.setSalesOrderStatus(status); //换货状态
  1157. Integer flag = salesOrderMapper.updateSalesOrder(order);
  1158. if(flag < 0){
  1159. throw new RuntimeException("系统生成退单失败");
  1160. }
  1161. EfastOrder efastOrder = new EfastOrder();
  1162. List<EfastOrderItem> itemList = new ArrayList<>();
  1163. /*for(int i=0;i<customerCommon.getSendProdcues().size();i++){
  1164. SendProdcue sendProdcue = customerCommon.getSendProdcues().get(i);
  1165. EfastOrderItem efastOrderItem = new EfastOrderItem();
  1166. efastOrderItem.setItemColorBar(sendProdcue.getProductColor().getColorBar());
  1167. efastOrderItem.setItemNum(sendProdcue.getSendProdcueNumber());
  1168. efastOrderItem.setItemDiscount(sendProdcue.getProductColor().getColorPrice());
  1169. itemList.add(efastOrderItem);
  1170. }*/
  1171. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1172. salesOrderItem.setItemOrderId(salesOrder.getSalesId());
  1173. List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
  1174. for(SalesOrderItem item : salesOrderItemList){
  1175. EfastOrderItem efastOrderItem = new EfastOrderItem();
  1176. efastOrderItem.setItemColorBar(item.getItemColorBar());
  1177. efastOrderItem.setItemNum(item.getItemNum());
  1178. efastOrderItem.setItemDiscount(item.getItemProductPrice());
  1179. itemList.add(efastOrderItem);
  1180. }
  1181. efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //交易号
  1182. efastOrder.setOrderPostFirm(salesOrder.getSalesPostFirm()); //物流代码
  1183. efastOrder.setOrderPostNum(salesOrder.getSalesPostNum()); //物流单号
  1184. efastOrder.setOrderId(salesOrder.getSalesOrderId()); //订单编号
  1185. efastOrder.setItemList(itemList);
  1186. efastOrder.setReturnOrderType(returnType);//退单类型
  1187. JSONObject jsonObject = new JSONObject();
  1188. try{
  1189. jsonObject = efastOrderService.returnOrderFormEfast(efastOrder);
  1190. logger.info("------将原订单生成退货订单返回数据:" + jsonObject + "------");
  1191. /*if(jsonObject != null){
  1192. Object obj;
  1193. obj = jsonObject.get("return_sn");
  1194. if(obj != null && !"".equals(obj)){
  1195. fg = true;
  1196. }else{
  1197. obj = jsonObject.get("msg");
  1198. if("系统订单 已作废".equals(obj)){
  1199. fg = true;
  1200. }
  1201. }
  1202. }*/
  1203. }catch (Exception e){
  1204. logger.info("------将原订单生成退货订单报错------");
  1205. }
  1206. }
  1207. @Override
  1208. public Integer updateCustomerInfo(CustomerInfo record) {
  1209. return customerInfoMapper.updateCustomerInfo(record);
  1210. }
  1211. @Override
  1212. public PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum) {
  1213. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  1214. //查询客诉列表
  1215. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  1216. if (customerList != null && customerList.size() > 0) {
  1217. for (CustomerInfo customer : customerList) {
  1218. CustomerCommon customerCommon = new CustomerCommon();
  1219. customerCommon.setCustomerId(customer.getCustomerId());
  1220. List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
  1221. if(customerCommonList == null || customerCommonList.size() < 1){
  1222. continue;
  1223. }
  1224. customerCommon = customerCommonList.get(0);
  1225. customer.setBackStatus(customerCommon.getRelationBackStatus());
  1226. customer.setSendStatus(customerCommon.getRelationSendStatus());
  1227. customer.setSendLogisticsNo(customerCommon.getRelationSendLogisticsNo());
  1228. customer.setSendLogisticsCompany(customerCommon.getRelationSendLogisticsCompany());
  1229. customer.setBackLogisticsNo(customerCommon.getRelationBackLogisticsNo());
  1230. customer.setBackLogisticsCompany(customerCommon.getRelationBackLogisticsCompany());
  1231. Date date = null;
  1232. List<SalesOrder> salesOrderList = customerCommon.getSalesOrderList();
  1233. if(salesOrderList != null && salesOrderList.size() > 0){
  1234. for (int k = 0;k<salesOrderList.size();k++){
  1235. SalesOrder so = salesOrderList.get(k);
  1236. List<SalesOrderItem> salesOrderItemList = so.getSalesOrderItemList();
  1237. for (SalesOrderItem soi:salesOrderItemList) {
  1238. if(1 == soi.getItemIsSource()){
  1239. date = so.getSalesPayTime();
  1240. }
  1241. }
  1242. }
  1243. }
  1244. customer.setSalesTime(date);
  1245. }
  1246. }
  1247. return PageUtil.getPage(customerList);
  1248. }
  1249. @Override
  1250. public Map<String,Object> getCustomerInfo(CustomerInfo customerInfo) {
  1251. Map<String,Object> map = new HashMap<String,Object>();
  1252. CustomerCommon customerCommon = new CustomerCommon();
  1253. //查询客诉列表
  1254. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  1255. if (customerList == null || customerList.size() == 0) {
  1256. return null;
  1257. }
  1258. CustomerInfo customer = customerList.get(0);
  1259. map.put("customer",customer);
  1260. int orderId = 0;
  1261. switch (customer.getCustomerIsSolve().intValue()) {
  1262. case 3://换新
  1263. Renewed renewedInfo = new Renewed();
  1264. renewedInfo.setRenewedState(1);
  1265. renewedInfo.setCustomerId(customerInfo.getCustomerId());
  1266. //查询售后换新详情
  1267. renewedInfo = renewedMapper.getRenewedInfo(renewedInfo);
  1268. //orderId = renewedInfo.getOrderId();
  1269. customerCommon = CustomerCommonUtil.getCustomerCommon(3,renewedInfo);
  1270. customerCommon = customerService.selectProdcueAndFitting(customerCommon,3);
  1271. break;
  1272. case 4://维修
  1273. Repair repairInfo = new Repair();
  1274. repairInfo.setRepairState(1);
  1275. repairInfo.setCustomerId(customerInfo.getCustomerId());
  1276. //查询售后维修集合
  1277. repairInfo = repairMapper.getRepairInfo(repairInfo);
  1278. if (repairInfo.getComplaintDetectList() != null && repairInfo.getComplaintDetectList().size() > 0) {
  1279. repairInfo.setDetectState(repairInfo.getComplaintDetectList().get(0).getDetectState());
  1280. }
  1281. //orderId = repairInfo.getOrderId();
  1282. customerCommon = CustomerCommonUtil.getCustomerCommon(4,repairInfo);
  1283. customerCommon = customerService.selectProdcueAndFitting(customerCommon,4);
  1284. break;
  1285. case 5://补发
  1286. Reissue reissueInfo = new Reissue();
  1287. reissueInfo.setReissueState(1);
  1288. reissueInfo.setCustomerId(customerInfo.getCustomerId());
  1289. //查询售后补发集合
  1290. List<Reissue> reissueList = reissueMapper.listReissue(reissueInfo);
  1291. if (reissueList == null || reissueList.size() == 0) {
  1292. return null;
  1293. }
  1294. reissueInfo = reissueList.get(0);
  1295. //orderId = reissueInfo.getOrderId();
  1296. customerCommon = CustomerCommonUtil.getCustomerCommon(5,reissueInfo);
  1297. customerCommon = customerService.selectProdcueAndFitting(customerCommon,5);
  1298. break;
  1299. case 6://退货
  1300. //查询售后退货集合
  1301. BackGoods backGoodsInfo = new BackGoods();
  1302. backGoodsInfo.setBackGoodsState(1);
  1303. backGoodsInfo.setCustomerId(customerInfo.getCustomerId());
  1304. List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(backGoodsInfo);
  1305. if (backGoodsList == null || backGoodsList.size() == 0) {
  1306. return null;
  1307. }
  1308. backGoodsInfo = backGoodsList.get(0);
  1309. if (backGoodsInfo.getComplaintDetectList() != null && backGoodsInfo.getComplaintDetectList().size() > 0) {
  1310. backGoodsInfo.setDetectState(backGoodsInfo.getComplaintDetectList().get(0).getDetectState());
  1311. }
  1312. //orderId = backGoodsInfo.getOrderId();
  1313. customerCommon = CustomerCommonUtil.getCustomerCommon(6,backGoodsInfo);
  1314. customerCommon = customerService.selectProdcueAndFitting(customerCommon,6);
  1315. break;
  1316. case 7://无理由退货
  1317. //查询售后无理由退货集合
  1318. NoreasonBack noreasonBackInfo = new NoreasonBack();
  1319. noreasonBackInfo.setNoreasonBackState(1);
  1320. noreasonBackInfo.setCustomerId(customerInfo.getCustomerId());
  1321. List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(noreasonBackInfo);
  1322. if (noreasonBackList == null || noreasonBackList.size() == 0) {
  1323. return null;
  1324. }
  1325. noreasonBackInfo = noreasonBackList.get(0);
  1326. if (noreasonBackInfo.getComplaintDetectList() != null && noreasonBackInfo.getComplaintDetectList().size() > 0) {
  1327. noreasonBackInfo.setDetectState(noreasonBackInfo.getComplaintDetectList().get(0).getDetectState());
  1328. }
  1329. //orderId = noreasonBackInfo.getOrderId();
  1330. customerCommon = CustomerCommonUtil.getCustomerCommon(7,noreasonBackInfo);
  1331. customerCommon = customerService.selectProdcueAndFitting(customerCommon,7);
  1332. break;
  1333. }
  1334. RelationOrder relationOrder = new RelationOrder();
  1335. relationOrder.setRelationType(customerCommon.getCustomerIsSolve());
  1336. relationOrder.setRelationId(customerCommon.getRelationId());
  1337. List<RelationOrder> relationOrderList = relationOrderService.getRelationOrderList(relationOrder);
  1338. if(relationOrderList != null && relationOrderList.size() > 0){
  1339. String[] salesIds = new String[relationOrderList.size()];
  1340. for (int k=0; k<relationOrderList.size();k++){
  1341. salesIds[k] = String.valueOf(relationOrderList.get(k).getSalesId());
  1342. }
  1343. SalesOrder so = new SalesOrder();
  1344. so.setSalesIds(salesIds);
  1345. List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(so);
  1346. if (orderList != null && orderList.size() > 0) {
  1347. SalesOrder order = orderList.get(0);
  1348. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1349. salesOrderItem.setItemOrderId(order.getSalesId());
  1350. order.setSalesOrderItemList(salesOrderMapper.listSalesOrderItem(salesOrderItem));
  1351. } else {
  1352. map.put("orderList",null);
  1353. }
  1354. map.put("orderList",orderList);
  1355. }
  1356. map.put("customerCommon",customerCommon);
  1357. return map;
  1358. }
  1359. @Override
  1360. public CustomerCommon selectProdcueAndFitting(CustomerCommon customerCommon, int isSolve) {
  1361. if (customerCommon == null || customerCommon.getRelationId() == null) {
  1362. return customerCommon;
  1363. }
  1364. List<SendProdcue> sendProdcues = null;
  1365. List<SendFitting> sendFittings = null;
  1366. List<ClosedFitting> closedfittings = null;
  1367. List<ClosedProdcue> closedProdcues = null;
  1368. SendProdcue sendProdcue = new SendProdcue();
  1369. SendFitting sendFitting = new SendFitting();
  1370. ClosedFitting fitting = new ClosedFitting();
  1371. ClosedProdcue closedProdcue = new ClosedProdcue();
  1372. switch (isSolve) {
  1373. case 3://换新
  1374. sendProdcue.setRelationId(customerCommon.getRelationId());
  1375. sendProdcue.setSendProduceType(3);
  1376. //查询寄出产品集合
  1377. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1378. sendFitting.setRelationId(customerCommon.getRelationId());
  1379. sendFitting.setSendFittingType(3);
  1380. //查询寄出配件集合
  1381. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1382. fitting.setRelationId(customerCommon.getRelationId());
  1383. fitting.setClosedFittingType(3);
  1384. //查询寄回配件集合
  1385. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1386. closedProdcue.setRelationId(customerCommon.getRelationId());
  1387. closedProdcue.setClosedProdcueType(3);
  1388. //查询寄回产品集合
  1389. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1390. break;
  1391. case 4://维修
  1392. sendProdcue.setRelationId(customerCommon.getRelationId());
  1393. sendProdcue.setSendProduceType(4);
  1394. //查询寄出产品集合
  1395. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1396. sendFitting.setRelationId(customerCommon.getRelationId());
  1397. sendFitting.setSendFittingType(4);
  1398. //查询寄出配件集合
  1399. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1400. fitting.setRelationId(customerCommon.getRelationId());
  1401. fitting.setClosedFittingType(4);
  1402. //查询寄回配件集合
  1403. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1404. closedProdcue.setRelationId(customerCommon.getRelationId());
  1405. closedProdcue.setClosedProdcueType(4);
  1406. //查询寄回产品集合
  1407. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1408. break;
  1409. case 5://补发
  1410. sendProdcue.setRelationId(customerCommon.getRelationId());
  1411. sendProdcue.setSendProduceType(5);
  1412. //查询寄出产品集合
  1413. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1414. sendFitting.setRelationId(customerCommon.getRelationId());
  1415. sendFitting.setSendFittingType(5);
  1416. //查询寄出配件集合
  1417. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1418. break;
  1419. case 6://退货
  1420. fitting.setRelationId(customerCommon.getRelationId());
  1421. fitting.setClosedFittingType(6);
  1422. //查询寄回配件集合
  1423. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1424. closedProdcue.setRelationId(customerCommon.getRelationId());
  1425. closedProdcue.setClosedProdcueType(6);
  1426. //查询寄回产品集合
  1427. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1428. break;
  1429. case 7://无理由退货
  1430. fitting.setRelationId(customerCommon.getRelationId());
  1431. fitting.setClosedFittingType(7);
  1432. //查询寄回配件集合
  1433. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1434. closedProdcue.setRelationId(customerCommon.getRelationId());
  1435. closedProdcue.setClosedProdcueType(7);
  1436. //查询寄回产品集合
  1437. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1438. break;
  1439. }
  1440. customerCommon.setClosedFittings(closedfittings);
  1441. customerCommon.setClosedProdcues(closedProdcues);
  1442. customerCommon.setSendProdcues(sendProdcues);
  1443. customerCommon.setSendFittings(sendFittings);
  1444. return customerCommon;
  1445. }
  1446. @Override
  1447. public ProductType getcompanyAffiliation(Integer customerId) {
  1448. return customerInfoMapper.getcompanyAffiliation(customerId);
  1449. }
  1450. @Override
  1451. public BackGoods getBackGoods(BackGoods backGoods) {
  1452. //获取退货集合
  1453. List<BackGoods> backList = backGoodsMapper.listBackGoods(backGoods);
  1454. if (backList == null || backList.size() == 0) {
  1455. return null;
  1456. }
  1457. BackGoods goods = backList.get(0);
  1458. ClosedProdcue closedProdcue = new ClosedProdcue();
  1459. closedProdcue.setRelationId(goods.getBackGoodsId());
  1460. closedProdcue.setClosedProdcueType(6);
  1461. //查询寄回产品集合
  1462. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1463. ClosedFitting fitting = new ClosedFitting();
  1464. fitting.setRelationId(goods.getBackGoodsId());
  1465. fitting.setClosedFittingType(6);
  1466. //查询寄回配件集合
  1467. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1468. if (prodcueList != null && prodcueList.size() > 0) {
  1469. goods.setClosedProdcues(prodcueList);
  1470. }
  1471. if (fittingList != null && fittingList.size() > 0) {
  1472. goods.setClosedFittings(fittingList);
  1473. }
  1474. return goods;
  1475. }
  1476. @Override
  1477. public NoreasonBack getNoreasonBack(NoreasonBack noreasonBack) {
  1478. //获取无理由退货
  1479. List<NoreasonBack> backList = noreasonBackMapper.listNoreasonBack(noreasonBack);
  1480. if (backList == null || backList.size() == 0) {
  1481. return null;
  1482. }
  1483. NoreasonBack noreasonBackInfo = backList.get(0);
  1484. ClosedProdcue closedProdcue = new ClosedProdcue();
  1485. closedProdcue.setRelationId(noreasonBackInfo.getNoreasonBackId());
  1486. closedProdcue.setClosedProdcueType(7);
  1487. //查询寄回产品集合
  1488. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1489. ClosedFitting fitting = new ClosedFitting();
  1490. fitting.setRelationId(noreasonBackInfo.getNoreasonBackId());
  1491. fitting.setClosedFittingType(7);
  1492. //查询寄回配件集合
  1493. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1494. if (prodcueList != null && prodcueList.size() > 0) {
  1495. noreasonBackInfo.setClosedProdcues(prodcueList);
  1496. }
  1497. if (fittingList != null && fittingList.size() > 0) {
  1498. noreasonBackInfo.setClosedFittings(fittingList);
  1499. }
  1500. return noreasonBackInfo;
  1501. }
  1502. @Override
  1503. public Reissue getReissue(Reissue reissue) {
  1504. //查询售后补发信息
  1505. List<Reissue> reissueList = reissueMapper.listReissue(reissue);
  1506. if (reissueList == null || reissueList.size() == 0) {
  1507. return null;
  1508. }
  1509. Reissue reissueInfo = reissueList.get(0);
  1510. SendProdcue sendProdcue = new SendProdcue();
  1511. sendProdcue.setRelationId(reissueInfo.getReissueId());
  1512. sendProdcue.setSendProduceType(5);
  1513. //查询寄送产品集合
  1514. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1515. SendFitting sendFitting = new SendFitting();
  1516. sendFitting.setRelationId(reissueInfo.getReissueId());
  1517. sendFitting.setSendFittingType(5);
  1518. //查询寄送配件集合
  1519. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1520. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1521. reissueInfo.setSendProdcues(sendProdcueList);
  1522. }
  1523. if (sendFittingList != null && sendFittingList.size() > 0) {
  1524. reissueInfo.setSendFittings(sendFittingList);
  1525. }
  1526. return reissueInfo;
  1527. }
  1528. @Override
  1529. public Renewed getRenewedInfo(Renewed renewed) {
  1530. renewed = renewedMapper.getRenewedInfo(renewed);
  1531. if (renewed == null){
  1532. return null;
  1533. }
  1534. ClosedProdcue closedProdcue = new ClosedProdcue();
  1535. closedProdcue.setRelationId(renewed.getRenewedId());
  1536. closedProdcue.setClosedProdcueType(3);
  1537. //查询寄回产品集合
  1538. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1539. ClosedFitting fitting = new ClosedFitting();
  1540. fitting.setRelationId(renewed.getRenewedId());
  1541. fitting.setClosedFittingType(3);
  1542. //查询寄回配件集合
  1543. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1544. SendProdcue sendProdcue = new SendProdcue();
  1545. sendProdcue.setRelationId(renewed.getRenewedId());
  1546. sendProdcue.setSendProduceType(3);
  1547. //查询寄送产品集合
  1548. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1549. SendFitting sendFitting = new SendFitting();
  1550. sendFitting.setRelationId(renewed.getRenewedId());
  1551. sendFitting.setSendFittingType(3);
  1552. //查询寄送配件集合
  1553. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1554. if (prodcueList != null && prodcueList.size() > 0) {
  1555. renewed.setClosedProdcues(prodcueList);
  1556. }
  1557. if (fittingList != null && fittingList.size() > 0) {
  1558. renewed.setClosedFittings(fittingList);
  1559. }
  1560. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1561. renewed.setSendProdcues(sendProdcueList);
  1562. }
  1563. if (sendFittingList != null && sendFittingList.size() > 0) {
  1564. renewed.setSendFittings(sendFittingList);
  1565. }
  1566. return renewed;
  1567. }
  1568. @Override
  1569. public Repair getRepairInfo(Repair repair) {
  1570. repair = repairMapper.getRepairInfo(repair);
  1571. if (repair == null) {
  1572. return null;
  1573. }
  1574. ClosedProdcue closedProdcue = new ClosedProdcue();
  1575. closedProdcue.setRelationId(repair.getRepairId());
  1576. closedProdcue.setClosedProdcueType(4);
  1577. //查询寄回产品集合
  1578. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1579. ClosedFitting fitting = new ClosedFitting();
  1580. fitting.setRelationId(repair.getRepairId());
  1581. fitting.setClosedFittingType(4);
  1582. //查询寄回配件集合
  1583. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1584. SendProdcue sendProdcue = new SendProdcue();
  1585. sendProdcue.setRelationId(repair.getRepairId());
  1586. sendProdcue.setSendProduceType(4);
  1587. //查询寄送产品集合
  1588. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1589. SendFitting sendFitting = new SendFitting();
  1590. sendFitting.setRelationId(repair.getRepairId());
  1591. sendFitting.setSendFittingType(4);
  1592. //查询寄送配件集合
  1593. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1594. if (prodcueList != null && prodcueList.size() > 0) {
  1595. repair.setClosedProdcues(prodcueList);
  1596. }
  1597. if (fittingList != null && fittingList.size() > 0) {
  1598. repair.setClosedFittings(fittingList);
  1599. }
  1600. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1601. repair.setSendProdcues(sendProdcueList);
  1602. }
  1603. if (sendFittingList != null && sendFittingList.size() > 0) {
  1604. repair.setSendFittings(sendFittingList);
  1605. }
  1606. return repair;
  1607. }
  1608. }