Explorar o código

Merge branch 'dev' of wangzhinan/wlyy2.0 into dev

huangwenjie %!s(int64=6) %!d(string=hai) anos
pai
achega
5c37c69242

+ 70 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/AccountDO.java

@ -7,6 +7,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.List;
/**
 * Created by wang zhinan on 2018/4/26.
@ -40,11 +41,29 @@ public class AccountDO extends IdEntityWithOperation implements Serializable {
    private String hospital;//社区
    @Transient
    private String sum;//总积分(已用积分和剩余积分)
    private Long sum;//总积分(已用积分和剩余积分)
    @Transient
    private int usedTotal;//已用积分
    @Transient
    private Long nowTotal;//今日获取积分
    @Transient
    private Long activityTotal;//参与活动数;
    @Transient
    private Long taskTotal;//参与任务数;
    @Transient
    private int teamRanking;//团队排名
    @Transient
    private int cityRanking;//全市排名
    @Transient
    private List<String> patientIds;//团队居民id
    public String getSaasId() {
        return saasId;
    }
@ -117,11 +136,59 @@ public class AccountDO extends IdEntityWithOperation implements Serializable {
        this.hospitalName = hospitalName;
    }
    public String getSum() {
    public Long getSum() {
        return sum;
    }
    public void setSum(String sum) {
    public void setSum(Long sum) {
        this.sum = sum;
    }
    public Long getNowTotal() {
        return nowTotal;
    }
    public void setNowTotal(Long nowTotal) {
        this.nowTotal = nowTotal;
    }
    public Long getActivityTotal() {
        return activityTotal;
    }
    public void setActivityTotal(Long activityTotal) {
        this.activityTotal = activityTotal;
    }
    public Long getTaskTotal() {
        return taskTotal;
    }
    public void setTaskTotal(Long taskTotal) {
        this.taskTotal = taskTotal;
    }
    public int getTeamRanking() {
        return teamRanking;
    }
    public void setTeamRanking(int teamRanking) {
        this.teamRanking = teamRanking;
    }
    public int getCityRanking() {
        return cityRanking;
    }
    public void setCityRanking(int cityRanking) {
        this.cityRanking = cityRanking;
    }
    public List<String> getPatientIds() {
        return patientIds;
    }
    public void setPatientIds(List<String> patientIds) {
        this.patientIds = patientIds;
    }
}

+ 78 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/ActivityDO.java

@ -9,6 +9,7 @@ import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * Created by wang zhinan on 2018/4/26.
@ -58,12 +59,33 @@ public class ActivityDO extends IdEntityWithOperation implements Serializable {
    @Column(name = "remark")
    private String remark;//活动备注
    @Column(name = "type")
    private String type;//活动类型
    @Transient
    private String patientId;//居民id
    @Transient
    private String openId;//微信编码
    @Transient
    private String unionId;
    @Transient
    private String patientIdcard;//身份证号
    @Transient
    private Long total;//参加总数
    @Transient
    private int activityRanking;//活动中的排名
    @Transient
    private List<TaskPatientDetailDO> taskPatientDetailDOS;//参与活动详情
    @Transient
    private Long sum;//活动积分总数
    public String getSaasId() {
        return saasId;
    }
@ -186,4 +208,60 @@ public class ActivityDO extends IdEntityWithOperation implements Serializable {
    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }
    public Long getTotal() {
        return total;
    }
    public void setTotal(Long total) {
        this.total = total;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public List<TaskPatientDetailDO> getTaskPatientDetailDOS() {
        return taskPatientDetailDOS;
    }
    public void setTaskPatientDetailDOS(List<TaskPatientDetailDO> taskPatientDetailDOS) {
        this.taskPatientDetailDOS = taskPatientDetailDOS;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
    public String getPatientIdcard() {
        return patientIdcard;
    }
    public void setPatientIdcard(String patientIdcard) {
        this.patientIdcard = patientIdcard;
    }
    public int getActivityRanking() {
        return activityRanking;
    }
    public void setActivityRanking(int activityRanking) {
        this.activityRanking = activityRanking;
    }
    public Long getSum() {
        return sum;
    }
    public void setSum(Long sum) {
        this.sum = sum;
    }
}

+ 45 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/CreditsDetailDO.java

@ -42,9 +42,15 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    @Column(name = "hospital")
    private String hospital;//社区
    @Column(name = "description")
    private String description;//积分获取说明
    @Transient
    private TaskDO taskDO;//任务对象
    @Transient
    private String activityId;//活动ID
    @Transient
    private ActivityDO activityDO;//活动对象
@ -63,6 +69,13 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    @Transient
    private String openId;//微信编号
    @Transient
    private Long stepNumber;//步数
    @Transient
    private String unionId;
    public String getSaasId() {
        return saasId;
    }
@ -190,4 +203,36 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    public void setOpenId(String openId) {
        this.openId = openId;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public Long getStepNumber() {
        return stepNumber;
    }
    public void setStepNumber(Long stepNumber) {
        this.stepNumber = stepNumber;
    }
    public String getActivityId() {
        return activityId;
    }
    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
}

+ 1 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/TaskDO.java

@ -191,4 +191,5 @@ public class TaskDO extends IdEntityWithOperation implements Serializable{
    public void setOpenId(String openId) {
        this.openId = openId;
    }
}

+ 43 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/TaskPatientDetailDO.java

@ -5,6 +5,7 @@ import com.yihu.jw.IdEntityWithOperation;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
/**
@ -35,6 +36,17 @@ public class TaskPatientDetailDO extends IdEntityWithOperation implements Serial
    @Column(name = "task_id")
    private String taskId;//任务id
    @Column(name = "activity_id")
    private String activityId;//活动id
    @Column(name = "total")
    private Long total;//活动中获取的积分
    @Column(name = "union_id")
    private String unionId;
    @Transient
    private AccountDO accountDO;//账户信息
    public String getSaasId() {
        return saasId;
@ -92,4 +104,35 @@ public class TaskPatientDetailDO extends IdEntityWithOperation implements Serial
        this.taskId = taskId;
    }
    public String getActivityId() {
        return activityId;
    }
    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }
    public Long getTotal() {
        return total;
    }
    public void setTotal(Long total) {
        this.total = total;
    }
    public AccountDO getAccountDO() {
        return accountDO;
    }
    public void setAccountDO(AccountDO accountDO) {
        this.accountDO = accountDO;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
}

+ 7 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/health/bank/HealthBankMapping.java

@ -1,5 +1,7 @@
package com.yihu.jw.rm.health.bank;
import javax.print.DocFlavor;
/**
 * Created by Trick on 2018/2/7.
 */
