CustomerServiceImpl.java 91 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746
  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. @Override
  1031. public List<ReturnStatisticsInfo> salesTotalSales(SalesOrder salesOrder) {
  1032. return customerInfoMapper.salesTotalSales(salesOrder);
  1033. }
  1034. @Override
  1035. public List<ReturnStatisticsInfo> salesTotalExchange(SalesOrder salesOrder) {
  1036. return customerInfoMapper.salesTotalExchange(salesOrder);
  1037. }
  1038. @Override
  1039. public List<ReturnStatisticsInfo> salesTotalReturn(SalesOrder salesOrder) {
  1040. return customerInfoMapper.salesTotalReturn(salesOrder);
  1041. }
  1042. @Override
  1043. public List<ReturnStatisticsInfo> salesSecondaryChangeNew(SalesOrder salesOrder) {
  1044. return customerInfoMapper.salesSecondaryChangeNew(salesOrder);
  1045. }
  1046. @Override
  1047. public List<ReturnStatisticsInfo> salesReturnForSecond(SalesOrder salesOrder) {
  1048. return customerInfoMapper.salesReturnForSecond(salesOrder);
  1049. }
  1050. /**
  1051. * 向Efast推送订单--添加订单
  1052. * @return
  1053. */
  1054. @Transactional
  1055. public Map<String,Object> sendEfastOrder(SalesOrder salesOrder){
  1056. //添加订单数据
  1057. int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
  1058. if (orderNum <= 0) {
  1059. throw new RuntimeException("系统添加订单失败");
  1060. }
  1061. for (SalesOrderItem item : salesOrder.getSalesOrderItemList()) {
  1062. item.setItemOrderId(salesOrder.getSalesId());
  1063. }
  1064. //批量添加订单项数据
  1065. int itemNum = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
  1066. if (itemNum <= 0) {
  1067. throw new RuntimeException("系统添加订单项失败");
  1068. }
  1069. Map<String,Object> map = new HashMap<String,Object>();
  1070. List<EfastOrder> orderList = new ArrayList<EfastOrder>();
  1071. List<OrderItem> itemList = new ArrayList<OrderItem>();
  1072. Integer num = 0; //产品数量
  1073. Integer amout = 0; //商品总价
  1074. String orderProductBarCode = ""; //产品sku
  1075. String productName = ""; //产品名称
  1076. for(int i=0;i<salesOrder.getSalesOrderItemList().size();i++){
  1077. SalesOrderItem salesOrderItem = salesOrder.getSalesOrderItemList().get(i);
  1078. OrderItem orderItem = new OrderItem();
  1079. orderItem.setItemProductName(salesOrderItem.getItemProductName());
  1080. orderItem.setItemProductNum(salesOrderItem.getItemNum());
  1081. orderItem.setItemProductPrice(salesOrderItem.getItemProductPrice());
  1082. orderItem.setItemColorBar(salesOrderItem.getItemColorBar());
  1083. itemList.add(orderItem);
  1084. orderProductBarCode = salesOrderItem.getItemColorBar();
  1085. productName = salesOrderItem.getItemProductName();
  1086. num += salesOrderItem.getItemNum();
  1087. amout += salesOrderItem.getItemProductPrice();
  1088. }
  1089. EfastOrder efastOrder = new EfastOrder();
  1090. efastOrder.setOrderAddressName(salesOrder.getSalesAddressName());//收货人姓名
  1091. efastOrder.setOrderAddressTel(salesOrder.getSalesAddressTel());//收货人电话
  1092. efastOrder.setOrderOpenId("1");//身份证
  1093. efastOrder.setOrderRemark(salesOrder.getOrderNoteRemark()); //订单备注
  1094. efastOrder.setOrderBuyerRemark(salesOrder.getSalesUserRemark()); //买家备注
  1095. efastOrder.setOrderSellerRemark(salesOrder.getSalesAdminRemark()); //卖家备注
  1096. String[] address = salesOrder.getSalesAddressInfo().split("-");
  1097. efastOrder.setOrderProvince(address[0]);
  1098. efastOrder.setOrderCity(address[1]);
  1099. efastOrder.setOrderArea(address[2]);
  1100. String myAddress = "";
  1101. if(address.length > 4){
  1102. myAddress = address[3] + address[4];
  1103. }else{
  1104. myAddress = address[3];
  1105. }
  1106. efastOrder.setOrderAddress(myAddress);
  1107. efastOrder.setOrderStatus(1);
  1108. efastOrder.setOrderNum(num); //产品数量
  1109. efastOrder.setOrderAmount(amout); //商品总价
  1110. efastOrder.setOrderPayMoney(amout); //已付款
  1111. //支付方式
  1112. switch (salesOrder.getSalesPayType()){
  1113. case 1: //微信支付
  1114. efastOrder.setOrderPayType(1);
  1115. break;
  1116. case 2: //现金支付
  1117. efastOrder.setOrderPayType(2);
  1118. break;
  1119. case 3:
  1120. break;
  1121. case 4: //刷卡支付
  1122. efastOrder.setOrderPayType(4);
  1123. break;
  1124. case 5: //支付宝支付
  1125. efastOrder.setOrderPayType(5);
  1126. break;
  1127. default:
  1128. efastOrder.setOrderPayType(2); //默认现金
  1129. break;
  1130. }
  1131. efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
  1132. efastOrder.setOrderProductName(productName); //产品名称
  1133. efastOrder.setOrderId(salesOrder.getSalesDealCode()); //外部交易号
  1134. StoreInfo storeInfo = new StoreInfo();
  1135. storeInfo = storeInfoMapper.getStoreInfoById(salesOrder.getSalesStoreId());
  1136. efastOrder.setOrderStoreId(storeInfo.getStoreEfast());
  1137. efastOrder.setOid(1);
  1138. orderList.add(efastOrder);
  1139. Integer status = 1;
  1140. Map<String,Object> orderMap = new HashMap<String,Object>();
  1141. try {
  1142. orderMap = efastOrderService.sendOrder(orderList,itemList);
  1143. } catch (Exception e) {
  1144. status = 0;
  1145. }
  1146. List<EfastOrder> oList = (List<EfastOrder>) orderMap.get("efastOrderList");
  1147. if(oList == null || oList.size() < 1){
  1148. status = 0;
  1149. }
  1150. if(oList != null && oList.size() > 0){
  1151. map.put("EfastOrderId",oList.get(0).getOrderId());
  1152. SalesOrder sa = new SalesOrder();
  1153. sa.setSalesId(salesOrder.getSalesId());
  1154. sa.setSalesOrderId(oList.get(0).getOrderId());
  1155. orderNum = salesOrderMapper.updateSalesOrder(sa);
  1156. if (orderNum <= 0) {
  1157. throw new RuntimeException("系统修改订单失败,订单回滚,Efast交易号:"+salesOrder.getSalesDealCode());
  1158. }
  1159. }else{
  1160. throw new RuntimeException("添加Efast订单失败");
  1161. }
  1162. map.put("status",status);
  1163. return map;
  1164. }
  1165. /**
  1166. * 将原订单生成退货单
  1167. * @param customerCommon
  1168. * @param salesOrder
  1169. * @return
  1170. * @throws RuntimeException
  1171. */
  1172. @Transactional
  1173. public void chargebackEfastOrder(CustomerCommon customerCommon, SalesOrder salesOrder,Integer status,Integer returnType){
  1174. SalesOrder order = new SalesOrder();
  1175. order.setSalesId(salesOrder.getSalesId());
  1176. order.setSalesOrderStatus(status); //换货状态
  1177. Integer flag = salesOrderMapper.updateSalesOrder(order);
  1178. if(flag < 0){
  1179. throw new RuntimeException("系统生成退单失败");
  1180. }
  1181. EfastOrder efastOrder = new EfastOrder();
  1182. List<EfastOrderItem> itemList = new ArrayList<>();
  1183. /*for(int i=0;i<customerCommon.getSendProdcues().size();i++){
  1184. SendProdcue sendProdcue = customerCommon.getSendProdcues().get(i);
  1185. EfastOrderItem efastOrderItem = new EfastOrderItem();
  1186. efastOrderItem.setItemColorBar(sendProdcue.getProductColor().getColorBar());
  1187. efastOrderItem.setItemNum(sendProdcue.getSendProdcueNumber());
  1188. efastOrderItem.setItemDiscount(sendProdcue.getProductColor().getColorPrice());
  1189. itemList.add(efastOrderItem);
  1190. }*/
  1191. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1192. salesOrderItem.setItemOrderId(salesOrder.getSalesId());
  1193. List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
  1194. for(SalesOrderItem item : salesOrderItemList){
  1195. EfastOrderItem efastOrderItem = new EfastOrderItem();
  1196. efastOrderItem.setItemColorBar(item.getItemColorBar());
  1197. efastOrderItem.setItemNum(item.getItemNum());
  1198. efastOrderItem.setItemDiscount(item.getItemProductPrice());
  1199. itemList.add(efastOrderItem);
  1200. }
  1201. efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //交易号
  1202. efastOrder.setOrderPostFirm(salesOrder.getSalesPostFirm()); //物流代码
  1203. efastOrder.setOrderPostNum(salesOrder.getSalesPostNum()); //物流单号
  1204. efastOrder.setOrderId(salesOrder.getSalesOrderId()); //订单编号
  1205. efastOrder.setItemList(itemList);
  1206. efastOrder.setReturnOrderType(returnType);//退单类型
  1207. JSONObject jsonObject = new JSONObject();
  1208. try{
  1209. jsonObject = efastOrderService.returnOrderFormEfast(efastOrder);
  1210. logger.info("------将原订单生成退货订单返回数据:" + jsonObject + "------");
  1211. /*if(jsonObject != null){
  1212. Object obj;
  1213. obj = jsonObject.get("return_sn");
  1214. if(obj != null && !"".equals(obj)){
  1215. fg = true;
  1216. }else{
  1217. obj = jsonObject.get("msg");
  1218. if("系统订单 已作废".equals(obj)){
  1219. fg = true;
  1220. }
  1221. }
  1222. }*/
  1223. }catch (Exception e){
  1224. logger.info("------将原订单生成退货订单报错------");
  1225. }
  1226. }
  1227. @Override
  1228. public Integer updateCustomerInfo(CustomerInfo record) {
  1229. return customerInfoMapper.updateCustomerInfo(record);
  1230. }
  1231. @Override
  1232. public PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum) {
  1233. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  1234. //查询客诉列表
  1235. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  1236. // if (customerList != null && customerList.size() > 0) {
  1237. // for (CustomerInfo customer : customerList) {
  1238. //
  1239. // CustomerCommon customerCommon = new CustomerCommon();
  1240. // customerCommon.setCustomerId(customer.getCustomerId());
  1241. // List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
  1242. // if(customerCommonList == null || customerCommonList.size() < 1){
  1243. // continue;
  1244. // }
  1245. // customerCommon = customerCommonList.get(0);
  1246. // customer.setBackStatus(customerCommon.getRelationBackStatus());
  1247. // customer.setSendStatus(customerCommon.getRelationSendStatus());
  1248. // customer.setSendLogisticsNo(customerCommon.getRelationSendLogisticsNo());
  1249. // customer.setSendLogisticsCompany(customerCommon.getRelationSendLogisticsCompany());
  1250. // customer.setBackLogisticsNo(customerCommon.getRelationBackLogisticsNo());
  1251. // customer.setBackLogisticsCompany(customerCommon.getRelationBackLogisticsCompany());
  1252. // Date date = null;
  1253. // List<SalesOrder> salesOrderList = customerCommon.getSalesOrderList();
  1254. // if(salesOrderList != null && salesOrderList.size() > 0){
  1255. // for (int k = 0;k<salesOrderList.size();k++){
  1256. // SalesOrder so = salesOrderList.get(k);
  1257. // List<SalesOrderItem> salesOrderItemList = so.getSalesOrderItemList();
  1258. // for (SalesOrderItem soi:salesOrderItemList) {
  1259. // if(1 == soi.getItemIsSource()){
  1260. // date = so.getSalesPayTime();
  1261. // }
  1262. // }
  1263. // }
  1264. // }
  1265. // customer.setSalesTime(date);
  1266. // }
  1267. // }
  1268. return PageUtil.getPage(customerList);
  1269. }
  1270. @Override
  1271. public Map<String,Object> getCustomerInfo(CustomerInfo customerInfo) {
  1272. Map<String,Object> map = new HashMap<String,Object>();
  1273. CustomerCommon customerCommon = new CustomerCommon();
  1274. //查询客诉列表
  1275. List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
  1276. if (customerList == null || customerList.size() == 0) {
  1277. return null;
  1278. }
  1279. CustomerInfo customer = customerList.get(0);
  1280. map.put("customer",customer);
  1281. int orderId = 0;
  1282. switch (customer.getCustomerIsSolve().intValue()) {
  1283. case 3://换新
  1284. Renewed renewedInfo = new Renewed();
  1285. renewedInfo.setRenewedState(1);
  1286. renewedInfo.setCustomerId(customerInfo.getCustomerId());
  1287. //查询售后换新详情
  1288. renewedInfo = renewedMapper.getRenewedInfo(renewedInfo);
  1289. //orderId = renewedInfo.getOrderId();
  1290. customerCommon = CustomerCommonUtil.getCustomerCommon(3,renewedInfo);
  1291. customerCommon = customerService.selectProdcueAndFitting(customerCommon,3);
  1292. break;
  1293. case 4://维修
  1294. Repair repairInfo = new Repair();
  1295. repairInfo.setRepairState(1);
  1296. repairInfo.setCustomerId(customerInfo.getCustomerId());
  1297. //查询售后维修集合
  1298. repairInfo = repairMapper.getRepairInfo(repairInfo);
  1299. if (repairInfo.getComplaintDetectList() != null && repairInfo.getComplaintDetectList().size() > 0) {
  1300. repairInfo.setDetectState(repairInfo.getComplaintDetectList().get(0).getDetectState());
  1301. }
  1302. //orderId = repairInfo.getOrderId();
  1303. customerCommon = CustomerCommonUtil.getCustomerCommon(4,repairInfo);
  1304. customerCommon = customerService.selectProdcueAndFitting(customerCommon,4);
  1305. break;
  1306. case 5://补发
  1307. Reissue reissueInfo = new Reissue();
  1308. reissueInfo.setReissueState(1);
  1309. reissueInfo.setCustomerId(customerInfo.getCustomerId());
  1310. //查询售后补发集合
  1311. List<Reissue> reissueList = reissueMapper.listReissue(reissueInfo);
  1312. if (reissueList == null || reissueList.size() == 0) {
  1313. return null;
  1314. }
  1315. reissueInfo = reissueList.get(0);
  1316. //orderId = reissueInfo.getOrderId();
  1317. customerCommon = CustomerCommonUtil.getCustomerCommon(5,reissueInfo);
  1318. customerCommon = customerService.selectProdcueAndFitting(customerCommon,5);
  1319. break;
  1320. case 6://退货
  1321. //查询售后退货集合
  1322. BackGoods backGoodsInfo = new BackGoods();
  1323. backGoodsInfo.setBackGoodsState(1);
  1324. backGoodsInfo.setCustomerId(customerInfo.getCustomerId());
  1325. List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(backGoodsInfo);
  1326. if (backGoodsList == null || backGoodsList.size() == 0) {
  1327. return null;
  1328. }
  1329. backGoodsInfo = backGoodsList.get(0);
  1330. if (backGoodsInfo.getComplaintDetectList() != null && backGoodsInfo.getComplaintDetectList().size() > 0) {
  1331. backGoodsInfo.setDetectState(backGoodsInfo.getComplaintDetectList().get(0).getDetectState());
  1332. }
  1333. //orderId = backGoodsInfo.getOrderId();
  1334. customerCommon = CustomerCommonUtil.getCustomerCommon(6,backGoodsInfo);
  1335. customerCommon = customerService.selectProdcueAndFitting(customerCommon,6);
  1336. break;
  1337. case 7://无理由退货
  1338. //查询售后无理由退货集合
  1339. NoreasonBack noreasonBackInfo = new NoreasonBack();
  1340. noreasonBackInfo.setNoreasonBackState(1);
  1341. noreasonBackInfo.setCustomerId(customerInfo.getCustomerId());
  1342. List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(noreasonBackInfo);
  1343. if (noreasonBackList == null || noreasonBackList.size() == 0) {
  1344. return null;
  1345. }
  1346. noreasonBackInfo = noreasonBackList.get(0);
  1347. if (noreasonBackInfo.getComplaintDetectList() != null && noreasonBackInfo.getComplaintDetectList().size() > 0) {
  1348. noreasonBackInfo.setDetectState(noreasonBackInfo.getComplaintDetectList().get(0).getDetectState());
  1349. }
  1350. //orderId = noreasonBackInfo.getOrderId();
  1351. customerCommon = CustomerCommonUtil.getCustomerCommon(7,noreasonBackInfo);
  1352. customerCommon = customerService.selectProdcueAndFitting(customerCommon,7);
  1353. break;
  1354. }
  1355. RelationOrder relationOrder = new RelationOrder();
  1356. relationOrder.setRelationType(customerCommon.getCustomerIsSolve());
  1357. relationOrder.setRelationId(customerCommon.getRelationId());
  1358. List<RelationOrder> relationOrderList = relationOrderService.getRelationOrderList(relationOrder);
  1359. if(relationOrderList != null && relationOrderList.size() > 0){
  1360. String[] salesIds = new String[relationOrderList.size()];
  1361. for (int k=0; k<relationOrderList.size();k++){
  1362. salesIds[k] = String.valueOf(relationOrderList.get(k).getSalesId());
  1363. }
  1364. SalesOrder so = new SalesOrder();
  1365. so.setSalesIds(salesIds);
  1366. List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(so);
  1367. if (orderList != null && orderList.size() > 0) {
  1368. SalesOrder order = orderList.get(0);
  1369. SalesOrderItem salesOrderItem = new SalesOrderItem();
  1370. salesOrderItem.setItemOrderId(order.getSalesId());
  1371. order.setSalesOrderItemList(salesOrderMapper.listSalesOrderItem(salesOrderItem));
  1372. } else {
  1373. map.put("orderList",null);
  1374. }
  1375. map.put("orderList",orderList);
  1376. }
  1377. map.put("customerCommon",customerCommon);
  1378. return map;
  1379. }
  1380. @Override
  1381. public CustomerCommon selectProdcueAndFitting(CustomerCommon customerCommon, int isSolve) {
  1382. if (customerCommon == null || customerCommon.getRelationId() == null) {
  1383. return customerCommon;
  1384. }
  1385. List<SendProdcue> sendProdcues = null;
  1386. List<SendFitting> sendFittings = null;
  1387. List<ClosedFitting> closedfittings = null;
  1388. List<ClosedProdcue> closedProdcues = null;
  1389. SendProdcue sendProdcue = new SendProdcue();
  1390. SendFitting sendFitting = new SendFitting();
  1391. ClosedFitting fitting = new ClosedFitting();
  1392. ClosedProdcue closedProdcue = new ClosedProdcue();
  1393. switch (isSolve) {
  1394. case 3://换新
  1395. sendProdcue.setRelationId(customerCommon.getRelationId());
  1396. sendProdcue.setSendProduceType(3);
  1397. //查询寄出产品集合
  1398. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1399. sendFitting.setRelationId(customerCommon.getRelationId());
  1400. sendFitting.setSendFittingType(3);
  1401. //查询寄出配件集合
  1402. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1403. fitting.setRelationId(customerCommon.getRelationId());
  1404. fitting.setClosedFittingType(3);
  1405. //查询寄回配件集合
  1406. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1407. closedProdcue.setRelationId(customerCommon.getRelationId());
  1408. closedProdcue.setClosedProdcueType(3);
  1409. //查询寄回产品集合
  1410. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1411. break;
  1412. case 4://维修
  1413. sendProdcue.setRelationId(customerCommon.getRelationId());
  1414. sendProdcue.setSendProduceType(4);
  1415. //查询寄出产品集合
  1416. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1417. sendFitting.setRelationId(customerCommon.getRelationId());
  1418. sendFitting.setSendFittingType(4);
  1419. //查询寄出配件集合
  1420. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1421. fitting.setRelationId(customerCommon.getRelationId());
  1422. fitting.setClosedFittingType(4);
  1423. //查询寄回配件集合
  1424. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1425. closedProdcue.setRelationId(customerCommon.getRelationId());
  1426. closedProdcue.setClosedProdcueType(4);
  1427. //查询寄回产品集合
  1428. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1429. break;
  1430. case 5://补发
  1431. sendProdcue.setRelationId(customerCommon.getRelationId());
  1432. sendProdcue.setSendProduceType(5);
  1433. //查询寄出产品集合
  1434. sendProdcues = sendProdcueMapper.listSendProdcue(sendProdcue);
  1435. sendFitting.setRelationId(customerCommon.getRelationId());
  1436. sendFitting.setSendFittingType(5);
  1437. //查询寄出配件集合
  1438. sendFittings = sendFittingMapper.listSendFitting(sendFitting);
  1439. break;
  1440. case 6://退货
  1441. fitting.setRelationId(customerCommon.getRelationId());
  1442. fitting.setClosedFittingType(6);
  1443. //查询寄回配件集合
  1444. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1445. closedProdcue.setRelationId(customerCommon.getRelationId());
  1446. closedProdcue.setClosedProdcueType(6);
  1447. //查询寄回产品集合
  1448. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1449. break;
  1450. case 7://无理由退货
  1451. fitting.setRelationId(customerCommon.getRelationId());
  1452. fitting.setClosedFittingType(7);
  1453. //查询寄回配件集合
  1454. closedfittings = closedFittingMapper.listClosedFitting(fitting);
  1455. closedProdcue.setRelationId(customerCommon.getRelationId());
  1456. closedProdcue.setClosedProdcueType(7);
  1457. //查询寄回产品集合
  1458. closedProdcues = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1459. break;
  1460. }
  1461. customerCommon.setClosedFittings(closedfittings);
  1462. customerCommon.setClosedProdcues(closedProdcues);
  1463. customerCommon.setSendProdcues(sendProdcues);
  1464. customerCommon.setSendFittings(sendFittings);
  1465. return customerCommon;
  1466. }
  1467. @Override
  1468. public ProductType getcompanyAffiliation(Integer customerId) {
  1469. return customerInfoMapper.getcompanyAffiliation(customerId);
  1470. }
  1471. @Override
  1472. public BackGoods getBackGoods(BackGoods backGoods) {
  1473. //获取退货集合
  1474. List<BackGoods> backList = backGoodsMapper.listBackGoods(backGoods);
  1475. if (backList == null || backList.size() == 0) {
  1476. return null;
  1477. }
  1478. BackGoods goods = backList.get(0);
  1479. ClosedProdcue closedProdcue = new ClosedProdcue();
  1480. closedProdcue.setRelationId(goods.getBackGoodsId());
  1481. closedProdcue.setClosedProdcueType(6);
  1482. //查询寄回产品集合
  1483. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1484. ClosedFitting fitting = new ClosedFitting();
  1485. fitting.setRelationId(goods.getBackGoodsId());
  1486. fitting.setClosedFittingType(6);
  1487. //查询寄回配件集合
  1488. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1489. if (prodcueList != null && prodcueList.size() > 0) {
  1490. goods.setClosedProdcues(prodcueList);
  1491. }
  1492. if (fittingList != null && fittingList.size() > 0) {
  1493. goods.setClosedFittings(fittingList);
  1494. }
  1495. return goods;
  1496. }
  1497. @Override
  1498. public NoreasonBack getNoreasonBack(NoreasonBack noreasonBack) {
  1499. //获取无理由退货
  1500. List<NoreasonBack> backList = noreasonBackMapper.listNoreasonBack(noreasonBack);
  1501. if (backList == null || backList.size() == 0) {
  1502. return null;
  1503. }
  1504. NoreasonBack noreasonBackInfo = backList.get(0);
  1505. ClosedProdcue closedProdcue = new ClosedProdcue();
  1506. closedProdcue.setRelationId(noreasonBackInfo.getNoreasonBackId());
  1507. closedProdcue.setClosedProdcueType(7);
  1508. //查询寄回产品集合
  1509. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1510. ClosedFitting fitting = new ClosedFitting();
  1511. fitting.setRelationId(noreasonBackInfo.getNoreasonBackId());
  1512. fitting.setClosedFittingType(7);
  1513. //查询寄回配件集合
  1514. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1515. if (prodcueList != null && prodcueList.size() > 0) {
  1516. noreasonBackInfo.setClosedProdcues(prodcueList);
  1517. }
  1518. if (fittingList != null && fittingList.size() > 0) {
  1519. noreasonBackInfo.setClosedFittings(fittingList);
  1520. }
  1521. return noreasonBackInfo;
  1522. }
  1523. @Override
  1524. public Reissue getReissue(Reissue reissue) {
  1525. //查询售后补发信息
  1526. List<Reissue> reissueList = reissueMapper.listReissue(reissue);
  1527. if (reissueList == null || reissueList.size() == 0) {
  1528. return null;
  1529. }
  1530. Reissue reissueInfo = reissueList.get(0);
  1531. SendProdcue sendProdcue = new SendProdcue();
  1532. sendProdcue.setRelationId(reissueInfo.getReissueId());
  1533. sendProdcue.setSendProduceType(5);
  1534. //查询寄送产品集合
  1535. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1536. SendFitting sendFitting = new SendFitting();
  1537. sendFitting.setRelationId(reissueInfo.getReissueId());
  1538. sendFitting.setSendFittingType(5);
  1539. //查询寄送配件集合
  1540. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1541. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1542. reissueInfo.setSendProdcues(sendProdcueList);
  1543. }
  1544. if (sendFittingList != null && sendFittingList.size() > 0) {
  1545. reissueInfo.setSendFittings(sendFittingList);
  1546. }
  1547. return reissueInfo;
  1548. }
  1549. @Override
  1550. public Renewed getRenewedInfo(Renewed renewed) {
  1551. renewed = renewedMapper.getRenewedInfo(renewed);
  1552. if (renewed == null){
  1553. return null;
  1554. }
  1555. ClosedProdcue closedProdcue = new ClosedProdcue();
  1556. closedProdcue.setRelationId(renewed.getRenewedId());
  1557. closedProdcue.setClosedProdcueType(3);
  1558. //查询寄回产品集合
  1559. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1560. ClosedFitting fitting = new ClosedFitting();
  1561. fitting.setRelationId(renewed.getRenewedId());
  1562. fitting.setClosedFittingType(3);
  1563. //查询寄回配件集合
  1564. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1565. SendProdcue sendProdcue = new SendProdcue();
  1566. sendProdcue.setRelationId(renewed.getRenewedId());
  1567. sendProdcue.setSendProduceType(3);
  1568. //查询寄送产品集合
  1569. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1570. SendFitting sendFitting = new SendFitting();
  1571. sendFitting.setRelationId(renewed.getRenewedId());
  1572. sendFitting.setSendFittingType(3);
  1573. //查询寄送配件集合
  1574. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1575. if (prodcueList != null && prodcueList.size() > 0) {
  1576. renewed.setClosedProdcues(prodcueList);
  1577. }
  1578. if (fittingList != null && fittingList.size() > 0) {
  1579. renewed.setClosedFittings(fittingList);
  1580. }
  1581. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1582. renewed.setSendProdcues(sendProdcueList);
  1583. }
  1584. if (sendFittingList != null && sendFittingList.size() > 0) {
  1585. renewed.setSendFittings(sendFittingList);
  1586. }
  1587. return renewed;
  1588. }
  1589. @Override
  1590. public Repair getRepairInfo(Repair repair) {
  1591. repair = repairMapper.getRepairInfo(repair);
  1592. if (repair == null) {
  1593. return null;
  1594. }
  1595. ClosedProdcue closedProdcue = new ClosedProdcue();
  1596. closedProdcue.setRelationId(repair.getRepairId());
  1597. closedProdcue.setClosedProdcueType(4);
  1598. //查询寄回产品集合
  1599. List<ClosedProdcue> prodcueList = closedProdcueMapper.listclosedProdcue(closedProdcue);
  1600. ClosedFitting fitting = new ClosedFitting();
  1601. fitting.setRelationId(repair.getRepairId());
  1602. fitting.setClosedFittingType(4);
  1603. //查询寄回配件集合
  1604. List<ClosedFitting> fittingList = closedFittingMapper.listClosedFitting(fitting);
  1605. SendProdcue sendProdcue = new SendProdcue();
  1606. sendProdcue.setRelationId(repair.getRepairId());
  1607. sendProdcue.setSendProduceType(4);
  1608. //查询寄送产品集合
  1609. List<SendProdcue> sendProdcueList = sendProdcueMapper.listSendProdcue(sendProdcue);
  1610. SendFitting sendFitting = new SendFitting();
  1611. sendFitting.setRelationId(repair.getRepairId());
  1612. sendFitting.setSendFittingType(4);
  1613. //查询寄送配件集合
  1614. List<SendFitting> sendFittingList = sendFittingMapper.listSendFitting(sendFitting);
  1615. if (prodcueList != null && prodcueList.size() > 0) {
  1616. repair.setClosedProdcues(prodcueList);
  1617. }
  1618. if (fittingList != null && fittingList.size() > 0) {
  1619. repair.setClosedFittings(fittingList);
  1620. }
  1621. if (sendProdcueList != null && sendProdcueList.size() > 0) {
  1622. repair.setSendProdcues(sendProdcueList);
  1623. }
  1624. if (sendFittingList != null && sendFittingList.size() > 0) {
  1625. repair.setSendFittings(sendFittingList);
  1626. }
  1627. return repair;
  1628. }
  1629. }