CustomerServiceImpl.java 89 KB

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