@ -13,6 +15,7 @@ public class HealthBankMapping {
        public static final String createAccount = "/createAccount";
        public static final String selectAccount = "/selectAccount";
        public static final String findAccount = "/findAccount";
        public static final String findAccounByCondition ="/findAccounByCondition";
        public static final String createTask = "/createTask";
        public static final String deleteTask ="/deleteTask";
        public static final String findTask = "/findTask";
@ -46,6 +49,8 @@ public class HealthBankMapping {
        public static final String findCreditsLogInfo ="/findCreditsLogInfo";
        public static final String selectByActivity = "/selectByActivity";
        public static final String selectByRanking = "/selectByRanking";
        public static final String selectByActivityRanking = "/selectByActivityRanking";
        public static final String selectByActivityRanking1 = "/selectByActivityRanking1";
        public static final String updateCreditsLogInfo ="/updateCreditsLogInfo";
        public static final String exchangeGoods = "/exchangeGoods";
        public static final String findExchangeGoods="/findExchangeGoods";
@ -54,5 +59,7 @@ public class HealthBankMapping {
        public static final String deleteRule = "/deleteRule";
        public static final String findRules = "/findRules";
        public static final String createActiveRecord="/createActiveRecord";
        public static final String doctorAddIntegrate = "/doctorAddIntegrate";
        public static final String addStepIntegrate = "/addStepIntegrate";
    }
}

+ 37 - 4
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/controller/AccountController.java

@ -2,6 +2,8 @@ package com.yihu.jw.controller;/**
 * Created by nature of king on 2018/5/10.
 */
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.health.bank.AccountDO;
import com.yihu.jw.entity.health.bank.CreditsDetailDO;
import com.yihu.jw.restmodel.common.Envelop;
@ -14,10 +16,10 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
 * @author wangzhinan
@ -132,4 +134,35 @@ public class AccountController extends EnvelopRestController {
        }
    }*/
    /**
     * 筛选用户
     * @param object
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.findAccounByCondition)
    @ApiOperation(value = "按条件获取用户信息")
    public Envelop<AccountDO> select(@RequestBody JSONObject object){
        try{
            JSONArray patientIds = object.getJSONArray("patientIds");
            JSONArray deviceTypes = object.getJSONArray("deviceTypes");
            int bindStatus = object.getInteger("bindStatus");
            Integer page = object.getInteger("page");
            Integer size = object.getInteger("size");
            List<String> patientIds1 = new ArrayList<>();
            for (int i=0;patientIds != null && patientIds.size()!=0&& i<patientIds.size();i++){
                patientIds1.add(patientIds.getString(i));
            }
            List<String> deviceTypes1 = new ArrayList<>();
            for (int i=0;deviceTypes != null && deviceTypes.size()!=0&& i<deviceTypes.size();i++){
                deviceTypes1.add(deviceTypes.getString(i));
            }
            return service.findByCondition1(patientIds1,bindStatus,deviceTypes1,page,size);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
}

+ 100 - 6
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/controller/CreditsDetailController.java

@ -2,7 +2,11 @@ package com.yihu.jw.controller;/**
 * Created by nature of king on 2018/4/27.
 */
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.health.bank.AccountDO;
import com.yihu.jw.entity.health.bank.CreditsDetailDO;
import com.yihu.jw.entity.health.bank.TaskPatientDetailDO;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.rm.health.bank.HealthBankMapping;
@ -10,12 +14,13 @@ import com.yihu.jw.service.CreditsDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javafx.beans.binding.BooleanExpression;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
 * @author wangzhinan
