ComplaintDetectInfoServiceImpl.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. package com.iamberry.rst.service.fm;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.rst.core.cm.CmRelation;
  4. import com.iamberry.rst.core.cm.ProcMethod;
  5. import com.iamberry.rst.core.fm.*;
  6. import com.iamberry.rst.core.page.PageRequest;
  7. import com.iamberry.rst.core.page.PagedResult;
  8. import com.iamberry.rst.core.sys.Admin;
  9. import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
  10. import com.iamberry.rst.faces.sms.SmsService;
  11. import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
  12. import com.iamberry.rst.service.cm.mapper.ProcMethodMapper;
  13. import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
  14. import com.iamberry.rst.service.fm.mapper.ComplaintMaintenanceInfoMapper;
  15. import com.iamberry.rst.util.PageUtil;
  16. import com.iamberry.rst.util.SmsConfig;
  17. import com.iamberry.wechat.core.entity.AdminUtils;
  18. import com.iamberry.wechat.tools.ResponseJson;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.text.MessageFormat;
  25. import java.util.Calendar;
  26. import java.util.Date;
  27. import java.util.List;
  28. @Service
  29. public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
  30. private Logger logger = LoggerFactory.getLogger(ComplaintDetectInfoServiceImpl.class);
  31. @Autowired
  32. private ComplaintDetectInfoMapper complaintDetectInfoMapper;
  33. @Autowired
  34. private CustomerInfoMapper customerInfoMapper;
  35. @Autowired
  36. private ProcMethodMapper procMethodMapper;
  37. @Autowired
  38. private SmsService smsService;
  39. @Override
  40. public ComplaintDetectInfo getDetectById(Integer detectId) {
  41. return complaintDetectInfoMapper.getDetectById(detectId);
  42. }
  43. @Override
  44. @Transactional
  45. public int updateDetectById(ComplaintDetectInfo record) {
  46. try {
  47. //删除旧检测项
  48. complaintDetectInfoMapper.detectDetectionItem(record.getDetectId());
  49. //封装检测信息
  50. //检测现象
  51. if(record.getConfigli1() != null) {
  52. if (record.getConfigli1().length > 0) {
  53. StringBuffer detectPhenomenon = new StringBuffer("");
  54. for (String configid : record.getConfigli1()) {
  55. detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
  56. }
  57. record.setDetectPhenomenon(detectPhenomenon.toString());
  58. }
  59. }else{
  60. record.setDetectPhenomenon("");
  61. }
  62. //故障原因
  63. if(record.getConfigli2() != null) {
  64. if (record.getConfigli2().length > 0) {
  65. StringBuffer detectFailureCause = new StringBuffer("");
  66. for (String configid : record.getConfigli2()) {
  67. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  68. }
  69. record.setDetectFailureCause(detectFailureCause.toString());
  70. }
  71. }else{
  72. record.setDetectFailureCause("");
  73. }
  74. //判定结果
  75. if(record.getConfigli3() != null){
  76. if(record.getConfigli3().length > 0){
  77. StringBuffer detectResults = new StringBuffer("");
  78. for (String configid : record.getConfigli3()){
  79. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  80. }
  81. record.setDetectResults(detectResults.toString());
  82. }
  83. }else{
  84. record.setDetectResults("");
  85. }
  86. //故障指向
  87. if(record.getConfigli4() != null) {
  88. if (record.getConfigli4().length > 0) {
  89. StringBuffer detectPoint = new StringBuffer("");
  90. for (String configid : record.getConfigli4()) {
  91. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  92. }
  93. record.setDetectPoint(detectPoint.toString());
  94. }
  95. }else{
  96. record.setDetectPoint("");
  97. }
  98. //原因分析
  99. if(record.getConfigli5() != null) {
  100. if (record.getConfigli5().length > 0) {
  101. StringBuffer detectNalysis = new StringBuffer("");
  102. for (String configid : record.getConfigli5()) {
  103. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  104. }
  105. record.setDetectNalysis(detectNalysis.toString());
  106. }
  107. }else{
  108. record.setDetectNalysis("");
  109. }
  110. }catch (Exception e){
  111. throw new RuntimeException("修改检测失败");
  112. }
  113. return complaintDetectInfoMapper.updateDetectById(record);
  114. }
  115. @Override
  116. @Transactional
  117. public int updateDetectContent(ComplaintDetectInfo record) {
  118. complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
  119. try {
  120. //维修配件
  121. if(record.getConfigli6() != null) {
  122. if (record.getConfigli6().length > 0) {
  123. for (String configid : record.getConfigli6()) {
  124. MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
  125. MaterialItem materialItem = new MaterialItem();
  126. materialItem.setDetectId(record.getDetectId());
  127. materialItem.setMaterialId(Integer.valueOf(configid));
  128. materialItem.setMaterialName(materialNumberInfo.getMaterialName());
  129. complaintDetectInfoMapper.addMaterialItem(materialItem);
  130. }
  131. }
  132. }
  133. }catch (Exception e){
  134. throw new RuntimeException("修改检测维修内容失败");
  135. }
  136. return complaintDetectInfoMapper.updateDetectById(record);
  137. }
  138. @Override
  139. @Transactional
  140. public int updateDetectQc(ComplaintDetectInfo record) {
  141. //添加日志
  142. QcInfo qcInfo = new QcInfo();
  143. qcInfo.setDetectId(record.getDetectId());
  144. qcInfo.setQcIsThrough(record.getMaintenanceResults());
  145. qcInfo.setQcInfoDesc(record.getQcDesc());
  146. complaintDetectInfoMapper.addQcInfo(qcInfo);
  147. return complaintDetectInfoMapper.updateDetectById(record);
  148. }
  149. @Transactional
  150. @Override
  151. public int updateDetectById(ComplaintDetectInfo record,String[] imgs) {
  152. //判断售后流程
  153. if(record.getCustomerId() == null){
  154. if(record.getDetectRenovation() == 1){
  155. record.setDetectState(20);//待翻新入库
  156. }else{
  157. record.setDetectState(22);//不能翻新,待报废
  158. }
  159. }else{
  160. CmRelation cmRelation = new CmRelation();
  161. cmRelation.setCustomerId(record.getCustomerId());
  162. cmRelation = customerInfoMapper.getCmRelationInfo(cmRelation);
  163. ProcMethod procMethod = procMethodMapper.getProcMethodById(cmRelation.getProcMethodId());
  164. switch (cmRelation.getProcTypeId()){
  165. case 3://维修
  166. if(procMethod.getProcMethodIsCharge() == 0){//待定
  167. if(record.getIsMaintenance() == 1){
  168. record.setDetectState(38);//机器故障,待用户确认
  169. }else if(record.getIsMaintenance() == 2){
  170. record.setDetectState(37);//机器无故障,原机退回
  171. }
  172. }else if(procMethod.getProcMethodIsCharge() == 1){//付费
  173. record.setDetectState(30);//待用户确认
  174. }else if(procMethod.getProcMethodIsCharge() == 2){//免费
  175. record.setDetectState(34);//待客服确认维修
  176. }
  177. break;
  178. default:
  179. if(record.getDetectRenovation() == 1){//是否可翻新 1可翻新 2不可翻新
  180. record.setDetectState(20);//待翻新入库
  181. }else if(record.getDetectRenovation() == 2){
  182. record.setDetectState(22);//不能翻新,待报废
  183. }
  184. }
  185. }
  186. try {
  187. //封装检测信息
  188. //检测现象
  189. if(record.getConfigli1() != null) {
  190. if (record.getConfigli1().length > 0) {
  191. StringBuffer detectPhenomenon = new StringBuffer("");
  192. for (String configid : record.getConfigli1()) {
  193. detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
  194. }
  195. record.setDetectPhenomenon(detectPhenomenon.toString());
  196. }
  197. }
  198. //故障原因
  199. if(record.getConfigli2() != null) {
  200. if (record.getConfigli2().length > 0) {
  201. StringBuffer detectFailureCause = new StringBuffer("");
  202. for (String configid : record.getConfigli2()) {
  203. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  204. }
  205. record.setDetectFailureCause(detectFailureCause.toString());
  206. }
  207. }
  208. //判定结果
  209. if(record.getConfigli3() != null){
  210. if(record.getConfigli3().length > 0){
  211. StringBuffer detectResults = new StringBuffer("");
  212. for (String configid : record.getConfigli3()){
  213. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  214. }
  215. record.setDetectResults(detectResults.toString());
  216. }
  217. }
  218. //故障指向
  219. if(record.getConfigli4() != null) {
  220. if (record.getConfigli4().length > 0) {
  221. StringBuffer detectPoint = new StringBuffer("");
  222. for (String configid : record.getConfigli4()) {
  223. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  224. }
  225. record.setDetectPoint(detectPoint.toString());
  226. }
  227. }
  228. //原因分析
  229. if(record.getConfigli5() != null) {
  230. if (record.getConfigli5().length > 0) {
  231. StringBuffer detectNalysis = new StringBuffer("");
  232. for (String configid : record.getConfigli5()) {
  233. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  234. }
  235. record.setDetectNalysis(detectNalysis.toString());
  236. }
  237. }
  238. if(complaintDetectInfoMapper.updateDetectById(record) > 0){
  239. if(imgs != null){
  240. if(imgs.length > 0){
  241. for(String img : imgs){
  242. ComplaintDetectImg detectImg = new ComplaintDetectImg();
  243. detectImg.setDetectId(record.getDetectId());
  244. detectImg.setDetectImgUrl(img);
  245. complaintDetectInfoMapper.addDetectImg(detectImg);
  246. }
  247. }
  248. }
  249. }
  250. }catch (Exception e){
  251. throw new RuntimeException("完成检测失败");
  252. }
  253. return 1;
  254. }
  255. //添加检测项
  256. public String adddetectItem(String configid,Integer detectId){
  257. DetectionConfig config = complaintDetectInfoMapper.getDetectionConfig(Integer.valueOf(configid));
  258. DetectionItem item = new DetectionItem();
  259. item.setDetectId(detectId);
  260. item.setItemConfigId(config.getConfigId());
  261. item.setItemDetectContent(config.getConfigDetectContent());
  262. complaintDetectInfoMapper.insertItem(item);
  263. return config.getConfigDetectContent();
  264. }
  265. @Override
  266. public PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest) {
  267. PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
  268. List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listComplaintDetect(pageRequest.getData());
  269. return PageUtil.getPage(detectList);
  270. }
  271. @Override
  272. public int insert(ComplaintDetectInfo record) {
  273. return complaintDetectInfoMapper.insert(record);
  274. }
  275. @Override
  276. public int deleteDetect(Integer detectId) {
  277. return complaintDetectInfoMapper.deleteDetect(detectId);
  278. }
  279. @Override
  280. public List<DetectionBasis> listDetectionBasis(DetectionBasis detectionBasis) {
  281. return complaintDetectInfoMapper.listDetectionBasis(detectionBasis);
  282. }
  283. @Override
  284. public int addDetectImg(ComplaintDetectImg complaintDetectImg) {
  285. return complaintDetectInfoMapper.addDetectImg(complaintDetectImg);
  286. }
  287. @Override
  288. public List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo detectInfo) {
  289. return complaintDetectInfoMapper.listComplaintDetect(detectInfo);
  290. }
  291. @Transactional
  292. @Override
  293. public boolean customerConfirm(ComplaintDetectInfo detectInfo,Admin admin) {
  294. ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
  295. /*ProcMethod procMethod = procMethodMapper.getProcMethodById(detectInfo.getProcMethodId());*/
  296. Calendar date = Calendar.getInstance();
  297. date.setTime(new Date());
  298. date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
  299. switch (detectInfo.getDetectState()){
  300. case 30:
  301. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  302. detectInfo.setDetectState(31);//同意付费维修
  303. detectInfo.setCompleteCutTime(date.getTime());
  304. }
  305. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  306. if(detect.getDetectRenovation() == 1){
  307. detectInfo.setDetectState(20);//待翻新
  308. }else{
  309. detectInfo.setDetectState(22);//待报废
  310. }
  311. }
  312. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  313. detectInfo.setDetectState(33);//
  314. }
  315. break;
  316. case 34:
  317. detectInfo.setDetectState(35);
  318. detectInfo.setCompleteCutTime(date.getTime());
  319. break;
  320. case 38:
  321. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  322. detectInfo.setDetectState(31);//同意付费维修
  323. detectInfo.setCompleteCutTime(date.getTime());
  324. }
  325. if(detectInfo.getDetectProcessingResults() == 2){//免费维修
  326. detectInfo.setDetectState(35);//同意免费维修
  327. detectInfo.setCompleteCutTime(date.getTime());
  328. }
  329. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  330. if(detect.getDetectRenovation() == 1){
  331. detectInfo.setDetectState(20);//待翻新
  332. }else{
  333. detectInfo.setDetectState(22);//待报废
  334. }
  335. }
  336. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  337. detectInfo.setDetectState(37);//原机退回
  338. }
  339. break;
  340. }
  341. try {
  342. if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
  343. if(detectInfo.getProcMethodId() != null && !"".equals(detectInfo.getProcMethodId())){
  344. CmRelation cmRelation = new CmRelation();
  345. cmRelation.setCustomerId(detectInfo.getCustomerId());
  346. cmRelation.setProcMethodId(detectInfo.getProcMethodId());
  347. if(customerInfoMapper.updateCmRelationProcMethod(cmRelation) > 0){
  348. return true;
  349. }
  350. }
  351. //添加客服操作记录
  352. TreatmentRecordLog log = new TreatmentRecordLog();
  353. log.setDetectId(detectInfo.getDetectId());
  354. log.setRecordAdminId(admin.getAdminId());
  355. log.setRecordDesc(detectInfo.getDetectCustomerDesc());
  356. log.setRecordProcessingResults(detectInfo.getDetectProcessingResults());
  357. complaintDetectInfoMapper.addTreatmentRecordLog(log);
  358. //发送确认短信
  359. String results = "";
  360. switch (detectInfo.getDetectProcessingResults()){
  361. case 1:
  362. results = "付费维修";
  363. break;
  364. case 2:
  365. results = "免费维修";
  366. break;
  367. case 3:
  368. results = "退货";
  369. break;
  370. case 4:
  371. results = "换货";
  372. break;
  373. case 5:
  374. results = "原机退回";
  375. break;
  376. }
  377. String text = MessageFormat.format(SmsConfig.CUSTOMER_CONFIRM, detect.getDetectNumber(),results);
  378. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  379. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送结果:"+result);
  380. return true;
  381. }
  382. }catch (Exception e){
  383. throw new RuntimeException("确认处理失败");
  384. }
  385. return false;
  386. }
  387. @Override
  388. public List<ComplaintDetectImg> listDetectImg(Integer detectId) {
  389. return complaintDetectInfoMapper.listDetectImg(detectId);
  390. }
  391. @Override
  392. public Integer getDetectNum() {
  393. return complaintDetectInfoMapper.getDetectNum();
  394. }
  395. @Override
  396. public List<MaterialNumberInfo> listMaterialNumber() {
  397. return complaintDetectInfoMapper.listMaterialNumber();
  398. }
  399. @Override
  400. public List<DetectionConfig> listDetectionConfig(Integer configType) {
  401. return complaintDetectInfoMapper.listDetectionConfig(configType);
  402. }
  403. @Override
  404. public DetectionConfig getDetectionConfig(Integer configId) {
  405. return complaintDetectInfoMapper.getDetectionConfig(configId);
  406. }
  407. @Override
  408. public Integer insertItem(DetectionItem detectionItem) {
  409. return complaintDetectInfoMapper.insertItem(detectionItem);
  410. }
  411. @Override
  412. public List<DetectionItem> listDetectionItem(DetectionItem detectionItem) {
  413. return complaintDetectInfoMapper.listDetectionItem(detectionItem);
  414. }
  415. @Override
  416. public Integer detectDetectionItem(Integer detectId) {
  417. return complaintDetectInfoMapper.detectDetectionItem(detectId);
  418. }
  419. @Override
  420. public MaterialNumberInfo getMaterialNumber(Integer materialId) {
  421. return complaintDetectInfoMapper.getMaterialNumber(materialId);
  422. }
  423. @Override
  424. public Integer addMaterialItem(MaterialItem materialItem) {
  425. return complaintDetectInfoMapper.addMaterialItem(materialItem);
  426. }
  427. @Override
  428. public List<MaterialItem> listMaterialItem(Integer detectId) {
  429. return complaintDetectInfoMapper.listMaterialItem(detectId);
  430. }
  431. @Override
  432. public Integer detectMaterialItem(Integer detectId) {
  433. return complaintDetectInfoMapper.detectMaterialItem(detectId);
  434. }
  435. @Override
  436. public Integer addQcInfo(QcInfo qcInfo) {
  437. return complaintDetectInfoMapper.addQcInfo(qcInfo);
  438. }
  439. @Override
  440. public List<QcInfo> listQcInfo(Integer detectId) {
  441. return complaintDetectInfoMapper.listQcInfo(detectId);
  442. }
  443. @Override
  444. public Integer addTreatmentRecordLog(TreatmentRecordLog treatmentRecordLog) {
  445. return complaintDetectInfoMapper.addTreatmentRecordLog(treatmentRecordLog);
  446. }
  447. @Override
  448. public List<TreatmentRecordLog> listTreatmentRecordLog(Integer detectId) {
  449. return complaintDetectInfoMapper.listTreatmentRecordLog(detectId);
  450. }
  451. }