123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560 |
- package com.iamberry.rst.service.fm;
- import com.github.pagehelper.PageHelper;
- import com.iamberry.rst.core.cm.CmRelation;
- import com.iamberry.rst.core.cm.ProcMethod;
- import com.iamberry.rst.core.fm.*;
- import com.iamberry.rst.core.page.PageRequest;
- import com.iamberry.rst.core.page.PagedResult;
- import com.iamberry.rst.core.sys.Admin;
- import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
- import com.iamberry.rst.faces.sms.SmsService;
- import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
- import com.iamberry.rst.service.cm.mapper.ProcMethodMapper;
- import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
- import com.iamberry.rst.service.fm.mapper.ComplaintMaintenanceInfoMapper;
- import com.iamberry.rst.util.PageUtil;
- import com.iamberry.rst.util.SmsConfig;
- import com.iamberry.wechat.core.entity.AdminUtils;
- import com.iamberry.wechat.tools.ResponseJson;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.text.MessageFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- @Service
- public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
- private Logger logger = LoggerFactory.getLogger(ComplaintDetectInfoServiceImpl.class);
- @Autowired
- private ComplaintDetectInfoMapper complaintDetectInfoMapper;
- @Autowired
- private CustomerInfoMapper customerInfoMapper;
- @Autowired
- private ProcMethodMapper procMethodMapper;
- @Autowired
- private SmsService smsService;
- @Override
- public ComplaintDetectInfo getDetectById(Integer detectId) {
- return complaintDetectInfoMapper.getDetectById(detectId);
- }
- @Override
- @Transactional
- public int updateDetectById(ComplaintDetectInfo record) {
- try {
- //删除旧检测项
- complaintDetectInfoMapper.detectDetectionItem(record.getDetectId());
- //删除旧维修配件项
- complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
- //封装检测信息
- //检测现象
- if(record.getConfigli1() != null) {
- if (record.getConfigli1().length > 0) {
- StringBuffer detectPhenomenon = new StringBuffer("");
- for (String configid : record.getConfigli1()) {
- detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectPhenomenon(detectPhenomenon.toString());
- }
- }else{
- record.setDetectPhenomenon("");
- }
- //故障原因
- if(record.getConfigli2() != null) {
- if (record.getConfigli2().length > 0) {
- StringBuffer detectFailureCause = new StringBuffer("");
- for (String configid : record.getConfigli2()) {
- detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectFailureCause(detectFailureCause.toString());
- }
- }else{
- record.setDetectFailureCause("");
- }
- //判定结果
- if(record.getConfigli3() != null){
- if(record.getConfigli3().length > 0){
- StringBuffer detectResults = new StringBuffer("");
- for (String configid : record.getConfigli3()){
- detectResults.append(adddetectItem(configid,record.getDetectId())+";");
- }
- record.setDetectResults(detectResults.toString());
- }
- }else{
- record.setDetectResults("");
- }
- //故障指向
- if(record.getConfigli4() != null) {
- if (record.getConfigli4().length > 0) {
- StringBuffer detectPoint = new StringBuffer("");
- for (String configid : record.getConfigli4()) {
- detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectPoint(detectPoint.toString());
- }
- }else{
- record.setDetectPoint("");
- }
- //原因分析
- if(record.getConfigli5() != null) {
- if (record.getConfigli5().length > 0) {
- StringBuffer detectNalysis = new StringBuffer("");
- for (String configid : record.getConfigli5()) {
- detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectNalysis(detectNalysis.toString());
- }
- }else{
- record.setDetectNalysis("");
- }
- //维修配件
- if(record.getConfigli6() != null) {
- if (record.getConfigli6().length > 0) {
- for (String configid : record.getConfigli6()) {
- MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
- MaterialItem materialItem = new MaterialItem();
- materialItem.setDetectId(record.getDetectId());
- materialItem.setMaterialId(Integer.valueOf(configid));
- materialItem.setMaterialName(materialNumberInfo.getMaterialName());
- complaintDetectInfoMapper.addMaterialItem(materialItem);
- }
- }
- }
- }catch (Exception e){
- throw new RuntimeException("修改检测失败");
- }
- return complaintDetectInfoMapper.updateDetectById(record);
- }
- @Override
- @Transactional
- public int updateDetectContent(ComplaintDetectInfo record) {
- complaintDetectInfoMapper.detectMaterialItem(record.getDetectId());
- try {
- //维修配件
- if(record.getConfigli6() != null) {
- if (record.getConfigli6().length > 0) {
- for (String configid : record.getConfigli6()) {
- MaterialNumberInfo materialNumberInfo = complaintDetectInfoMapper.getMaterialNumber(Integer.valueOf(configid));
- MaterialItem materialItem = new MaterialItem();
- materialItem.setDetectId(record.getDetectId());
- materialItem.setMaterialId(Integer.valueOf(configid));
- materialItem.setMaterialName(materialNumberInfo.getMaterialName());
- complaintDetectInfoMapper.addMaterialItem(materialItem);
- }
- }
- }
- }catch (Exception e){
- throw new RuntimeException("修改检测维修内容失败");
- }
- return complaintDetectInfoMapper.updateDetectById(record);
- }
- @Override
- @Transactional
- public int updateDetectQc(ComplaintDetectInfo record) {
- //添加日志
- QcInfo qcInfo = new QcInfo();
- qcInfo.setDetectId(record.getDetectId());
- qcInfo.setQcIsThrough(record.getMaintenanceResults());
- qcInfo.setQcInfoDesc(record.getQcDesc());
- complaintDetectInfoMapper.addQcInfo(qcInfo);
- return complaintDetectInfoMapper.updateDetectById(record);
- }
- @Transactional
- @Override
- public int updateDetectById(ComplaintDetectInfo record,String[] imgs) {
- //判断售后流程
- if(record.getCustomerId() == null){
- if(record.getDetectRenovation() == 1){
- record.setDetectState(20);//待翻新入库
- }else{
- record.setDetectState(22);//不能翻新,待报废
- }
- }else{
- CmRelation cmRelation = new CmRelation();
- cmRelation.setCustomerId(record.getCustomerId());
- cmRelation = customerInfoMapper.getCmRelationInfo(cmRelation);
- ProcMethod procMethod = procMethodMapper.getProcMethodById(cmRelation.getProcMethodId());
- switch (cmRelation.getProcTypeId()){
- case 3://维修
- if(procMethod.getProcMethodIsCharge() == 0){//待定
- if(record.getIsMaintenance() == 1){
- record.setDetectState(38);//机器故障,待用户确认
- }else if(record.getIsMaintenance() == 2){
- record.setDetectState(37);//机器无故障,原机退回
- }
- }else if(procMethod.getProcMethodIsCharge() == 1){//付费
- record.setDetectState(30);//待用户确认
- }else if(procMethod.getProcMethodIsCharge() == 2){//免费
- record.setDetectState(34);//待客服确认维修
- }
- break;
- default:
- String processingResults = "";
- String text = "";
- if(record.getDetectRenovation() == 1){//是否可翻新 1可翻新 2不可翻新
- record.setDetectState(20);//待翻新入库
- processingResults = "维修";
- }else if(record.getDetectRenovation() == 2){
- record.setDetectState(22);//不能翻新,待报废
- processingResults = "报废";
- }
- //查询维修编号
- ComplaintDetectInfo info = complaintDetectInfoMapper.getDetectById(record.getDetectId());
- //客诉状态为换货或退货时完成检测需要短信通知维修人员
- if(cmRelation.getProcTypeId() == 2){//换货
- text = MessageFormat.format(SmsConfig.CUSTOMER_EXCHANGE, info.getDetectNumber(),processingResults);
- }
- if(cmRelation.getProcTypeId() == 4){//退货
- text = MessageFormat.format(SmsConfig.CUSTOMER_RETURN, info.getDetectNumber(),processingResults);
- }
- if(cmRelation.getProcTypeId() == 2 || cmRelation.getProcTypeId() == 4){
- String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
- logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送完成检测结果("+processingResults+"):"+result);
- }
- }
- }
- try {
- //封装检测信息
- //检测现象
- if(record.getConfigli1() != null) {
- if (record.getConfigli1().length > 0) {
- StringBuffer detectPhenomenon = new StringBuffer("");
- for (String configid : record.getConfigli1()) {
- detectPhenomenon.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectPhenomenon(detectPhenomenon.toString());
- }
- }
- //故障原因
- if(record.getConfigli2() != null) {
- if (record.getConfigli2().length > 0) {
- StringBuffer detectFailureCause = new StringBuffer("");
- for (String configid : record.getConfigli2()) {
- detectFailureCause.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectFailureCause(detectFailureCause.toString());
- }
- }
- //判定结果
- if(record.getConfigli3() != null){
- if(record.getConfigli3().length > 0){
- StringBuffer detectResults = new StringBuffer("");
- for (String configid : record.getConfigli3()){
- detectResults.append(adddetectItem(configid,record.getDetectId())+";");
- }
- record.setDetectResults(detectResults.toString());
- }
- }
- //故障指向
- if(record.getConfigli4() != null) {
- if (record.getConfigli4().length > 0) {
- StringBuffer detectPoint = new StringBuffer("");
- for (String configid : record.getConfigli4()) {
- detectPoint.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectPoint(detectPoint.toString());
- }
- }
- //原因分析
- if(record.getConfigli5() != null) {
- if (record.getConfigli5().length > 0) {
- StringBuffer detectNalysis = new StringBuffer("");
- for (String configid : record.getConfigli5()) {
- detectNalysis.append(adddetectItem(configid, record.getDetectId()) + ";");
- }
- record.setDetectNalysis(detectNalysis.toString());
- }
- }
- if(complaintDetectInfoMapper.updateDetectById(record) > 0){
- if(imgs != null){
- if(imgs.length > 0){
- for(String img : imgs){
- ComplaintDetectImg detectImg = new ComplaintDetectImg();
- detectImg.setDetectId(record.getDetectId());
- detectImg.setDetectImgUrl(img);
- complaintDetectInfoMapper.addDetectImg(detectImg);
- }
- }
- }
- }
- }catch (Exception e){
- throw new RuntimeException("完成检测失败");
- }
- return 1;
- }
- //添加检测项
- public String adddetectItem(String configid,Integer detectId){
- DetectionConfig config = complaintDetectInfoMapper.getDetectionConfig(Integer.valueOf(configid));
- DetectionItem item = new DetectionItem();
- item.setDetectId(detectId);
- item.setItemConfigId(config.getConfigId());
- item.setItemDetectContent(config.getConfigDetectContent());
- complaintDetectInfoMapper.insertItem(item);
- return config.getConfigDetectContent();
- }
- @Override
- public PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest) {
- PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
- List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listComplaintDetect(pageRequest.getData());
- return PageUtil.getPage(detectList);
- }
- @Override
- public int insert(ComplaintDetectInfo record) {
- return complaintDetectInfoMapper.insert(record);
- }
- @Override
- public int deleteDetect(Integer detectId) {
- return complaintDetectInfoMapper.deleteDetect(detectId);
- }
- @Override
- public List<DetectionBasis> listDetectionBasis(DetectionBasis detectionBasis) {
- return complaintDetectInfoMapper.listDetectionBasis(detectionBasis);
- }
- @Override
- public int addDetectImg(ComplaintDetectImg complaintDetectImg) {
- return complaintDetectInfoMapper.addDetectImg(complaintDetectImg);
- }
- @Override
- public List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo detectInfo) {
- return complaintDetectInfoMapper.listComplaintDetect(detectInfo);
- }
- @Transactional
- @Override
- public boolean customerConfirm(ComplaintDetectInfo detectInfo,Admin admin) {
- ComplaintDetectInfo detect = complaintDetectInfoMapper.getDetectById(detectInfo.getDetectId());
- /*ProcMethod procMethod = procMethodMapper.getProcMethodById(detectInfo.getProcMethodId());*/
- //计算待维修完成时间
- Calendar date = Calendar.getInstance();
- date.setTime(new Date());
- boolean fl = false;
- for (int i = 1 ; i <= 5; i++){
- date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
- int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
- if(week == 1){
- fl = true;
- }
- date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
- }
- if(fl){
- date.set(Calendar.DATE, date.get(Calendar.DATE) + 6);
- }else{
- date.set(Calendar.DATE, date.get(Calendar.DATE) + 5);
- }
- switch (detectInfo.getDetectState()){
- case 30:
- if(detectInfo.getDetectProcessingResults() == 1){//付费维修
- detectInfo.setDetectState(31);//同意付费维修
- detectInfo.setCompleteCutTime(date.getTime());
- }
- if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
- if(detect.getDetectRenovation() == 1){
- detectInfo.setDetectState(20);//待翻新
- }else{
- detectInfo.setDetectState(22);//待报废
- }
- }
- if(detectInfo.getDetectProcessingResults() == 5){//原机退回
- detectInfo.setDetectState(33);//
- }
- break;
- case 34:
- detectInfo.setDetectState(35);
- detectInfo.setCompleteCutTime(date.getTime());
- break;
- case 38:
- if(detectInfo.getDetectProcessingResults() == 1){//付费维修
- detectInfo.setDetectState(31);//同意付费维修
- detectInfo.setCompleteCutTime(date.getTime());
- }
- if(detectInfo.getDetectProcessingResults() == 2){//免费维修
- detectInfo.setDetectState(35);//同意免费维修
- detectInfo.setCompleteCutTime(date.getTime());
- }
- if(detectInfo.getDetectProcessingResults() == 3 || detectInfo.getDetectProcessingResults() == 4){//退货、换货
- if(detect.getDetectRenovation() == 1){
- detectInfo.setDetectState(20);//待翻新
- }else{
- detectInfo.setDetectState(22);//待报废
- }
- }
- if(detectInfo.getDetectProcessingResults() == 5){//原机退回
- detectInfo.setDetectState(37);//原机退回
- }
- break;
- }
- try {
- if(complaintDetectInfoMapper.updateDetectById(detectInfo) > 0){
- if(detectInfo.getProcMethodId() != null && !"".equals(detectInfo.getProcMethodId())){
- CmRelation cmRelation = new CmRelation();
- cmRelation.setCustomerId(detectInfo.getCustomerId());
- cmRelation.setProcMethodId(detectInfo.getProcMethodId());
- if(customerInfoMapper.updateCmRelationProcMethod(cmRelation) > 0){
- return true;
- }
- }
- //添加客服操作记录
- TreatmentRecordLog log = new TreatmentRecordLog();
- log.setDetectId(detectInfo.getDetectId());
- log.setRecordAdminId(admin.getAdminId());
- log.setRecordDesc(detectInfo.getDetectCustomerDesc());
- log.setRecordProcessingResults(detectInfo.getDetectProcessingResults());
- complaintDetectInfoMapper.addTreatmentRecordLog(log);
- //发送确认短信
- String results = "";
- switch (detectInfo.getDetectProcessingResults()){
- case 1:
- results = "付费维修";
- break;
- case 2:
- results = "免费维修";
- break;
- case 3:
- results = "退货";
- break;
- case 4:
- results = "换货";
- break;
- case 5:
- results = "原机退回";
- break;
- }
- String text = MessageFormat.format(SmsConfig.CUSTOMER_CONFIRM, detect.getDetectNumber(),results);
- String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
- logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送结果:"+result);
- return true;
- }
- }catch (Exception e){
- throw new RuntimeException("确认处理失败");
- }
- return false;
- }
- @Override
- public List<ComplaintDetectImg> listDetectImg(Integer detectId) {
- return complaintDetectInfoMapper.listDetectImg(detectId);
- }
- @Override
- public Integer getDetectNum() {
- return complaintDetectInfoMapper.getDetectNum();
- }
- @Override
- public List<MaterialNumberInfo> listMaterialNumber() {
- return complaintDetectInfoMapper.listMaterialNumber();
- }
- @Override
- public List<DetectionConfig> listDetectionConfig(Integer configType) {
- return complaintDetectInfoMapper.listDetectionConfig(configType);
- }
- @Override
- public DetectionConfig getDetectionConfig(Integer configId) {
- return complaintDetectInfoMapper.getDetectionConfig(configId);
- }
- @Override
- public Integer insertItem(DetectionItem detectionItem) {
- return complaintDetectInfoMapper.insertItem(detectionItem);
- }
- @Override
- public List<DetectionItem> listDetectionItem(DetectionItem detectionItem) {
- return complaintDetectInfoMapper.listDetectionItem(detectionItem);
- }
- @Override
- public Integer detectDetectionItem(Integer detectId) {
- return complaintDetectInfoMapper.detectDetectionItem(detectId);
- }
- @Override
- public MaterialNumberInfo getMaterialNumber(Integer materialId) {
- return complaintDetectInfoMapper.getMaterialNumber(materialId);
- }
- @Override
- public Integer addMaterialItem(MaterialItem materialItem) {
- return complaintDetectInfoMapper.addMaterialItem(materialItem);
- }
- @Override
- public List<MaterialItem> listMaterialItem(Integer detectId) {
- return complaintDetectInfoMapper.listMaterialItem(detectId);
- }
- @Override
- public Integer detectMaterialItem(Integer detectId) {
- return complaintDetectInfoMapper.detectMaterialItem(detectId);
- }
- @Override
- public Integer addQcInfo(QcInfo qcInfo) {
- return complaintDetectInfoMapper.addQcInfo(qcInfo);
- }
- @Override
- public List<QcInfo> listQcInfo(Integer detectId) {
- return complaintDetectInfoMapper.listQcInfo(detectId);
- }
- @Override
- public Integer addTreatmentRecordLog(TreatmentRecordLog treatmentRecordLog) {
- return complaintDetectInfoMapper.addTreatmentRecordLog(treatmentRecordLog);
- }
- @Override
- public List<TreatmentRecordLog> listTreatmentRecordLog(Integer detectId) {
- return complaintDetectInfoMapper.listTreatmentRecordLog(detectId);
- }
- @Override
- public ComplaintAfterSalesNum getCustomerDetectNum(ComplaintDetectInfo detect) {
- return complaintDetectInfoMapper.getCustomerDetectNum(detect);
- }
- @Override
- public Integer updatePrint(ComplaintDetectInfo detectInfo) {
- ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectByIdFast(detectInfo.getDetectId());
- if(!Objects.equals(cdi.getDetectState(), detectInfo.getDetectState())){ //修改状态时判断状态,来调整库存
- switch (detectInfo.getDetectState()){ //detectState
- case 23:
- break;
- default:
- break;
- }
- }
- return complaintDetectInfoMapper.updateDetectById(detectInfo);
- }
- @Override
- public List<ComplaintDetectInfo> listDetectByCustomerId(Integer customerId) {
- return complaintDetectInfoMapper.listDetectByCustomerId(customerId);
- }
- @Override
- public List<ComplaintDetectInfo> listComplaintDetectBySalesId(Integer detectSalesId) {
- return complaintDetectInfoMapper.listComplaintDetectBySalesId(detectSalesId);
- }
- }
|