@ -119,7 +124,7 @@ public class CreditsDetailController extends EnvelopRestController {
     * @param object {"filter":[""],"page":"","size":""}
     * @return
     */
  /*  @PostMapping(value = HealthBankMapping.healthBank.selectByRanking)
    @PostMapping(value = HealthBankMapping.healthBank.selectByRanking)
    @ApiOperation(value = "查询积分排名")
    public Envelop<AccountDO> selectByRanking(@RequestBody JSONObject object){
        try{
@ -136,7 +141,96 @@ public class CreditsDetailController extends EnvelopRestController {
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }*/
    }
    /**
     * 活动排名
     * @param object
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.selectByActivityRanking)
    @ApiOperation(value = "活动排名")
    public Envelop<TaskPatientDetailDO> selectByActivityRanking(@RequestBody JSONObject object){
        try{
            JSONArray array = object.getJSONArray("filter");
            String activityId = object.getString("activityId");
            Integer page = object.getInteger("page");
            Integer size = object.getInteger("size");
            List<String> ids = new ArrayList<>();
            for (int i=0;array != null && array.size()!=0&& i<array.size();i++){
                ids.add(array.getString(i));
            }
            return service.selectByActivityRanking(activityId,ids,page,size);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
    /**
     * 根据活动id查找全部活动
     *
     * @param activityId 活动ID
     * @param page 页码
     * @param size 分页大小
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.selectByActivityRanking1)
    @ApiOperation(value = "根据活动id查找全部排行")
    public Envelop<TaskPatientDetailDO> selectByActivityRanking1(@ApiParam(name = "activityId",value = "活动id")
                                                     @RequestParam(value = "activityId",required = true)String activityId,
                                                     @ApiParam(name = "page", value = "第几页,从1开始")
                                                     @RequestParam(value = "page", defaultValue = "1",required = false)Integer page,
                                                     @ApiParam(name = "size",defaultValue = "10",value = ",每页分页大小")
                                                     @RequestParam(value = "size", required = false)Integer size){
        try{
            return service.selectByActivityRanking1(activityId,page,size);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
    @PostMapping(value = HealthBankMapping.healthBank.doctorAddIntegrate)
    @ApiOperation(value = "添加积分记录")
    public Envelop<Boolean> doctorAddIntegrate(@RequestBody JSONObject object){
        try {
            JSONArray array = object.getJSONArray("patientIds");
            String ruleId = object.getString("ruleId");
            String description = object.getString("description");
            List<String> ids = new ArrayList<>();
            for (int i=0;array != null && array.size()!=0&& i<array.size();i++){
                ids.add(array.getString(i));
            }
            return service.doctorAddIntegrate(ids,ruleId,description);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
    /**
     * 步数获取积分
     *
     * @param creditsDetail 积分对象
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.addStepIntegrate)
    @ApiOperation(value = "步数获取积分")
    public Envelop<CreditsDetailDO> addStepIntegrate(@ApiParam(name = "creditsDetail",value = "积分记录JSON")
                                                 @RequestParam(value = "creditsDetail",required = true)String creditsDetail){
        try {
            CreditsDetailDO creditsDetailDO = toEntity(creditsDetail,CreditsDetailDO.class);
            return service.stepAddIntegrate(creditsDetailDO);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
}

+ 245 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/AccountService.java

@ -5,8 +5,10 @@ package com.yihu.jw.service;/**
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.dao.AccountDao;
import com.yihu.jw.entity.health.bank.AccountDO;
import com.yihu.jw.entity.health.bank.CreditsDetailDO;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.rm.health.bank.HealthBankMapping;
import com.yihu.jw.util.DateUtils;
import com.yihu.jw.util.ISqlUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
@ -15,6 +17,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -58,7 +61,141 @@ public class AccountService extends BaseJpaService<AccountDO,AccountDao> {
    public Envelop<AccountDO> findByCondition(AccountDO accountDO, Integer page, Integer size) throws ParseException {
        String sql = new ISqlUtils().getSql(accountDO,page,size,"*");
        List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
        for (AccountDO accountDO1:accountDOS){
            String sql1 = "select COALESCE(sum(bcd.integrate),0) as total from wlyy_health_bank_credits_detail bcd where bcd.trade_direction = 1" +
                    " AND bcd.create_time > '"+ DateUtils.getDayBegin()+"' AND bcd.create_time < '"+DateUtils.getDayEnd()+"' AND bcd.patient_id = " +
                    " '"+ accountDO1.getPatientId() +"'";
            List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql1);
            Long count = 0L;
            if(rstotal!=null&&rstotal.size()>0){
                Object object = rstotal.get(0).get("total");
                count = Long.parseLong(object.toString());
            }
            accountDO1.setNowTotal(count);
            String activitySql = "SELECT  COUNT(*) AS total FROM ( SELECT * FROM " +
                    "wlyy_health_bank_task_patient_detail " +
                    " WHERE patient_id = '" + accountDO1.getPatientId()+
                    "' GROUP BY activity_id ) btpd1";
            List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(activitySql);
            Long activityCount = 0L;
            if(rstotal1!=null&&rstotal1.size()>0){
                Object object = rstotal1.get(0).get("total");
                activityCount = Long.parseLong(object.toString());
            }
            accountDO1.setActivityTotal(activityCount);
            String taskSql = "SELECT  COUNT(*) AS total FROM ( SELECT * FROM " +
                    "wlyy_health_bank_task_patient_detail " +
                    " WHERE patient_id = '" + accountDO1.getPatientId()+
                    "' GROUP BY task_id ) btpd1";
            List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
            Long taskCount = 0L;
            if(rstotal2!=null&&rstotal2.size()>0){
                Object object = rstotal2.get(0).get("total");
                taskCount = Long.parseLong(object.toString());
            }
            accountDO1.setTaskTotal(taskCount);
            if (accountDO.getPatientIds() != null && accountDO.getPatientIds().size() != 0){
                StringBuffer buffer = new StringBuffer();
                buffer.append(" (");
                for (int i=0;i<accountDO.getPatientIds().size();i++){
                    buffer.append("'"+accountDO.getPatientIds().get(i)+"'").append(",");
                }
                buffer.deleteCharAt(buffer.length()-1);
                buffer.append(") ");
                String accountSql = "select * from wlyy_health_bank_account where patient_id in "+buffer;
                List<AccountDO> accountDOS1 = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(AccountDO.class));
                if (accountDOS1 != null && accountDOS1.size() !=0){
                    String sql2 = " SELECT " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS total " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " WHERE " +
                            " ba.id = '"+accountDO1.getId()+"'";
                    List<Map<String,Object>> rstotal3 = jdbcTemplate.queryForList(sql2);
                    Long Count = 0L;
                    if(rstotal3!=null&&rstotal3.size()>0){
                        Object object = rstotal3.get(0).get("total");
                        Count = Long.parseLong(object.toString());
                    }
                    accountDO1.setSum(Count);
                    StringBuffer buffer1 = new StringBuffer();
                    buffer1.append(" (");
                    for (int i=0;i<accountDOS1.size();i++){
                        buffer1.append("'"+accountDOS1.get(i).getId()+"'").append(",");
                    }
                    buffer1.deleteCharAt(buffer1.length()-1);
                    buffer1.append(") ");
                    String sql3 = "SELECT " +
                            " COUNT(1) + 1 AS total " +
                            "FROM " +
                            " ( " +
                            " SELECT " +
                            " ba.id AS id, " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS sum " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " WHERE " +
                            " ba.id IN " +buffer1+
                            " )ba1 WHERE ba1.sum > "+accountDO1.getSum();
                    List<Map<String,Object>> rstotal4 = jdbcTemplate.queryForList(sql3);
                    Integer Count1 = 0;
                    if(rstotal4!=null&&rstotal4.size()>0){
                        Object object = rstotal4.get(0).get("total");
                        Count1 = Integer.parseInt(object.toString());
                    }
                    accountDO1.setTeamRanking(Count1);
                    String sql4 = "SELECT " +
                            " COUNT(1) + 1 AS total " +
                            "FROM " +
                            " ( " +
                            " SELECT " +
                            " ba.id AS id, " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS sum " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " )ba1 WHERE ba1.sum > "+accountDO1.getSum();
                    List<Map<String,Object>> rstotal5 = jdbcTemplate.queryForList(sql4);
                    Integer Count2 = 0;
                    if(rstotal5!=null&&rstotal5.size()>0){
                        Object object = rstotal5.get(0).get("total");
                        Count2 = Integer.parseInt(object.toString());
                    }
                    accountDO1.setCityRanking(Count2);
                }
            }
        }
        String sqlcount = new ISqlUtils().getSql(accountDO,0,0,"count");
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
        Long count = 0L;
@ -67,4 +204,112 @@ public class AccountService extends BaseJpaService<AccountDO,AccountDao> {
        }
        return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,accountDOS,page,size,count);
    }
    /**
     * 根据条件活动用户信息
     *
     * @param patientIds 居民id
     * @param bindStatus 绑定状态
     *
     * @param deviceTypes 设备类型
     *
     * @param page 页码
     *
     * @param size 分页大小
     * @return
     */
    public Envelop<AccountDO> findByCondition1(List<String> patientIds ,int bindStatus,List<String> deviceTypes,Integer page,Integer size){
        StringBuffer buffer = new StringBuffer();
        buffer.append(" btpd.patient_id in(");
        if (patientIds == null || patientIds.size() == 0){
            buffer.append("''");
        }else {
            for (int i=0;i<patientIds.size();i++){
                buffer.append("'"+patientIds.get(i)+"'").append(",");
            }
            buffer.deleteCharAt(buffer.length()-1);
        }
        buffer.append(") ");
        StringBuffer buffer1 = new StringBuffer();
        buffer1.append("(");
        if (deviceTypes == null || deviceTypes.size() == 0){
            buffer1.append("''");
        }else {
            for (int i=0;i<deviceTypes.size();i++){
                buffer1.append("'"+deviceTypes.get(i)+"'").append(",");
            }
            buffer1.deleteCharAt(buffer1.length()-1);
        }
        buffer1.append(")");
        String sql1 = null ;
        if (bindStatus == -1){
            sql1 = "( SELECT btpd.patient_id AS patient_id FROM " +
                    "  wlyy_health_bank_task_patient_detail btpd " +
                    " LEFT JOIN wlyy_health_bank_task bt ON bt.id = btpd.task_id WHERE " +
                    " bt.task_code NOT IN "+buffer1+" and "+buffer+")";
        }else if (bindStatus == 1){
            sql1 = "( SELECT btpd.patient_id AS patient_id FROM " +
                    "  wlyy_health_bank_task_patient_detail btpd " +
                    " LEFT JOIN wlyy_health_bank_task bt ON bt.id = btpd.task_id WHERE " +
                    " bt.task_code IN "+buffer1 +" and "+buffer+")";
        }
        String sql =
                "SELECT ba1.patient_id AS patient_id," +
                        "ba1.account_name AS account_name," +
                        "ba1.hospital AS hospital," +
                        "ba1.total AS total," +
                        "ba1.create_time AS create_time," +
                        "ba1.sum AS sum" +
                        " FROM" +
                        "( 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 +COALESCE((cd1.total),0)) AS sum" +
                        " FROM" +
                        " wlyy_health_bank_account ba" +
                        " LEFT JOIN ( " +
                        "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 ON cd1.patient_id = ba.patient_id " +
                        " WHERE ba.patient_id IN " + sql1 +
                        " ORDER BY" +
                        " ba.create_time DESC " +
                        "LIMIT "+(page-1)*size+","+size +")ba1" +
                        " ORDER BY " +
                        " ba1.sum DESC";
        List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
        String sqlCount = "SELECT count(1) AS total"+
                " FROM " +
                " wlyy_health_bank_account ba LEFT JOIN " +
                " ( " +
                " 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 ON cd1.patient_id = ba.patient_id " +
                "WHERE ba.patient_id IN " + sql1 +
                " ORDER BY " +
                " ba.create_time, " +
                " (ba.total + COALESCE(cd1.total,0)) 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);
    }
}

