ComplaintDetectInfoServiceImpl.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
  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.cm.SalesOrderItem;
  6. import com.iamberry.rst.core.fm.*;
  7. import com.iamberry.rst.core.order.OrderWarehouse;
  8. import com.iamberry.rst.core.page.PageRequest;
  9. import com.iamberry.rst.core.page.PagedResult;
  10. import com.iamberry.rst.core.sys.Admin;
  11. import com.iamberry.rst.faces.cm.InventoryService;
  12. import com.iamberry.rst.faces.cm.SalesOrderService;
  13. import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
  14. import com.iamberry.rst.faces.sms.SmsService;
  15. import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
  16. import com.iamberry.rst.service.cm.mapper.ProcMethodMapper;
  17. import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
  18. import com.iamberry.rst.service.fm.mapper.ComplaintMaintenanceInfoMapper;
  19. import com.iamberry.rst.service.sys.mapper.SysMapper;
  20. import com.iamberry.rst.util.PageUtil;
  21. import com.iamberry.rst.util.SmsConfig;
  22. import com.iamberry.wechat.core.entity.AdminUtils;
  23. import com.iamberry.wechat.tools.ResponseJson;
  24. import com.iamberry.wechat.tools.ResultInfo;
  25. import org.slf4j.Logger;
  26. import org.slf4j.LoggerFactory;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import java.text.MessageFormat;
  31. import java.text.SimpleDateFormat;
  32. import java.util.Calendar;
  33. import java.util.Date;
  34. import java.util.List;
  35. import java.util.Objects;
  36. @Service
  37. public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
  38. private Logger logger = LoggerFactory.getLogger(ComplaintDetectInfoServiceImpl.class);
  39. @Autowired
  40. private ComplaintDetectInfoMapper complaintDetectInfoMapper;
  41. @Autowired
  42. private CustomerInfoMapper customerInfoMapper;
  43. @Autowired
  44. private ProcMethodMapper procMethodMapper;
  45. @Autowired
  46. private SmsService smsService;
  47. @Autowired
  48. private SalesOrderService salesOrderService;
  49. @Autowired
  50. private InventoryService inventoryService;
  51. @Autowired
  52. private SysMapper sysMapper;
  53. @Override
  54. public ComplaintDetectInfo getDetectById(Integer detectId) {
  55. return complaintDetectInfoMapper.getDetectById(detectId);
  56. }
  57. @Override
  58. @Transactional
  59. public int updateDetectById(ComplaintDetectInfo record) {
  60. try {
  61. //删除旧检测项
  62. complaintDetectInfoMapper.detectDetectionItem(record.getDetectId());
  63. //删除旧维修配件项
  64. complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
  65. //封装检测信息
  66. //检测现象
  67. if(record.getConfigli1() != null) {
  68. if (record.getConfigli1().length > 0) {
  69. StringBuffer detectPhenomenon = new StringBuffer("");
  70. for (String configid : record.getConfigli1()) {
  71. detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
  72. }
  73. record.setDetectPhenomenon(detectPhenomenon.toString());
  74. }
  75. }else{
  76. record.setDetectPhenomenon("");
  77. }
  78. //故障原因
  79. if(record.getConfigli2() != null) {
  80. if (record.getConfigli2().length > 0) {
  81. StringBuffer detectFailureCause = new StringBuffer("");
  82. for (String configid : record.getConfigli2()) {
  83. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  84. }
  85. record.setDetectFailureCause(detectFailureCause.toString());
  86. }
  87. }else{
  88. record.setDetectFailureCause("");
  89. }
  90. //判定结果
  91. if(record.getConfigli3() != null){
  92. if(record.getConfigli3().length > 0){
  93. StringBuffer detectResults = new StringBuffer("");
  94. for (String configid : record.getConfigli3()){
  95. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  96. }
  97. record.setDetectResults(detectResults.toString());
  98. }
  99. }else{
  100. record.setDetectResults("");
  101. }
  102. //故障指向
  103. if(record.getConfigli4() != null) {
  104. if (record.getConfigli4().length > 0) {
  105. StringBuffer detectPoint = new StringBuffer("");
  106. for (String configid : record.getConfigli4()) {
  107. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  108. }
  109. record.setDetectPoint(detectPoint.toString());
  110. }
  111. }else{
  112. record.setDetectPoint("");
  113. }
  114. //原因分析
  115. if(record.getConfigli5() != null) {
  116. if (record.getConfigli5().length > 0) {
  117. StringBuffer detectNalysis = new StringBuffer("");
  118. for (String configid : record.getConfigli5()) {
  119. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  120. }
  121. record.setDetectNalysis(detectNalysis.toString());
  122. }
  123. }else{
  124. record.setDetectNalysis("");
  125. }
  126. //维修配件
  127. if(record.getConfigli6() != null) {
  128. if (record.getConfigli6().length > 0) {
  129. for (String configid : record.getConfigli6()) {
  130. MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
  131. MaterialItem materialItem = new MaterialItem();
  132. materialItem.setDetectId(record.getDetectId());
  133. materialItem.setMaterialId(Integer.valueOf(configid));
  134. materialItem.setMaterialName(materialNumberInfo.getMaterialName());
  135. complaintDetectInfoMapper.addMaterialItem(materialItem);
  136. }
  137. }
  138. }
  139. }catch (Exception e){
  140. throw new RuntimeException("修改检测失败");
  141. }
  142. return complaintDetectInfoMapper.updateDetectById(record);
  143. }
  144. @Override
  145. @Transactional
  146. public int updateDetectContent(ComplaintDetectInfo record) {
  147. complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
  148. try {
  149. //维修配件
  150. if(record.getConfigli6() != null) {
  151. if (record.getConfigli6().length > 0) {
  152. for (String configid : record.getConfigli6()) {
  153. MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
  154. MaterialItem materialItem = new MaterialItem();
  155. materialItem.setDetectId(record.getDetectId());
  156. materialItem.setMaterialId(Integer.valueOf(configid));
  157. materialItem.setMaterialName(materialNumberInfo.getMaterialName());
  158. complaintDetectInfoMapper.addMaterialItem(materialItem);
  159. }
  160. }
  161. }
  162. //故障原因
  163. if(record.getConfigli2() != null) {
  164. if (record.getConfigli2().length > 0) {
  165. StringBuffer detectFailureCause = new StringBuffer("");
  166. for (String configid : record.getConfigli2()) {
  167. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  168. }
  169. record.setDetectFailureCause(detectFailureCause.toString());
  170. }
  171. }
  172. //判定结果
  173. if(record.getConfigli3() != null){
  174. if(record.getConfigli3().length > 0){
  175. StringBuffer detectResults = new StringBuffer("");
  176. for (String configid : record.getConfigli3()){
  177. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  178. }
  179. record.setDetectResults(detectResults.toString());
  180. }
  181. }
  182. //故障指向
  183. if(record.getConfigli4() != null) {
  184. if (record.getConfigli4().length > 0) {
  185. StringBuffer detectPoint = new StringBuffer("");
  186. for (String configid : record.getConfigli4()) {
  187. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  188. }
  189. record.setDetectPoint(detectPoint.toString());
  190. }
  191. }
  192. //原因分析
  193. if(record.getConfigli5() != null) {
  194. if (record.getConfigli5().length > 0) {
  195. StringBuffer detectNalysis = new StringBuffer("");
  196. for (String configid : record.getConfigli5()) {
  197. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  198. }
  199. record.setDetectNalysis(detectNalysis.toString());
  200. }
  201. }
  202. }catch (Exception e){
  203. throw new RuntimeException("修改检测维修内容失败");
  204. }
  205. return complaintDetectInfoMapper.updateDetectById(record);
  206. }
  207. @Override
  208. @Transactional
  209. public int updateDetectQc(ComplaintDetectInfo record) {
  210. ComplaintDetectInfo comdi = complaintDetectInfoMapper.getDetectByIdFast(record.getDetectId());
  211. if(comdi == null){
  212. throw new RuntimeException("查询维修记录失败");
  213. }
  214. if(comdi.getMaintenanceResults() != null && comdi.getMaintenanceResults() == 1){
  215. throw new RuntimeException("该机器已通过QC检测");
  216. }
  217. Integer flag = 0;
  218. //添加日志
  219. QcInfo qcInfo = new QcInfo();
  220. qcInfo.setDetectId(record.getDetectId());
  221. qcInfo.setQcIsThrough(record.getMaintenanceResults());
  222. qcInfo.setQcInfoDesc(record.getQcDesc());
  223. flag = complaintDetectInfoMapper.addQcInfo(qcInfo);
  224. if(flag < 1){
  225. throw new RuntimeException("添加QC检测记录失败");
  226. }
  227. flag = complaintDetectInfoMapper.updateDetectById(record);
  228. if(flag < 1){
  229. throw new RuntimeException("修改QC检测状态");
  230. }
  231. if(record.getMaintenanceResults() == 1){ //maintenanceResults
  232. //判断是否为维修
  233. ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  234. if(cdi.getProcTypeId() == 3){ //3: 维修
  235. //减去售后仓库不良品
  236. InventoryInfo inventoryInfo1 = new InventoryInfo();
  237. inventoryInfo1.setInventoryDefectiveProductNum(1);
  238. inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
  239. inventoryInfo1.setWarehouseId(2);
  240. inventoryInfo1.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
  241. inventoryService.minusInventory(inventoryInfo1);
  242. //增加售后仓库的良品
  243. InventoryInfo inventoryInfo2 = new InventoryInfo();
  244. inventoryInfo2.setInventoryGoodProductNum(1);
  245. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  246. inventoryInfo2.setWarehouseId(2);
  247. inventoryInfo2.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
  248. inventoryService.addInventory(inventoryInfo2);
  249. }else{ //退货等
  250. //减去售后仓库不良品
  251. InventoryInfo inventoryInfo1 = new InventoryInfo();
  252. inventoryInfo1.setInventoryDefectiveProductNum(1);
  253. inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
  254. inventoryInfo1.setWarehouseId(2);
  255. inventoryInfo1.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
  256. inventoryService.minusInventory(inventoryInfo1);
  257. //增加销售仓库的良品
  258. InventoryInfo inventoryInfo2 = new InventoryInfo();
  259. inventoryInfo2.setInventoryGoodProductNum(1);
  260. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  261. inventoryInfo2.setWarehouseId(1);
  262. inventoryInfo2.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
  263. inventoryService.addInventory(inventoryInfo2);
  264. }
  265. }
  266. return flag;
  267. }
  268. @Transactional
  269. @Override
  270. public int updateDetectById(ComplaintDetectInfo record,String[] imgs) {
  271. //判断售后流程
  272. /*if(record.getCustomerId() == null){
  273. if(record.getDetectRenovation() == 1){
  274. record.setDetectState(20);//待翻新入库
  275. }else{
  276. record.setDetectState(22);//不能翻新,待报废
  277. }
  278. }else{*/
  279. ProcMethod procMethod;
  280. Integer procTypeId;
  281. //判断是签收生成还是手动添加
  282. ComplaintDetectInfo complaintDetectInfo = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  283. if(complaintDetectInfo.getDetectSource() == 2){//手动添加
  284. procMethod = procMethodMapper.getProcMethodById(complaintDetectInfo.getMethodId());
  285. }else{
  286. CmRelation cmRelation = new CmRelation();
  287. cmRelation.setCustomerId(record.getCustomerId());
  288. cmRelation = customerInfoMapper.getCmRelationInfo(cmRelation);
  289. procMethod = procMethodMapper.getProcMethodById(cmRelation.getProcMethodId());
  290. }
  291. procTypeId = procMethod.getProcTypeId();
  292. switch (procTypeId){
  293. case 3://维修
  294. if(procMethod.getProcMethodIsCharge() == 0){//待定
  295. if(record.getIsMaintenance() == 1){
  296. record.setDetectState(38);//机器故障,待用户确认
  297. }else if(record.getIsMaintenance() == 2){
  298. record.setDetectState(37);//机器无故障,原机退回
  299. }
  300. }else if(procMethod.getProcMethodIsCharge() == 1){//付费
  301. record.setDetectState(30);//待用户确认
  302. }else if(procMethod.getProcMethodIsCharge() == 2){//免费
  303. record.setDetectState(34);//待客服确认维修
  304. }
  305. break;
  306. default:
  307. String processingResults = "";
  308. String text = "";
  309. if(record.getDetectRenovation() == 1){//是否可翻新 1可翻新 2不可翻新
  310. record.setDetectState(20);//待翻新入库
  311. processingResults = "维修";
  312. }else if(record.getDetectRenovation() == 2){
  313. record.setDetectState(22);//不能翻新,待报废
  314. processingResults = "报废";
  315. }
  316. //查询维修编号
  317. ComplaintDetectInfo info = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  318. //客诉状态为换货或退货时完成检测需要短信通知维修人员
  319. if(procTypeId == 2){//换货
  320. text = MessageFormat.format(SmsConfig.CUSTOMER_EXCHANGE, info.getDetectNumber(),processingResults);
  321. }
  322. if(procTypeId == 4){//退货
  323. text = MessageFormat.format(SmsConfig.CUSTOMER_RETURN, info.getDetectNumber(),processingResults);
  324. }
  325. if(procTypeId == 2 || procTypeId == 4){
  326. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  327. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送完成检测结果("+processingResults+"):"+result);
  328. }
  329. }
  330. /*}*/
  331. try {
  332. //封装检测信息
  333. //检测现象
  334. if(record.getConfigli1() != null) {
  335. if (record.getConfigli1().length > 0) {
  336. StringBuffer detectPhenomenon = new StringBuffer("");
  337. for (String configid : record.getConfigli1()) {
  338. detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
  339. }
  340. record.setDetectPhenomenon(detectPhenomenon.toString());
  341. }
  342. }
  343. if(complaintDetectInfoMapper.updateDetectById(record) > 0){
  344. if(imgs != null){
  345. if(imgs.length > 0){
  346. for(String img : imgs){
  347. ComplaintDetectImg detectImg = new ComplaintDetectImg();
  348. detectImg.setDetectId(record.getDetectId());
  349. detectImg.setDetectImgUrl(img);
  350. complaintDetectInfoMapper.addDetectImg(detectImg);
  351. }
  352. }
  353. }
  354. }
  355. if(complaintDetectInfo.getDetectSource() == 2){//手动添加需要给业务员发送短信
  356. //发送短信通知维修检测人员
  357. if(record.getDetectState() == 30 || record.getDetectState() == 34|| record.getDetectState() == 38){
  358. String text = MessageFormat.format(SmsConfig.NOTIFY_SALESMAN, complaintDetectInfo.getDetectName()+complaintDetectInfo.getDetectTel(), ResultInfo.DETECT_MSG+complaintDetectInfo.getDetectId());
  359. Admin admin = new Admin();
  360. admin.setAdminId(complaintDetectInfo.getSalesmanAdminId());
  361. admin = sysMapper.get(admin);
  362. String result = smsService.sendOtherCMS(admin.getAdminTel(), text);
  363. logger.info("给 " + complaintDetectInfo.getDetectTel() + " 手机用户发送短信:" + text+"发送通知业务员选择处理方式:"+result+"维修id:"+record.getDetectId());
  364. }
  365. }
  366. }catch (Exception e){
  367. throw new RuntimeException("完成检测失败");
  368. }
  369. return 1;
  370. }
  371. //添加检测项
  372. public String adddetectItem(String configid,Integer detectId){
  373. DetectionConfig config = complaintDetectInfoMapper.getDetectionConfig(Integer.valueOf(configid));
  374. DetectionItem item = new DetectionItem();
  375. item.setDetectId(detectId);
  376. item.setItemConfigId(config.getConfigId());
  377. item.setItemDetectContent(config.getConfigDetectContent());
  378. complaintDetectInfoMapper.insertItem(item);
  379. return config.getConfigDetectContent();
  380. }
  381. @Override
  382. public PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest) {
  383. PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
  384. List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listComplaintDetect(pageRequest.getData());
  385. return PageUtil.getPage(detectList);
  386. }
  387. @Override
  388. public int insert(ComplaintDetectInfo record) {
  389. return complaintDetectInfoMapper.insert(record);
  390. }
  391. @Override
  392. public int deleteDetect(Integer detectId) {
  393. return complaintDetectInfoMapper.deleteDetect(detectId);
  394. }
  395. @Override
  396. public List<DetectionBasis> listDetectionBasis(DetectionBasis detectionBasis) {
  397. return complaintDetectInfoMapper.listDetectionBasis(detectionBasis);
  398. }
  399. @Override
  400. public int addDetectImg(ComplaintDetectImg complaintDetectImg) {
  401. return complaintDetectInfoMapper.addDetectImg(complaintDetectImg);
  402. }
  403. @Override
  404. public List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo detectInfo) {
  405. return complaintDetectInfoMapper.listComplaintDetect(detectInfo);
  406. }
  407. @Transactional
  408. @Override
  409. public boolean customerConfirm(ComplaintDetectInfo detectInfo,Admin admin) {
  410. ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
  411. /*ProcMethod procMethod = procMethodMapper.getProcMethodById(detectInfo.getProcMethodId());*/
  412. //计算待维修完成时间
  413. Calendar date = Calendar.getInstance();
  414. date.setTime(new Date());
  415. boolean fl = false;
  416. for (int i = 1 ; i <= 5; i++){
  417. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  418. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  419. if(week == 1){
  420. fl = true;
  421. }
  422. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  423. }
  424. if(fl){
  425. date.set(Calendar.DATE, date.get(Calendar.DATE) + 6);
  426. }else{
  427. date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
  428. }
  429. switch (detectInfo.getDetectState()){
  430. case 30:
  431. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  432. detectInfo.setDetectState(31);//同意付费维修
  433. detectInfo.setCompleteCutTime(date.getTime());
  434. }
  435. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  436. if(detect.getDetectRenovation() == 1){
  437. detectInfo.setDetectState(20);//待翻新
  438. }else{
  439. detectInfo.setDetectState(22);//待报废
  440. }
  441. }
  442. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  443. detectInfo.setDetectState(33);//
  444. }
  445. break;
  446. case 34:
  447. detectInfo.setDetectState(35);
  448. detectInfo.setCompleteCutTime(date.getTime());
  449. break;
  450. case 38:
  451. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  452. detectInfo.setDetectState(31);//同意付费维修
  453. detectInfo.setCompleteCutTime(date.getTime());
  454. }
  455. if(detectInfo.getDetectProcessingResults() == 2){//免费维修
  456. detectInfo.setDetectState(35);//同意免费维修
  457. detectInfo.setCompleteCutTime(date.getTime());
  458. }
  459. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  460. if(detect.getDetectRenovation() == 1){
  461. detectInfo.setDetectState(20);//待翻新
  462. }else{
  463. detectInfo.setDetectState(22);//待报废
  464. }
  465. }
  466. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  467. detectInfo.setDetectState(37);//原机退回
  468. }
  469. break;
  470. }
  471. try {
  472. if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
  473. if(detectInfo.getProcMethodId() != null && !"".equals(detectInfo.getProcMethodId())){
  474. CmRelation cmRelation = new CmRelation();
  475. cmRelation.setCustomerId(detectInfo.getCustomerId());
  476. cmRelation.setProcMethodId(detectInfo.getProcMethodId());
  477. if(customerInfoMapper.updateCmRelationProcMethod(cmRelation) > 0){
  478. return true;
  479. }
  480. }
  481. //添加客服操作记录
  482. TreatmentRecordLog log = new TreatmentRecordLog();
  483. log.setDetectId(detectInfo.getDetectId());
  484. log.setRecordAdminId(admin.getAdminId());
  485. log.setRecordDesc(detectInfo.getDetectCustomerDesc());
  486. log.setRecordProcessingResults(detectInfo.getDetectProcessingResults());
  487. complaintDetectInfoMapper.addTreatmentRecordLog(log);
  488. //发送确认短信
  489. String results = "";
  490. switch (detectInfo.getDetectProcessingResults()){
  491. case 1:
  492. results = "付费维修";
  493. break;
  494. case 2:
  495. results = "免费维修";
  496. break;
  497. case 3:
  498. results = "退货";
  499. break;
  500. case 4:
  501. results = "换货";
  502. break;
  503. case 5:
  504. results = "原机退回";
  505. break;
  506. }
  507. String text = MessageFormat.format(SmsConfig.CUSTOMER_CONFIRM, detect.getDetectNumber(),results);
  508. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  509. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送结果:"+result);
  510. return true;
  511. }
  512. }catch (Exception e){
  513. throw new RuntimeException("确认处理失败");
  514. }
  515. return false;
  516. }
  517. @Transactional
  518. @Override
  519. public boolean salesmanConfirm(ComplaintDetectInfo detectInfo) {
  520. ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
  521. if(detect.getDetectState() != 30 && detect.getDetectState() != 34 && detect.getDetectState() != 38){
  522. return false;
  523. }
  524. //计算待维修完成时间
  525. Calendar date = Calendar.getInstance();
  526. date.setTime(new Date());
  527. boolean fl = false;
  528. for (int i = 1 ; i <= 5; i++){
  529. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  530. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  531. if(week == 1){
  532. fl = true;
  533. }
  534. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  535. }
  536. if(fl){
  537. date.set(Calendar.DATE, date.get(Calendar.DATE) + 6);
  538. }else{
  539. date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
  540. }
  541. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  542. detectInfo.setDetectState(31);//同意付费维修
  543. detectInfo.setCompleteCutTime(date.getTime());
  544. }else if(detectInfo.getDetectProcessingResults() == 2){//免费维修
  545. detectInfo.setDetectState(35);//同意付费维修
  546. detectInfo.setCompleteCutTime(date.getTime());
  547. }
  548. if(detectInfo.getDetectProcessingResults() == 3 || detect.getDetectProcessingResults() == 4){//退货、换货
  549. if(detect.getDetectRenovation() == 1){
  550. detectInfo.setDetectState(20);//待翻新
  551. }else{
  552. detectInfo.setDetectState(22);//待报废
  553. }
  554. }
  555. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  556. detectInfo.setDetectState(33);//
  557. }
  558. try {
  559. if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
  560. //添加业务员操作记录
  561. TreatmentRecordLog log = new TreatmentRecordLog();
  562. log.setDetectId(detectInfo.getDetectId());
  563. log.setRecordAdminId(detect.getSalesmanAdminId());
  564. log.setRecordDesc(detect.getDetectCustomerDesc());
  565. log.setRecordProcessingResults(detect.getDetectProcessingResults());
  566. complaintDetectInfoMapper.addTreatmentRecordLog(log);
  567. //发送确认短信
  568. String results = "";
  569. switch (detectInfo.getDetectProcessingResults()){
  570. case 1:
  571. results = "付费维修";
  572. break;
  573. case 2:
  574. results = "免费维修";
  575. break;
  576. case 3:
  577. results = "退货";
  578. break;
  579. case 4:
  580. results = "换货";
  581. break;
  582. case 5:
  583. results = "原机退回";
  584. break;
  585. }
  586. String text = MessageFormat.format(SmsConfig.CUSTOMER_CONFIRM, detect.getDetectNumber(),results);
  587. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  588. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送结果:"+result);
  589. return true;
  590. }
  591. }catch (Exception e){
  592. throw new RuntimeException("确认处理失败");
  593. }
  594. return false;
  595. }
  596. @Override
  597. public List<ComplaintDetectImg> listDetectImg(Integer detectId) {
  598. return complaintDetectInfoMapper.listDetectImg(detectId);
  599. }
  600. @Override
  601. public Integer getDetectNum() {
  602. return complaintDetectInfoMapper.getDetectNum();
  603. }
  604. @Override
  605. public List<MaterialNumberInfo> listMaterialNumber() {
  606. return complaintDetectInfoMapper.listMaterialNumber();
  607. }
  608. @Override
  609. public List<DetectionConfig> listDetectionConfig(Integer configType) {
  610. return complaintDetectInfoMapper.listDetectionConfig(configType);
  611. }
  612. @Override
  613. public DetectionConfig getDetectionConfig(Integer configId) {
  614. return complaintDetectInfoMapper.getDetectionConfig(configId);
  615. }
  616. @Override
  617. public Integer insertItem(DetectionItem detectionItem) {
  618. return complaintDetectInfoMapper.insertItem(detectionItem);
  619. }
  620. @Override
  621. public List<DetectionItem> listDetectionItem(DetectionItem detectionItem) {
  622. return complaintDetectInfoMapper.listDetectionItem(detectionItem);
  623. }
  624. @Override
  625. public Integer detectDetectionItem(Integer detectId) {
  626. return complaintDetectInfoMapper.detectDetectionItem(detectId);
  627. }
  628. @Override
  629. public MaterialNumberInfo getMaterialNumber(Integer materialId) {
  630. return complaintDetectInfoMapper.getMaterialNumber(materialId);
  631. }
  632. @Override
  633. public Integer addMaterialItem(MaterialItem materialItem) {
  634. return complaintDetectInfoMapper.addMaterialItem(materialItem);
  635. }
  636. @Override
  637. public List<MaterialItem> listMaterialItem(Integer detectId) {
  638. return complaintDetectInfoMapper.listMaterialItem(detectId);
  639. }
  640. @Override
  641. public Integer detectMaterialItem(Integer detectId) {
  642. return complaintDetectInfoMapper.detectMaterialItem(detectId);
  643. }
  644. @Override
  645. public Integer addQcInfo(QcInfo qcInfo) {
  646. return complaintDetectInfoMapper.addQcInfo(qcInfo);
  647. }
  648. @Override
  649. public List<QcInfo> listQcInfo(Integer detectId) {
  650. return complaintDetectInfoMapper.listQcInfo(detectId);
  651. }
  652. @Override
  653. public Integer addTreatmentRecordLog(TreatmentRecordLog treatmentRecordLog) {
  654. return complaintDetectInfoMapper.addTreatmentRecordLog(treatmentRecordLog);
  655. }
  656. @Override
  657. public List<TreatmentRecordLog> listTreatmentRecordLog(Integer detectId) {
  658. return complaintDetectInfoMapper.listTreatmentRecordLog(detectId);
  659. }
  660. @Override
  661. public ComplaintAfterSalesNum getCustomerDetectNum(ComplaintDetectInfo detect) {
  662. return complaintDetectInfoMapper.getCustomerDetectNum(detect);
  663. }
  664. @Override
  665. @Transactional
  666. public Integer updatePrint(ComplaintDetectInfo detectInfo) {
  667. ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectByIdFast(detectInfo.getDetectId());
  668. if(cdi == null){
  669. return 0;
  670. }
  671. Integer flag = complaintDetectInfoMapper.updateDetectById(detectInfo);
  672. if(flag < 1){
  673. return flag;
  674. }
  675. if(detectInfo.getDetectState() != null && detectInfo.getDetectState() != 0){
  676. if(!Objects.equals(cdi.getDetectState(), detectInfo.getDetectState())){ //修改状态时判断状态,来调整库存
  677. switch (detectInfo.getDetectState()){ //detectState
  678. case 23: //报废完成-减少不良品数量
  679. InventoryInfo inventoryInfo2 = new InventoryInfo();
  680. inventoryInfo2.setInventoryDefectiveProductNum(1);
  681. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  682. inventoryInfo2.setWarehouseId(2);
  683. inventoryInfo2.setInventoryRecentRecord("产品报废(维修ID:"+detectInfo.getDetectNumber()+")");
  684. flag = inventoryService.minusInventory(inventoryInfo2);
  685. if(flag < 1){
  686. throw new RuntimeException("签收失败,更新库存失败。");
  687. }
  688. break;
  689. default:
  690. break;
  691. }
  692. }
  693. }
  694. return flag;
  695. }
  696. @Override
  697. public List<ComplaintDetectInfo> listDetectByCustomerId(Integer customerId) {
  698. return complaintDetectInfoMapper.listDetectByCustomerId(customerId);
  699. }
  700. @Override
  701. public List<ComplaintDetectInfo> listComplaintDetectBySalesId(String detectSalesId) {
  702. return complaintDetectInfoMapper.listComplaintDetectBySalesId(detectSalesId);
  703. }
  704. @Override
  705. public ComplaintAfterSalesNum getDetectCount() {
  706. return complaintDetectInfoMapper.getDetectCount();
  707. }
  708. @Override
  709. public List<ComplaintDetectInfo> listMaintenanceCutNotice() {
  710. return complaintDetectInfoMapper.listMaintenanceCutNotice();
  711. }
  712. @Override
  713. public List<ComplaintDetectInfo> listCompleteCutNotice() {
  714. return complaintDetectInfoMapper.listCompleteCutNotice();
  715. }
  716. @Override
  717. public Integer perfectDetect(ComplaintDetectInfo detectInfo) {
  718. return complaintDetectInfoMapper.updateDetectById(detectInfo);
  719. }
  720. @Override
  721. public Integer addConfig(DetectionConfig detectionConfig) {
  722. return complaintDetectInfoMapper.addConfig(detectionConfig);
  723. }
  724. @Override
  725. public Integer addMaterial(MaterialNumberInfo materialNumberInfo) {
  726. return complaintDetectInfoMapper.addMaterial(materialNumberInfo);
  727. }
  728. }