Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

# Conflicts:
#	svr/svr-iot/src/main/java/com/yihu/iot/service/monitorPlatform/MonitorPlatformService.java
wangzhinan 4 năm trước cách đây
mục cha
commit
c5387751b3

+ 7 - 4
business/base-service/src/main/java/com/yihu/jw/hospital/message/service/BaseUserMsgService.java

@ -235,16 +235,19 @@ public class BaseUserMsgService extends BaseJpaService<BaseUserMessageDO, BaseUs
            baseUserMsgDO.setRelationName(map.get("relation_name").toString());
            baseUserMsgDO.setStatus(Integer.valueOf(map.get("status").toString()));
            BasePatientDO patientDO = basePatientDao.findById(map.get("sender").toString());
            if(baseUserMsgDO.getRelationType()==2){
                List<BaseBannerDoctorDO> ba =  baseBannerDoctorDao.getBanners(baseUserMsgDO.getReceiver(),baseUserMsgDO.getSender(),baseUserMsgDO.getRelationCode());
            List<BaseBannerDoctorDO> ba =  baseBannerDoctorDao.getBanners(baseUserMsgDO.getReceiver(),baseUserMsgDO.getSender(),baseUserMsgDO.getRelationCode());
            if(ba.size()>0){
                List<BaseBannerDO> bannerLits= new ArrayList<>();
                for (BaseBannerDoctorDO bannerDoctorDO:ba){
                    BaseBannerDO bannerDO = bannerDao.findOne(bannerDoctorDO.getBannerId());
                    bannerLits.add(bannerDO);
                    baseUserMsgDO.setBaseBannerDOS(bannerLits);
                }
                baseUserMsgDO.setBaseBannerDOS(bannerLits);
                //baseUserMsgDO.setBannerList(ba);
            }
                //baseUserMsgDO.setBannerList(ba);
            String icon = null;
            if (null!=patientDO){
                icon = patientDO.getPhoto();

+ 7 - 4
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -45,6 +45,7 @@ import com.yihu.jw.restmodel.im.ConsultVO;
import com.yihu.jw.util.common.FileUtil;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import org.slf4j.LoggerFactory;
@ -1688,14 +1689,16 @@ public class ImService {
					baseUserMessageDO.setUpdateTime(new Date());
					baseUserMessageDO.setIsRead(0);
					userMessageDao.save(baseUserMessageDO);
					if (org.apache.commons.lang3.StringUtils.isNoneBlank(bannerList)){
						String str[]=bannerList.split(",");
						for (int i=0;i<bannerList.length();i++){
					if (!StringUtils.isEmpty(bannerList)){
						System.out.println("-------");
						System.out.println(bannerList);
						String[] str=bannerList.split(",");
						for (int i=0;i<str.length;i++){
							BaseBannerDoctorDO bannerDoctorDO = new BaseBannerDoctorDO();
							bannerDoctorDO.setCreateTime(new Date());
							bannerDoctorDO.setUpdateTime(new Date());
							bannerDoctorDO.setPatientId(baseUserMessageDO.getSender());
							bannerDoctorDO.setRelationName(baseUserMessageDO.getSenderName());
							bannerDoctorDO.setPatientName(baseUserMessageDO.getSenderName());
							bannerDoctorDO.setDoctor(baseUserMessageDO.getReceiver());
							bannerDoctorDO.setDoctorName(baseUserMessageDO.getReceiverName());
							bannerDoctorDO.setBannerId(str[i]);

+ 1 - 1
svr/svr-iot/src/main/java/com/yihu/iot/controller/equipment/IotEquipmentController.java

@ -62,7 +62,7 @@ public class IotEquipmentController extends EnvelopRestEndpoint {
        return success("更新成功");
    }
    @GetMapping(value = BaseHospitalRequestMapping.IotEquipmentManage.getEquipmentAndCount)
    @ApiOperation(value = "更新/新增设备")
    @ApiOperation(value = "查询设备和数量")
    public Envelop getCountAndEquipment(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception{

+ 1 - 1
svr/svr-iot/src/main/java/com/yihu/iot/dao/equipment/IotEquipmentDetailDao.java

@ -13,7 +13,7 @@ import java.util.Map;
public interface IotEquipmentDetailDao extends PagingAndSortingRepository<IotEquipmentDetailDO, String>, JpaSpecificationExecutor<IotEquipmentDetailDO> {
    @Query(value = "select * from iot_equipment_detail t",nativeQuery = true)
    List<IotEquipmentDetailDO> getAllEquipment();
    @Query(value = "select count(1) AS \"total\",t.belong_are AS \"belong_are\" from iot_equipment_detail t group by t.belong_are_code",nativeQuery = true)
    @Query(value = "select count(1) AS \"total\",t.belong_are AS \"belong_are\",t.belong_are_code AS \"belong_are_code\" from iot_equipmet_detail t group by t.belong_are_code order by \"total\" desc ",nativeQuery = true)
    List<Map<String, Object>> getAllEquipmentCountByAre();
    @Query(value = "select count(1) AS \"total\" from iot_equipment_detail t ",nativeQuery = true)
    List<Map<String, Object>> getAllEquipmentTotalCount();

+ 43 - 6
svr/svr-iot/src/main/java/com/yihu/iot/service/monitorPlatform/MonitorPlatformService.java

@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.iot.dao.dict.IotSystemDictDao;
import com.yihu.iot.dao.equipment.IotEquipmentDetailDao;
import com.yihu.iot.service.common.MyJdbcTemplate;
import com.yihu.iot.service.device.IotPatientDeviceService;
import com.yihu.iot.service.equipment.IotEqtDetailService;
import com.yihu.iot.service.label.FigureLabelSerachService;
import com.yihu.jw.entity.iot.dict.IotSystemDictDO;
import com.yihu.iot.util.excel.hibernate.HibenateUtils;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.http.HttpClientUtil;
import io.swagger.annotations.ApiOperation;
@ -18,6 +20,8 @@ import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.jpa.provider.HibernateUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
@ -50,6 +54,10 @@ public class MonitorPlatformService  {
    @Autowired
    private FigureLabelSerachService figureLabelSerachService;
    @Autowired
    private IotEquipmentDetailDao iotEquipmentDetailDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private IotSystemDictDao iotSystemDictDao;
    @Autowired
    private IotEqtDetailService iotEqtDetailService;
@ -137,9 +145,42 @@ public class MonitorPlatformService  {
        params.put("deviceType",deviceType);
        params.put("area",area);
        params.put("hospital",hospital);
        return sendGet(url,params);
    }
        String anotherResult = sendGet(url,params);
        String sqlAre = "select count(1) AS \"total\",t.belong_are AS \"belong_are\",t.belong_are_code AS \"belong_are_code\" from iot_equipmet_detail t group by t.belong_are_code order by \"total\" desc ";
        List<Map<String, Object>> iotEquip = hibenateUtils.createSQLQuery(sqlAre);
        if("8"==deviceType){
           return iotEquip.toString();
        }else {
            JSONObject jsonObject = JSONObject.parseObject(anotherResult);
            if("200".equals(jsonObject.get("status").toString())){
                JSONArray dataresult= jsonObject.getJSONArray("data");
                JSONArray resultArray = new JSONArray();
                if (dataresult.size()>0){
                    for(int i=0;i<dataresult.size();i++){
                        JSONObject item= JSONObject.parseObject(dataresult.get(i).toString());
                        if(null!=item.get("num")){
                            Integer itemCount = Integer.parseInt(item.get("num").toString());
                            for(Map<String, Object> map:iotEquip){
                                if (item.get("code").toString().equals(map.get("belong_are_code"))){
                                    itemCount = Integer.parseInt(map.get("total").toString())+itemCount;
                                    item.put("num",itemCount);
                                }
                            }
                        }
                        resultArray.add(item);
                    }
                }
                jsonObject.replace("data",resultArray);
                System.out.println(jsonObject.toString());
            }
            return jsonObject.toString();
        }
    }
    /*private String dealSql(Map<String, Object> params){
        StringBuffer sql = new StringBuffer();
        sql.append()
    }*/
    /**
     * 慢病患者情况-统计
@ -510,10 +551,6 @@ public class MonitorPlatformService  {
                }
            }
            return jsonArray;
        }

+ 83 - 0
svr/svr-iot/src/main/java/com/yihu/iot/util/excel/hibernate/HibenateDemo.java

@ -0,0 +1,83 @@
package com.yihu.iot.util.excel.hibernate;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
 * Created by Trick on 2019/12/10.
 */
@Component
public class HibenateDemo {
    @Autowired
    private HibenateUtils hibenateUtils;
    /**
     * 特别注意,由于oracle 大小写不明感,表别名需要指定大小写(驼峰)的话需要加双引号
     * @param id
     * @param name
     * @param createTime
     * @param page
     * @param size
     * @return
     */
    public Envelop findDoctorInfo(String id, String name, String createTime, Integer page, Integer size){
        String sqlTotal ="SELECT " +
                " COUNT(1) AS \"total\" " +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
                " WHERE " +
                " 1 = 1";
        Map<String,Object> params = new HashedMap();
        if(StringUtils.isNotBlank(id)){
            sqlTotal+=" AND d.id =:id";
            params.put("id",id);
        }
        if(StringUtils.isNotBlank(name)){
            sqlTotal+=" AND d.name =:name";
            params.put("name",name);
        }
        if(StringUtils.isNotBlank(createTime)){
            sqlTotal+=" AND d.create_time >:createTime";
            params.put("createTime", DateUtil.stringToDate(createTime,"yyyy-MM-dd"));
        }
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal,params);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        String sql ="SELECT " +
                " d.id AS \"id\", " +
                " d.NAME AS \"name\"," +
                " h.dept_name AS \"deptName\"" +
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
                " WHERE " +
                " 1 = 1 ";
        if(StringUtils.isNotBlank(id)){
            sql+=" AND d.id =:id";
        }
        if(StringUtils.isNotBlank(name)){
            sql+=" AND d.name =:name";
        }
        if(StringUtils.isNotBlank(createTime)){
            sql+=" AND d.create_time >:createTime";
        }
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,size);
       return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
    }
}

+ 186 - 0
svr/svr-iot/src/main/java/com/yihu/iot/util/excel/hibernate/HibenateUtils.java

@ -0,0 +1,186 @@
package com.yihu.iot.util.excel.hibernate;
import com.yihu.jw.entity.hospital.prescription.HlwCf01DO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * 数据库查询工具,mysql与Oracle 通用复诊查询
 * 支持原生SQL。联表,动态传参。分页查询
 * 不支持数据库特有的函数
 * <p>
 * Created by Trick on 2019/12/10.
 */
@Component
@Transactional
public class HibenateUtils {
    /**
     * JPA 数据源
     */
    @PersistenceContext
    private EntityManager entityManager;
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     *
     * @param sql
     * @param page 第几页,1开始
     * @param size 每页记录数
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Integer page, Integer size) {
        Session session = (Session) entityManager.getDelegate();
        SQLQuery query = session.createSQLQuery(sql);
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        if(page!=null&&size!=null){
            query.setFirstResult((page - 1) * size);
            query.setMaxResults(size);
        }
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * 无分页
     * @param sql
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql) {
        Session session = (Session) entityManager.getDelegate();
        SQLQuery query = session.createSQLQuery(sql);
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * @param sql
     * @param params 动态占位符入参,例如 like:name
     * @param page 第几页,1开始
     * @param size 每页记录数
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params, Integer page, Integer size) {
        Session session = (Session) entityManager.getDelegate();
        SQLQuery query = session.createSQLQuery(sql);
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        //设置查询参数
        setSqlQueryByMap(query, params);
        if(page!=null&&size!=null){
            query.setFirstResult((page - 1) * size);
            query.setMaxResults(size);
        }
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 创建SQL查询,根据配置,获取数据库方言
     * sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
     * 目前只支持通用的聚合函数,特有的聚合函数不支持
     * @param sql
     * @param params 动态占位符入参,例如 like:name
     * @return
     */
    public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params) {
        Session session = (Session) entityManager.getDelegate();
        SQLQuery query = session.createSQLQuery(sql);
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        //设置查询参数
        setSqlQueryByMap(query, params);
        List<Map<String, Object>> list = query.list();
        return list;
    }
    /**
     * 设置查询参数
     * @param sqlQuery
     * @param params
     * @return
     */
    private SQLQuery setSqlQueryByMap(SQLQuery sqlQuery, Map<String, Object> params) {
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                Object obj = params.get(key);
                if (obj instanceof Collection<?>) {
                    sqlQuery.setParameterList(key, (Collection<?>) obj);
                } else if (obj instanceof Object[]) {
                    sqlQuery.setParameterList(key, (Object[]) obj);
                } else {
                    sqlQuery.setParameter(key, obj);
                }
            }
        }
        return sqlQuery;
    }
    /**
     * 聚合函数类型装换
     * @param obj
     * @return
     */
    public Long objTransformLong(Object obj){
        //Oracle count(1) 聚合函数类型装换
        if(obj instanceof BigDecimal){
            return ((BigDecimal) obj).longValue();
        //Mysql count(1) 聚合函数类型装换
        }else if(obj instanceof BigInteger){
            return ((BigInteger)obj).longValue();
        }else{
            return 0L;
        }
    }
    public void updateBySql(String sql){
        Session session = (Session) entityManager.getDelegate();
        session.createSQLQuery(sql).executeUpdate();
    }
    public void save(Object object) {
        entityManager.persist(object);
    }
    /**
     * 更新
     * @param entity
     */
    public void update(Object entity){
        entityManager.merge(entity);
        entityManager.flush();
    }
    public void update(String id,Integer status){
        HlwCf01DO hlwCf01DO = entityManager.find(HlwCf01DO.class,id);
        hlwCf01DO.setFKZT(status);
        update(hlwCf01DO);
    }
}