+ 82 - 3
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/ActivityService.java

@ -5,6 +5,7 @@ package com.yihu.jw.service;/**
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.dao.ActivityDao;
import com.yihu.jw.entity.health.bank.ActivityDO;
import com.yihu.jw.entity.health.bank.TaskPatientDetailDO;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.rm.health.bank.HealthBankMapping;
import com.yihu.jw.util.ISqlUtils;
@ -61,7 +62,29 @@ public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
    public Envelop<ActivityDO> findByCondition(ActivityDO activityDO,Integer page, Integer size) throws ParseException {
        String sql = new ISqlUtils().getSql(activityDO,page,size,"*");
        List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
        for (ActivityDO activityDO1:activityDOS){
            String taskSql = "SELECT" +
                    " COUNT(1) AS total1 " +
                    "FROM " +
                    " ( " +
                    " SELECT DISTINCT " +
                    "  (btpd.patient_openid) " +
                    "  FROM " +
                    "  wlyy_health_bank_task_patient_detail btpd " +
                    "  WHERE " +
                    "  activity_id = '" +activityDO1.getId()+
                    "' ) btpd1";
            List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(taskSql);
            Long count = 0L;
            if(rstotal!=null&&rstotal.size()>0){
                count = (Long) rstotal.get(0).get("total1");
            }
            activityDO1.setTotal(count);
            String taskSql1 = "select * from wlyy_health_bank_task_patient_detail btpd where activity_id = '"+activityDO1.getId()
                    +"' and patient_openid = '"+activityDO.getOpenId()+"'";
            List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
            activityDO1.setTaskPatientDetailDOS(taskPatientDetailDOS);
        }
        String sqlcount = new ISqlUtils().getSql(activityDO,0,0,"count");
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
        Long count = 0L;
@ -103,10 +126,66 @@ public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
                " SELECT task_id FROM " +
                "wlyy_health_bank_task_patient_detail" +
                " WHERE " +
                " patient_openid = '"+activityDO.getOpenId()+ "' )" +
                " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"')" +
                " )" +
                " LIMIT "+(page-1)*size +","+size;
        List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
        for (ActivityDO activityDO1:activityDOS){
            String activitySql ="SELECT btpd1.sum AS total FROM (SELECT " +
                    " SUM(total) AS sum , " +
                    " patient_id, " +
                    " patient_openid, " +
                    " patient_idcard, " +
                    " activity_id," +
                    " union_id " +
                    " FROM " +
                    " wlyy_health_bank_task_patient_detail " +
                    "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
                    "WHERE " +
                    " btpd1.activity_id = '"+activityDO1.getId() +"' AND patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"'";
            List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(activitySql);
            Long count = 0L;
            if(rstotal!=null&&rstotal.size()>0){
                Object object =  rstotal.get(0).get("total");
                count = Long.parseLong(object.toString());
            }
            activityDO1.setSum(count);
            String rankingSql = "SELECT count(1)+1 AS total FROM (SELECT " +
                    " SUM(total) AS sum , " +
                    " patient_id, " +
                    " patient_openid, " +
                    " patient_idcard, " +
                    " activity_id " +
                    "FROM " +
                    " wlyy_health_bank_task_patient_detail " +
                    "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
                    "WHERE " +
                    " btpd1.activity_id = '"+activityDO1.getId()+"' AND btpd1.sum >" +activityDO1.getSum() ;
            List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql);
            Integer count1 = 0;
            if(rstotal1!=null&&rstotal1.size()>0){
                Object object =  rstotal1.get(0).get("total");
                count1 = Integer.parseInt(object.toString());
            }
            activityDO1.setActivityRanking(count1);
            String taskSql = "SELECT" +
                    " COUNT(1) AS total1 " +
                    "FROM " +
                    " ( " +
                    " SELECT DISTINCT " +
                    "  (btpd.patient_openid) " +
                    "  FROM " +
                    "  wlyy_health_bank_task_patient_detail btpd " +
                    "  WHERE " +
                    "  activity_id = '" +activityDO1.getId()+
                    "' ) btpd1";
            List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
            Long count2 = 0L;
            if(rstotal2!=null&&rstotal2.size()>0){
                count2 = (Long) rstotal2.get(0).get("total1");
            }
            activityDO1.setTotal(count2);
        }
        String sqlcount = "SELECT count(1) AS total" +
                " FROM wlyy_health_bank_activity " +
                "WHERE " +
@ -117,7 +196,7 @@ public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
                " SELECT task_id FROM " +
                "wlyy_health_bank_task_patient_detail" +
                " WHERE " +
                " patient_openid = '"+activityDO.getOpenId()+ "' )" +
                " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"' )" +
                " )";
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
        Long count = 0L;

+ 331 - 7
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/CreditsDetailService.java

@ -56,7 +56,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
        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")){
            if (creditsDetailDO1.getTradeType() != null && creditsDetailDO1.getTradeType().equalsIgnoreCase("HEALTH_TASK")){
                TaskDO taskDO = taskDao.findOne(creditsDetailDO1.getTransactionId());
                creditsDetailDO1.setTaskDO(taskDO);
            }
@ -147,7 +147,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                        "ba.hospital AS hospital," +
                        "ba.total AS total," +
                        "ba.create_time AS create_time," +
                        "(ba.total +(cd1.total)) AS sum" +
                        "(ba.total +COALESCE((cd1.total),0)) AS sum" +
                        " FROM" +
                        " wlyy_health_bank_account ba" +
                        " LEFT JOIN ( " +
@ -159,7 +159,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                        " WHERE " +
                        "cd.trade_direction = - 1" +
                        " GROUP BY " +
                        " cd.patient_id ) cd1 ON cd1.patient_id = ba.patient_id\n" +
                        " cd.patient_id ) cd1 ON cd1.patient_id = ba.patient_id " +
                        " WHERE " + buffer +
                        " ORDER BY" +
                        " ba.create_time DESC " +
@ -184,7 +184,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                "WHERE " + buffer +
                " ORDER BY " +
                " ba.create_time, " +
                " (ba.total + cd1.total) DESC ";
                " (ba.total + COALESCE(cd1.total,0)) DESC ";
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
        Long count = 0L;
        if(rstotal!=null&&rstotal.size()>0){
@ -213,9 +213,9 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                    accountDO1.setTotal(0);
                    accountDO1.setAccountName(creditsDetailDO.getName());
                    accountDO1.setCardNumber("jw");
                    accountDO1.setHospital("海沧区");
                    accountDO1.setHospital("350205");
                    accountDO1.setPassword("321321312321");
                    accountDO1.setHospitalName("haichan");
                    accountDO1.setHospitalName("海沧区");
                    accountDO1.setCreateTime(new Date());
                    accountDO1.setUpdateTime(new Date());
                    accountDao.save(accountDO1);
@ -244,6 +244,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                    taskPatientDetailDO.setStatus(Integer.parseInt("0"));
                    taskPatientDetailDO.setCreateTime(new Date());
                    taskPatientDetailDO.setUpdateTime(new Date());
                    taskPatientDetailDO.setTotal(Long.parseLong("0"));
                    taskPatientDetailDao.save(taskPatientDetailDO);
                }else if (taskPatientDetailDOS != null && taskDOList.get(0).getPeriod() == 0){
                    String taskSql1 = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDOList.get(0).getId()+
@ -259,6 +260,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                        taskPatientDetailDO.setStatus(Integer.parseInt("0"));
                        taskPatientDetailDO.setCreateTime(new Date());
                        taskPatientDetailDO.setUpdateTime(new Date());
                        taskPatientDetailDO.setTotal(Long.parseLong("0"));
                        taskPatientDetailDao.save(taskPatientDetailDO);
                    }
                }
@ -268,6 +270,18 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                creditsDetailDO1.setFlag(creditsDetailDO.getFlag());
                List<CreditsDetailDO> creditsDetailDOList = new ArrayList<>();
                creditsDetailDOList.add(creditsDetailDO1);
                TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
                taskPatientDetailDO.setPatientId(creditsDetailDO1.getPatientId());
                taskPatientDetailDO.setTaskId(creditsDetailDO1.getTransactionId());
                String taskSql1 = ISqlUtils.getAllSql(taskPatientDetailDO);
                List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
                TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDOS1.get(0);
                if (creditsDetailDO1.getTradeDirection() == 1){
                    taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()+creditsDetailDO1.getIntegrate());
                }else if (creditsDetailDO.getTradeDirection() == -1){
                    taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()-creditsDetailDO1.getIntegrate());
                }
                taskPatientDetailDao.save(taskPatientDetailDO1);
                AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId());
                if (creditsDetailDO1.getTradeDirection() == 1){
                    accountDO.setTotal(accountDO.getTotal()+creditsDetailDO1.getIntegrate());
@ -291,6 +305,88 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
        }
    }
    /**
     * 活动排名
     *
     * @param activityId 活动id
     * @param ids 微信编码
     *
     * @param page 页码
     *
     * @param size 分页大小
     * @return
     */
    public Envelop<TaskPatientDetailDO> selectByActivityRanking(String activityId,List<String> ids,Integer page,Integer size){
        StringBuffer buffer = new StringBuffer();
        buffer.append("(");
        if (ids == null || ids.size() == 0){
            buffer.append("''");
        }else {
            for (int i=0;i<ids.size();i++){
                buffer.append("'"+ids.get(i)+"'").append(",");
            }
            buffer.deleteCharAt(buffer.length()-1);
        }
        buffer.append(") ");
        String sql = "SELECT " +
                " * " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId +
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                " WHERE  patient_openid IN "+buffer+
                " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
        List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        for (TaskPatientDetailDO taskPatientDetailDO : taskPatientDetailDOS){
            String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
            List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
            taskPatientDetailDO.setAccountDO(accountDOS.get(0));
        }
        String sqlCount =  "SELECT " +
                " count(1) AS total " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId+
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                "WHERE  patient_openid IN "+buffer+
                " ORDER BY btpd1.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, taskPatientDetailDOS,page,size,count);
    }
    /**
     * 根据活动查询积分
     *
@ -319,6 +415,10 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                " and patient_id = '" +patientId+
                "' LIMIT "+(page-1)*size +","+size;
        List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class));
        for (CreditsDetailDO creditsDetailDO : creditsDetailDOS){
            TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
            creditsDetailDO.setTaskDO(taskDO);
        }
        String sqlcount = "SELECT count(1) AS" +
                " total FROM " +
                " wlyy_health_bank_credits_detail " +
@ -342,10 +442,132 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
    }
    /**
     * 根据活动查找全部排行
     *
     * @param activityId 活动id
     * @param page 页码
     * @param size 分页大小
     * @return
     */
    public Envelop<TaskPatientDetailDO> selectByActivityRanking1(String activityId,Integer page,Integer size){
        String sql = "SELECT " +
                " * " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId +
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
        List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        for (TaskPatientDetailDO taskPatientDetailDO : taskPatientDetailDOS){
            String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
            List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
            taskPatientDetailDO.setAccountDO(accountDOS.get(0));
        }
        String sqlCount =  "SELECT " +
                " count(1) AS total " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId+
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                " ORDER BY btpd1.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, taskPatientDetailDOS,page,size,count);
    }
    /**
     * 医生主动加分
     *
     * @param patientIds 病人id
     *
     * @param ruleId 规则id
     * @return
     */
    public Envelop<Boolean> doctorAddIntegrate(List<String> patientIds,String ruleId,String description){
        Envelop<Boolean> envelop = new Envelop<>();
        for (int i=0;i<patientIds.size();i++){
            String patientId = patientIds.get(i);
            String sql = "select * from wlyy_health_bank_account where patient_id = '"+patientId+"'";
            List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
            TaskRuleDO taskRuleDO = taskRuleDao.findOne(ruleId);
            if (taskRuleDO.getTradeDirection() == -1 && taskRuleDO.getIntegrate() == 0){
                String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"'";
                List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
                for (CreditsDetailDO creditsDetailDO:creditsDetailDOS){
                    creditsDetailDO.setStatus(0);
                    creditsDetailDO.setDescription(description);
                    credittsLogDetailDao.save(creditsDetailDO);
                    AccountDO accountDO = accountDOS.get(0);
                    accountDO.setTotal(0);
                    accountDao.save(accountDO);
                }
            }else{
                CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
                creditsDetailDO.setStatus(1);
                creditsDetailDO.setAccountId(accountDOS.get(0).getId());
                creditsDetailDO.setHospital("350205");
                creditsDetailDO.setPatientId(patientId);
                creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
                creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
                creditsDetailDO.setDescription(description);
                creditsDetailDO.setCreateTime(new Date());
                creditsDetailDO.setUpdateTime(new Date());
                credittsLogDetailDao.save(creditsDetailDO);
                if (taskRuleDO.getTradeDirection() == -1){
                    AccountDO accountDO = accountDOS.get(0);
                    int total = accountDO.getTotal() - taskRuleDO.getIntegrate();
                    if (total<0){
                        accountDO.setTotal(0);
                    }else {
                        accountDO.setTotal(total);
                    }
                    accountDao.save(accountDO);
                }else if (taskRuleDO.getTradeDirection() == 1){
                    AccountDO accountDO = accountDOS.get(0);
                    accountDO.setTotal(accountDO.getTotal() + taskRuleDO.getIntegrate());
                    accountDao.save(accountDO);
                }
            }
        }
        envelop.setObj(true);
        return envelop;
    }
    /**
     * 固定数据
     *
     * @param patientId
     * @param
     * @return
     *//*
    public List<TaskDO> getTasks(String patientId){
@ -375,4 +597,106 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
        return taskDOList;
    }
*/
    public Envelop<CreditsDetailDO> stepAddIntegrate(CreditsDetailDO creditsDetailDO){
        try {
            synchronized (creditsDetailDO.getPatientId()){
                String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
                List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
                if (accountDOList != null && accountDOList.size() != 0){
                    creditsDetailDO.setAccountId(accountDOList.get(0).getId());
                }else {
                    AccountDO accountDO1 = new AccountDO();
                    accountDO1.setPatientId(creditsDetailDO.getPatientId());
                    accountDO1.setTotal(0);
                    accountDO1.setAccountName(creditsDetailDO.getName());
                    accountDO1.setCardNumber("jw");
                    accountDO1.setHospital("350205");
                    accountDO1.setPassword("321321312321");
                    accountDO1.setHospitalName("海沧区");
                    accountDO1.setCreateTime(new Date());
                    accountDO1.setUpdateTime(new Date());
                    accountDao.save(accountDO1);
                    List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
                    creditsDetailDO.setAccountId(accountDOS.get(0).getId());
                }
                TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
                String sql1 = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+creditsDetailDO.getOpenId()+"' " +
                        "AND patient_idcard = '"+creditsDetailDO.getIdCard()+"' AND union_id = '"+creditsDetailDO.getUnionId()+"' AND task_id = '"+creditsDetailDO.getTransactionId()+"'";
                List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
                TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOList.get(0);
                String sql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+creditsDetailDO.getPatientId()+"' AND " +
                        "transaction_id = '"+creditsDetailDO.getTransactionId()+"' AND create_time > '"+DateUtils.getDayBegin() +"' AND" +
                        " create_time < '"+DateUtils.getDayEnd()+"'";
                List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>());
                if (creditsDetailDOS != null && creditsDetailDOS.size() != 0){
                    CreditsDetailDO creditsDetailDO1 = creditsDetailDOS.get(0);
                    TaskRuleDO taskRuleDO = taskRuleDao.findOne(taskDO.getRuleCode());
                    if (creditsDetailDO.getStepNumber() == 5000){
                        creditsDetailDO1.setIntegrate(1);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
                        taskPatientDetailDao.save(taskPatientDetailDO);
                        creditsDetailDOS.add(creditsDetailDO2);
                    }else if (creditsDetailDO.getStepNumber() == 10000){
                        creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+3);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
                        taskPatientDetailDao.save(taskPatientDetailDO);
                        creditsDetailDOS.add(creditsDetailDO2);
                    }else if (creditsDetailDO.getStepNumber() == 50000){
                        creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+4);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
                        creditsDetailDOS.add(creditsDetailDO2);
                    }
                }else{
                    CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
                    if (creditsDetailDO.getStepNumber() == 5000){
                        creditsDetailDO1.setIntegrate(1);
                        creditsDetailDO1.setTradeDirection(1);
                    }else if (creditsDetailDO.getStepNumber() == 10000){
                        creditsDetailDO1.setIntegrate(3);
                        creditsDetailDO1.setTradeDirection(1);
                    }else if (creditsDetailDO.getStepNumber() == 50000){
                        creditsDetailDO1.setIntegrate(7);
                        creditsDetailDO1.setTradeDirection(1);
                    }
                    creditsDetailDO1.setTradeType("HEALTH_TASK");
                    creditsDetailDO1.setPatientId(creditsDetailDO.getPatientId());
                    creditsDetailDO1.setHospital("350205");
                    creditsDetailDO1.setAccountId(creditsDetailDO1.getAccountId());
                    creditsDetailDO1.setStatus(1);
                    creditsDetailDO1.setCreateTime(new Date());
                    creditsDetailDO1.setUpdateTime(new Date());
                    CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                    AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                    accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
                    taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
                    taskPatientDetailDao.save(taskPatientDetailDO);
                    creditsDetailDOS.add(creditsDetailDO2);
                }
                Envelop<CreditsDetailDO> envelop = new Envelop<>();
                envelop.setDetailModelList(creditsDetailDOS);
                return envelop;
            }
        }catch (Exception e){
            e.printStackTrace();
            Envelop<CreditsDetailDO> envelop = new Envelop<>();
            return envelop;
        }
    }
}

+ 16 - 28
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/TaskPatientDtailService.java

@ -6,7 +6,6 @@ import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.dao.ActivityDao;
import com.yihu.jw.dao.TaskDao;
import com.yihu.jw.dao.TaskPatientDetailDao;
import com.yihu.jw.entity.health.bank.ActivityDO;
import com.yihu.jw.entity.health.bank.TaskDO;
import com.yihu.jw.entity.health.bank.TaskPatientDetailDO;
import com.yihu.jw.entity.health.bank.TaskRangDO;
@ -73,12 +72,26 @@ public class TaskPatientDtailService extends BaseJpaService<TaskPatientDetailDO,
        taskPatientDetailDO.setCreateTime(new Date());
        taskPatientDetailDO.setUpdateTime(new Date());
        taskPatientDetailDO.setStatus(Integer.parseInt("0"));
        String sql = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+taskPatientDetailDO.getPatientOpenid()+"'";
        String activitySql = "select * from wlyy_health_bank_task where transaction_id = '" + taskPatientDetailDO.getActivityId() +"'";
        List<TaskDO> taskDOList = jdbcTemplate.query(activitySql,new BeanPropertyRowMapper(TaskDO.class));
        StringBuffer buffer = new StringBuffer();
        buffer.append(" and task_id IN (");
        for (TaskDO taskDO : taskDOList){
            buffer.append("'"+taskDO.getId()+"'").append(",");
        }
        buffer.deleteCharAt(buffer.length()-1);
        buffer.append(")");
        String sql = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+taskPatientDetailDO.getPatientOpenid()+"' " +
                "AND patient_idcard = '"+taskPatientDetailDO.getPatientIdcard()+"' AND union_id = '"+taskPatientDetailDO.getUnionId()+"'"+buffer;
        List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        if (taskPatientDetailDOList != null && taskPatientDetailDOList.size() !=0){
            throw new Exception("该微信账号已报名过!");
        }
        taskPatientDetailDao.save(taskPatientDetailDO);
        for (TaskDO taskDO : taskDOList){
            taskPatientDetailDO.setTotal(Long.parseLong("0"));
            taskPatientDetailDO.setTaskId(taskDO.getId());
            taskPatientDetailDao.save(taskPatientDetailDO);
        }
        envelop.setObj(true);
        return envelop;
    }
