|  | @@ -1,37 +1,32 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import ch.qos.logback.core.util.StringCollectionUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.ReplacementPayDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.page.ReplacementInstrumentQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.page.PageInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.page.QueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.service.IdGeneratorService;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  | -import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import com.ym.mec.util.http.HttpUtil;
 | 
	
		
			
				|  |  | -import org.apache.poi.ss.formula.functions.T;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.springframework.http.HttpStatus;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -64,11 +59,18 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
 | 
	
		
			
				|  |  |      private SysUserCashAccountDetailService sysUserCashAccountDetailService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysMessageService sysMessageService;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CooperationOrganService cooperationOrganService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | +    private StudentService studentService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  |      private ReplacementInstrumentCooperationDao replacementInstrumentCooperationDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private QuestionnaireUserResultDao questionnaireUserResultDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private QuestionnaireQuestionDao questionnaireQuestionDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private QuestionnaireQuestionItemDao questionnaireQuestionItemDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private final Logger logger = LoggerFactory.getLogger(this.getClass());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -134,6 +136,78 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
 | 
	
		
			
				|  |  |          return replacementInstrumentActivity;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public Object apply(ReplacementInstrumentActivityDto replacementInstrumentActivity) {
 | 
	
		
			
				|  |  | +        SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (sysUser == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("用户信息获取失败,请重新登陆");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        replacementInstrumentActivity.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +        //如果用户是43分部,那么修改用户信息
 | 
	
		
			
				|  |  | +        if (sysUser.getOrganId() == 43) {
 | 
	
		
			
				|  |  | +            CooperationOrgan cooperationOrgan = cooperationOrganService.get(replacementInstrumentActivity.getCooperationOrganId());
 | 
	
		
			
				|  |  | +            if (cooperationOrgan != null) {
 | 
	
		
			
				|  |  | +                sysUser.setOrganId(cooperationOrgan.getOrganId());
 | 
	
		
			
				|  |  | +                sysUser.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +                sysUserFeignService.updateSysUser(sysUser);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Integer topicId = replacementInstrumentActivity.getTopicId();
 | 
	
		
			
				|  |  | +        ReplacementInstrumentCooperation replacementInstrumentCooperation = replacementInstrumentCooperationDao.getByCooperationId(replacementInstrumentActivity.getCooperationOrganId());
 | 
	
		
			
				|  |  | +        //如果提交过调查问卷,那么覆盖之前的记录
 | 
	
		
			
				|  |  | +        ReplacementInstrumentActivity activity = replacementInstrumentActivityDao.findByUserId(replacementInstrumentActivity.getCooperationOrganId(), sysUser.getId());
 | 
	
		
			
				|  |  | +        if (replacementInstrumentCooperation != null && replacementInstrumentCooperation.getOpenPay().equals(YesOrNoEnum.YES)) {
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setOpenFlag(1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Boolean sendPush = false;
 | 
	
		
			
				|  |  | +        List<QuestionnaireUserResult> questionnaireUserResultList = replacementInstrumentActivity.getQuestionnaireUserResultList();
 | 
	
		
			
				|  |  | +        if (activity != null) {
 | 
	
		
			
				|  |  | +            if (!activity.getPayStatus().equals(0)) {
 | 
	
		
			
				|  |  | +                throw new BizException("您已参与调查,谢谢参与!");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //覆盖之前的数据
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setId(activity.getId());
 | 
	
		
			
				|  |  | +            replacementInstrumentActivityDao.update(replacementInstrumentActivity);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if(questionnaireUserResultList != null && questionnaireUserResultList.size() > 0){
 | 
	
		
			
				|  |  | +                //删除原来的问卷结果
 | 
	
		
			
				|  |  | +                questionnaireUserResultDao.delByActiveIdAndUserId(activity.getId(),sysUser.getId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (replacementInstrumentActivity.getInstrumentsId() != null && (activity.getInstrumentsId() == null || activity.getInstrumentsId() == 0)) {
 | 
	
		
			
				|  |  | +                sendPush = true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            replacementInstrumentActivityDao.insert(replacementInstrumentActivity);
 | 
	
		
			
				|  |  | +            sendPush = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(questionnaireUserResultList != null && questionnaireUserResultList.size() > 0){
 | 
	
		
			
				|  |  | +            //新增问卷结果
 | 
	
		
			
				|  |  | +            questionnaireUserResultDao.batchInsert(questionnaireUserResultList,
 | 
	
		
			
				|  |  | +                    QuestionnaireActiveTypeEnum.REPLACEMENT.getCode(),
 | 
	
		
			
				|  |  | +                    topicId,activity.getId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //已开启缴费推送购买链接
 | 
	
		
			
				|  |  | +        if (sendPush && replacementInstrumentActivity.getOpenFlag().equals(1) && replacementInstrumentActivity.getInstrumentsId() != null) {
 | 
	
		
			
				|  |  | +            ReplacementInstrument replacementInstrument = replacementInstrumentDao.get(replacementInstrumentActivity.getInstrumentsId());
 | 
	
		
			
				|  |  | +            Map<Integer, String> userMap = new HashMap<>();
 | 
	
		
			
				|  |  | +            Map<Integer, String> userPhoneMap = new HashMap<>();
 | 
	
		
			
				|  |  | +            Integer userId = replacementInstrumentActivity.getUserId();
 | 
	
		
			
				|  |  | +            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
 | 
	
		
			
				|  |  | +            String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
 | 
	
		
			
				|  |  | +            userMap.put(userId, userId.toString());
 | 
	
		
			
				|  |  | +            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.REPLACEMENT_PAY_PUSH,
 | 
	
		
			
				|  |  | +                    userMap, null, 0, "5?" + pushUrl + replacementInstrumentActivity.getId(), "STUDENT", replacementInstrument.getBrand(), "");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            userPhoneMap.put(replacementInstrumentActivity.getUserId(), replacementInstrumentActivity.getMobileNo());
 | 
	
		
			
				|  |  | +            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.REPLACEMENT_PAY_PUSH,
 | 
	
		
			
				|  |  | +                    userPhoneMap, null, 0, null, "STUDENT", replacementInstrument.getBrand(), HttpUtil.getSortUrl(pushUrl + replacementInstrumentActivity.getId()));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return replacementInstrumentActivity;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public ReplacementInstrumentActivity findByUserId(Integer cooperationOrganId, Integer userId) {
 | 
	
		
			
				|  |  |          return replacementInstrumentActivityDao.findByUserId(cooperationOrganId, userId);
 | 
	
	
		
			
				|  | @@ -390,4 +464,62 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
 | 
	
		
			
				|  |  |          pageInfo.setRows(dataList);
 | 
	
		
			
				|  |  |          return pageInfo;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void resultSync(){
 | 
	
		
			
				|  |  | +        //获取所有问卷结果
 | 
	
		
			
				|  |  | +        List<ReplacementInstrumentActivity> activities = replacementInstrumentActivityDao.findAll(new HashMap<>());
 | 
	
		
			
				|  |  | +        //获取所有问题
 | 
	
		
			
				|  |  | +        List<QuestionnaireQuestion> questionList = questionnaireQuestionDao.findByTopicId(2);
 | 
	
		
			
				|  |  | +        List<QuestionnaireUserResult> questionnaireUserResultList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        for (ReplacementInstrumentActivity activity : activities) {
 | 
	
		
			
				|  |  | +            String questionResult = activity.getQuestionResult();
 | 
	
		
			
				|  |  | +            if(StringUtils.isEmpty(questionResult)){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            String[] split = questionResult.split("");
 | 
	
		
			
				|  |  | +            for (int i = 0; i < split.length; i++) {
 | 
	
		
			
				|  |  | +                QuestionnaireUserResult result = new QuestionnaireUserResult();
 | 
	
		
			
				|  |  | +                QuestionnaireQuestion question = questionList.get(i);
 | 
	
		
			
				|  |  | +                //获取问题答案
 | 
	
		
			
				|  |  | +                QuestionnaireQuestionItem item = questionnaireQuestionItemDao.findByQuestionId(question.getId());
 | 
	
		
			
				|  |  | +                result.setUserId(activity.getUserId());
 | 
	
		
			
				|  |  | +                result.setActiveId(activity.getId());
 | 
	
		
			
				|  |  | +                result.setActiveType(QuestionnaireActiveTypeEnum.REPLACEMENT);
 | 
	
		
			
				|  |  | +                result.setQuestionnaireQuestionId(question.getId());
 | 
	
		
			
				|  |  | +                result.setQuestionnaireQuestionItemIdList(item.getId() + (Integer.parseInt(split[i]) == 0?1:0) + "");
 | 
	
		
			
				|  |  | +                result.setQuestionnaireTopicId(question.getQuestionnaireTopicId());
 | 
	
		
			
				|  |  | +                questionnaireUserResultList.add(result);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        questionnaireUserResultDao.batchInsert1(questionnaireUserResultList);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public Object queryUserInfo(Integer cooperationOrganId,SysUser user) {
 | 
	
		
			
				|  |  | +        ReplacementInstrumentActivity replacementInstrumentActivity = this.findByUserId(cooperationOrganId, user.getId());
 | 
	
		
			
				|  |  | +        if (replacementInstrumentActivity == null) {
 | 
	
		
			
				|  |  | +            Student student = studentService.get(user.getId());
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity = new ReplacementInstrumentActivity();
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setUserId(user.getId());
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setClasses(student.getCurrentClass());
 | 
	
		
			
				|  |  | +            if (student.getCurrentGradeNum() != null) {
 | 
	
		
			
				|  |  | +                replacementInstrumentActivity.setGrade(student.getCurrentGradeNum().toString());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setCooperationOrganId(cooperationOrganId);
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setUserName(StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername());
 | 
	
		
			
				|  |  | +            String subjectIdList = student.getSubjectIdList();
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotEmpty(subjectIdList)) {
 | 
	
		
			
				|  |  | +                replacementInstrumentActivity.setSubjectId(Integer.parseInt(subjectIdList.split(",")[0]));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        replacementInstrumentActivity.setMobileNo(user.getPhone());
 | 
	
		
			
				|  |  | +        CooperationOrgan cooperationOrgan = cooperationOrganService.get(cooperationOrganId);
 | 
	
		
			
				|  |  | +        if (cooperationOrgan != null) {
 | 
	
		
			
				|  |  | +            replacementInstrumentActivity.setCooperationOrganName(cooperationOrgan.getName());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ReplacementInstrumentCooperation replacementInstrumentCooperation = replacementInstrumentCooperationDao.getByCooperationId(cooperationOrganId);
 | 
	
		
			
				|  |  | +        replacementInstrumentActivity.setShowQuestion(replacementInstrumentCooperation.getShowQuestion());
 | 
	
		
			
				|  |  | +        return replacementInstrumentActivity;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |