浏览代码

三院医生圈功能

wangzhinan 1 年之前
父节点
当前提交
7adac0eb0c
共有 26 个文件被更改,包括 2128 次插入530 次删除
  1. 1 1
      business/base-service/src/main/java/com/yihu/jw/article/service/BaseMenuManageService.java
  2. 8 4
      business/base-service/src/main/java/com/yihu/jw/article/service/KnowledgeArticleDictService.java
  3. 14 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalGoodsDao.java
  4. 19 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalGoodsExchageDao.java
  5. 9 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalIntegrateDao.java
  6. 26 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalUserActivityDao.java
  7. 2 2
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalUserIntegrateDao.java
  8. 176 6
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalActivityService.java
  9. 261 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalGoodsService.java
  10. 0 257
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalIntegrateService.java
  11. 792 0
      business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalUserActivityService.java
  12. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  13. 98 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalActivityDO.java
  14. 103 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalGoodsDO.java
  15. 105 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalGoodsExchageDO.java
  16. 7 126
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalIntegrateDO.java
  17. 84 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalUserActivityDO.java
  18. 39 37
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalUserIntegrateDO.java
  19. 1 1
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  20. 34 6
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java
  21. 2 2
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/article/BaseMenuManageEndpoint.java
  22. 47 4
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalActivityController.java
  23. 150 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalGoodsController.java
  24. 0 80
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalIntegrateController.java
  25. 0 3
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalMedalController.java
  26. 149 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalUserActivityController.java

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/article/service/BaseMenuManageService.java

@ -1169,7 +1169,7 @@ public class BaseMenuManageService {
    /**
     * 判断该文章当前医生是否点赞或者收藏
     * 判断该文章/医生当前医生是否点赞或者收藏
     *
     * @param articleId
     * @return

+ 8 - 4
business/base-service/src/main/java/com/yihu/jw/article/service/KnowledgeArticleDictService.java

@ -352,10 +352,14 @@ public class KnowledgeArticleDictService extends BaseJpaService<KnowledgeArticle
		return true;
	}
	public KnowledgeArticleDictDO releaseArticle(String articleId,Integer releaseStatus ){
		KnowledgeArticleDictDO knowledgeArticleDictDO = knowledgeArticleDictDao.findByIdAndDel(articleId);
		if (null!=knowledgeArticleDictDO){
			knowledgeArticleDictDO.setReleaseStatus(releaseStatus);
			knowledgeArticleDictDao.save(knowledgeArticleDictDO);
		String ids[] = articleId.split(",");
		KnowledgeArticleDictDO knowledgeArticleDictDO = new KnowledgeArticleDictDO();
		for (int i=0;i<ids.length;i++){
			knowledgeArticleDictDO = knowledgeArticleDictDao.findByIdAndDel(ids[i]);
			if (null!=knowledgeArticleDictDO){
				knowledgeArticleDictDO.setReleaseStatus(releaseStatus);
				knowledgeArticleDictDao.save(knowledgeArticleDictDO);
			}
		}
		return knowledgeArticleDictDO;
	}

+ 14 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalGoodsDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.hospital.integrate.dao;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalGoodsDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
 * wangzhinan 20230523
 */
public interface BaseHospitalGoodsDao extends JpaRepository<BaseHospitalGoodsDO, String>, JpaSpecificationExecutor<BaseHospitalGoodsDO> {
}

+ 19 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalGoodsExchageDao.java

@ -0,0 +1,19 @@
package com.yihu.jw.hospital.integrate.dao;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalGoodsExchageDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
 * wangzhinan 20230523
 */
public interface BaseHospitalGoodsExchageDao extends JpaRepository<BaseHospitalGoodsExchageDO, String>, JpaSpecificationExecutor<BaseHospitalGoodsExchageDO> {
    @Query("from BaseHospitalGoodsExchageDO p where p.user = ?1 and p.goodsCode= ?2")
    List<BaseHospitalGoodsExchageDO> selectByUserAndGoodsCode(String user,String relationCode);
}

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalIntegrateDao.java

@ -1,14 +1,23 @@
package com.yihu.jw.hospital.integrate.dao;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
/**
 * wangzhinan 20230523
 */
public interface BaseHospitalIntegrateDao extends JpaRepository<BaseHospitalIntegrateDO, String>, JpaSpecificationExecutor<BaseHospitalIntegrateDO> {
    @Modifying
    @Query("delete from BaseHospitalIntegrateDO  where activityId = ?1")
    void deleteByActivityId(String activityId);
    @Query("from BaseHospitalIntegrateDO p where p.activityId = ?1 ")
    BaseHospitalIntegrateDO selectByActivityId(String activityId);
}

+ 26 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalUserActivityDao.java

@ -0,0 +1,26 @@
package com.yihu.jw.hospital.integrate.dao;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalGoodsExchageDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalUserActivityDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
 * wangzhinan 20230523
 */
public interface BaseHospitalUserActivityDao extends JpaRepository<BaseHospitalUserActivityDO, String>, JpaSpecificationExecutor<BaseHospitalUserActivityDO> {
    @Query("from BaseHospitalUserActivityDO p where p.user = ?1 and p.relationCode=?2 ")
    BaseHospitalUserActivityDO selectByUserAndRelationCode(String user, String relationCode);
    @Query("from BaseHospitalUserActivityDO p where p.relationCode = ?1 order by p.createTime desc")
    List<BaseHospitalUserActivityDO> selectByRelationCode(String relationCode);
    @Modifying
    @Query("delete from BaseHospitalUserActivityDO  where relationCode = ?1")
    void deleteByRelationCode(String relationCode);
}

+ 2 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/dao/BaseHospitalUserIntegrateDao.java

@ -14,10 +14,10 @@ import java.util.List;
 */
public interface BaseHospitalUserIntegrateDao extends JpaRepository<BaseHospitalUserIntegrateDO, String>, JpaSpecificationExecutor<BaseHospitalUserIntegrateDO> {
    @Query("from BaseHospitalUserIntegrateDO p where p.user = ?1 and p.relaitonCode=?2 ")
    @Query("from BaseHospitalUserIntegrateDO p where p.user = ?1 and p.relationCode=?2 ")
    List<BaseHospitalUserIntegrateDO> selectByUserAndRelationCode(String user, String relationCode);
    @Query("from BaseHospitalUserIntegrateDO p where p.user = ?1 and p.relaitonCode=?2 and p.createTime>=?3 and p.createTime<=?4 ")
    @Query("from BaseHospitalUserIntegrateDO p where p.user = ?1 and p.relationCode=?2 and p.createTime>=?3 and p.createTime<=?4 ")
    List<BaseHospitalUserIntegrateDO> selectByUserAndRelationCodeAndCreateTime(String user, String relationCode, Date startDate,Date endDate);
}

+ 176 - 6
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalActivityService.java

@ -1,36 +1,54 @@
package com.yihu.jw.hospital.integrate.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalGoodsDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.entity.specialist.BaseDiseaseHospitalDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalUserActivityDO;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalActivityDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalIntegrateDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserActivityDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@Transactional
public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActivityDO, BaseHospitalActivityDao> {
    @Autowired
    private BaseHospitalActivityDao hospitalActivityDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseHospitalIntegrateDao hospitalIntegrateDao;
    @Autowired
    private BaseHospitalUserActivityDao userActivityDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    /**
     * 新增或者修改活动
     * @param hospitalActivityDO
     * @return
     */
    public BaseHospitalActivityDO insertAndUpdate(BaseHospitalActivityDO hospitalActivityDO){
    @Transactional
    public BaseHospitalActivityDO insertAndUpdate(BaseHospitalActivityDO hospitalActivityDO,BaseHospitalIntegrateDO integrateDO){
        BaseHospitalActivityDO activityDO = new BaseHospitalActivityDO();
        if (StringUtils.isNoneBlank(hospitalActivityDO.getId())){
            activityDO = hospitalActivityDao.findById(hospitalActivityDO.getId()).get();
            hospitalActivityDO.setUpdateTime(new Date());
            hospitalActivityDO.setDel(1);
            hospitalIntegrateDao.deleteByActivityId(hospitalActivityDO.getId());
        }else {
            hospitalActivityDO.setCreateTime(new Date());
            hospitalActivityDO.setUpdateTime(new Date());
@ -38,7 +56,66 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
            hospitalActivityDO.setSort(maxSort("base_hospital_activity")+1);
            hospitalActivityDO.setStatus(0);
        }
        return hospitalActivityDao.save(hospitalActivityDO);
        hospitalActivityDO= hospitalActivityDao.save(hospitalActivityDO);
        if (integrateDO!=null){
            integrateDO.setActivityId(hospitalActivityDO.getId());
            hospitalIntegrateDao.save(integrateDO);
        }
        if (hospitalActivityDO.getRegistrationType()==0){
            userActivityDao.deleteByRelationCode(hospitalActivityDO.getId());
            //删除自动参加
            if (hospitalActivityDO.getParticipantsType()==1){
                String conditionSql="";
                if (hospitalActivityDO.getParticipantsArea().equalsIgnoreCase("0")){
                    conditionSql = "";
                }else if (hospitalActivityDO.getParticipantsArea().equalsIgnoreCase("1")){
                    String str[] = hospitalActivityDO.getParticipantsCode().split(",");
                    String deptCode= "";
                    for (int i=0;i<str.length;i++){
                        deptCode +="'"+str[i]+"',";
                    }
                    if (StringUtils.isNoneBlank(deptCode)){
                        deptCode = deptCode.substring(0,deptCode.length()-1);
                    }
                    conditionSql = " and d.id IN(SELECT dh.doctor_code from base_doctor_hospital dh where dh.dept_code in("+deptCode+") and dh.del=1) ";
                }
                String doctorSql = " SELECT d.id,d.name FROM base_doctor d where 1=1 and d.del=1  ";
                List<Map<String,Object>> mapList = jdbcTemplate.queryForList(doctorSql+conditionSql);
                for (Map<String,Object> map:mapList){
                    String id= map.get("id").toString();
                    String name = map.get("name").toString();
                    BaseHospitalUserActivityDO userActivityDO = new BaseHospitalUserActivityDO();
                    userActivityDO.setType(1);
                    userActivityDO.setName(name);
                    userActivityDO.setUser(id);
                    userActivityDO.setStatus(1);
                    userActivityDO.setRelationCode(hospitalActivityDO.getId());
                    userActivityDO.setRelationName(hospitalActivityDO.getTitle());
                    userActivityDO.setCreateTime(new Date());
                    userActivityDO.setUpdateTime(new Date());
                    userActivityDao.save(userActivityDO);
                }
            }else if (hospitalActivityDO.getParticipantsType()==2){
                String patientSql = " SELECT id,name FROM base_patient where del=1  ";
                List<Map<String,Object>> mapList = jdbcTemplate.queryForList(patientSql);
                for (Map<String,Object> map:mapList){
                    String id= map.get("id").toString();
                    String name = map.get("name").toString();
                    BaseHospitalUserActivityDO userActivityDO = new BaseHospitalUserActivityDO();
                    userActivityDO.setType(2);
                    userActivityDO.setName(name);
                    userActivityDO.setUser(id);
                    userActivityDO.setStatus(1);
                    userActivityDO.setRelationCode(hospitalActivityDO.getId());
                    userActivityDO.setRelationName(hospitalActivityDO.getTitle());
                    userActivityDO.setCreateTime(new Date());
                    userActivityDO.setUpdateTime(new Date());
                    userActivityDao.save(userActivityDO);
                }
            }
        }
        return hospitalActivityDO;
    }
@ -47,7 +124,10 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
     * @param id
     */
    public void deleteById(String id){
        hospitalActivityDao.deleteById(id);
        String str[]= id.split(",");
        for (int i=0;i<str.length;i++){
            hospitalActivityDao.deleteById(str[i]);
        }
    }
    /**
@ -57,14 +137,34 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
     * @return
     */
    public BaseHospitalActivityDO findById(String id){
        return hospitalActivityDao.findById(id).get();
        BaseHospitalActivityDO hospitalActivityDO = hospitalActivityDao.findById(id).get();
        BaseHospitalIntegrateDO hospitalIntegrateDO = hospitalIntegrateDao.selectByActivityId(hospitalActivityDO.getId());
        hospitalActivityDO.setIntegrateDO(hospitalIntegrateDO);
        return hospitalActivityDO;
    }
    public JSONObject selectInfoByUserAndActivityId(String user,String activityId){
        JSONObject object = new JSONObject();
        BaseHospitalActivityDO activityDO = hospitalActivityDao.findById(activityId).get();
        BaseHospitalUserActivityDO userActivityDO = userActivityDao.selectByUserAndRelationCode(user,activityId);
        List<BaseHospitalUserActivityDO> userActivityDOS = userActivityDao.selectByRelationCode(activityId);
        for (BaseHospitalUserActivityDO userActivityDO1:userActivityDOS){
            if (userActivityDO1.getType()==1){
                BaseDoctorDO doctorDO = doctorDao.findByIdAndDel(userActivityDO1.getUser());
                userActivityDO1.setDoctorDO(doctorDO);
            }
        }
        object.put("activityDO",activityDO);//活动详情
        object.put("userActivityList",userActivityDOS);//活动参与人数列表
        object.put("userActivityDO",userActivityDO);//改用户是否参与
        return object;
    }
    /**
     * 查询活动列表
     */
    public MixEnvelop selectByCondition(String title, Integer page, Integer size){
    public MixEnvelop selectByCondition(String title, Integer page, Integer size,Integer flag,Integer status,String startTime,String endTime){
        String orderBy = "  order by sort asc,create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
@ -89,6 +189,21 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
                "\tsort,\n" +
                "\tmanager as manager,\n" +
                "\tmanager_name as managerName,\n" +
                "\tregistration_type as registrationType,\n" +
                "\tdate_format(\n" +
                "\t\tregistration_start_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS registrationStartTime,\n" +
                "\tdate_format(\n" +
                "\t\tregistration_end_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS registrationEndTime,\n" +
                "\tis_task as isTask,\n" +
                "\ttask_code as taskCode,\n" +
                "\ttask_name as taskName,\n" +
                "\tbusiness_code as businessCode,\n" +
                "\tbusiness_name as businessName,\n" +
                "\tis_integrate as isIntegrate,\n" +
                "\tdate_format(\n" +
                "\t\tstart_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
@ -107,7 +222,31 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
            condition +=" and title like '%"+title+"%' ";
        }
        if (flag!=null){
            condition +=" and flag = '"+flag+"' ";
        }
        if (status!=null){
            condition +=" and status = '"+status+"' ";
        }
        if (StringUtils.isNoneBlank(startTime)){
            condition +=" and start_time >= '"+startTime+"' ";
        }
        if (StringUtils.isNoneBlank(endTime)){
            condition +=" and start_time >= '"+endTime+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        for (Map<String,Object> map:list){
            String id = map.get("id").toString();
            updateActivityStatus(id);
            if (map.get("registrationType").toString().equalsIgnoreCase("1")){
                List<BaseHospitalUserActivityDO> userActivityDOS = userActivityDao.selectByRelationCode(id);
                map.put("shengyuTotal",Integer.parseInt(map.get("count").toString())-userActivityDOS.size());
            }
        }
        String sqlCount ="select COUNT(1) as total from base_hospital_activity where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
@ -117,6 +256,24 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    public void updateActivityStatus(String id){
        BaseHospitalActivityDO activityDO = hospitalActivityDao.findById(id).get();
        if (activityDO!=null){
            Date startTime = activityDO.getStartTime();
            Date endTime = activityDO.getEndTime();
            Date date = new Date();
            Boolean flag = false;
            if (date.compareTo(startTime)==0||date.compareTo(endTime)==0){
                activityDO.setStatus(1);
            }else if (date.compareTo(startTime)>0&&date.compareTo(endTime)<0){
                activityDO.setStatus(1);
            }else if (date.compareTo(startTime)<0||date.compareTo(endTime)>0){
                activityDO.setStatus(2);
            }
            hospitalActivityDao.save(activityDO);
        }
    }
    /**
     * 获取排序的序号
     *
@ -202,4 +359,17 @@ public class BaseHospitalActivityService extends BaseJpaService<BaseHospitalActi
            return hospitalActivityDao.save(baseHospitalActivityDO);
        }
    }
    /**
     * 更新活动状态(0未开始1开始2结束)
     * @param id
     * @param status
     * @return
     */
    public BaseHospitalActivityDO updateStatusById(String id ,Integer status){
        BaseHospitalActivityDO activityDO = hospitalActivityDao.findById(id).get();
        activityDO.setStatus(status);
        return hospitalActivityDao.save(activityDO);
    }
}

+ 261 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalGoodsService.java

@ -0,0 +1,261 @@
package com.yihu.jw.hospital.integrate.service;
import com.yihu.jw.entity.hospital.integrate.*;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalGoodsDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalGoodsExchageDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserIntegrateDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseHospitalGoodsService extends BaseJpaService<BaseHospitalGoodsDO, BaseHospitalGoodsDao> {
    @Autowired
    private BaseHospitalGoodsDao hospitalGoodsDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseHospitalGoodsExchageDao goodsExchageDao;
    @Autowired
    private BaseHospitalUserIntegrateDao userIntegrateDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 新增或者修改商品库存
     * @param goodsDO
     * @return
     */
    public BaseHospitalGoodsDO insertAndUpdate(BaseHospitalGoodsDO goodsDO){
        if (StringUtils.isNoneBlank(goodsDO.getId())){
            goodsDO.setUpdateTime(new Date());
        }else {
            goodsDO.setCreateTime(new Date());
            goodsDO.setUpdateTime(new Date());
        }
        return hospitalGoodsDao.save(goodsDO);
    }
    /**
     * 根据id删除商品
     * @param id
     */
    public void deleteById(String id){
        hospitalGoodsDao.deleteById(id);
    }
    /**
     * 根据id获取商品信息
     *
     * @param id
     * @return
     */
    public BaseHospitalGoodsDO findById(String id){
        return hospitalGoodsDao.findById(id).get();
    }
    /**
     * 查询商品列表
     */
    public MixEnvelop selectByCondition(String name,Integer type,Integer status,String user,Integer page, Integer size){
        String orderBy = "  order by create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\tname,\n" +
                "\tbanner,\n" +
                "\ttype,\n" +
                "\tinventory,\n" +
                "\tintegrate,\n" +
                "\tremaining_inventory as remainingInventory,\n" +
                "\tparticipants_type as participantsType,\n" +
                "\texchange_total as exchangeTotal,\n" +
                "\tdescription as description,\n" +
                "\tdate_format(\n" +
                "\t\tcreate_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\tstatus\n" +
                "FROM\n" +
                "\tbase_hospital_goods  where 1=1  ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and name like '%"+name+"%' ";
        }
        if (type!=null){
            if (type==0){
                condition += " and integrate <=(SELECT IFNULL(SUM(integrate),0) as total FROM base_hospital_user_integrate where user='"+user+"') ";
            }else {
                condition +=" and type= '"+type+"' ";
            }
        }
        if (status!=null){
            condition +=" and status = '"+status+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        for (Map<String,Object> map:list){
            String exchageSql = "SELECT IFNULL(COUNT(1),0) as total FROM base_hospital_goods_exchage WHERE goods_code = '"+map.get("id")+"' and status=1";
            if (StringUtils.isNoneBlank(user)){
                exchageSql +=" and user='"+user+"' ";
            }
            Map<String,Object> map1 = jdbcTemplate.queryForMap(exchageSql);
            if (map1!=null){
                map.put("exchageQt",map1.get("total"));
            }
        }
        String sqlCount ="select COUNT(1) as total from base_hospital_goods where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 商品上架下架
     * @param id
     * @param status
     * @return
     */
    public BaseHospitalGoodsDO updateGoodsStatus(String id,Integer status){
        BaseHospitalGoodsDO goodsDO = hospitalGoodsDao.findById(id).get();
        goodsDO.setStatus(status);
        goodsDO.setUpdateTime(new Date());
        return hospitalGoodsDao.save(goodsDO);
    }
    /**
     * 兑换商品
     *
     * @param goodsId
     * @param user
     * @param type
     * @param name
     * @return
     * @throws Exception
     */
    public BaseHospitalGoodsExchageDO exchageGoods(String goodsId,String user,Integer type,String name,Integer quantity) throws Exception {
        BaseHospitalGoodsDO goodsDO = hospitalGoodsDao.findById(goodsId).get();
        List<BaseHospitalGoodsExchageDO> goodsExchageDOS = goodsExchageDao.selectByUserAndGoodsCode(user,goodsId);
        if (goodsDO.getExchangeTotal()>0&&goodsDO.getExchangeTotal()>=goodsExchageDOS.size()){
            throw new Exception("每人兑现次数"+goodsDO.getExchangeTotal());
        }
        String integrateSql = "SELECT IFNULL(SUM(integrate),0) as total FROM base_hospital_user_integrate where user ='"+user+"' ";
        int integrate = goodsDO.getIntegrate()*quantity;
        Map<String,Object> map = jdbcTemplate.queryForMap(integrateSql);
        if (map!=null){
            Integer total = Integer.parseInt(map.get("total").toString());
            if (total<integrate){
                throw new Exception("积分余额不足!");
            }
        }
        BaseHospitalGoodsExchageDO goodsExchageDO = new BaseHospitalGoodsExchageDO();
        goodsExchageDO.setUser(user);
        goodsExchageDO.setType(type);
        goodsExchageDO.setName(name);
        goodsExchageDO.setOrderNo("HLWYY"+System.currentTimeMillis()+(int)(Math.random()*900)+100);
        goodsExchageDO.setGoodsCode(goodsDO.getId());
        goodsExchageDO.setGoodsName(goodsDO.getName());
        goodsExchageDO.setGoodsType(goodsDO.getType());
        goodsExchageDO.setIntegrate(goodsDO.getIntegrate());
        goodsExchageDO.setQuantity(quantity);
        goodsExchageDO.setStatus(0);
        goodsExchageDO.setCreateTime(new Date());
        goodsExchageDO = goodsExchageDao.save(goodsExchageDO);
        BaseHospitalUserIntegrateDO userIntegrateDO = new BaseHospitalUserIntegrateDO();
        userIntegrateDO.setIntegrate(-integrate);
        userIntegrateDO.setUser(user);
        userIntegrateDO.setName(name);
        userIntegrateDO.setIntegrateType(2);
        userIntegrateDO.setType(type);
        userIntegrateDO.setStatus(1);
        userIntegrateDO.setCreateTime(new Date());
        userIntegrateDO.setUpdateTime(new Date());
        userIntegrateDO.setRelationCode(goodsId);
        userIntegrateDO.setRelationName(goodsDO.getName());
        userIntegrateDao.save(userIntegrateDO);
        goodsExchageDO.setStatus(1);
        goodsExchageDao.save(goodsExchageDO);
        goodsDO.setRemainingInventory(goodsDO.getInventory()-quantity);
        hospitalGoodsDao.save(goodsDO);
        return goodsExchageDO;
    }
    /**
     * 查询商品兑换记录
     */
    public MixEnvelop selectGoodsExchageByCondition(String name,String user,String startTime,String endTime,Integer page, Integer size){
        String orderBy = "  order by create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\tname,\n" +
                "\torder_no as orderNo,\n" +
                "\ttype,\n" +
                "\tuser,\n" +
                "\tintegrate,\n" +
                "\tgoods_code as goodsCode,\n" +
                "\tgoods_name as goodsName,\n" +
                "\tgoods_type as goodsType,\n" +
                "\tquantity as quantity,\n" +
                "\tdate_format(\n" +
                "\t\tcreate_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\tstatus\n" +
                "FROM\n" +
                "\tbase_hospital_goods_exchage  where 1=1  ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and goods_name like '%"+name+"%' ";
        }
        if (StringUtils.isNoneBlank(user)){
            condition +=" and user = '"+user+"' ";
        }
        if (StringUtils.isNoneBlank(startTime)){
            condition +=" and create_time >= '"+startTime+"' ";
        }
        if (StringUtils.isNoneBlank(endTime)){
            condition +=" and create_time <= '"+endTime+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        for (Map<String,Object> map:list){
            String goodsId=map.get("goodsCode").toString();
            BaseHospitalGoodsDO goodsDO = hospitalGoodsDao.findById(goodsId).get();
            map.put("goods",goodsDO);
        }
        String sqlCount ="select COUNT(1) as total from base_hospital_goods_exchage where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据兑换记录id获取商品兑换详情
     *
     * @param goodsExchageId
     * @return
     */
    public BaseHospitalGoodsExchageDO findGoodsExchageById(String goodsExchageId){
        return goodsExchageDao.findById(goodsExchageId).get();
    }
}

+ 0 - 257
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalIntegrateService.java

@ -1,257 +0,0 @@
package com.yihu.jw.hospital.integrate.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalMedalDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalUserIntegrateDO;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalIntegrateDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserIntegrateDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseHospitalIntegrateService extends BaseJpaService<BaseHospitalIntegrateDO, BaseHospitalIntegrateDao> {
    @Autowired
    private BaseHospitalUserIntegrateDao hospitalUserIntegrateDao;
    @Autowired
    private BaseHospitalIntegrateDao hospitalIntegrateDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseDoctorDao doctorDao;
    /**
     * 新增或者修改积分配置
     *
     * @param hospitalIntegrateDO
     * @return
     */
    public BaseHospitalIntegrateDO insertAndUpdate(BaseHospitalIntegrateDO hospitalIntegrateDO){
        if (StringUtils.isNoneBlank(hospitalIntegrateDO.getId())){
            hospitalIntegrateDO.setUpdateTime(new Date());
        }else {
            hospitalIntegrateDO.setCreateTime(new Date());
            hospitalIntegrateDO.setUpdateTime(new Date());
        }
        return hospitalIntegrateDao.save(hospitalIntegrateDO);
    }
    /**
     * 根据id删除积分配置
     * @param id
     */
    public void deleteById(String id){
        hospitalIntegrateDao.deleteById(id);
    }
    /**
     * 根据id获取积分配置
     *
     * @param id
     * @return
     */
    public BaseHospitalIntegrateDO findById(String id){
        return hospitalIntegrateDao.findById(id).get();
    }
    /**
     * 查询积分规则
     * @param name 积分配置名称
     * @param type 积分类型
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop selectByCondition(String name, String type, Integer page, Integer size){
        String orderBy = "  order by create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\ttype,\n" +
                "\ttype_name AS typeName,\n" +
                "\tname,\n" +
                "\titem,\n" +
                "\titem_name AS itemName,\n" +
                "\tbelong,\n" +
                "\tstatus,\n" +
                "\tflag,\n" +
                "\tconditions,\n" +
                "\tcontinuity_flag AS continuityFlag,\n" +
                "\tdays,\n" +
                "\tintegrate,\n" +
                "\tdaily_limit AS dailyLimit,\n" +
                "\tvalidity,\n" +
                "\tdate_format(\n" +
                "\t\tstart_validity,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS startValidity,\n" +
                "\tdate_format(\n" +
                "\t\tend_validity,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS endValidity,\n" +
                "\tdate_format(\n" +
                "\t\tcreate_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\tdescription\n" +
                "FROM\n" +
                "\tbase_hospital_integrate\n" +
                "WHERE\n" +
                "\t1 = 1  ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and name like '%"+name+"%' ";
        }
        if (StringUtils.isNoneBlank(type)){
            condition +=" and type ='"+type+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        String sqlCount ="select COUNT(1) as total from base_hospital_integrate where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    public JSONObject selectIntegrateByUser(String user,Integer page,Integer size){
        JSONObject object = new JSONObject();
        String orderBy = "  order by create_time desc  ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\ttype,\n" +
                "\tname,\n" +
                "\tuser,\n" +
                "\tintegrate,\n" +
                "\tintegrate_type AS integrateType,\n" +
                "\trelation_type AS relationType,\n" +
                "\trelation_code AS relationCode,\n" +
                "\trelation_item as relationItem,\n" +
                "\tstatus,\n" +
                "\tdate_format(create_time,'%Y-%m-%d %H:%i:%S') as createTime\n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate where 1=1 and user ='"+user+"' ";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+orderBy, page, size);
        String sqlCount ="select COUNT(1) as total from base_hospital_user_integrate where 1=1 and user ='"+user+"' ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        JSONObject data=  new JSONObject();
        data.put("list",list);
        data.put("page",page);
        data.put("size",size);
        data.put("total",count);
        object.put("data",data);//积分明细
        //剩余积分
        String integrateSql ="SELECT\n" +
                "\tIFNULL(SUM(integrate),0) AS total\n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate\n" +
                "WHERE\n" +
                "\t1 = 1 and user='"+user+"' ";
        List<Map<String, Object>> integrateRstotal = hibenateUtils.createSQLQuery(integrateSql);
        Double integrateTotal  = 0.0;
        if (integrateRstotal != null && integrateRstotal.size() > 0) {
            integrateTotal = Double.parseDouble(integrateRstotal.get(0).get("total").toString());
        }
        object.put("integrateTotal",integrateTotal);
        return object;
    }
  /*  public BaseHospitalUserIntegrateDO insertIntegrate(String user,String userName,String integrateId){
        Date startDate= DateUtil.strToDateLong(DateUtil.getStringDateShort()+" 00:00:00");
        Date endDate= DateUtil.strToDateLong(DateUtil.getStringDateShort()+" 23:59:59");
        BaseHospitalIntegrateDO hospitalIntegrateDO = hospitalIntegrateDao.findById(integrateId).get();
        List<BaseHospitalUserIntegrateDO> hospitalUserIntegrateDOS = hospitalUserIntegrateDao.selectByUserAndRelationCode(user,integrateId);//获取用户领取积分情况
        List<BaseHospitalUserIntegrateDO> hospitalUserIntegrateDOList = hospitalUserIntegrateDao.selectByUserAndRelationCodeAndCreateTime(user,integrateId,startDate,endDate);//获取当天是否领取
        if (hospitalIntegrateDO.getItem().equals("wanshan")){
            if (hospitalIntegrateDO.getFlag()==1){
                if (hospitalUserIntegrateDOS==null||hospitalUserIntegrateDOS.size()==0){
                    BaseDoctorDO doctorDO = doctorDao.findById(user).get();
                    if (StringUtils.isNoneBlank(doctorDO.getPhoto())&StringUtils.isNoneBlank(doctorDO.getName())
                            &doctorDO.getSex()!=null&StringUtils.isNoneBlank(doctorDO.getIntroduce())
                            &StringUtils.isNoneBlank(doctorDO.getExpertise())&StringUtils.isNoneBlank(doctorDO.getLearning())
                            &StringUtils.isNoneBlank(doctorDO.getVisitHospital())&StringUtils.isNoneBlank(doctorDO.getImg())){
                        BaseHospitalUserIntegrateDO userIntegrateDO = new BaseHospitalUserIntegrateDO();
                        userIntegrateDO.setIntegrate(hospitalIntegrateDO.getIntegrate());
                        userIntegrateDO.setUser(user);
                        userIntegrateDO.setName(userName);
                        userIntegrateDO.setIntegrateType(1);
                        userIntegrateDO.setRelationType(hospitalIntegrateDO.getType()+"");
                        userIntegrateDO.setRelationTypeName(hospitalIntegrateDO.getTypeName());
                        userIntegrateDO.setRelationItem(hospitalIntegrateDO.getItem());
                        userIntegrateDO.setRelationItemName(hospitalIntegrateDO.getItemName());
                        userIntegrateDO.setRelaitonCode(hospitalIntegrateDO.getId());
                        userIntegrateDO.setRelationName(hospitalIntegrateDO.getName());
                        userIntegrateDO.setStatus(1);
                        userIntegrateDO.setCreateTime(new Date());
                        userIntegrateDO.setUpdateTime(new Date());
                        hospitalUserIntegrateDao.save(userIntegrateDO);
                    }
                }
            }
        }else if (hospitalIntegrateDO.getItem().equals("doctor")){
            String sql = "";
            if (hospitalIntegrateDO.getFlag()==2){
                if (hospitalUserIntegrateDOList==null&&hospitalUserIntegrateDOList.size()==0){
                }
            }
        }
    }
*/
    /**
     * 需要手动点击签到的情况
     * @param signInDates
     * @return
     */
    private static int persistentDay(List<Date> signInDates) {
        //定义一个变量表示连续签到天数,从1开始
        int continuousDays = 0;
        if (signInDates!=null&&signInDates.size()!=0){
            continuousDays=1;
        }
        /**
         * 2. 从最大的时间开始往前比较,因为我们是要拿连续签到的时间,这样才有意义,减少无谓的比较
         */
        Calendar later = Calendar.getInstance();
        Calendar before = Calendar.getInstance();
        for (int i = signInDates.size() - 1; i > 0; i--) {
            later.setTime(signInDates.get(i));
            before.setTime(signInDates.get(i - 1));
            //前一天 + 1天 = 后一天,则视为连续签到
            before.add(Calendar.DAY_OF_MONTH, 1);
            if (later.get(Calendar.YEAR) == before.get(Calendar.YEAR)
                    && later.get(Calendar.MONTH) == before.get(Calendar.MONTH)
                    && later.get(Calendar.DAY_OF_YEAR) == before.get(Calendar.DAY_OF_YEAR)) {
                continuousDays++;
            } else {
                //只要遇到不连续的就不用再往前比较了
                break;
            }
        }
        return continuousDays;
    }
}

+ 792 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/integrate/service/BaseHospitalUserActivityService.java

@ -0,0 +1,792 @@
package com.yihu.jw.hospital.integrate.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.article.dao.KnowledgeArticleDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDoctorDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalUserActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalUserIntegrateDO;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalActivityDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalIntegrateDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserActivityDao;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserIntegrateDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class BaseHospitalUserActivityService extends BaseJpaService<BaseHospitalUserActivityDO, BaseHospitalUserActivityDao> {
    @Autowired
    private BaseHospitalUserIntegrateDao hospitalUserIntegrateDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BaseHospitalUserActivityDao hospitalUserActivityDao;
    @Autowired
    private BaseHospitalIntegrateDao hospitalIntegrateDao;
    @Autowired
    private BaseHospitalActivityDao hospitalActivityDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private KnowledgeArticleDoctorDao knowledgeArticleDoctorDao;
    /**
     * 查询活动报名记录
     * @param title 活动名称
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop selectUserActivityByCondition(String title,Integer page, Integer size){
        String orderBy = "  order by hua.create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
                "\thua.id,\n" +
                "\thua.type,\n" +
                "\thua.user,\n" +
                "\thua.name,\n" +
                "\tha.title,\n" +
                "\tdate_format(\n" +
                "\t\thua.create_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\thua.relation_code AS relationCode,\n" +
                "\thua.relation_name AS relaitonName\n" +
                "FROM\n" +
                "\tbase_hospital_user_activity hua,base_hospital_activity ha \n" +
                "WHERE\n" +
                "\t1 = 1 \n" +
                " and hua.relation_code=ha.id  ";
        if (StringUtils.isNoneBlank(title)){
            condition +=" and ha.title LIKE '%"+title+"%'  ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        for (Map<String,Object> map:list){
            String user = map.get("user").toString();
            String type = map.get("type").toString();
            if (type.equalsIgnoreCase("1")){
                BaseDoctorDO doctorDO = doctorDao.findByIdAndDel(user);
                map.put("name",doctorDO.getName());
                map.put("sex",doctorDO.getSex());
                map.put("age", DateUtil.getAgeForIdcard(doctorDO.getIdcard()));
                map.put("mobile",doctorDO.getMobile());
                map.put("idcard",doctorDO.getIdcard());
            }else if (type.equalsIgnoreCase("2")){
                BasePatientDO patientDO = patientDao.findById(user).get();
                map.put("name",patientDO.getName());
                map.put("sex",patientDO.getSex());
                map.put("age", DateUtil.getAgeForIdcard(patientDO.getIdcard()));
                map.put("mobile",patientDO.getMobile());
                map.put("idcard",patientDO.getIdcard());
            }
            String integrateSql ="SELECT IFNULL(SUM(integrate),0) as total FROM base_hospital_user_integrate where user='"+user+"' and relation_code='"+map.get("relationCode")+"' ";
            List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(integrateSql);
            Double count = 0.0;
            if (rstotal != null && rstotal.size() > 0) {
                count = Double.parseDouble(rstotal.get(0).get("total").toString());
            }
            map.put("total",count);
        }
        String sqlCount ="select COUNT(1) as total from base_hospital_user_activity hua,base_hospital_activity ha where 1=1 and hua.relation_code=ha.id ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 查询某个活动下某个用户获取的积分详情
     * @param user
     * @param acticityId
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop selectUserIntegrateByCondition(String user,String acticityId,Integer page, Integer size){
        String orderBy = "  order by hui.create_time desc  ";
        String condition = " ";
        String sql = " SELECT hui.id,hui.integrate," +
                "\tdate_format(\n" +
                "\t\thui.create_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime \n" +
                " FROM base_hospital_user_integrate hui where hui.user = '"+user+"' " +
                "and hui.relation_code ='"+acticityId+"' ";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        String sqlCount ="select COUNT(1) as total from base_hospital_user_integrate hui where hui.user = '"+user+"' " +
                "and hui.relation_code ='"+acticityId+"' ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据活动报名记录id获取活动报名情况详情
     *
     * @param userActivityId
     * @return
     */
    public BaseHospitalUserActivityDO findUserActivityById(String userActivityId){
        return hospitalUserActivityDao.findById(userActivityId).get();
    }
    /**
     * 查询某个用户参与的活动情况
     * @param user 用户编码
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop selectUserActivityByUser(String user,Integer page, Integer size){
        String orderBy = "  order by hua.create_time desc  ";
        String condition = " ";
        String sql = "SELECT\n" +
                "\thua.id,\n" +
                "\thua.type,\n" +
                "\thua.user,\n" +
                "\thua.name,\n" +
                "\tha.title,\n" +
                "\tha.banner,\n" +
                "\tha.task_code as taskCode,\n" +
                "\tha.content as content,\n" +
                "\tdate_format(\n" +
                "\t\tha.end_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS activityTime,\n" +
                "\tdate_format(\n" +
                "\t\thua.create_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\thua.relation_code AS relationCode,\n" +
                "\thua.relation_name AS relaitonName\n" +
                "FROM\n" +
                "\tbase_hospital_user_activity hua,base_hospital_activity ha \n" +
                "WHERE\n" +
                "\t1 = 1\n" +
                " and hua.relation_code=ha.id and hua.user='"+user+"' and ha.flag=1  ";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderBy, page, size);
        for (Map<String,Object> map:list){
            String relationCode= map.get("relationCode").toString();
            BaseHospitalIntegrateDO integrateDO = hospitalIntegrateDao.selectByActivityId(relationCode);
            map.put("integrate",integrateDO);
            String userIntegrateSql = "select * from base_hospital_user_integrate where 1=1 and user='"+user+"' and relation_code ='"+relationCode+"' ";
            String outpatientSql = " SELECT * FROM wlyy_outpatient where doctor ='"+user+"' and status>=1  ";
            String taskCode= map.get("taskCode").toString();
            if (taskCode.equalsIgnoreCase("twzx")){
                outpatientSql +=" and outpatient_type =3 and type=1 ";
            }else if (taskCode.equalsIgnoreCase("twfz")){
                outpatientSql +=" and outpatient_type =1 and type=1 ";
            }else if (taskCode.equalsIgnoreCase("spzx")){
                outpatientSql +=" and outpatient_type =3 and type=2 ";
            }else if (taskCode.equalsIgnoreCase("spfz")){
                outpatientSql +=" and outpatient_type =1 and type=2 ";
            }else if (taskCode.equalsIgnoreCase("xtmz")){
                outpatientSql +=" and outpatient_type =2 ";
            }
            int j = 0;
            int integrate=0;
            String createTime = map.get("createTime").toString();
            String activityTime=map.get("activityTime").toString();
            if (integrateDO!=null){
                if (integrateDO.getType()==1){
                    outpatientSql += " and create_time>='"+createTime+"' and create_time <='"+activityTime+"' ";
                    List<Map<String,Object>> mapList = jdbcTemplate.queryForList(outpatientSql);
                    Integer total = mapList.size();
                    JSONArray array = JSONArray.parseArray(integrateDO.getConditions());
                    for (int i=0;i<array.size();i++){
                        JSONObject object = array.getJSONObject(i);
                        if (StringUtils.isNoneBlank(object.getString("total"))){
                            if (total>=object.getInteger("total")){
                                if (integrate!=0){
                                    if (integrate<=object.getInteger("integrate")){
                                        integrate = object.getInteger("integrate");
                                        j = j+1;
                                    }
                                }else {
                                    j = j+1;
                                    integrate = object.getInteger("integrate");
                                }
                                break;
                            }
                        }
                    }
                }else if (integrateDO.getType()==2){
                    String startTime = DateUtil.getStringDateShort()+" 00:00:00";
                    String endTime = DateUtil.getStringDateShort()+" 23:59:59";
                    userIntegrateSql += " and create_time >='"+startTime+"' and create_time <='"+endTime+"' ";
                    outpatientSql += " and create_time>='"+startTime+"' and create_time <='"+endTime+"' ";
                    List<Map<String,Object>> mapList = jdbcTemplate.queryForList(outpatientSql);
                    Integer total = mapList.size();
                    JSONArray array = JSONArray.parseArray(integrateDO.getConditions());
                    for (int i=0;i<array.size();i++){
                        JSONObject object = array.getJSONObject(i);
                        if (StringUtils.isNoneBlank(object.getString("total"))){
                            if (total>=object.getInteger("total")){
                                if (integrate!=0){
                                    if (integrate<=object.getInteger("integrate")){
                                        integrate = object.getInteger("integrate");
                                        j = j+1;
                                    }
                                }else {
                                    j = j+1;
                                    integrate = object.getInteger("integrate");
                                }
                                break;
                            }
                        }
                    }
                }
                List<Map<String,Object>> mapList = jdbcTemplate.queryForList(userIntegrateSql);
                if (j>=1&&mapList.size()==0){
                    map.put("status","2");//1待完成2待领取3已领取
                }else if (j>=1&&mapList.size()>=1){
                    map.put("status","3");//1待完成2待领取3已领取
                }else {
                    map.put("status","1");//1待完成2待领取3已领取
                }
                map.put("integrate",integrate);
            }
        }
        String sqlCount ="select COUNT(1) as total from base_hospital_user_activity hua,base_hospital_activity ha where 1=1 and hua.relation_code=ha.id and hua.user='"+user+"' and ha.flag=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition+orderBy);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 用户领取积分
     * @param user
     * @param activityId
     * @return
     */
    public String receiveIntegrate(String user,String activityId){
        BaseHospitalActivityDO activityDO = hospitalActivityDao.findById(activityId).get();
        BaseHospitalIntegrateDO integrateDO = hospitalIntegrateDao.selectByActivityId(activityId);
        BaseHospitalUserActivityDO userActivityDO = hospitalUserActivityDao.selectByUserAndRelationCode(user,activityId);
        String userIntegrateSql = "select * from base_hospital_user_integrate where 1=1 and user='"+user+"' and relation_code ='"+activityId+"' ";
        String outpatientSql = " SELECT * FROM wlyy_outpatient where doctor ='"+user+"' and status>=1  ";
        String taskCode= activityDO.getTaskCode();
        if (taskCode.equalsIgnoreCase("twzx")){
            outpatientSql +=" and outpatient_type =3 and type=1 ";
        }else if (taskCode.equalsIgnoreCase("twfz")){
            outpatientSql +=" and outpatient_type =1 and type=1 ";
        }else if (taskCode.equalsIgnoreCase("spzx")){
            outpatientSql +=" and outpatient_type =3 and type=2 ";
        }else if (taskCode.equalsIgnoreCase("spfz")){
            outpatientSql +=" and outpatient_type =1 and type=2 ";
        }else if (taskCode.equalsIgnoreCase("xtmz")){
            outpatientSql +=" and outpatient_type =2 ";
        }
        int j = 0;
        int integrate=0;
        String createTime = DateUtil.dateToStrLong(userActivityDO.getCreateTime());
        String activityTime=DateUtil.dateToStrLong(activityDO.getEndTime());
        if (integrateDO!=null) {
            if (integrateDO.getType() == 1) {
                outpatientSql += " and create_time>='" + createTime + "' and create_time <='" + activityTime + "' ";
                List<Map<String, Object>> mapList = jdbcTemplate.queryForList(outpatientSql);
                Integer total = mapList.size();
                JSONArray array = JSONArray.parseArray(integrateDO.getConditions());
                for (int i = 0; i < array.size(); i++) {
                    JSONObject object = array.getJSONObject(i);
                    if (StringUtils.isNoneBlank(object.getString("total"))) {
                        if (total >= object.getInteger("total")) {
                            if (integrate != 0) {
                                if (integrate <= object.getInteger("integrate")) {
                                    integrate = object.getInteger("integrate");
                                    j = j + 1;
                                }
                            } else {
                                j = j + 1;
                                integrate = object.getInteger("integrate");
                            }
                            break;
                        }
                    }
                }
            } else if (integrateDO.getType() == 2) {
                String startTime = DateUtil.getStringDateShort() + " 00:00:00";
                String endTime = DateUtil.getStringDateShort() + " 23:59:59";
                userIntegrateSql += " and create_time >='" + startTime + "' and create_time <='" + endTime + "' ";
                outpatientSql += " and create_time>='" + startTime + "' and create_time <='" + endTime + "' ";
                List<Map<String, Object>> mapList = jdbcTemplate.queryForList(outpatientSql);
                Integer total = mapList.size();
                JSONArray array = JSONArray.parseArray(integrateDO.getConditions());
                for (int i = 0; i < array.size(); i++) {
                    JSONObject object = array.getJSONObject(i);
                    if (StringUtils.isNoneBlank(object.getString("total"))) {
                        if (total >= object.getInteger("total")) {
                            if (integrate != 0) {
                                if (integrate <= object.getInteger("integrate")) {
                                    integrate = object.getInteger("integrate");
                                    j = j + 1;
                                }
                            } else {
                                j = j + 1;
                                integrate = object.getInteger("integrate");
                            }
                            break;
                        }
                    }
                }
            }
            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(userIntegrateSql);
            if (j >= 1 && mapList.size() == 0) {
                BaseHospitalUserIntegrateDO userIntegrateDO = new BaseHospitalUserIntegrateDO();
                userIntegrateDO.setUpdateTime(new Date());
                userIntegrateDO.setUser(user);
                userIntegrateDO.setRelationCode(activityId);
                userIntegrateDO.setRelationName(activityDO.getTitle());
                userIntegrateDO.setStatus(1);
                userIntegrateDO.setIntegrate(+integrate);
                userIntegrateDO.setName(userActivityDO.getName());
                userIntegrateDO.setType(userActivityDO.getType());
                userIntegrateDO.setTaskCode(activityDO.getTaskCode());
                userIntegrateDO.setTaskName(activityDO.getTaskName());
                userIntegrateDO.setBusinessCode(activityDO.getBusinessCode());
                userIntegrateDO.setBusinessName(activityDO.getBusinessName());
                userIntegrateDO.setIntegrateType(1);
                hospitalUserIntegrateDao.save(userIntegrateDO);
                return "领取成功!";
            } else if (j >= 1 && mapList.size() >= 1) {
                return "已领取过!";
            } else {
                return "还不达标,不能领取!";
            }
        }else {
            return "无需领取!";
        }
    }
    /**
     * 用户报名
     *
     * @param user
     * @param name
     * @param type
     * @param activityId
     * @return
     */
    public BaseHospitalUserActivityDO takeActivity(String user,String name,Integer type,String activityId) throws Exception {
        BaseHospitalActivityDO activityDO = hospitalActivityDao.findById(activityId).get();
        Date date = new Date();
        if (!((date.compareTo(activityDO.getRegistrationStartTime())>0&&date.compareTo(activityDO.getRegistrationEndTime())<0)||date.compareTo(activityDO.getRegistrationStartTime())==0
                ||date.compareTo(activityDO.getRegistrationEndTime())==0)){
            throw new Exception("还未到报名时间!");
        }
        BaseHospitalUserActivityDO userActivityDO = new BaseHospitalUserActivityDO();
        userActivityDO.setType(type);
        userActivityDO.setName(name);
        userActivityDO.setUser(user);
        userActivityDO.setStatus(1);
        userActivityDO.setRelationCode(activityDO.getId());
        userActivityDO.setRelationName(activityDO.getTitle());
        userActivityDO.setCreateTime(new Date());
        userActivityDO.setUpdateTime(new Date());
        return hospitalUserActivityDao.save(userActivityDO);
    }
  /*  public BaseHospitalUserIntegrateDO insertIntegrate(String user,String userName,String integrateId){
        Date startDate= DateUtil.strToDateLong(DateUtil.getStringDateShort()+" 00:00:00");
        Date endDate= DateUtil.strToDateLong(DateUtil.getStringDateShort()+" 23:59:59");
        BaseHospitalIntegrateDO hospitalIntegrateDO = hospitalIntegrateDao.findById(integrateId).get();
        List<BaseHospitalUserIntegrateDO> hospitalUserIntegrateDOS = hospitalUserIntegrateDao.selectByUserAndRelationCode(user,integrateId);//获取用户领取积分情况
        List<BaseHospitalUserIntegrateDO> hospitalUserIntegrateDOList = hospitalUserIntegrateDao.selectByUserAndRelationCodeAndCreateTime(user,integrateId,startDate,endDate);//获取当天是否领取
        if (hospitalIntegrateDO.getItem().equals("wanshan")){
            if (hospitalIntegrateDO.getFlag()==1){
                if (hospitalUserIntegrateDOS==null||hospitalUserIntegrateDOS.size()==0){
                    BaseDoctorDO doctorDO = doctorDao.findById(user).get();
                    if (StringUtils.isNoneBlank(doctorDO.getPhoto())&StringUtils.isNoneBlank(doctorDO.getName())
                            &doctorDO.getSex()!=null&StringUtils.isNoneBlank(doctorDO.getIntroduce())
                            &StringUtils.isNoneBlank(doctorDO.getExpertise())&StringUtils.isNoneBlank(doctorDO.getLearning())
                            &StringUtils.isNoneBlank(doctorDO.getVisitHospital())&StringUtils.isNoneBlank(doctorDO.getImg())){
                        BaseHospitalUserIntegrateDO userIntegrateDO = new BaseHospitalUserIntegrateDO();
                        userIntegrateDO.setIntegrate(hospitalIntegrateDO.getIntegrate());
                        userIntegrateDO.setUser(user);
                        userIntegrateDO.setName(userName);
                        userIntegrateDO.setIntegrateType(1);
                        userIntegrateDO.setRelationType(hospitalIntegrateDO.getType()+"");
                        userIntegrateDO.setRelationTypeName(hospitalIntegrateDO.getTypeName());
                        userIntegrateDO.setRelationItem(hospitalIntegrateDO.getItem());
                        userIntegrateDO.setRelationItemName(hospitalIntegrateDO.getItemName());
                        userIntegrateDO.setRelaitonCode(hospitalIntegrateDO.getId());
                        userIntegrateDO.setRelationName(hospitalIntegrateDO.getName());
                        userIntegrateDO.setStatus(1);
                        userIntegrateDO.setCreateTime(new Date());
                        userIntegrateDO.setUpdateTime(new Date());
                        hospitalUserIntegrateDao.save(userIntegrateDO);
                    }
                }
            }
        }else if (hospitalIntegrateDO.getItem().equals("doctor")){
            String sql = "";
            if (hospitalIntegrateDO.getFlag()==2){
                if (hospitalUserIntegrateDOList==null&&hospitalUserIntegrateDOList.size()==0){
                }
            }
        }
    }
*/
    /**
     * 需要手动点击签到的情况
     * @param signInDates
     * @return
     */
    private static int persistentDay(List<Date> signInDates) {
        //定义一个变量表示连续签到天数,从1开始
        int continuousDays = 0;
        if (signInDates!=null&&signInDates.size()!=0){
            continuousDays=1;
        }
        /**
         * 2. 从最大的时间开始往前比较,因为我们是要拿连续签到的时间,这样才有意义,减少无谓的比较
         */
        Calendar later = Calendar.getInstance();
        Calendar before = Calendar.getInstance();
        for (int i = signInDates.size() - 1; i > 0; i--) {
            later.setTime(signInDates.get(i));
            before.setTime(signInDates.get(i - 1));
            //前一天 + 1天 = 后一天,则视为连续签到
            before.add(Calendar.DAY_OF_MONTH, 1);
            if (later.get(Calendar.YEAR) == before.get(Calendar.YEAR)
                    && later.get(Calendar.MONTH) == before.get(Calendar.MONTH)
                    && later.get(Calendar.DAY_OF_YEAR) == before.get(Calendar.DAY_OF_YEAR)) {
                continuousDays++;
            } else {
                //只要遇到不连续的就不用再往前比较了
                break;
            }
        }
        return continuousDays;
    }
    /**
     * 医生-个人积分榜单/接诊榜单/单个活动榜单
     * @param user 用户id
     * @param businessCode 业务
     * @param page
     * @param size
     * @return
     */
    public JSONObject selectUserIntegrateListByCondition(String user,String businessCode,String activityId,Integer page, Integer size){
        JSONObject object = new JSONObject();
        String condition = " ";
        if (StringUtils.isNoneBlank(businessCode)){
            condition +="  and business_code = '"+businessCode+"'  ";
        }
        if (StringUtils.isNoneBlank(activityId)){
            condition +="  and relation_code = '"+activityId+"'  ";
        }
        String sql ="SELECT\n" +
                "\tt.user,\n" +
                "\tt.name,\n" +
                "\tt.total ,@i\\:= @i + 1 AS number\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\tuser,\n" +
                "\t\t\tname,\n" +
                "\t\t\tSUM(integrate) AS total\n" +
                "\t\tFROM\n" +
                "\t\t\tbase_hospital_user_integrate\n" +
                "\t\tWHERE\n" +
                "\t\t\tstatus = 1\n" +
                condition+
                "\t\tGROUP BY\n" +
                "\t\t\tuser\n" +
                "\t\tORDER BY\n" +
                "\t\t\tSUM(integrate) DESC\n" +
                "\t\t\n" +
                "\t) t,\n" +
                "\t(SELECT @i\\:= "+(page - 1) * size+") AS itable\n ";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, size);
        for (Map<String,Object> map:list){
            String doctorId =map.get("user").toString();
            BaseDoctorDO doctorDO = doctorDao.findByIdAndDel(doctorId);
            map.put("doctorDO",doctorDO);//医生信息
            List<BaseDoctorHospitalDO> doctorHospitalList = doctorHospitalDao.findByDoctorCode(doctorId);
            map.put("doctorHospitalList",doctorHospitalList);
            String eulogySql= " SELECT\n" +
                    "\tIFNULL(COUNT(1), 0)  AS total\n" +
                    "FROM\n" +
                    "\tbase_knowledge_article_doctor\n" +
                    "WHERE\n" +
                    "\t(relation_code IN (\n" +
                    "\t\tSELECT\n" +
                    "\t\t\tid\n" +
                    "\t\tFROM\n" +
                    "\t\t\tbase_knowledge_dict\n" +
                    "\t\tWHERE\n" +
                    "\t\t\tcreate_user = '"+doctorId+"'\n" +
                    "\t) OR relation_code ='"+doctorId+"' )\n" +
                    "\tand type=2  ";
            List<Map<String, Object>> eulogyRstotal = hibenateUtils.createSQLQuery(eulogySql);
            Long eulogyTotal = 0L;
            if (eulogyRstotal != null && eulogyRstotal.size() > 0) {
                eulogyTotal = Long.parseLong(eulogyRstotal.get(0).get("total").toString());
            }
            map.put("eulogyTotal",eulogyTotal);//点赞数量
            boolean eulogy= false;
            List<KnowledgeArticleDoctorDO> knowledgeArticleDoctorDOS = knowledgeArticleDoctorDao.findByRelationCodeAndTypeAndUser(doctorId,2,user);//获取点赞
            if (knowledgeArticleDoctorDOS!=null&&knowledgeArticleDoctorDOS.size()>0){
                eulogy = true;
            }
            map.put("eulogy",eulogy);
        }
        String sqlCount ="SELECT\n" +
                "\tCOUNT(1) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\tUSER,\n" +
                "\t\t\tSUM(integrate) AS total\n" +
                "\t\tFROM\n" +
                "\t\t\t`base_hospital_user_integrate`\n" +
                "\t\tWHERE\n" +
                "\t\t\tSTATUS = 1\n" +
                condition+
                "\t\tGROUP BY\n" +
                "\t\t\tUSER\n" +
                "\t\tORDER BY\n" +
                "\t\t\tSUM(integrate) DESC\n" +
                "\t) t ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        String userSql =  " SELECT * FROM (SELECT t.user,t.name,t.total,@i\\:= @i + 1 AS number from \n" +
                "(SELECT\n" +
                "\tuser,\n" +
                "\tname,\n" +
                "\tSUM(integrate) AS total\n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate\n" +
                "WHERE\n" +
                "\tstatus = 1\n" +
                condition+
                "GROUP BY\n" +
                "\tuser\n" +
                "ORDER BY\n" +
                "\tSUM(integrate) DESC) t,\n" +
                "(SELECT @i\\:=0) AS itable) t1\n" +
                "WHERE t1.user='"+user+"'";
        List<Map<String,Object>> mapList = hibenateUtils.createSQLQuery(userSql);
        Map<String,Object> map = new HashMap<>();
        if (mapList!=null&&mapList.size()!=0){
            map = mapList.get(0);
            if (map!=null){
                String doctorId =map.get("user").toString();
                BaseDoctorDO doctorDO = doctorDao.findByIdAndDel(doctorId);
                map.put("doctorDO",doctorDO);//医生信息
                List<BaseDoctorHospitalDO> doctorHospitalList = doctorHospitalDao.findByDoctorCode(doctorId);
                map.put("doctorHospitalList",doctorHospitalList);
                String eulogySql= " SELECT\n" +
                        "\tIFNULL(COUNT(1), 0)  AS total\n" +
                        "FROM\n" +
                        "\tbase_knowledge_article_doctor\n" +
                        "WHERE\n" +
                        "\t(relation_code IN (\n" +
                        "\t\tSELECT\n" +
                        "\t\t\tid\n" +
                        "\t\tFROM\n" +
                        "\t\t\tbase_knowledge_dict\n" +
                        "\t\tWHERE\n" +
                        "\t\t\tcreate_user = '"+doctorId+"'\n" +
                        "\t) OR relation_code ='"+doctorId+"' )\n" +
                        "\tand type=2  ";
                List<Map<String, Object>> eulogyRstotal = hibenateUtils.createSQLQuery(eulogySql);
                Long eulogyTotal = 0L;
                if (eulogyRstotal != null && eulogyRstotal.size() > 0) {
                    eulogyTotal = Long.parseLong(eulogyRstotal.get(0).get("total").toString());
                }
                map.put("eulogyTotal",eulogyTotal);//点赞数量
                boolean eulogy= false;
                List<KnowledgeArticleDoctorDO> knowledgeArticleDoctorDOS = knowledgeArticleDoctorDao.findByRelationCodeAndTypeAndUser(doctorId,2,user);//获取点赞
                if (knowledgeArticleDoctorDOS!=null&&knowledgeArticleDoctorDOS.size()>0){
                    eulogy = true;
                }
                map.put("eulogy",eulogy);
            }
        }
        object.put("mapList",list);
        object.put("user",map);
        object.put("total",count);
        object.put("page",page);
        object.put("size",size);
        return object;
    }
    /**
     *
     * @param businessCode
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop selectDeptRomByCondition(String businessCode,Integer page, Integer size){
        String condition = " ";
        if (StringUtils.isNoneBlank(businessCode)){
            condition +="  and business_code = '"+businessCode+"'  ";
        }
        String sql ="SELECT\n" +
                "\tt.deptCode,\n" +
                "\tt.deptName,\n" +
                "\tt.total ,@i\\:= @i + 1 AS number\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\tdh.dept_code as deptCode,\n" +
                "\t\t\tdh.dept_name as deptName,\n" +
                "\t\t\tSUM(ui.integrate) AS total\n" +
                "\t\tFROM\n" +
                "\t\t\tbase_hospital_user_integrate ui\n" +
                "\t\t\tLEFT JOIN base_doctor_hospital dh ON \n" +
                "\t\t\tui.user=dh.doctor_code\n" +
                "\t\tWHERE\n" +
                "\t\t\tui.status = 1\n" +
                "\t\t\tAND ui.type=1\n" +
                condition+
                " \t\tGROUP BY\n" +
                "\t\t\tdh.dept_code\n" +
                "\t\tORDER BY\n" +
                "\t\t\tSUM(ui.integrate) DESC\n" +
                "\t\t\n" +
                "\t) t,\n" +
                "\t(SELECT @i\\:= "+(page - 1) * size+") AS itable";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, size);
        String sqlCount ="SELECT\n" +
                "\tCOUNT(1) AS total\n" +
                "FROM\n" +
                "\t(SELECT\n" +
                "\tdh.dept_code AS deptCode,\n" +
                "\tdh.dept_name AS deptName,\n" +
                "\tSUM(ui.integrate) AS total\n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate ui\n" +
                "LEFT JOIN base_doctor_hospital dh ON ui.user = dh.doctor_code\n" +
                "WHERE\n" +
                "\tui. status = 1\n" +
                "AND ui.type = 1\n" +
                condition+
                "GROUP BY\n" +
                "\tdh.dept_code\n" +
                "ORDER BY\n" +
                "\tSUM(ui.integrate) DESC) t ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据用户编码获取积分账户信息及明细
     *
     * @param user
     * @param startDate
     * @param endDate
     * @param page
     * @param size
     * @return
     */
    public JSONObject selectIntegrateInfoByUser(String user,String startDate,String endDate,Integer page,Integer size){
        JSONObject object = new JSONObject();
        String userIntegrateSql = "SELECT IFNULL(SUM(integrate),0) as total FROM base_hospital_user_integrate where user='"+user+"' ";
        Map<String,Object> map = jdbcTemplate.queryForMap(userIntegrateSql);
        if (map!=null){
            object.put("total",map.get("total"));//总积分
        }
        String dateCondition="";
        if (StringUtils.isNoneBlank(startDate)){
            dateCondition +=" and create_time >='"+startDate+"' ";
        }
        if (StringUtils.isNoneBlank(endDate)){
            dateCondition +=" and create_time <='"+endDate+"' ";
        }
        String addIntegrateSql =" and integrate_type=1 ";
        Map<String,Object> addMap = jdbcTemplate.queryForMap(userIntegrateSql+addIntegrateSql+dateCondition);
        if (addMap!=null){
            object.put("addTotal",addMap.get("total"));//以获取积分
        }
        String exchageIngrateSql = " and integrate_type=2 ";
        Map<String,Object> exchageMap = jdbcTemplate.queryForMap(userIntegrateSql+exchageIngrateSql+dateCondition);
        if (addMap!=null){
            object.put("exchageTotal",exchageMap.get("total"));//以获取积分
        }
        String userIntegrateListSql = "SELECT\n" +
                "\tuser,\n" +
                "\tname,\n" +
                "\tdate_format(\n" +
                "\t\tcreate_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime,\n" +
                "\tintegrate,\n" +
                "\tintegrate_type AS integrateType,\n" +
                "\trelation_code AS relationCode,\n" +
                "\trelation_name AS relationName\n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate\n" +
                "where user='"+user+"' "+dateCondition+" order by create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(userIntegrateListSql,page,size);
        String sqlCount ="SELECT COUNT(1) as total \n" +
                "FROM\n" +
                "\tbase_hospital_user_integrate\n" +
                "where user='"+user+"' "+dateCondition+" order by create_time desc ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        JSONObject data = new JSONObject();
        data.put("list",list);
        data.put("page",page);
        data.put("size",size);
        data.put("total",count);
        object.put("list",data);//积分明细
        return object;
    }
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -4632,7 +4632,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    "\t\tWHERE\n" +
                    "\t\t\tcreate_user = '"+doctor+"'\n" +
                    "\t) OR relation_code ='"+doctor+"' )\n" +
                    "\tand base_article_doctor_id IS NULL\n" +
         /*           "\tand base_article_doctor_id IS NULL\n" +*/
                    "\tand type=2  ";
            List<Map<String, Object>> eulogyRstotal = hibenateUtils.createSQLQuery(eulogySql);
            Long eulogyTotal = 0L;

+ 98 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalActivityDO.java

@ -6,6 +6,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Entity
@ -34,6 +35,103 @@ public class BaseHospitalActivityDO extends UuidIdentityEntityWithOperator {
    private Integer sort;//排序
    private String manager;//活动负责人code逗号隔开
    private String managerName;//活动负责人名称逗号隔开
    private Integer registrationType;//0自动报名1手动报名
    private Date registrationStartTime;//报名开始时间
    private Date registrationEndTime;//报名结束时间
    private Integer isTask;//是否关联任务1是0否
    private String taskCode;//任务code(字典HOSPITAL_TASK_BUSINESS_DICT)
    private String taskName;//任务名称(字典HOSPITAL_TASK_BUSINESS_DICT)
    private String businessCode;//业务code(字典HOSPITAL_TASK_BUSINESS_DICT)
    private String businessName;//业务名称(字典HOSPITAL_TASK_BUSINESS_DICT)
    private Integer isIntegrate;//是否配置积分1配置0未配置
    private BaseHospitalIntegrateDO integrateDO;//积分配置对象
    @Transient
    public BaseHospitalIntegrateDO getIntegrateDO() {
        return integrateDO;
    }
    public void setIntegrateDO(BaseHospitalIntegrateDO integrateDO) {
        this.integrateDO = integrateDO;
    }
    public Integer getRegistrationType() {
        return registrationType;
    }
    public void setRegistrationType(Integer registrationType) {
        this.registrationType = registrationType;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "registration_start_time")
    public Date getRegistrationStartTime() {
        return registrationStartTime;
    }
    public void setRegistrationStartTime(Date registrationStartTime) {
        this.registrationStartTime = registrationStartTime;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "registration_end_time")
    public Date getRegistrationEndTime() {
        return registrationEndTime;
    }
    public void setRegistrationEndTime(Date registrationEndTime) {
        this.registrationEndTime = registrationEndTime;
    }
    public Integer getIsTask() {
        return isTask;
    }
    public void setIsTask(Integer isTask) {
        this.isTask = isTask;
    }
    public String getTaskCode() {
        return taskCode;
    }
    public void setTaskCode(String taskCode) {
        this.taskCode = taskCode;
    }
    public String getTaskName() {
        return taskName;
    }
    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }
    public String getBusinessCode() {
        return businessCode;
    }
    public void setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
    }
    public String getBusinessName() {
        return businessName;
    }
    public void setBusinessName(String businessName) {
        this.businessName = businessName;
    }
    public Integer getIsIntegrate() {
        return isIntegrate;
    }
    public void setIsIntegrate(Integer isIntegrate) {
        this.isIntegrate = isIntegrate;
    }
    public String getManager() {
        return manager;
    }

+ 103 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalGoodsDO.java

@ -0,0 +1,103 @@
package com.yihu.jw.entity.hospital.integrate;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "base_hospital_goods")
public class BaseHospitalGoodsDO extends UuidIdentityEntityWithOperator {
    private String name;//商品名称
    private Integer type;//1成长勋章2实物商品
    private String banner;//商品图片
    private Integer integrate;//所需积分
    private Integer inventory;//库存
    private Integer remainingInventory;//剩余库存
    private Integer participantsType;//兑换对象类型1医生2患者
    private Integer exchangeTotal;//每人兑现次数 0不限大于0对应限制次数
    private Integer status;//0下架1上架
    private String description;//商品描述
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getBanner() {
        return banner;
    }
    public void setBanner(String banner) {
        this.banner = banner;
    }
    public Integer getIntegrate() {
        return integrate;
    }
    public void setIntegrate(Integer integrate) {
        this.integrate = integrate;
    }
    public Integer getInventory() {
        return inventory;
    }
    public void setInventory(Integer inventory) {
        this.inventory = inventory;
    }
    public Integer getRemainingInventory() {
        return remainingInventory;
    }
    public void setRemainingInventory(Integer remainingInventory) {
        this.remainingInventory = remainingInventory;
    }
    public Integer getParticipantsType() {
        return participantsType;
    }
    public void setParticipantsType(Integer participantsType) {
        this.participantsType = participantsType;
    }
    public Integer getExchangeTotal() {
        return exchangeTotal;
    }
    public void setExchangeTotal(Integer exchangeTotal) {
        this.exchangeTotal = exchangeTotal;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

+ 105 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalGoodsExchageDO.java

@ -0,0 +1,105 @@
package com.yihu.jw.entity.hospital.integrate;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.criteria.CriteriaBuilder;
@Entity
@Table(name = "base_hospital_goods_exchage")
public class BaseHospitalGoodsExchageDO extends UuidIdentityEntityWithOperator {
    public String orderNo;//订单编码
    public Integer type;//1医生2患者
    public String user;//用户code
    public String name;//用户名称
    public Integer integrate;//积分
    public String goodsCode;//商品code
    public String goodsName;//商品名称
    public Integer goodsType;//商品类型
    public Integer status;//1成功0失败
    public Integer quantity;//数量
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getIntegrate() {
        return integrate;
    }
    public void setIntegrate(Integer integrate) {
        this.integrate = integrate;
    }
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    public String getGoodsCode() {
        return goodsCode;
    }
    public void setGoodsCode(String goodsCode) {
        this.goodsCode = goodsCode;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public Integer getGoodsType() {
        return goodsType;
    }
    public void setGoodsType(Integer goodsType) {
        this.goodsType = goodsType;
    }
    public Integer getQuantity() {
        return quantity;
    }
    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }
}

+ 7 - 126
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalIntegrateDO.java

@ -12,22 +12,9 @@ import java.util.Date;
@Table(name = "base_hospital_integrate")
public class BaseHospitalIntegrateDO extends UuidIdentityEntityWithOperator {
    private Integer type;//积分类型(HOSPITAL_INTEGRATE_TYPE_ITEM1任务积分2服务积分3活动积分)
    private String typeName;//类型名称
    private String name;//积分名称
    private String item;//积分事项(HOSPITAL_INTEGRATE_TYPE_ITEM)
    private String itemName;//积分事项名称
    private Integer belong;//1医生2患者
    private Integer status;//0禁用1启用
    private Integer flag;//1一次性2重复3连续
    private String conditions;//连续天数对应获取的积分(格式["1","2","3"])
    private Integer continuityFlag;//是否连续完成0是1否
    private Integer days;//完成天数
    private Double integrate;//获取积分
    private Integer dailyLimit;//0不限,大于0 限制次数
    private Integer validity;//0不限1自定义
    private Date startValidity;//自定义开始时间
    private Date endValidity;//自定义结束时间
    private String activityId;//活动id
    private Integer type;//1一次性2重复3连续
    private String conditions;//积分规则(格式[{"total":"次数","unit":"单位","integrate":"积分"}])
    private String description;//积分说明
    public String getDescription() {
@ -46,62 +33,6 @@ public class BaseHospitalIntegrateDO extends UuidIdentityEntityWithOperator {
        this.type = type;
    }
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getItem() {
        return item;
    }
    public void setItem(String item) {
        this.item = item;
    }
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public Integer getBelong() {
        return belong;
    }
    public void setBelong(Integer belong) {
        this.belong = belong;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getFlag() {
        return flag;
    }
    public void setFlag(Integer flag) {
        this.flag = flag;
    }
    public String getConditions() {
        return conditions;
    }
@ -110,64 +41,14 @@ public class BaseHospitalIntegrateDO extends UuidIdentityEntityWithOperator {
        this.conditions = conditions;
    }
    public Integer getContinuityFlag() {
        return continuityFlag;
    }
    public void setContinuityFlag(Integer continuityFlag) {
        this.continuityFlag = continuityFlag;
    public String getActivityId() {
        return activityId;
    }
    public Integer getDays() {
        return days;
    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }
    public void setDays(Integer days) {
        this.days = days;
    }
    public Double getIntegrate() {
        return integrate;
    }
    public void setIntegrate(Double integrate) {
        this.integrate = integrate;
    }
    public Integer getDailyLimit() {
        return dailyLimit;
    }
    public void setDailyLimit(Integer dailyLimit) {
        this.dailyLimit = dailyLimit;
    }
    public Integer getValidity() {
        return validity;
    }
    public void setValidity(Integer validity) {
        this.validity = validity;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "start_validity")
    public Date getStartValidity() {
        return startValidity;
    }
    public void setStartValidity(Date startValidity) {
        this.startValidity = startValidity;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "end_validity")
    public Date getEndValidity() {
        return endValidity;
    }
    public void setEndValidity(Date endValidity) {
        this.endValidity = endValidity;
    }
}

+ 84 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalUserActivityDO.java

@ -0,0 +1,84 @@
package com.yihu.jw.entity.hospital.integrate;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "base_hospital_user_activity")
public class BaseHospitalUserActivityDO extends UuidIdentityEntityWithOperator {
    private Integer type;//1医生2患者
    private String user;//用户code
    private String name;//用户名称
    private String relationCode;//关联code
    private String relationName;//关联名称
    private Integer status;//0未完成1完成2已领取
    private BaseDoctorDO doctorDO;
    @Transient
    public BaseDoctorDO getDoctorDO() {
        return doctorDO;
    }
    public void setDoctorDO(BaseDoctorDO doctorDO) {
        this.doctorDO = doctorDO;
    }
    public String getRelationCode() {
        return relationCode;
    }
    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }
    public String getRelationName() {
        return relationName;
    }
    public void setRelationName(String relationName) {
        this.relationName = relationName;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}

+ 39 - 37
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/integrate/BaseHospitalUserIntegrateDO.java

@ -15,14 +15,15 @@ public class BaseHospitalUserIntegrateDO extends UuidIdentityEntityWithOperator
    private Integer type;//1医生2患者
    private String user;//用户code
    private String name;//用户名称
    private Double integrate;//获取积分
    private Integer integrate;//获取积分
    private Integer integrateType;//1增加2兑换
    private String relationType;//积分类型对应积分配置的类型
    private String relationTypeName;//积分类型对应积分配置的类型名称
    private String relationItem;//积分类型对应积分配置的事项
    private String relationItemName;//积分类型对应积分配置的事项名称
    private String relaitonCode;//积分code
    private String relationName;//积分配置名称
    private String relationCode;//积分关联活动code;
    private String relationName;//积分关联活动名称;
    private String taskCode;//任务code
    private String taskName;//任务名称
    private String businessCode;//业务code
    private String businessName;//业务名称
    private Integer status;//0失效1生效
    public Integer getType() {
@ -49,11 +50,11 @@ public class BaseHospitalUserIntegrateDO extends UuidIdentityEntityWithOperator
        this.name = name;
    }
    public Double getIntegrate() {
    public Integer getIntegrate() {
        return integrate;
    }
    public void setIntegrate(Double integrate) {
    public void setIntegrate(Integer integrate) {
        this.integrate = integrate;
    }
@ -65,60 +66,61 @@ public class BaseHospitalUserIntegrateDO extends UuidIdentityEntityWithOperator
        this.integrateType = integrateType;
    }
    public String getRelationType() {
        return relationType;
    public String getRelationName() {
        return relationName;
    }
    public void setRelationType(String relationType) {
        this.relationType = relationType;
    public void setRelationName(String relationName) {
        this.relationName = relationName;
    }
    public String getRelationItem() {
        return relationItem;
    public Integer getStatus() {
        return status;
    }
    public void setRelationItem(String relationItem) {
        this.relationItem = relationItem;
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getRelaitonCode() {
        return relaitonCode;
    public String getRelationCode() {
        return relationCode;
    }
    public void setRelaitonCode(String relaitonCode) {
        this.relaitonCode = relaitonCode;
    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }
    public String getRelationName() {
        return relationName;
    public String getTaskCode() {
        return taskCode;
    }
    public void setRelationName(String relationName) {
        this.relationName = relationName;
    public void setTaskCode(String taskCode) {
        this.taskCode = taskCode;
    }
    public Integer getStatus() {
        return status;
    public String getTaskName() {
        return taskName;
    }
    public void setStatus(Integer status) {
        this.status = status;
    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }
    public String getRelationTypeName() {
        return relationTypeName;
    public String getBusinessCode() {
        return businessCode;
    }
    public void setRelationTypeName(String relationTypeName) {
        this.relationTypeName = relationTypeName;
    public void setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
    }
    public String getRelationItemName() {
        return relationItemName;
    public String getBusinessName() {
        return businessName;
    }
    public void setRelationItemName(String relationItemName) {
        this.relationItemName = relationItemName;
    public void setBusinessName(String businessName) {
        this.businessName = businessName;
    }
}

+ 1 - 1
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -271,7 +271,7 @@ public class BaseRequestMapping {
     * 首页菜单免登录
     */
    public static class MenuNologin extends Basic {
        public static final String PREFIX  = "/open/noLogin";
        public static final String PREFIX  = "/open/noLogin/article";
        public static final String findAllMenu  = "/findAllMenu";
        public static final String findMenuByParentId  = "/findMenuByParentId";
        public static final String findArticleByMenuId= "/findArticleByMenuId";

+ 34 - 6
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -1662,30 +1662,58 @@ public class BaseHospitalRequestMapping {
        public static final String insertAndUpdate = "/insertAndUpdate";
        public static final String deleteById = "/deleteById";
        public static final String findById = "/findById";
        public static final String selectInfoByUserAndActivityId="/selectInfoByUserAndActivityId";
        public static final String selectByCondition = "/selectByCondition";
        public static final String updateFlagOrSort = "/updateFlagOrSort";
        public static final String updateStatusById="/updateStatusById";
    }
    /**
     * 用户参与活动情况
     */
    public static class BaseHospitalUserActivity extends Basic{
        public static final String PREFIX  = "/baseHospitalUserActivity";
        public static final String selectUserActivityByCondition = "/selectUserActivityByCondition";
        public static final String findUserActivityById="/findUserActivityById";
        public static final String selectUserIntegrateByCondition = "/selectUserIntegrateByCondition";
        public static final String receiveIntegrate = "/receiveIntegrate";
        public static final String selectUserActivityByUser = "/selectUserActivityByUser";
        public static final String takeActivity = "/takeActivity";
        public static final String selectUserIntegrateListByCondition="/selectUserIntegrateListByCondition";
        public static final String selectDeptRomByCondition= "/selectDeptRomByCondition";
        public static final String selectIntegrateInfoByUser="/selectIntegrateInfoByUser";
    }
    /**
     * 积分配置
     */
    public static class BaseHospitalIntegrate extends Basic{
        public static final String PREFIX  = "/baseHospitalIntegrate";
    public static class BaseHospitalMedal extends Basic{
        public static final String PREFIX  = "/baseHospitalMedal";
        public static final String insertAndUpdate = "/insertAndUpdate";
        public static final String deleteById = "/deleteById";
        public static final String findById = "/findById";
        public static final String selectByCondition = "/selectByCondition";
        public static final String selectMedalByUserId="/selectMedalByUserId";
    }
    /**
     * 积分配置
     * 兑换商品配置
     */
    public static class BaseHospitalMedal extends Basic{
        public static final String PREFIX  = "/baseHospitalMedal";
    public static class BaseHospitalGoods extends Basic{
        public static final String PREFIX  = "/baseHospitalGoods";
        public static final String insertAndUpdate = "/insertAndUpdate";
        public static final String updateGoodsStatus="/updateGoodsStatus";
        public static final String deleteById = "/deleteById";
        public static final String findById = "/findById";
        public static final String selectByCondition = "/selectByCondition";
        public static final String selectMedalByUserId="/selectMedalByUserId";
        public static final String exchageGoods="/exchageGoods";
        public static final String selectGoodsExchageByCondition="/selectGoodsExchageByCondition";
        public static final String findGoodsExchageById="/findGoodsExchageById";
    }
}

+ 2 - 2
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/article/BaseMenuManageEndpoint.java

@ -232,7 +232,7 @@ public class BaseMenuManageEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "取消点赞/收藏")
    public Envelop deleteArticleDoctorById(@ApiParam(name = "baseArticleDoctorId", value = "评论id")
                                            @RequestParam(value = "baseArticleDoctorId",required = false)String baseArticleDoctorId,
                                           @ApiParam(name = "relationCode", value = "文章id")
                                           @ApiParam(name = "relationCode", value = "文章id/医生id")
                                           @RequestParam(value = "relationCode",required = false)String relationCode,
                                           @ApiParam(name = "type", value = "类型2点赞3收藏")
                                               @RequestParam(value = "type",required = false)Integer type,
@ -267,7 +267,7 @@ public class BaseMenuManageEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = BaseHospitalRequestMapping.KnowledgeArticle.selectArticleDoctorByArticleIdAndUser)
    @ApiOperation(value = "判断该文章当前医生是否点赞或者收藏")
    public Envelop selectArticleDoctorByArticleIdAndUser(@ApiParam(name = "id", value = "文章id")
    public Envelop selectArticleDoctorByArticleIdAndUser(@ApiParam(name = "id", value = "文章id/医生id")
                                                         @RequestParam(value = "id",required = false)String id,
                                                         @ApiParam(name = "user", value = "用户编码")
                                                         @RequestParam(value = "user",required = false)String user)throws Exception {

+ 47 - 4
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalActivityController.java

@ -2,13 +2,16 @@ package com.yihu.jw.hospital.endpoint.integrate;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.hospital.integrate.service.BaseHospitalActivityService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -25,10 +28,16 @@ public class BaseHospitalActivityController extends EnvelopRestEndpoint {
    @ApiOperation("新增或者修改")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalActivity.insertAndUpdate)
    public Envelop insertAndUpdate(@ApiParam(name = "json", value = "json活动实体", required = true)
                                       @RequestParam(value = "json", required = true) String json) {
                                       @RequestParam(value = "json", required = true) String json,
                                   @ApiParam(name = "integrateJson", value = "积分配置json", required = true)
                                   @RequestParam(value = "integrateJson", required = false) String integrateJson) {
        try {
            BaseHospitalActivityDO hospitalActivityDO = toEntity(json,BaseHospitalActivityDO.class);
            return success(hospitalActivityService.insertAndUpdate(hospitalActivityDO));
            BaseHospitalIntegrateDO hospitalIntegrateDO = new BaseHospitalIntegrateDO();
            if (StringUtils.isNoneBlank(integrateJson)){
                 hospitalIntegrateDO= toEntity(integrateJson,BaseHospitalIntegrateDO.class);
            }
            return success(hospitalActivityService.insertAndUpdate(hospitalActivityDO,hospitalIntegrateDO));
        }catch (Exception e){
            return failedException(e);
        }
@ -58,6 +67,19 @@ public class BaseHospitalActivityController extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("根据活动id和用户编码查询该用户相关的活动信息")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalActivity.selectInfoByUserAndActivityId)
    public Envelop selectInfoByUserAndActivityId(@ApiParam(name = "id", value = "活动id", required = true)
                            @RequestParam(value = "id", required = true) String id,
                            @ApiParam(name = "user", value = "用户编码", required = true)
                            @RequestParam(value = "user", required = true) String user) {
        try {
            return success(hospitalActivityService.selectInfoByUserAndActivityId(user,id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询活动列表")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalActivity.selectByCondition)
@ -66,9 +88,17 @@ public class BaseHospitalActivityController extends EnvelopRestEndpoint {
                                     @ApiParam(name = "size", value = "大小", required = true)
                                    @RequestParam(value = "size", required = true) Integer size,
                                     @ApiParam(name = "title", value = "活动标题", required = false)
                                         @RequestParam(value = "title", required = false) String title) {
                                         @RequestParam(value = "title", required = false) String title,
                                     @ApiParam(name = "flag", value = "0禁用1启用", required = false)
                                         @RequestParam(value = "flag", required = false) Integer flag,
                                     @ApiParam(name = "status", value = "活动状态(0未开始1开始2结束)", required = false)
                                         @RequestParam(value = "status", required = false) Integer status,
                                     @ApiParam(name = "startTime", value = "开始时间", required = false)
                                         @RequestParam(value = "startTime", required = false) String startTime,
                                     @ApiParam(name = "endTime", value = "结束时间", required = false)
                                         @RequestParam(value = "endTime", required = false) String endTime) {
        try {
            return success(hospitalActivityService.selectByCondition(title,page,size));
            return success(hospitalActivityService.selectByCondition(title,page,size,flag,status,startTime,endTime));
        }catch (Exception e){
            return failedException(e);
        }
@ -89,4 +119,17 @@ public class BaseHospitalActivityController extends EnvelopRestEndpoint {
            return failedException(e);
        }
    }
    @ApiOperation("更新活动状态(0未开始1开始2结束)")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalActivity.updateStatusById)
    public Envelop updateStatusById(@ApiParam(name = "id", value = "活动id", required = true)
                                    @RequestParam(value = "id", required = true) String id,
                                    @ApiParam(name = "status", value = "0未开始1开始2结束", required = false)
                                    @RequestParam(value = "status", required = false) Integer status) {
        try {
            return success(hospitalActivityService.updateStatusById(id,status));
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 150 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalGoodsController.java

@ -0,0 +1,150 @@
package com.yihu.jw.hospital.endpoint.integrate;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalGoodsDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalMedalDO;
import com.yihu.jw.hospital.integrate.service.BaseHospitalGoodsService;
import com.yihu.jw.hospital.integrate.service.BaseHospitalMedalService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.PREFIX)
@Api(value = "兑换商品配置", description = "兑换商品配置", tags = {"兑换商品配置"})
public class BaseHospitalGoodsController extends EnvelopRestEndpoint {
    @Autowired
    private BaseHospitalGoodsService hospitalGoodsService;
    @ApiOperation("新增或者修改商品")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.insertAndUpdate)
    public Envelop insertAndUpdate(@ApiParam(name = "json", value = "json积分实体", required = true)
                                       @RequestParam(value = "json", required = true) String json) {
        try {
            BaseHospitalGoodsDO hospitalGoodsDO = toEntity(json, BaseHospitalGoodsDO.class);
            return success(hospitalGoodsService.insertAndUpdate(hospitalGoodsDO));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("商品上架下架")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.updateGoodsStatus)
    public Envelop updateGoodsStatus(@ApiParam(name = "id", value = "商品id", required = true)
                                   @RequestParam(value = "id", required = true) String id,
                                   @ApiParam(name = "status", value = "0下架1上架", required = true)
                                   @RequestParam(value = "status", required = true) Integer status) {
        try {
            return success(hospitalGoodsService.updateGoodsStatus(id,status));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id删除商品")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.deleteById)
    public Envelop deleteById(@ApiParam(name = "id", value = "商品id", required = true)
                                   @RequestParam(value = "id", required = true) String id) {
        try {
            hospitalGoodsService.deleteById(id);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id查询商品详情")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.findById)
    public Envelop findById(@ApiParam(name = "id", value = "商品id", required = true)
                              @RequestParam(value = "id", required = true) String id) {
        try {
            return success(hospitalGoodsService.findById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询商品管理列表")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.selectByCondition)
    public Envelop selectByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                     @RequestParam(value = "page", required = true) Integer page,
                                     @ApiParam(name = "size", value = "大小", required = true)
                                    @RequestParam(value = "size", required = true) Integer size,
                                     @ApiParam(name = "name", value = "商品名称", required = false)
                                         @RequestParam(value = "name", required = false) String name,
                                     @ApiParam(name = "type", value = "商品类型(1成长勋章2实物商品)", required = false)
                                         @RequestParam(value = "type", required = false) Integer type,
                                     @ApiParam(name = "status", value = "上架状态(0下架1上架)", required = false)
                                         @RequestParam(value = "status", required = false) Integer status,
                                     @ApiParam(name = "user", value = "用户编码", required = false)
                                         @RequestParam(value = "user", required = false) String user) {
        try {
            return success(hospitalGoodsService.selectByCondition(name,type,status,user,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("兑换商品")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.exchageGoods)
    public Envelop selectMedalByUserId(@ApiParam(name = "goodsId", value = "商品id", required = true)
                                     @RequestParam(value = "goodsId", required = true) String goodsId,
                                     @ApiParam(name = "user", value = "用户编码", required = true)
                                     @RequestParam(value = "user", required = true) String user,
                                     @ApiParam(name = "type", value = "用户类型(1医生2患者)", required = true)
                                     @RequestParam(value = "type", required = false) Integer type,
                                       @ApiParam(name = "name", value = "用户姓名", required = true)
                                           @RequestParam(value = "name", required = true) String name,
                                     @ApiParam(name = "quantity", value = "数量", required = true)
                                           @RequestParam(value = "quantity", required = false) Integer quantity) {
        try {
            return success(hospitalGoodsService.exchageGoods(goodsId,user,type,name,quantity));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询商品兑换记录")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.selectGoodsExchageByCondition)
    public Envelop selectGoodsExchageByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                     @RequestParam(value = "page", required = true) Integer page,
                                     @ApiParam(name = "size", value = "大小", required = true)
                                     @RequestParam(value = "size", required = true) Integer size,
                                     @ApiParam(name = "name", value = "商品名称", required = false)
                                     @RequestParam(value = "name", required = false) String name,
                                     @ApiParam(name = "user", value = "用户编码", required = false)
                                     @RequestParam(value = "user", required = false) String user,
                                     @ApiParam(name = "startTime", value = "开始时间", required = false)
                                     @RequestParam(value = "startTime", required = false) String startTime,
                                     @ApiParam(name = "endTime", value = "结束时间", required = false)
                                     @RequestParam(value = "endTime", required = false) String endTime) {
        try {
            return success(hospitalGoodsService.selectGoodsExchageByCondition(name,user,startTime,endTime,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据兑换记录id获取商品兑换记录详情")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalGoods.findGoodsExchageById)
    public Envelop findGoodsExchageById(@ApiParam(name = "id", value = "商品兑换id", required = true)
                                                 @RequestParam(value = "id", required = true) String id) {
        try {
            return success(hospitalGoodsService.findGoodsExchageById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 0 - 80
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalIntegrateController.java

@ -1,80 +0,0 @@
package com.yihu.jw.hospital.endpoint.integrate;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalActivityDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.hospital.integrate.service.BaseHospitalActivityService;
import com.yihu.jw.hospital.integrate.service.BaseHospitalIntegrateService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseHospitalIntegrate.PREFIX)
@Api(value = "积分配置", description = "积分配置", tags = {"积分配置"})
public class BaseHospitalIntegrateController extends EnvelopRestEndpoint {
    @Autowired
    private BaseHospitalIntegrateService hospitalIntegrateService;
    @ApiOperation("新增或者修改")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalIntegrate.insertAndUpdate)
    public Envelop insertAndUpdate(@ApiParam(name = "json", value = "json积分实体", required = true)
                                       @RequestParam(value = "json", required = true) String json) {
        try {
            BaseHospitalIntegrateDO hospitalIntegrateDO = toEntity(json,BaseHospitalIntegrateDO.class);
            return success(hospitalIntegrateService.insertAndUpdate(hospitalIntegrateDO));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id删除积分配置")
    @PostMapping(value = BaseHospitalRequestMapping.BaseHospitalIntegrate.deleteById)
    public Envelop deleteById(@ApiParam(name = "id", value = "积分配置id", required = true)
                                   @RequestParam(value = "id", required = true) String id) {
        try {
            hospitalIntegrateService.deleteById(id);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id查询积分配置详情")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalIntegrate.findById)
    public Envelop findById(@ApiParam(name = "id", value = "积分配置id", required = true)
                              @RequestParam(value = "id", required = true) String id) {
        try {
            return success(hospitalIntegrateService.findById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询积分配置列表")
    @GetMapping(value = BaseHospitalRequestMapping.BaseHospitalIntegrate.selectByCondition)
    public Envelop selectByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                     @RequestParam(value = "page", required = true) Integer page,
                                     @ApiParam(name = "size", value = "大小", required = true)
                                    @RequestParam(value = "size", required = true) Integer size,
                                     @ApiParam(name = "name", value = "积分配置名称", required = false)
                                         @RequestParam(value = "name", required = false) String name,
                                     @ApiParam(name = "type", value = "积分配置类型", required = false)
                                         @RequestParam(value = "type", required = false) String type) {
        try {
            return success(hospitalIntegrateService.selectByCondition(name,type,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 0 - 3
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalMedalController.java

@ -1,10 +1,7 @@
package com.yihu.jw.hospital.endpoint.integrate;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalIntegrateDO;
import com.yihu.jw.entity.hospital.integrate.BaseHospitalMedalDO;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalMedalDao;
import com.yihu.jw.hospital.integrate.service.BaseHospitalIntegrateService;
import com.yihu.jw.hospital.integrate.service.BaseHospitalMedalService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;

+ 149 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/integrate/BaseHospitalUserActivityController.java

@ -0,0 +1,149 @@
package com.yihu.jw.hospital.endpoint.integrate;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDO;
import com.yihu.jw.hospital.integrate.dao.BaseHospitalUserActivityDao;
import com.yihu.jw.hospital.integrate.service.BaseHospitalUserActivityService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseHospitalUserActivity.PREFIX)
@Api(value = "用户参与活动", description = "用户参与活动", tags = {"用户参与活动"})
public class BaseHospitalUserActivityController extends EnvelopRestEndpoint {
    @Autowired
    private BaseHospitalUserActivityService userActivityService;
    /**
     * 查询活动报名记录
     *
     * @param page
     * @param size
     * @param title
     * @return
     */
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectUserActivityByCondition)
    @ApiOperation("查询活动报名记录")
    public Envelop selectUserActivityByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                          @RequestParam(value = "page", required = true) Integer page,
                                      @ApiParam(name = "size", value = "大小", required = true)
                                          @RequestParam(value = "size", required = true) Integer size,
                                      @ApiParam(name = "title", value = "活动标题", required = false)
                                          @RequestParam(value = "title", required = false) String title) {
        return success(userActivityService.selectUserActivityByCondition(title,page,size));
    }
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.findUserActivityById)
    @ApiOperation("根据活动报名记录id获取活动报名情况详情")
    public Envelop findUserActivityById(@ApiParam(name = "userActivityId", value = "活动报名记录id", required = true)
                                                 @RequestParam(value = "userActivityId", required = true) String userActivityId) {
        return success(userActivityService.findUserActivityById(userActivityId));
    }
    /**
     * 查询某个活动下某个用户获取的积分详情
     *
     * @param page
     * @param size
     * @param activityId
     * @return
     */
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectUserIntegrateByCondition)
    @ApiOperation("查询某个活动下某个用户获取的积分详情")
    public Envelop selectUserIntegrateByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                                 @RequestParam(value = "page", required = true) Integer page,
                                                 @ApiParam(name = "size", value = "大小", required = true)
                                                 @RequestParam(value = "size", required = true) Integer size,
                                                 @ApiParam(name = "user", value = "用户id", required = true)
                                                 @RequestParam(value = "user", required = true) String user,
                                                 @ApiParam(name = "activityId", value = "活动id", required = true)
                                                 @RequestParam(value = "activityId", required = true) String activityId) {
        return success(userActivityService.selectUserIntegrateByCondition(user,activityId,page,size));
    }
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectUserActivityByUser)
    @ApiOperation("查询某个用户参与的活动情况")
    public Envelop selectUserActivityByUser(@ApiParam(name = "page", value = "页码", required = true)
                                                  @RequestParam(value = "page", required = true) Integer page,
                                                  @ApiParam(name = "size", value = "大小", required = true)
                                                  @RequestParam(value = "size", required = true) Integer size,
                                                  @ApiParam(name = "user", value = "用户id", required = true)
                                                  @RequestParam(value = "user", required = true) String user) {
        return success(userActivityService.selectUserActivityByUser(user,page,size));
    }
    @PostMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.receiveIntegrate)
    @ApiOperation("用户领取积分")
    public Envelop receiveIntegrate(@ApiParam(name = "activityId", value = "活动id", required = true)
                                            @RequestParam(value = "activityId", required = true) String activityId,
                                            @ApiParam(name = "user", value = "用户id", required = true)
                                            @RequestParam(value = "user", required = true) String user) {
        return success(userActivityService.receiveIntegrate(user,activityId));
    }
    @PostMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.takeActivity)
    @ApiOperation("用户报名")
    public Envelop takeActivity(@ApiParam(name = "activityId", value = "活动id", required = true)
                                    @RequestParam(value = "activityId", required = true) String activityId,
                                    @ApiParam(name = "user", value = "用户id", required = true)
                                    @RequestParam(value = "user", required = true) String user,
                                    @ApiParam(name = "name", value = "用户名", required = true)
                                    @RequestParam(value = "name", required = true) String name,
                                    @ApiParam(name = "type", value = "类型(1医生2患者)", required = true)
                                    @RequestParam(value = "type", required = true) Integer type) throws Exception {
        return success(userActivityService.takeActivity(user,name,type,activityId));
    }
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectUserIntegrateListByCondition)
    @ApiOperation("医生-个人积分榜单/接诊榜单/单个活动榜单")
    public Envelop selectUserIntegrateListByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                @RequestParam(value = "page", required = true) Integer page,
                                @ApiParam(name = "size", value = "大小", required = true)
                                @RequestParam(value = "size", required = true) Integer size,
                                @ApiParam(name = "user", value = "用户id", required = true)
                                @RequestParam(value = "user", required = true) String user,
                                @ApiParam(name = "businessCode", value = "业务code", required = false)
                                @RequestParam(value = "businessCode", required = false) String businessCode,
                                @ApiParam(name = "activityId", value = "活动id", required = false)
                                @RequestParam(value = "activityId", required = false) String activityId) throws Exception {
        return success(userActivityService.selectUserIntegrateListByCondition(user,businessCode,activityId,page,size));
    }
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectDeptRomByCondition)
    @ApiOperation("医生-科室热门榜")
    public Envelop selectDeptRomByCondition(@ApiParam(name = "page", value = "页码", required = true)
                                                      @RequestParam(value = "page", required = true) Integer page,
                                                      @ApiParam(name = "size", value = "大小", required = true)
                                                      @RequestParam(value = "size", required = true) Integer size,
                                                      @ApiParam(name = "businessCode", value = "业务code", required = false)
                                                      @RequestParam(value = "businessCode", required = false) String businessCode) throws Exception {
        return success(userActivityService.selectDeptRomByCondition(businessCode,page,size));
    }
    @GetMapping(value= BaseHospitalRequestMapping.BaseHospitalUserActivity.selectIntegrateInfoByUser)
    @ApiOperation("根据用户编码获取积分账户信息及明细")
    public Envelop selectIntegrateInfoByUser(@ApiParam(name = "page", value = "页码", required = true)
                                            @RequestParam(value = "page", required = true) Integer page,
                                            @ApiParam(name = "size", value = "大小", required = true)
                                            @RequestParam(value = "size", required = true) Integer size,
                                            @ApiParam(name = "user", value = "用户编码", required = false)
                                            @RequestParam(value = "user", required = false) String user,
                                            @ApiParam(name = "startTime", value = "开始时间", required = false)
                                            @RequestParam(value = "startTime", required = false) String startTime,
                                            @ApiParam(name = "endTime", value = "结束时间", required = false)
                                            @RequestParam(value = "endTime", required = false) String endTime) throws Exception {
        return success(userActivityService.selectIntegrateInfoByUser(user,startTime,endTime,page,size));
    }
}