@ -99,29 +112,4 @@ public class TaskPatientDtailService extends BaseJpaService<TaskPatientDetailDO,
    }
    /**
     * 我参与的活动
     *
     * @param taskPatientDetailDO 参与信息对象
     * @param page 页码
     * @param size 分页大小
     * @return
     */
    public Envelop<TaskPatientDetailDO> selectByPatient(TaskPatientDetailDO taskPatientDetailDO,Integer page,Integer size){
        String sql = new ISqlUtils().getSql(taskPatientDetailDO,page,size,"*");
        List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        for (TaskPatientDetailDO taskPatientDetailDO1:taskPatientDetailDOS){
            TaskDO taskDO = taskDao.findOne(taskPatientDetailDO1.getTaskId());
            ActivityDO activityDO = activityDao.findOne(taskDO.getTransactionId());
            taskDO.setActivityDO(activityDO);
            taskPatientDetailDO1.setTaskDO(taskDO);
        }
        String sqlcount = new ISqlUtils().getSql(taskPatientDetailDO,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, taskPatientDetailDOS,page,size,count);
    }
}

+ 5 - 1
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/ISqlUtils.java

@ -25,6 +25,10 @@ public class ISqlUtils {
        }else if(isFlag.equalsIgnoreCase("*")){
            sb.append("select * from ").append(tableName).append(" where 1=1 ");
        }
        JSONObject object1  = (JSONObject) JSONObject.toJSON(object);
        if (object1.getString("id") !=null){
            sb.append(" and id = '" + object1.getString("id")+"' ");
        }
        Field[] fArray= c.getDeclaredFields();
        for(Field f:fArray){
                //拿到字段后与实体类中的属性匹配,并得到其get方法,用来获取他的属性值
@ -52,7 +56,7 @@ public class ISqlUtils {
                }
        }
        if(isFlag.equalsIgnoreCase("*")){
            sb.append("ORDER BY update_time DESC ").append("LIMIT ").append((page-1)*size+",").append(size);
            sb.append(" ORDER BY update_time DESC ").append("LIMIT ").append((page-1)*size+",").append(size);
        }
        return sb.toString();
    }