| 
					
				 | 
			
			
				@ -0,0 +1,202 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.service;/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by nature of king on 2018/4/27. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.health.bank.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.common.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.health.bank.HealthBankMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.ISqlUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.BeanPropertyRowMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.transaction.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author wangzhinan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @create 2018-04-27 16:53 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @desc credits log info Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 **/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,CredittsLogDetailDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CredittsLogDetailDao credittsLogDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private TaskDao taskDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ActivityDao activityDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JdbcTemplate jdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private AccountDao accountDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private TaskDetailDao taskDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *  find creditsLogInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws ParseException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<CreditsDetailDO> findByCondition(CreditsDetailDO creditsDetailDO, Integer page, Integer size) throws ParseException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = new ISqlUtils().getSql(creditsDetailDO,page,size,"*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (CreditsDetailDO creditsDetailDO1 : creditsDetailDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (creditsDetailDO1.getTradeType().equalsIgnoreCase("HEALTH_TASK")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                TaskDO taskDO = taskDao.findOne(creditsDetailDO1.getTransactionId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                creditsDetailDO1.setTaskDO(taskDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if(creditsDetailDO1.getTradeType().equalsIgnoreCase("HEALTH_ACTIVITY")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ActivityDO activityDO = activityDao.findOne(creditsDetailDO1.getTransactionId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                creditsDetailDO1.setActivityDO(activityDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlcount = new ISqlUtils().getSql(creditsDetailDO,0,0,"count"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(rstotal!=null&&rstotal.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = (Long) rstotal.get(0).get("total"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, creditsDetailDOS,page,size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取账户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param creditsDetailDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<AccountDO> findByTradeDirection(CreditsDetailDO creditsDetailDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AccountDO accountDO = accountDao.findOne(creditsDetailDO.getAccountId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT SUM(cd.integrate) as total FROM wlyy_health_bank_credits_detail cd where cd.trade_direction = "+creditsDetailDO.getTradeDirection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal!= null && rstotal.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (rstotal.get(0).get("total") == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                accountDO.setUsedTotal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                accountDO.setUsedTotal(Integer.parseInt(rstotal.get(0).get("total").toString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccess(HealthBankMapping.api_success,accountDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<Boolean> exchangeGoods(GoodsDO goodsDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        CreditsDetailDO creditsLogDetailDO = new CreditsDetailDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Envelop<Boolean> envelop = new Envelop<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        envelop.setObj(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<AccountDO> selectByRanking(List<String> patientIds, Integer page, Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer buffer = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (patientIds !=null && patientIds.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            buffer.append(" ba.patient_id in("); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (int i=0;i<patientIds.size();i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                buffer.append("'"+patientIds.get(i)+"'").append(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            buffer.append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            buffer.deleteCharAt(buffer.length()-2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.patient_id AS patient_id, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.account_name AS account_name," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.hospital AS hospital, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.total AS total, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.create_time AS create_time, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " (ba.total +(cd1.total)) AS sum " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_health_bank_account ba, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ( " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " SUM(cd.integrate) AS total, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.patient_id AS patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_health_bank_credits_detail cd " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.trade_direction = - 1 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " GROUP BY " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ) cd1 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE " + buffer + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND cd1.patient_id = ba.patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "ORDER BY " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.create_time, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " (ba.total + cd1.total) DESC " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "LIMIT "+(page-1)*size+","+size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlCount = "SELECT count(1) AS total"+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_health_bank_account ba, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ( " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " SUM(cd.integrate) AS total, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.patient_id AS patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_health_bank_credits_detail cd " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.trade_direction = - 1 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " GROUP BY " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " cd.patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ) cd1 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE " + buffer + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND cd1.patient_id = ba.patient_id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "ORDER BY " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ba.create_time, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " (ba.total + cd1.total) DESC "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(rstotal!=null&&rstotal.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = (Long) rstotal.get(0).get("total"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, accountDOS,page,size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 添加积分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param creditsDetailDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<Boolean> insert(CreditsDetailDO creditsDetailDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (creditsDetailDO.getTradeDirection() == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (creditsDetailDO.getTradeType().equals("HEALTH_TASK")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                TaskDetailDO taskDetailDO = new TaskDetailDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setIntegrate(creditsDetailDO.getIntegrate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setTaskId(creditsDetailDO.getTransactionId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setSaasId(creditsDetailDO.getSaasId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setPatientId(creditsDetailDO.getPatientId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setTradeDirection(creditsDetailDO.getTradeDirection()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDO.setStatus("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                taskDetailDao.save(taskDetailDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        CreditsDetailDO creditsDetailDO1 =credittsLogDetailDao.save(creditsDetailDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (creditsDetailDO1.getTradeDirection() == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            accountDO.setTotal(accountDO.getTotal()+creditsDetailDO1.getIntegrate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (creditsDetailDO.getTradeDirection() == -1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            accountDO.setTotal(accountDO.getTotal()-creditsDetailDO1.getIntegrate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        accountDao.save(accountDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Envelop<Boolean> envelop = new Envelop<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        envelop.setObj(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |