ComplaintDetectInfoServiceImpl.java 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165
  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.CompanyInfo;
  5. import com.iamberry.rst.core.cm.ProcMethod;
  6. import com.iamberry.rst.core.cm.SalesOrderItem;
  7. import com.iamberry.rst.core.fm.*;
  8. import com.iamberry.rst.core.order.OrderWarehouse;
  9. import com.iamberry.rst.core.order.Product;
  10. import com.iamberry.rst.core.page.PageRequest;
  11. import com.iamberry.rst.core.page.PagedResult;
  12. import com.iamberry.rst.core.pts.Produce;
  13. import com.iamberry.rst.core.sys.Admin;
  14. import com.iamberry.rst.faces.cm.InventoryService;
  15. import com.iamberry.rst.faces.cm.SalesOrderService;
  16. import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
  17. import com.iamberry.rst.faces.sms.SmsService;
  18. import com.iamberry.rst.service.cm.mapper.*;
  19. import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
  20. import com.iamberry.rst.service.fm.mapper.ComplaintMaintenanceInfoMapper;
  21. import com.iamberry.rst.service.fm.mapper.DetectCustmoerPhenomenonMapper;
  22. import com.iamberry.rst.service.fm.mapper.DetectTransportMapper;
  23. import com.iamberry.rst.service.product.mapper.ProductMapper;
  24. import com.iamberry.rst.service.pts.mapper.ProduceMapper;
  25. import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
  26. import com.iamberry.rst.service.sys.mapper.SysMapper;
  27. import com.iamberry.rst.util.PageUtil;
  28. import com.iamberry.rst.util.SmsConfig;
  29. import com.iamberry.wechat.core.entity.AdminUtils;
  30. import com.iamberry.wechat.tools.DateTimeUtil;
  31. import com.iamberry.wechat.tools.ResponseJson;
  32. import com.iamberry.wechat.tools.ResultInfo;
  33. import org.slf4j.Logger;
  34. import org.slf4j.LoggerFactory;
  35. import org.springframework.beans.factory.annotation.Autowired;
  36. import org.springframework.stereotype.Service;
  37. import org.springframework.transaction.annotation.Isolation;
  38. import org.springframework.transaction.annotation.Transactional;
  39. import java.text.MessageFormat;
  40. import java.text.SimpleDateFormat;
  41. import java.util.Calendar;
  42. import java.util.Date;
  43. import java.util.List;
  44. import java.util.Objects;
  45. @Service
  46. public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
  47. private Logger logger = LoggerFactory.getLogger(ComplaintDetectInfoServiceImpl.class);
  48. @Autowired
  49. private ComplaintDetectInfoMapper complaintDetectInfoMapper;
  50. @Autowired
  51. private CustomerInfoMapper customerInfoMapper;
  52. @Autowired
  53. private ProcMethodMapper procMethodMapper;
  54. @Autowired
  55. private SmsService smsService;
  56. @Autowired
  57. private SalesOrderService salesOrderService;
  58. @Autowired
  59. private InventoryService inventoryService;
  60. @Autowired
  61. private SysMapper sysMapper;
  62. @Autowired
  63. private MaintainPhenomenonMapper phenomenonMapper;
  64. @Autowired
  65. private CompanyInfoMapper companyInfoMapper;
  66. @Autowired
  67. private StoreInfoMapper storeInfoMapper;
  68. @Autowired
  69. private ProductMapper productMapper;
  70. @Autowired
  71. private ProduceMapper produceMapper;
  72. @Autowired
  73. private SysConfigMapper sysConfigMapper;
  74. @Autowired
  75. private DetectCustmoerPhenomenonMapper detectCustmoerPhenomenonMapper;
  76. @Autowired
  77. private DetectTransportMapper detectTransportMapper;
  78. @Override
  79. public ComplaintDetectInfo getDetectByMachine(String machine) {
  80. return complaintDetectInfoMapper.getDetectByMachine(machine);
  81. }
  82. @Override
  83. public ComplaintDetectInfo getDetectById(Integer detectId) {
  84. ComplaintDetectInfo res = complaintDetectInfoMapper.getDetectById(detectId);
  85. if (res == null) {
  86. return res;
  87. }
  88. if (res.getSalesmanAdminId() != null) {
  89. Admin temp = new Admin();
  90. temp.setAdminId(res.getSalesmanAdminId());
  91. res.setSalesmanAdminName(sysMapper.get(temp).getAdminName());
  92. }
  93. res.setPhenomena(complaintDetectInfoMapper.listDetectPhenomenon(detectId));
  94. res.setTransport(detectTransportMapper.get(detectId));
  95. return res;
  96. }
  97. @Override
  98. @Transactional
  99. public int updateDetectById(ComplaintDetectInfo record) {
  100. try {
  101. //删除旧检测项
  102. complaintDetectInfoMapper.detectDetectionItem(record.getDetectId());
  103. //删除旧维修配件项
  104. complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
  105. //封装检测信息
  106. //检测现象
  107. if(record.getConfigli1() != null) {
  108. if (record.getConfigli1().length > 0) {
  109. StringBuffer detectPhenomenon = new StringBuffer("");
  110. for (String configid : record.getConfigli1()) {
  111. detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
  112. }
  113. record.setDetectPhenomenon(detectPhenomenon.toString());
  114. }
  115. }else{
  116. record.setDetectPhenomenon("");
  117. }
  118. //故障原因
  119. if(record.getConfigli2() != null) {
  120. if (record.getConfigli2().length > 0) {
  121. StringBuffer detectFailureCause = new StringBuffer("");
  122. for (String configid : record.getConfigli2()) {
  123. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  124. }
  125. record.setDetectFailureCause(detectFailureCause.toString());
  126. }
  127. }else{
  128. record.setDetectFailureCause("");
  129. }
  130. //判定结果
  131. if(record.getConfigli3() != null){
  132. if(record.getConfigli3().length > 0){
  133. StringBuffer detectResults = new StringBuffer("");
  134. for (String configid : record.getConfigli3()){
  135. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  136. }
  137. record.setDetectResults(detectResults.toString());
  138. }
  139. }else{
  140. record.setDetectResults("");
  141. }
  142. //故障指向
  143. if(record.getConfigli4() != null) {
  144. if (record.getConfigli4().length > 0) {
  145. StringBuffer detectPoint = new StringBuffer("");
  146. for (String configid : record.getConfigli4()) {
  147. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  148. }
  149. record.setDetectPoint(detectPoint.toString());
  150. }
  151. }else{
  152. record.setDetectPoint("");
  153. }
  154. //原因分析
  155. if(record.getConfigli5() != null) {
  156. if (record.getConfigli5().length > 0) {
  157. StringBuffer detectNalysis = new StringBuffer("");
  158. for (String configid : record.getConfigli5()) {
  159. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  160. }
  161. record.setDetectNalysis(detectNalysis.toString());
  162. }
  163. }else{
  164. record.setDetectNalysis("");
  165. }
  166. //维修配件
  167. if(record.getConfigli6() != null) {
  168. if (record.getConfigli6().length > 0) {
  169. for (String configid : record.getConfigli6()) {
  170. MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
  171. MaterialItem materialItem = new MaterialItem();
  172. materialItem.setDetectId(record.getDetectId());
  173. materialItem.setMaterialId(Integer.valueOf(configid));
  174. materialItem.setMaterialName(materialNumberInfo.getMaterialName());
  175. complaintDetectInfoMapper.addMaterialItem(materialItem);
  176. }
  177. }
  178. }
  179. }catch (Exception e){
  180. e.printStackTrace();
  181. throw new RuntimeException("修改检测失败");
  182. }
  183. return complaintDetectInfoMapper.updateDetectById(record);
  184. }
  185. @Override
  186. @Transactional
  187. public int updateDetectContent(ComplaintDetectInfo record) {
  188. complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
  189. try {
  190. //维修配件
  191. if(record.getConfigli6() != null) {
  192. if (record.getConfigli6().length > 0) {
  193. for (String configid : record.getConfigli6()) {
  194. MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
  195. MaterialItem materialItem = new MaterialItem();
  196. materialItem.setDetectId(record.getDetectId());
  197. materialItem.setMaterialId(Integer.valueOf(configid));
  198. materialItem.setMaterialName(materialNumberInfo.getMaterialName());
  199. complaintDetectInfoMapper.addMaterialItem(materialItem);
  200. }
  201. }
  202. }
  203. //故障原因
  204. if(record.getConfigli2() != null) {
  205. if (record.getConfigli2().length > 0) {
  206. StringBuffer detectFailureCause = new StringBuffer("");
  207. for (String configid : record.getConfigli2()) {
  208. detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
  209. }
  210. record.setDetectFailureCause(detectFailureCause.toString());
  211. }
  212. }
  213. //判定结果
  214. if(record.getConfigli3() != null){
  215. if(record.getConfigli3().length > 0){
  216. StringBuffer detectResults = new StringBuffer("");
  217. for (String configid : record.getConfigli3()){
  218. detectResults.append(adddetectItem(configid,record.getDetectId())+";");
  219. }
  220. record.setDetectResults(detectResults.toString());
  221. }
  222. }
  223. //故障指向
  224. if(record.getConfigli4() != null) {
  225. if (record.getConfigli4().length > 0) {
  226. StringBuffer detectPoint = new StringBuffer("");
  227. for (String configid : record.getConfigli4()) {
  228. detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
  229. }
  230. record.setDetectPoint(detectPoint.toString());
  231. }
  232. }
  233. //原因分析
  234. if(record.getConfigli5() != null) {
  235. if (record.getConfigli5().length > 0) {
  236. StringBuffer detectNalysis = new StringBuffer("");
  237. for (String configid : record.getConfigli5()) {
  238. detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
  239. }
  240. record.setDetectNalysis(detectNalysis.toString());
  241. }
  242. }
  243. }catch (Exception e){
  244. e.printStackTrace();
  245. throw new RuntimeException("修改检测维修内容失败");
  246. }
  247. return complaintDetectInfoMapper.updateDetectById(record);
  248. }
  249. @Override
  250. @Transactional
  251. public int updateDetectQc(ComplaintDetectInfo record) {
  252. ComplaintDetectInfo comdi = complaintDetectInfoMapper.getDetectByIdFast(record.getDetectId());
  253. record.setDetectNumber(comdi.getDetectNumber());
  254. if(comdi == null){
  255. throw new RuntimeException("查询维修记录失败");
  256. }
  257. if(comdi.getMaintenanceResults() != null && comdi.getMaintenanceResults() == 1){
  258. throw new RuntimeException("该机器已通过QC检测");
  259. }
  260. Integer flag = 0;
  261. //添加日志
  262. QcInfo qcInfo = new QcInfo();
  263. qcInfo.setDetectId(record.getDetectId());
  264. qcInfo.setQcIsThrough(record.getMaintenanceResults());
  265. qcInfo.setQcInfoDesc(record.getQcDesc());
  266. flag = complaintDetectInfoMapper.addQcInfo(qcInfo);
  267. if(flag < 1){
  268. throw new RuntimeException("添加QC检测记录失败");
  269. }
  270. flag = complaintDetectInfoMapper.updateDetectById(record);
  271. if(flag < 1){
  272. throw new RuntimeException("修改QC检测状态");
  273. }
  274. if(record.getMaintenanceResults() == 1){
  275. //maintenanceResults
  276. //判断是否为维修
  277. ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  278. Integer typeId = cdi.getProcTypeId();
  279. if(typeId == null){
  280. typeId = cdi.getTypeId();
  281. }
  282. if(typeId != null){
  283. if(typeId == 3){ //3: 维修
  284. //减去售后仓库不良品
  285. InventoryInfo inventoryInfo1 = new InventoryInfo();
  286. inventoryInfo1.setInventoryDefectiveProductNum(1);
  287. inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
  288. inventoryInfo1.setWarehouseId(2);
  289. inventoryInfo1.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
  290. inventoryService.minusInventory(inventoryInfo1);
  291. //增加售后仓库的良品
  292. InventoryInfo inventoryInfo2 = new InventoryInfo();
  293. inventoryInfo2.setInventoryGoodProductNum(1);
  294. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  295. inventoryInfo2.setWarehouseId(2);
  296. inventoryInfo2.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
  297. inventoryService.addInventory(inventoryInfo2);
  298. }else{ //退货等
  299. //减去售后仓库不良品
  300. InventoryInfo inventoryInfo1 = new InventoryInfo();
  301. inventoryInfo1.setInventoryDefectiveProductNum(1);
  302. inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
  303. inventoryInfo1.setWarehouseId(2);
  304. inventoryInfo1.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
  305. inventoryService.minusInventory(inventoryInfo1);
  306. //增加销售仓库的良品
  307. InventoryInfo inventoryInfo2 = new InventoryInfo();
  308. inventoryInfo2.setInventoryGoodProductNum(1);
  309. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  310. inventoryInfo2.setWarehouseId(2);
  311. inventoryInfo2.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
  312. inventoryService.addInventory(inventoryInfo2);
  313. }
  314. }
  315. }
  316. return flag;
  317. }
  318. @Override
  319. @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
  320. public int updateDetectById(ComplaintDetectInfo record,String[] imgs) {
  321. //判断售后流程
  322. ProcMethod procMethod;
  323. Integer procTypeId;
  324. //判断是签收生成还是手动添加
  325. ComplaintDetectInfo complaintDetectInfo = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  326. if(complaintDetectInfo.getDetectSource() == 2 || complaintDetectInfo.getDetectSource() == 3){
  327. //手动添加
  328. procMethod = procMethodMapper.getProcMethodById(complaintDetectInfo.getMethodId());
  329. }else{
  330. CmRelation cmRelation = new CmRelation();
  331. cmRelation.setCustomerId(record.getCustomerId());
  332. cmRelation = customerInfoMapper.getCmRelationInfo(cmRelation);
  333. procMethod = procMethodMapper.getProcMethodById(cmRelation.getProcMethodId());
  334. }
  335. if (procMethod != null) {
  336. procTypeId = procMethod.getProcTypeId();
  337. switch (procTypeId){
  338. case 3:
  339. //维修
  340. if(procMethod.getProcMethodIsCharge() == 0){
  341. //待定
  342. if(record.getIsMaintenance() == 1){
  343. //机器故障,待用户确认
  344. record.setDetectState(38);
  345. }else if(record.getIsMaintenance() == 2){
  346. //机器无故障,待用户确认
  347. record.setDetectState(37);
  348. }
  349. }else if(procMethod.getProcMethodIsCharge() == 1){
  350. //付费
  351. //待用户确认
  352. record.setDetectState(30);
  353. }else if(procMethod.getProcMethodIsCharge() == 2){
  354. //免费
  355. //待客服确认维修
  356. record.setDetectState(34);
  357. }
  358. if (complaintDetectInfo.getDetectIsMaintain() == null) {
  359. complaintDetectInfo.setDetectIsMaintain(1);
  360. }
  361. break;
  362. default:
  363. // 退货/换货
  364. String processingResults = "";
  365. String text = "";
  366. if(record.getDetectRenovation() == 1){
  367. // 是否可翻新 1可翻新 2不可翻新
  368. // 待翻新入库
  369. record.setDetectState(20);
  370. processingResults = "维修";
  371. }else if(record.getDetectRenovation() == 2){
  372. // 不能翻新,待报废
  373. record.setDetectState(22);
  374. processingResults = "报废";
  375. }
  376. // 查询维修编号
  377. ComplaintDetectInfo info = complaintDetectInfoMapper.getDetectById(record.getDetectId());
  378. // 客诉状态为换货或退货时完成检测需要短信通知维修人员
  379. if(procTypeId == 2){
  380. //换货
  381. text = MessageFormat.format(SmsConfig.CUSTOMER_EXCHANGE, info.getDetectNumber(),processingResults);
  382. }
  383. if(procTypeId == 4){
  384. //退货
  385. text = MessageFormat.format(SmsConfig.CUSTOMER_RETURN, info.getDetectNumber(),processingResults);
  386. }
  387. if(procTypeId == 2 || procTypeId == 4){
  388. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  389. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送完成检测结果("+processingResults+"):"+result);
  390. }
  391. if (complaintDetectInfo.getDetectIsMaintain() == null) {
  392. complaintDetectInfo.setDetectIsMaintain(2);
  393. }
  394. }
  395. }
  396. Product product = productMapper.getProduce(complaintDetectInfo.getProductId());
  397. Produce temp = new Produce();
  398. if (product != null && product.getProduceId() != null) {
  399. temp.setProduceId(product.getProduceId());
  400. temp = produceMapper.getProduceByPro(temp);
  401. if (temp == null) {
  402. throw new RuntimeException("销售产品未获取到对应的绑定生产产品");
  403. }
  404. }
  405. try {
  406. // 维修报价
  407. CompanyInfo companyInfo = null;
  408. if (record.getDetectPhenomenonIds() != null && record.getDetectPhenomenonIds().length >= 1) {
  409. // 是否维修,1表示判断维修、2表示判断翻新
  410. if (complaintDetectInfo.getDetectIsMaintain() == 1) {
  411. if (complaintDetectInfo.getStoreId() == null) {
  412. // 爱贝源客户
  413. companyInfo = companyInfoMapper.getCompanyInfoById(1);
  414. } else {
  415. // 其他客户
  416. companyInfo = companyInfoMapper.getCompanyInfoById(storeInfoMapper.getStoreInfoById(complaintDetectInfo.getStoreId()).getCompanyId());
  417. }
  418. Date createDate = DateTimeUtil.parse(record.getDetectProduction(), "yyyy-MM-dd");
  419. createDate = DateTimeUtil.addMonth(createDate, companyInfo.getCompanyMaintainMonth());
  420. createDate = DateTimeUtil.addMonth(createDate, companyInfo.getCompaynStorageMonth());
  421. if (createDate.getTime() >= complaintDetectInfo.getDetectCreateTime().getTime()
  422. && record.getIsMaintenance() == 1
  423. && record.getDeleteMaintainType() == 1) {
  424. // 质保期内、机器有故障,并且为质量问题导致的(免费维修)
  425. record.setDetectState(34);
  426. record.setDetectOffer(0);
  427. } else if (procMethod != null && procMethod.getProcMethodIsCharge() != null && procMethod.getProcMethodIsCharge() == 0) {
  428. // 此处为了兼容爱贝源的检测待定选项
  429. if(record.getIsMaintenance() == 1){
  430. // 机器故障,待用户确认
  431. if (createDate.getTime() >= complaintDetectInfo.getDetectCreateTime().getTime() && record.getDeleteMaintainType() == 1) {
  432. // 质保期内、机器有故障,并且为质量问题导致的(免费维修)
  433. record.setDetectState(34);
  434. record.setDetectOffer(0);
  435. } else {
  436. for (Integer id : record.getDetectPhenomenonIds()) {
  437. if (record.getDetectOffer() == null) {
  438. record.setDetectOffer(phenomenonMapper.get(id).getPhenomenonMaintainPrice());
  439. } else {
  440. record.setDetectOffer(record.getDetectOffer() + phenomenonMapper.get(id).getPhenomenonMaintainPrice());
  441. }
  442. }
  443. record.setDetectState(30);
  444. }
  445. }else if(record.getIsMaintenance() == 2){
  446. // 机器无故障,待用户确认
  447. record.setDetectState(37);
  448. }
  449. } else {
  450. // 质保期外(付费维修) , 并且机器非检测待定的
  451. for (Integer id : record.getDetectPhenomenonIds()) {
  452. if (record.getDetectOffer() == null) {
  453. record.setDetectOffer(phenomenonMapper.get(id).getPhenomenonMaintainPrice());
  454. } else {
  455. record.setDetectOffer(record.getDetectOffer() + phenomenonMapper.get(id).getPhenomenonMaintainPrice());
  456. }
  457. }
  458. record.setDetectState(30);
  459. }
  460. } else {
  461. if (record.getIsMaintenance() == 1) {
  462. // 无故障(付费翻新)
  463. if (record.getDeleteIsUse() == 1) {
  464. // 未过水(翻新)
  465. if (temp.getProduceIsW() == 1) {
  466. // W系列
  467. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(12)));
  468. } else if (temp.getProduceIsW() == 2) {
  469. // S系列
  470. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(14)));
  471. }
  472. } else {
  473. // 已过水(翻新)
  474. if (temp.getProduceIsW() == 1) {
  475. // W系列
  476. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(11)));
  477. } else if (temp.getProduceIsW() == 2) {
  478. // S系列
  479. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(13)));
  480. }
  481. }
  482. record.setDetectState(24);
  483. } else {
  484. // 有故障
  485. if (record.getDeleteMaintainType() == 1) {
  486. // 质量问题(获取当前客户录入日期和仓储期+售后期,对比机器生产日期)
  487. if (complaintDetectInfo.getStoreId() == null) {
  488. // 爱贝源客户
  489. companyInfo = companyInfoMapper.getCompanyInfoById(1);
  490. } else {
  491. // 其他客户
  492. companyInfo = companyInfoMapper.getCompanyInfoById(storeInfoMapper.getStoreInfoById(complaintDetectInfo.getStoreId()).getCompanyId());
  493. }
  494. Date createDate = DateTimeUtil.parse(record.getDetectProduction(), "yyyy-MM-dd");
  495. createDate = DateTimeUtil.addMonth(createDate, companyInfo.getCompanyAfterMonth());
  496. createDate = DateTimeUtil.addMonth(createDate, companyInfo.getCompaynStorageMonth());
  497. if (createDate.getTime() >= complaintDetectInfo.getDetectCreateTime().getTime()) {
  498. // 质保期内(免费换新)
  499. record.setDetectOffer(0);
  500. if (record.getDetectRenovation() == 1) {
  501. // 可以翻新
  502. record.setDetectState(20);
  503. } else {
  504. // 不可翻新
  505. record.setDetectState(22);
  506. }
  507. } else {
  508. // 质保期外
  509. if (record.getDeleteIsUse() == 1) {
  510. // 未过水(翻新)
  511. if (temp.getProduceIsW() == 1) {
  512. // W系列
  513. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(12)));
  514. } else if (temp.getProduceIsW() == 2) {
  515. // S系列
  516. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(14)));
  517. }
  518. } else {
  519. // 已过水(翻新)
  520. if (temp.getProduceIsW() == 1) {
  521. // W系列
  522. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(11)));
  523. } else if (temp.getProduceIsW() == 2) {
  524. // S系列
  525. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(13)));
  526. }
  527. }
  528. record.setDetectState(24);
  529. }
  530. } else {
  531. // 非质量问题导致
  532. if (record.getDeleteIsUse() == 1) {
  533. // 未过水(翻新)
  534. if (temp.getProduceIsW() == 1) {
  535. // W系列
  536. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(12)));
  537. } else if (temp.getProduceIsW() == 2) {
  538. // S系列
  539. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(14)));
  540. }
  541. } else {
  542. // 已过水(翻新)
  543. if (temp.getProduceIsW() == 1) {
  544. // W系列
  545. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(11)));
  546. } else if (temp.getProduceIsW() == 2) {
  547. // S系列
  548. record.setDetectOffer(Integer.parseInt(sysConfigMapper.getSysConfig(13)));
  549. }
  550. }
  551. record.setDetectState(24);
  552. }
  553. }
  554. }
  555. // 录入检测现象
  556. StringBuilder detectPhenomenon = new StringBuilder();
  557. complaintDetectInfoMapper.delPhenomenon(complaintDetectInfo.getDetectId());
  558. for (Integer id : record.getDetectPhenomenonIds()) {
  559. DetectPhenomenon dp = new DetectPhenomenon();
  560. dp.setDetectId(record.getDetectId());
  561. dp.setPhenomenonId(id);
  562. dp.setDpName(phenomenonMapper.get(id).getPhenomenonName());
  563. detectPhenomenon.append(dp.getDpName()).append(";");
  564. complaintDetectInfoMapper.addPhenomenon(dp);
  565. }
  566. // 检测现象描述
  567. record.setDetectPhenomenon(detectPhenomenon.toString());
  568. }
  569. // 修改
  570. if(complaintDetectInfoMapper.updateDetectById(record) > 0){
  571. if(imgs != null){
  572. if(imgs.length > 0){
  573. for(String img : imgs){
  574. ComplaintDetectImg detectImg = new ComplaintDetectImg();
  575. detectImg.setDetectId(record.getDetectId());
  576. detectImg.setDetectImgUrl(img);
  577. complaintDetectInfoMapper.addDetectImg(detectImg);
  578. }
  579. }
  580. }
  581. }
  582. if(complaintDetectInfo.getDetectSource() == 2 || complaintDetectInfo.getDetectSource() == 3){
  583. // 给客户发送短信
  584. if (complaintDetectInfo.getAdminId() != null) {
  585. Admin admin = new Admin();
  586. admin.setAdminId(complaintDetectInfo.getAdminId());
  587. admin = sysMapper.get(admin);
  588. String result = smsService.sendOtherCMS(admin.getAdminTel(), "【优尼雅电子科技】尊敬的客户您好,您的机器" + complaintDetectInfo.getDetectNumber() + "已经检测完成,请登入我司系统确认处理机器的方案。");
  589. logger.info("给 " + admin.getAdminTel() + " 手机用户发送短信:通知客户选择处理方式:"+result+"维修id:"+record.getDetectId());
  590. }
  591. // 给业务员发短信
  592. if (complaintDetectInfo.getSalesmanAdminId() != null && companyInfo != null && companyInfo.getCompanyName() != null) {
  593. Admin admin = new Admin();
  594. admin.setAdminId(complaintDetectInfo.getSalesmanAdminId());
  595. admin = sysMapper.get(admin);
  596. String result = smsService.sendOtherCMS(admin.getAdminTel(), "【优尼雅电子科技】您客户 " + companyInfo.getCompanyName() + " 的机器" + complaintDetectInfo.getDetectNumber() + "已检测完成,请联系客户进入系统确认处理机器的方案。");
  597. logger.info("给 " + admin.getAdminTel() + " 手机用户发送短信:通知业务员选择处理方式:"+result+"维修id:"+record.getDetectId());
  598. }
  599. // 手动添加需要给业务员发送短信
  600. if(complaintDetectInfo.getDetectState() == 30 || complaintDetectInfo.getDetectState() == 34|| complaintDetectInfo.getDetectState() == 38 || complaintDetectInfo.getDetectState() == 37){
  601. if(complaintDetectInfo.getDetectTel() != null && !"".equals(complaintDetectInfo.getDetectTel()) && complaintDetectInfo.getSalesmanAdminId() != null){
  602. String text = MessageFormat.format(SmsConfig.NOTIFY_SALESMAN, complaintDetectInfo.getDetectName()+complaintDetectInfo.getDetectTel(), ResultInfo.DETECT_MSG+complaintDetectInfo.getDetectId());
  603. Admin admin = new Admin();
  604. admin.setAdminId(complaintDetectInfo.getSalesmanAdminId());
  605. admin = sysMapper.get(admin);
  606. String result = smsService.sendOtherCMS(admin.getAdminTel(), text);
  607. logger.info("给 " + complaintDetectInfo.getDetectTel() + " 手机用户发送短信:" + text+"发送通知业务员选择处理方式:"+result+"维修id:"+record.getDetectId());
  608. }
  609. }
  610. }
  611. }catch (Exception e){
  612. e.printStackTrace();
  613. throw new RuntimeException("完成检测失败");
  614. }
  615. return 1;
  616. }
  617. //添加检测项
  618. public String adddetectItem(String configid,Integer detectId){
  619. DetectionConfig config = complaintDetectInfoMapper.getDetectionConfig(Integer.valueOf(configid));
  620. DetectionItem item = new DetectionItem();
  621. item.setDetectId(detectId);
  622. item.setItemConfigId(config.getConfigId());
  623. item.setItemDetectContent(config.getConfigDetectContent());
  624. complaintDetectInfoMapper.insertItem(item);
  625. return config.getConfigDetectContent();
  626. }
  627. @Override
  628. public PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest) {
  629. PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
  630. List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listComplaintDetect(pageRequest.getData());
  631. PagedResult<ComplaintDetectInfo> result = PageUtil.getPage(detectList);
  632. if (result.getDataList() != null && !result.getDataList().isEmpty()) {
  633. for (ComplaintDetectInfo detectInfo : result.getDataList()) {
  634. detectInfo.setTransport(detectTransportMapper.get(detectInfo.getDetectId()));
  635. }
  636. }
  637. return result;
  638. }
  639. @Override
  640. public PagedResult<ComplaintDetectInfo> listAfterSales(PageRequest<ComplaintDetectInfo> pageRequest) {
  641. PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
  642. List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listAfterSales(pageRequest.getData());
  643. PagedResult<ComplaintDetectInfo> result = PageUtil.getPage(detectList);
  644. if (result.getDataList() != null && !result.getDataList().isEmpty()) {
  645. for (ComplaintDetectInfo detectInfo : result.getDataList()) {
  646. detectInfo.setTransport(detectTransportMapper.get(detectInfo.getDetectId()));
  647. }
  648. }
  649. return result;
  650. }
  651. @Override
  652. @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
  653. public int insert(ComplaintDetectInfo record) {
  654. // 判断是否有多个客户传递的问题现象
  655. if (record.getCustmoerPhenomena() != null && !record.getCustmoerPhenomena().isEmpty()) {
  656. record.setDetectCustmoerQuestion(null);
  657. for (DetectCustmoerPhenomenon custmoerPhenomenon : record.getCustmoerPhenomena()) {
  658. if (record.getDetectCustmoerQuestion() != null) {
  659. record.setDetectCustmoerQuestion(record.getDetectCustmoerQuestion() + custmoerPhenomenon.getDcpName() + ";");
  660. } else {
  661. record.setDetectCustmoerQuestion(custmoerPhenomenon.getDcpName() + ";");
  662. }
  663. }
  664. int res = complaintDetectInfoMapper.insert(record);
  665. // 添加问题现象
  666. for (DetectCustmoerPhenomenon custmoerPhenomenon : record.getCustmoerPhenomena()) {
  667. custmoerPhenomenon.setDetectId(record.getDetectId());
  668. detectCustmoerPhenomenonMapper.add(custmoerPhenomenon);
  669. }
  670. // 添加运输信息
  671. if (record.getTransport() == null) {
  672. DetectTransport transport = new DetectTransport();
  673. transport.setDetectId(record.getDetectId());
  674. detectTransportMapper.add(transport);
  675. } else {
  676. record.getTransport().setDetectId(record.getDetectId());
  677. detectTransportMapper.add(record.getTransport());
  678. }
  679. return res;
  680. }
  681. // 单个问题现象
  682. return complaintDetectInfoMapper.insert(record);
  683. }
  684. @Override
  685. public int deleteDetect(Integer detectId) {
  686. return complaintDetectInfoMapper.deleteDetect(detectId);
  687. }
  688. @Override
  689. public List<DetectionBasis> listDetectionBasis(DetectionBasis detectionBasis) {
  690. return complaintDetectInfoMapper.listDetectionBasis(detectionBasis);
  691. }
  692. @Override
  693. public int addDetectImg(ComplaintDetectImg complaintDetectImg) {
  694. return complaintDetectInfoMapper.addDetectImg(complaintDetectImg);
  695. }
  696. @Override
  697. public List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo detectInfo) {
  698. List<ComplaintDetectInfo> res = complaintDetectInfoMapper.listComplaintDetect(detectInfo);
  699. if (res == null || res.isEmpty()) {
  700. return null;
  701. }
  702. res.forEach((d) -> {
  703. if (d != null && d.getDetectPhenomenonId() != null) {
  704. d.setPhenomen(phenomenonMapper.get(d.getDetectPhenomenonId()));
  705. }
  706. if (d != null && d.getSalesmanAdminId() != null) {
  707. Admin temp = new Admin();
  708. temp.setAdminId(d.getSalesmanAdminId());
  709. d.setSalesmanAdminName(sysMapper.get(temp).getAdminName());
  710. }
  711. });
  712. return res;
  713. }
  714. @Transactional
  715. @Override
  716. public boolean customerConfirm(ComplaintDetectInfo detectInfo,Admin admin) {
  717. ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
  718. /*ProcMethod procMethod = procMethodMapper.getProcMethodById(detectInfo.getProcMethodId());*/
  719. //计算待维修完成时间
  720. Calendar date = Calendar.getInstance();
  721. date.setTime(new Date());
  722. boolean fl = false;
  723. for (int i = 1 ; i <= 5; i++){
  724. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  725. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  726. if(week == 1){
  727. fl = true;
  728. }
  729. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  730. }
  731. if(fl){
  732. date.set(Calendar.DATE, date.get(Calendar.DATE) + 6);
  733. }else{
  734. date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
  735. }
  736. /*switch (detectInfo.getDetectState()){
  737. case 30:
  738. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  739. detectInfo.setDetectState(31);//同意付费维修
  740. detectInfo.setCompleteCutTime(date.getTime());
  741. }
  742. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  743. if(detect.getDetectRenovation() == 1){
  744. detectInfo.setDetectState(20);//待翻新
  745. }else{
  746. detectInfo.setDetectState(22);//待报废
  747. }
  748. }
  749. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  750. detectInfo.setDetectState(33);//
  751. }
  752. break;
  753. case 34:
  754. if(detectInfo.getDetectProcessingResults() == null || detectInfo.getDetectProcessingResults() == 2 ){//免费维修
  755. detectInfo.setDetectState(35);
  756. detectInfo.setCompleteCutTime(date.getTime());
  757. }
  758. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  759. detectInfo.setDetectState(33);
  760. }
  761. break;
  762. case 37:
  763. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  764. detectInfo.setDetectState(31);//同意付费维修
  765. detectInfo.setCompleteCutTime(date.getTime());
  766. }
  767. if(detectInfo.getDetectProcessingResults() == 2){//免费维修
  768. detectInfo.setDetectState(35);//同意免费维修
  769. detectInfo.setCompleteCutTime(date.getTime());
  770. }
  771. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  772. if(detect.getDetectRenovation() == 1){
  773. detectInfo.setDetectState(20);//待翻新
  774. }else{
  775. detectInfo.setDetectState(22);//待报废
  776. }
  777. }
  778. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  779. detectInfo.setDetectState(39);//原机退回
  780. }
  781. break;
  782. case 38:
  783. if(detectInfo.getDetectProcessingResults() == 1){//付费维修
  784. detectInfo.setDetectState(31);//同意付费维修
  785. detectInfo.setCompleteCutTime(date.getTime());
  786. }
  787. if(detectInfo.getDetectProcessingResults() == 2){//免费维修
  788. detectInfo.setDetectState(35);//同意免费维修
  789. detectInfo.setCompleteCutTime(date.getTime());
  790. }
  791. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
  792. if(detect.getDetectRenovation() == 1){
  793. detectInfo.setDetectState(20);//待翻新
  794. }else{
  795. detectInfo.setDetectState(22);//待报废
  796. }
  797. }
  798. if(detectInfo.getDetectProcessingResults() == 5){//原机退回
  799. detectInfo.setDetectState(37);//原机退回
  800. }
  801. break;
  802. }*/
  803. try {
  804. if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
  805. if(detectInfo.getProcMethodId() != null && !"".equals(detectInfo.getProcMethodId())){
  806. CmRelation cmRelation = new CmRelation();
  807. cmRelation.setCustomerId(detectInfo.getCustomerId());
  808. cmRelation.setProcMethodId(detectInfo.getProcMethodId());
  809. if(customerInfoMapper.updateCmRelationProcMethod(cmRelation) > 0){
  810. return true;
  811. }
  812. }
  813. //添加客服操作记录
  814. TreatmentRecordLog log = new TreatmentRecordLog();
  815. log.setDetectId(detectInfo.getDetectId());
  816. log.setRecordAdminId(admin.getAdminId());
  817. log.setRecordDesc(detectInfo.getDetectCustomerDesc());
  818. if (detectInfo.getDetectState() == 25) {
  819. log.setRecordProcessingResults(6);
  820. } else if (detectInfo.getDetectState() == 27) {
  821. log.setRecordProcessingResults(5);
  822. } else if (detectInfo.getDetectState() == 31) {
  823. log.setRecordProcessingResults(1);
  824. } else if (detectInfo.getDetectState() == 33) {
  825. log.setRecordProcessingResults(6);
  826. }
  827. complaintDetectInfoMapper.addTreatmentRecordLog(log);
  828. //发送确认短信
  829. //发送确认短信
  830. if (detectInfo.getDetectState() != null) {
  831. String msg = null;
  832. switch (detect.getDetectState()) {
  833. case 31: msg="【优尼雅电子科技】客户已确认" + detect.getDetectNumber() + "维修,请立即开始维修处理。";break;
  834. case 33: msg="【优尼雅电子科技】客户确认" + detect.getDetectNumber() + "机器不维修(原机退回给客户),请联系业务员,并请业务员联系客户,将此机器寄回。";break;
  835. case 25: msg="【优尼雅电子科技】客户确认" + detect.getDetectNumber() + "机器不翻新(原机退回给客户),请联系业务员,并请业务员联系客户,将此机器寄回。";break;
  836. case 27: msg="【优尼雅电子科技】客户已确认" + detect.getDetectNumber() + "翻新,请立即开始翻新处理。";break;
  837. default: break;
  838. }
  839. if (msg != null) {
  840. smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, msg);
  841. }
  842. }
  843. /* String results = "";
  844. switch (detectInfo.getDetectProcessingResults()){
  845. case 1:
  846. results = "付费维修";
  847. break;
  848. case 2:
  849. results = "免费维修";
  850. break;
  851. case 3:
  852. results = "退货";
  853. break;
  854. case 4:
  855. results = "换货";
  856. break;
  857. case 5:
  858. results = "原机退回";
  859. break;
  860. }
  861. String text = MessageFormat.format(SmsConfig.CUSTOMER_CONFIRM, detect.getDetectNumber(),results);
  862. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  863. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送结果:"+result);*/
  864. return true;
  865. }
  866. }catch (Exception e){
  867. e.printStackTrace();
  868. throw new RuntimeException("确认处理失败");
  869. }
  870. return false;
  871. }
  872. @Transactional(rollbackFor = {RuntimeException.class})
  873. @Override
  874. public boolean salesmanConfirm(ComplaintDetectInfo detectInfo) {
  875. ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
  876. if(detect.getDetectState() != 30 && detect.getDetectState() != 24 && detect.getDetectState() != 34 && detect.getDetectState() != 38 && detect.getDetectState() != 37){
  877. return false;
  878. }
  879. //计算待维修完成时间
  880. Calendar date = Calendar.getInstance();
  881. date.setTime(new Date());
  882. boolean fl = false;
  883. for (int i = 1 ; i <= 5; i++){
  884. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  885. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  886. if(week == 1){
  887. fl = true;
  888. }
  889. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  890. }
  891. if(fl){
  892. date.set(Calendar.DATE, date.get(Calendar.DATE) + 6);
  893. }else{
  894. date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
  895. }
  896. if (detectInfo.getDetectProcessingResults() != null) {
  897. if(detectInfo.getDetectProcessingResults() == 1){
  898. //付费维修
  899. detectInfo.setDetectState(31);//同意付费维修
  900. detectInfo.setCompleteCutTime(date.getTime());
  901. }else if(detectInfo.getDetectProcessingResults() == 2){
  902. //免费维修
  903. detectInfo.setDetectState(35);//同意付费维修
  904. detectInfo.setCompleteCutTime(date.getTime());
  905. }
  906. if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){
  907. //退货、换货
  908. if(detect.getDetectRenovation() == 1){
  909. //待翻新
  910. detectInfo.setDetectState(20);
  911. }else{
  912. //待报废
  913. detectInfo.setDetectState(22);
  914. }
  915. }
  916. if(detectInfo.getDetectProcessingResults() == 5){
  917. //原机退回
  918. detectInfo.setDetectState(33);
  919. }
  920. }
  921. try {
  922. if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
  923. //添加业务员操作记录
  924. if(detect.getSalesmanAdminId() != null){
  925. TreatmentRecordLog log = new TreatmentRecordLog();
  926. log.setDetectId(detectInfo.getDetectId());
  927. log.setRecordAdminId(detect.getSalesmanAdminId());
  928. log.setRecordDesc(detect.getDetectCustomerDesc());
  929. log.setRecordProcessingResults(detectInfo.getDetectProcessingResults());
  930. complaintDetectInfoMapper.addTreatmentRecordLog(log);
  931. }
  932. //发送确认短信
  933. if (detectInfo.getDetectState() != null) {
  934. String msg = null;
  935. switch (detect.getDetectState()) {
  936. case 31: msg="【优尼雅电子科技】客户已确认" + detect.getDetectNumber() + "维修,请立即开始维修处理。";break;
  937. case 33: msg="【优尼雅电子科技】客户确认" + detect.getDetectNumber() + "机器不维修(原机退回给客户),请联系业务员,并请业务员联系客户,将此机器寄回。";break;
  938. case 25: msg="【优尼雅电子科技】客户确认" + detect.getDetectNumber() + "机器不翻新(原机退回给客户),请联系业务员,并请业务员联系客户,将此机器寄回。";break;
  939. case 27: msg="【优尼雅电子科技】客户已确认" + detect.getDetectNumber() + "翻新,请立即开始翻新处理。";break;
  940. default: break;
  941. }
  942. if (msg != null) {
  943. smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, msg);
  944. }
  945. }
  946. return true;
  947. }
  948. }catch (Exception e){
  949. e.printStackTrace();
  950. throw new RuntimeException("确认处理失败");
  951. }
  952. return false;
  953. }
  954. @Override
  955. public List<ComplaintDetectImg> listDetectImg(Integer detectId) {
  956. return complaintDetectInfoMapper.listDetectImg(detectId);
  957. }
  958. @Override
  959. public Integer getDetectNum() {
  960. return complaintDetectInfoMapper.getDetectNum();
  961. }
  962. @Override
  963. public List<MaterialNumberInfo> listMaterialNumber() {
  964. return complaintDetectInfoMapper.listMaterialNumber();
  965. }
  966. @Override
  967. public List<DetectionConfig> listDetectionConfig(Integer configType) {
  968. return complaintDetectInfoMapper.listDetectionConfig(configType);
  969. }
  970. @Override
  971. public DetectionConfig getDetectionConfig(Integer configId) {
  972. return complaintDetectInfoMapper.getDetectionConfig(configId);
  973. }
  974. @Override
  975. public Integer insertItem(DetectionItem detectionItem) {
  976. return complaintDetectInfoMapper.insertItem(detectionItem);
  977. }
  978. @Override
  979. public List<DetectionItem> listDetectionItem(DetectionItem detectionItem) {
  980. return complaintDetectInfoMapper.listDetectionItem(detectionItem);
  981. }
  982. @Override
  983. public Integer detectDetectionItem(Integer detectId) {
  984. return complaintDetectInfoMapper.detectDetectionItem(detectId);
  985. }
  986. @Override
  987. public MaterialNumberInfo getMaterialNumber(Integer materialId) {
  988. return complaintDetectInfoMapper.getMaterialNumber(materialId);
  989. }
  990. @Override
  991. public Integer addMaterialItem(MaterialItem materialItem) {
  992. return complaintDetectInfoMapper.addMaterialItem(materialItem);
  993. }
  994. @Override
  995. public List<MaterialItem> listMaterialItem(Integer detectId) {
  996. return complaintDetectInfoMapper.listMaterialItem(detectId);
  997. }
  998. @Override
  999. public Integer detectMaterialItem(Integer detectId) {
  1000. return complaintDetectInfoMapper.detectMaterialItem(detectId);
  1001. }
  1002. @Override
  1003. public Integer addQcInfo(QcInfo qcInfo) {
  1004. return complaintDetectInfoMapper.addQcInfo(qcInfo);
  1005. }
  1006. @Override
  1007. public List<QcInfo> listQcInfo(Integer detectId) {
  1008. return complaintDetectInfoMapper.listQcInfo(detectId);
  1009. }
  1010. @Override
  1011. public Integer addTreatmentRecordLog(TreatmentRecordLog treatmentRecordLog) {
  1012. return complaintDetectInfoMapper.addTreatmentRecordLog(treatmentRecordLog);
  1013. }
  1014. @Override
  1015. public List<TreatmentRecordLog> listTreatmentRecordLog(Integer detectId) {
  1016. return complaintDetectInfoMapper.listTreatmentRecordLog(detectId);
  1017. }
  1018. @Override
  1019. public ComplaintAfterSalesNum getCustomerDetectNum(ComplaintDetectInfo detect) {
  1020. return complaintDetectInfoMapper.getCustomerDetectNum(detect);
  1021. }
  1022. @Override
  1023. @Transactional
  1024. public Integer updatePrint(ComplaintDetectInfo detectInfo) {
  1025. ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectByIdFast(detectInfo.getDetectId());
  1026. if(cdi == null){
  1027. return 0;
  1028. }
  1029. detectInfo.setDetectNumber(cdi.getDetectNumber());
  1030. Integer flag = complaintDetectInfoMapper.updateDetectById(detectInfo);
  1031. if(flag < 1){
  1032. return flag;
  1033. }
  1034. if(detectInfo.getDetectState() != null && detectInfo.getDetectState() != 0){
  1035. if(!Objects.equals(cdi.getDetectState(), detectInfo.getDetectState())){ //修改状态时判断状态,来调整库存
  1036. switch (detectInfo.getDetectState()){ //detectState
  1037. case 23: //报废完成-减少不良品数量
  1038. InventoryInfo inventoryInfo2 = new InventoryInfo();
  1039. inventoryInfo2.setInventoryDefectiveProductNum(1);
  1040. inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
  1041. inventoryInfo2.setWarehouseId(2);
  1042. inventoryInfo2.setInventoryRecentRecord("产品报废(维修ID:"+detectInfo.getDetectNumber()+")");
  1043. flag = inventoryService.minusInventory(inventoryInfo2);
  1044. if(flag < 1){
  1045. throw new RuntimeException("签收失败,更新库存失败。");
  1046. }
  1047. break;
  1048. default:
  1049. break;
  1050. }
  1051. }
  1052. }
  1053. return flag;
  1054. }
  1055. @Override
  1056. public List<ComplaintDetectInfo> listDetectByCustomerId(Integer customerId) {
  1057. return complaintDetectInfoMapper.listDetectByCustomerId(customerId);
  1058. }
  1059. @Override
  1060. public List<ComplaintDetectInfo> listComplaintDetectBySalesId(String detectSalesId) {
  1061. return complaintDetectInfoMapper.listComplaintDetectBySalesId(detectSalesId);
  1062. }
  1063. @Override
  1064. public ComplaintAfterSalesNum getDetectCount() {
  1065. return complaintDetectInfoMapper.getDetectCount();
  1066. }
  1067. @Override
  1068. public List<ComplaintDetectInfo> listMaintenanceCutNotice() {
  1069. return complaintDetectInfoMapper.listMaintenanceCutNotice();
  1070. }
  1071. @Override
  1072. public List<ComplaintDetectInfo> listCompleteCutNotice() {
  1073. return complaintDetectInfoMapper.listCompleteCutNotice();
  1074. }
  1075. @Override
  1076. public Integer perfectDetect(ComplaintDetectInfo detectInfo) {
  1077. return complaintDetectInfoMapper.updateDetectById(detectInfo);
  1078. }
  1079. @Override
  1080. public Integer addConfig(DetectionConfig detectionConfig) {
  1081. return complaintDetectInfoMapper.addConfig(detectionConfig);
  1082. }
  1083. @Override
  1084. public Integer addMaterial(MaterialNumberInfo materialNumberInfo) {
  1085. return complaintDetectInfoMapper.addMaterial(materialNumberInfo);
  1086. }
  1087. @Override
  1088. public List<MaintainPhenomenon> listPhenomenon(Integer typeId) {
  1089. MaintainPhenomenon maintainPhenomenon = new MaintainPhenomenon();
  1090. maintainPhenomenon.setTypeId(typeId);
  1091. return phenomenonMapper.list(maintainPhenomenon);
  1092. }
  1093. @Override
  1094. public int editTransport(DetectTransport detectTransport) {
  1095. return detectTransportMapper.edit(detectTransport);
  1096. }
  1097. @Override
  1098. public MaintainPhenomenon getPhenomenon(Integer id) {
  1099. return phenomenonMapper.get(id);
  1100. }
  1101. }