Преглед на файлове

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

trick9191 преди 5 години
родител
ревизия
72de733c98

+ 21 - 12
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionLogService.java

@ -5,6 +5,8 @@ import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionLogDO;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionLogDao;
import com.yihu.mysql.query.BaseJpaService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -19,6 +21,8 @@ import java.util.List;
@Transactional
public class PrescriptionLogService  extends BaseJpaService<WlyyPrescriptionLogDO, PrescriptionLogDao> {
    private static Logger logger = LoggerFactory.getLogger(PrescriptionLogService.class);
    @Autowired
    private PrescriptionLogDao logDao;
@ -37,18 +41,23 @@ public class PrescriptionLogService  extends BaseJpaService<WlyyPrescriptionLogD
     * @return
     */
    public Boolean addPrescriptionLog(String prescriptionCode, Integer status, Integer userType, String userCode, String userName, String datajson, Date date){
        WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionCode);
        WlyyPrescriptionLogDO log = new WlyyPrescriptionLogDO();
        log.setOutpatientId(prescriptionDO.getOutpatientId());
        log.setPrescriptionCode(prescriptionCode);
        log.setStatus(status);
        log.setUserType(userType);
        log.setUserCode(userCode);
        log.setUserName(userName);
        log.setDatajson(datajson);
        log.setCreateTime(date);
        logDao.save(log);
        return true;
        try{
            WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionCode);
            WlyyPrescriptionLogDO log = new WlyyPrescriptionLogDO();
            log.setOutpatientId(prescriptionDO.getOutpatientId());
            log.setPrescriptionCode(prescriptionCode);
            log.setStatus(status);
            log.setUserType(userType);
            log.setUserCode(userCode);
            log.setUserName(userName);
            log.setDatajson(datajson);
            log.setCreateTime(date);
            logDao.save(log);
            return true;
        }catch (Exception e){
            logger.error(e.toString());
        }
        return false;
    }
    /**

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/survey/dao/SurveyUserAnswerDao.java

@ -21,4 +21,6 @@ public interface SurveyUserAnswerDao extends PagingAndSortingRepository<WlyySurv
    @Query("SELECT DISTINCT c.patient from WlyySurveyUserAnswerDO c WHERE c.tempQuestionCode = ?1")
    List<WlyySurveyUserAnswerDO> findByTempQuestionCodeDistinctPatient(String tempQuestionCode);
}

+ 5 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/survey/dao/SurveyUserDao.java

@ -2,8 +2,10 @@ package com.yihu.jw.hospital.survey.dao;
import com.yihu.jw.entity.hospital.survey.WlyySurveyUserDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
/**
@ -12,4 +14,7 @@ import java.util.List;
public interface SurveyUserDao extends PagingAndSortingRepository<WlyySurveyUserDO, String>, JpaSpecificationExecutor<WlyySurveyUserDO> {
    List<WlyySurveyUserDO> findBySurveyTempCodeAndStatus(String surveyTempCode,Integer status);
    @Query("from WlyySurveyUserDO c WHERE c.surveyTempCode = ?1 and c.patient =?2 and c.status =1 and c.createTime >= ?3")
    List<WlyySurveyUserDO> findBySurvey(String surveyTempCode,String patient,Date createTime);
}

+ 25 - 4
business/base-service/src/main/java/com/yihu/jw/hospital/survey/service/SurveyService.java

@ -1,6 +1,7 @@
package com.yihu.jw.hospital.survey.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.entity.hospital.survey.*;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.survey.dao.*;
@ -10,6 +11,7 @@ import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.common.PercentageUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.EntityUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
@ -20,6 +22,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -487,11 +490,28 @@ public class SurveyService extends BaseJpaService<WlyySurveyQuestionDO, SurveyQu
        return list;
    }
    public List<Map<String,Object>> findSurveyByDeptAndPatient(String dept,String patient) {
        List<Map<String,Object>> result = findSurveyByDept(dept);
        if(result!=null&&result.size()>0){
            for(Map<String,Object> map:result){
                String tempId = (String)map.get("id");
                List<WlyySurveyUserDO> list = surveyUserDao.findBySurvey(tempId,patient, DateUtil.strToDate(DateUtil.dateToStr(new Date(),"yyyy-MM-dd")));
                if(list!=null&&list.size()>0){
                    map.put("isAnswer",true);
                }else{
                    map.put("isAnswer",false);
                }
            }
        }
        return result;
    }
    /**
     * 查询问卷下科室
     * @param tempId
     * @return
     */
    * 查询问卷下科室
    * @param tempId
    * @return
    */
    public List<Map<String,Object>> findDeptBySurvey(String tempId){
        String sql ="SELECT " +
                " d.survey_temp_code AS surveyTempCode," +
@ -506,6 +526,7 @@ public class SurveyService extends BaseJpaService<WlyySurveyQuestionDO, SurveyQu
        return list;
    }
    /**
     *
     * @param suJson

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

@ -513,6 +513,7 @@ public class BaseHospitalRequestMapping {
        public static final String saveDeptSurvey  = "/saveDeptSurvey";
        public static final String findSurveyByDept  = "/findSurveyByDept";
        public static final String findSurveyByDeptAndPatient  = "/findSurveyByDeptAndPatient";
        public static final String findDeptBySurvey  = "/findDeptBySurvey";
        public static final String saveSurveyAnswer  = "/saveSurveyAnswer";
        public static final String findAnswerBySurveyTempCode  = "/findAnswerBySurveyTempCode";

+ 5 - 0
server/svr-authentication/pom.xml

@ -143,6 +143,11 @@
            <artifactId>kaptcha</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>sms-service</artifactId>
            <version>2.0.0</version>
        </dependency>
    </dependencies>

+ 5 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/core/redis/WlyyRedisVerifyCodeService.java

@ -55,4 +55,9 @@ public class WlyyRedisVerifyCodeService {
        return false;
    }
    //生成6位随机数
    public String getCodeNumber(){
        return (int)((Math.random()*9+1)*100000)+"";
    }
}

+ 37 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -22,6 +22,7 @@ import com.yihu.jw.security.service.OauthWlyyConfigService;
import com.yihu.jw.security.service.OauthYlzConfigService;
import com.yihu.jw.security.utils.DateUtil;
import com.yihu.jw.security.utils.SerializeUtil;
import com.yihu.jw.sms.service.ZhongShanSMSService;
import com.yihu.utils.security.RSAUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -118,6 +119,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    private OauthYlzConfigService oauthYlzConfigService;
    @Autowired
    private OauthWlyyConfigService oauthWlyyConfigService;
    @Autowired
    private ZhongShanSMSService zhongShanSMSService;
    @PostConstruct
@ -430,6 +433,40 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);*/
    }
    @RequestMapping(value = "/oauth/sendZSCaptcha", method = RequestMethod.GET)
    public ResponseEntity<Oauth2Envelop<Captcha>> sendZSCaptcha(@RequestParam Map<String, String> parameters) throws Exception {
        String client_id = parameters.get("client_id");
        String username = parameters.get("username");
        if (StringUtils.isEmpty(client_id)) {
            throw new InvalidRequestException("client_id");
        }
        if (StringUtils.isEmpty(username)) {
            throw new InvalidRequestException("username");
        }
        //验证请求间隔超时,防止频繁获取验证码
        if (!wlyyRedisVerifyCodeService.isIntervalTimeout(client_id, username)) {
            throw new IllegalAccessException("SMS request frequency is too fast");
        }
        //发送短信获取验证码
        String captcha = wlyyRedisVerifyCodeService.getCodeNumber();
        int result =  zhongShanSMSService.ZhongShangSendSMS(username,"您好,你的手机登录短信验证码是:"+captcha+",5分钟内有效。");
        if (0 == result) {
            Captcha _captcha = new Captcha();
            _captcha.setCode(captcha);
            _captcha.setExpiresIn(300);
            wlyyRedisVerifyCodeService.store(client_id, username, captcha, 300);
            Oauth2Envelop<Captcha> oauth2Envelop = new Oauth2Envelop<>("captcha", 200, _captcha);
            HttpHeaders headers = new HttpHeaders();
            headers.set("Cache-Control", "no-store");
            headers.set("Pragma", "no-cache");
            return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
        }
        throw new IllegalStateException("验证码发送失败!");
    }
    /**
     * 验证验证码
     *

+ 1 - 1
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/third/PrescriptionUpdateController.java

@ -41,7 +41,7 @@ public class PrescriptionUpdateController extends EnvelopRestEndpoint {
            log.setName("药房发药回调");
            log.setRequest("admNo="+admNo+"&realOrder="+realOrder+"&status="+status);
            log.setCreateTime(new Date());
            log.setCode("0");
            log.setStatus("0");
            log = wlyyHttpLogDao.save(log);
            boolean obj= prescriptionService.updatePrescriptionByHisStatu(admNo,realOrder,status);
            log.setResponse("更新结果"+obj);

+ 158 - 131
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/PrescriptionStatusUpdateService.java

@ -2,11 +2,9 @@ package com.yihu.jw.service.channel;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDiagnosisDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.PrescriptionLogService;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionDiagnosisVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
@ -14,6 +12,7 @@ import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.status.EnvelopStatus;
import com.yihu.jw.util.http.HttpUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -21,6 +20,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
@ -50,8 +50,12 @@ public class PrescriptionStatusUpdateService {
    private OutpatientDao outpatientDao;
    @Autowired
    private ImService imService;
    @Autowired
    private PrescriptionLogService prescriptionLogService;
    public void autoPush() throws Exception{
    public void autoPush() throws Exception {
        logger.info("autoPush start");
        //获取所有就诊中已挂号、已下临时处方、并且未结束的处方
        String sql = "SELECT o.id,o.con_no,o.register_no,p.mapping_code,pre.adm_no,pre.real_order,pre.id preId,pre.dispensary_type,pre.status " +
                "FROM base.wlyy_outpatient o LEFT JOIN base.wlyy_patient_mapping p ON o.patient=p.patient " +
@ -60,45 +64,53 @@ public class PrescriptionStatusUpdateService {
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> map : list) {
            //处方号
            String realOrder=String.valueOf(map.get("real_order"));
            String realOrder = String.valueOf(map.get("real_order"));
            //门诊就诊唯一号
            String admNo=String.valueOf(map.get("adm_no"));
            String admNo = String.valueOf(map.get("adm_no"));
            //第三方居民唯一号
            String patientMappingCode=String.valueOf(map.get("mapping_code"));
            String patientMappingCode = String.valueOf(map.get("mapping_code"));
            //中山医院居民就诊次数
            String conNo=String.valueOf(map.get("con_no"));
            String conNo = String.valueOf(map.get("con_no"));
            //处方原状态
            String status=String.valueOf(map.get("status"));
            String status = String.valueOf(map.get("status"));
            //处方Id
            String preId=String.valueOf(map.get("preId"));
            String preId = String.valueOf(map.get("preId"));
            //门诊记录Id
            String outPatientId=String.valueOf(map.get("id"));
            String outPatientId = String.valueOf(map.get("id"));
            //根据处方号获取处方状态
            Map<String, Object> params =new HashMap<>();
            params.put("registerSn",null);
            params.put("patNo",patientMappingCode);
            params.put("admNo",admNo);
            params.put("realOrder",realOrder);
            Map<String, Object> params = new HashMap<>();
            params.put("registerSn", null);
            params.put("patNo", patientMappingCode);
            params.put("admNo", admNo);
            params.put("realOrder", realOrder);
            //判断处方是否存在
            boolean preExistFlag=true;
            List<WlyyPrescriptionVO> wlyyPrescriptionVOS= getWlyyPrescriptionVO(params);
            boolean preExistFlag = true;
            List<WlyyPrescriptionVO> wlyyPrescriptionVOS = getWlyyPrescriptionVO(params);
            //若用处方号获取处方为空,则需要使用居民编号及门诊就诊唯一号查询
            if(null==wlyyPrescriptionVOS){
                preExistFlag=false;
            if (null == wlyyPrescriptionVOS) {
                preExistFlag = false;
                params.remove("realOrder");
                wlyyPrescriptionVOS= getWlyyPrescriptionVO(params);
                wlyyPrescriptionVOS = getWlyyPrescriptionVO(params);
            }
            //根据处方id获取处方详情
            WlyyPrescriptionDO wlyyPrescriptionDO=prescriptionDao.findOne(preId);
            WlyyPrescriptionDO wlyyPrescriptionDO = prescriptionDao.findOne(preId);
            //根据门诊id获取门诊记录:如果处方状态为已完成,需要将门诊状态改为已诊
            WlyyOutpatientDO wlyyOutpatientDO=outpatientDao.findById(outPatientId);
            if(null!=wlyyPrescriptionVOS){
                ObjectMapper objectMapper=new ObjectMapper();
                WlyyPrescriptionVO wlyyPrescriptionVO=objectMapper.convertValue(wlyyPrescriptionVOS.get(0),WlyyPrescriptionVO.class);
                //如果状态为100,门诊记录需要变更为结束
//               wlyyPrescriptionVOS.get(0);
                wlyyPrescriptionDO.setStatus(wlyyPrescriptionVO.getStatus());
            WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(outPatientId);
            if (null != wlyyPrescriptionVOS) {
                ObjectMapper objectMapper = new ObjectMapper();
                WlyyPrescriptionVO wlyyPrescriptionVO = objectMapper.convertValue(wlyyPrescriptionVOS.get(0), WlyyPrescriptionVO.class);
                //如果处方状态一致,则不做操作
                if (wlyyPrescriptionDO.getStatus() != wlyyPrescriptionVO.getStatus()) {
                    return;
                }
                //存储处方操作日志
                prescriptionLogService.addPrescriptionLog(wlyyPrescriptionDO.getId(),wlyyPrescriptionDO.getStatus(),2, wlyyPrescriptionDO.getDoctor(), wlyyPrescriptionDO.getDoctorName(),"", new Date());
                //调用im发送模板消息
                /**
                 * 续方取消:-3 支付过期取消,-2 患者自己取消 ,-1 医生取消
@ -109,128 +121,143 @@ public class PrescriptionStatusUpdateService {
                 * 已完成:100 已完成/未评价 ,101 已完成已经评价
                 */
                try {
                    if(13<wlyyPrescriptionVO.getStatus()){
                    if (13 < wlyyPrescriptionVO.getStatus() && wlyyPrescriptionDO.getStatus() < 20) {
                        logger.info("autoPush imService send");
                        imService.pushPrescriptionImMessage(wlyyPrescriptionVO);
                    }
                } catch (Exception e) {
                    logger.error("im异常:"+e.getMessage());
                    e.printStackTrace();
                    logger.error("im异常:" + e.getMessage());
                }
                //用处方号获取不到处方时,重新更新处方到本地
                if(!preExistFlag){
                    //删除原有药品信息
                    List<WlyyPrescriptionInfoDO> oldInfos = prescriptionInfoDao.findByPrescriptionId(preId);
                    if(oldInfos!=null&&oldInfos.size()>0){
                        prescriptionInfoDao.delete(oldInfos);
                    }
                    //删除之前诊断
                    List<WlyyPrescriptionDiagnosisDO> ds = prescriptionDiagnosisDao.findByPrescriptionId(preId);
                    if(ds!=null&&ds.size()>0){
                        prescriptionDiagnosisDao.delete(ds);
                    }
                    String Icd10 = "";
                    String Icd10Name = "";
                    List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS=new ArrayList<>();
                    for(WlyyPrescriptionDiagnosisVO diagnosisVO:wlyyPrescriptionVO.getDiagnosisVOs()){
                        WlyyPrescriptionDiagnosisDO diagnosisDO=new WlyyPrescriptionDiagnosisDO();
                        //将诊断拼接放到门诊记录中
                        if("1".equals(diagnosisVO.getType())){
                            Icd10 = diagnosisVO.getCode()+","+Icd10;
                            Icd10Name+=diagnosisVO.getName()+","+Icd10Name;
                        }else {
                            Icd10+=diagnosisVO.getCode()+",";
                            Icd10Name+=diagnosisVO.getName()+",";
                        }
                        diagnosisDO.setCode(diagnosisVO.getCode());
                        diagnosisDO.setName(diagnosisVO.getName());
                        diagnosisDO.setType(diagnosisVO.getType());
                        diagnosisDO.setPrescriptionId(preId);
                        diagnosisDO.setCreateTime(new Date());
                        wlyyPrescriptionDiagnosisDOS.add(diagnosisDO);
                    }
                    //重新保存诊断
                    prescriptionDiagnosisDao.save(wlyyPrescriptionDiagnosisDOS);
                    //药品更新
                    List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS=new ArrayList<>();
                    for(WlyyPrescriptionInfoVO infoVO:wlyyPrescriptionVO.getInfoVOs()){
                        WlyyPrescriptionInfoDO infoDO=new WlyyPrescriptionInfoDO();
                        //处方code 关联表wlyy_prescription code
                        infoDO.setPrescriptionId(preId);
                        //药品编号
                        infoDO.setDrugNo(infoVO.getDrugNo());
                        //药品名称
                        infoDO.setDrugName(infoVO.getDrugName());
                        //库房号
                        infoDO.setDispDeposite(infoVO.getDispDeposite());
                        // 药量
                        infoDO.setDosage(infoVO.getDosage());
                        //数量
                        infoDO.setQuantity(infoVO.getQuantity());
                        //单位
                        infoDO.setUnit(infoVO.getUnit());
                        //單位名稱
                        infoDO.setUnitName(infoVO.getUnitName());
                        //包装单位
                        infoDO.setPackUnit(infoVO.getPackUnit());
                        //包装单位名称
                        infoDO.setPackUnitName(infoVO.getPackUnitName());
                        // 用法
                        infoDO.setSupplyCode(infoVO.getSupplyCode());
                        //用法名稱
                        infoDO.setSupplyName(infoVO.getSupplyName());
                        //天数
                        infoDO.setDays(infoVO.getDays());
                        //组号
                        infoDO.setFrequency(infoVO.getFrequency());
                        //药品收费码
                        infoDO.setSerial(infoVO.getSerial());
                        //库房号
                        infoDO.setGroupNo(infoVO.getGroupNo());
                        //规格
                        infoDO.setSpecification(infoVO.getSpecification());
                        // 1可用 0删除
                        infoDO.setDel(1);
                        //频率
                        infoDO.setUsageCode(infoVO.getUsageCode());
                        //頻率名稱
                        infoDO.setUsageName(infoVO.getUsageName());
                        //包装价格
                        infoDO.setPackRetprice(infoVO.getPackRetprice());
                        wlyyPrescriptionInfoDOS.add(infoDO);
                    }
                    prescriptionInfoDao.save(wlyyPrescriptionInfoDOS);
                    Icd10 = Icd10.substring(0,Icd10.length()-1);
                    Icd10Name = Icd10Name.substring(0,Icd10Name.length()-1);
                    wlyyOutpatientDO.setIcd10(Icd10);
                    wlyyOutpatientDO.setIcd10Name(Icd10Name);
                //his处方变更时,会删除原本处方,重新更新处方到本地
                if (!preExistFlag) {
                    updatePrescriptionInfo(preId,wlyyPrescriptionVO,wlyyOutpatientDO);
                }
                if(100==wlyyPrescriptionVO.getStatus()){
                //更改门诊状态为已经检查
                if (100 == wlyyPrescriptionVO.getStatus()) {
                    wlyyOutpatientDO.setStatus("2");
                }
                outpatientDao.save(wlyyOutpatientDO);
                //更新处方状态记录
                wlyyPrescriptionDO.setStatus(wlyyPrescriptionVO.getStatus());
                prescriptionDao.save(wlyyPrescriptionDO);
            }
        }
        logger.info("autoPush end");
    }
    public void updatePrescriptionInfo(String preId, WlyyPrescriptionVO wlyyPrescriptionVO, WlyyOutpatientDO wlyyOutpatientDO) {
        logger.info("autoPush updatePrescriptionInfo ");
        //删除原有药品信息
        List<WlyyPrescriptionInfoDO> oldInfos = prescriptionInfoDao.findByPrescriptionId(preId);
        if (oldInfos != null && oldInfos.size() > 0) {
            prescriptionInfoDao.delete(oldInfos);
        }
        //删除之前诊断
        List<WlyyPrescriptionDiagnosisDO> ds = prescriptionDiagnosisDao.findByPrescriptionId(preId);
        if (ds != null && ds.size() > 0) {
            prescriptionDiagnosisDao.delete(ds);
        }
        String Icd10 = "";
        String Icd10Name = "";
        List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS = new ArrayList<>();
        for (WlyyPrescriptionDiagnosisVO diagnosisVO : wlyyPrescriptionVO.getDiagnosisVOs()) {
            WlyyPrescriptionDiagnosisDO diagnosisDO = new WlyyPrescriptionDiagnosisDO();
            //将诊断拼接放到门诊记录中
            if ("1".equals(diagnosisVO.getType())) {
                Icd10 = diagnosisVO.getCode() + "," + Icd10;
                Icd10Name += diagnosisVO.getName() + "," + Icd10Name;
            } else {
                Icd10 += diagnosisVO.getCode() + ",";
                Icd10Name += diagnosisVO.getName() + ",";
            }
            diagnosisDO.setCode(diagnosisVO.getCode());
            diagnosisDO.setName(diagnosisVO.getName());
            diagnosisDO.setType(diagnosisVO.getType());
            diagnosisDO.setPrescriptionId(preId);
            diagnosisDO.setCreateTime(new Date());
            wlyyPrescriptionDiagnosisDOS.add(diagnosisDO);
        }
        //重新保存诊断
        prescriptionDiagnosisDao.save(wlyyPrescriptionDiagnosisDOS);
        //药品更新
        List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = new ArrayList<>();
        for (WlyyPrescriptionInfoVO infoVO : wlyyPrescriptionVO.getInfoVOs()) {
            WlyyPrescriptionInfoDO infoDO = new WlyyPrescriptionInfoDO();
            //处方code 关联表wlyy_prescription code
            infoDO.setPrescriptionId(preId);
            //药品编号
            infoDO.setDrugNo(infoVO.getDrugNo());
            //药品名称
            infoDO.setDrugName(infoVO.getDrugName());
            //库房号
            infoDO.setDispDeposite(infoVO.getDispDeposite());
            // 药量
            infoDO.setDosage(infoVO.getDosage());
            //数量
            infoDO.setQuantity(infoVO.getQuantity());
            //单位
            infoDO.setUnit(infoVO.getUnit());
            //單位名稱
            infoDO.setUnitName(infoVO.getUnitName());
            //包装单位
            infoDO.setPackUnit(infoVO.getPackUnit());
            //包装单位名称
            infoDO.setPackUnitName(infoVO.getPackUnitName());
            // 用法
            infoDO.setSupplyCode(infoVO.getSupplyCode());
            //用法名稱
            infoDO.setSupplyName(infoVO.getSupplyName());
            //天数
            infoDO.setDays(infoVO.getDays());
            //组号
            infoDO.setFrequency(infoVO.getFrequency());
            //药品收费码
            infoDO.setSerial(infoVO.getSerial());
            //库房号
            infoDO.setGroupNo(infoVO.getGroupNo());
            //规格
            infoDO.setSpecification(infoVO.getSpecification());
            // 1可用 0删除
            infoDO.setDel(1);
            //频率
            infoDO.setUsageCode(infoVO.getUsageCode());
            //頻率名稱
            infoDO.setUsageName(infoVO.getUsageName());
            //包装价格
            infoDO.setPackRetprice(infoVO.getPackRetprice());
            wlyyPrescriptionInfoDOS.add(infoDO);
        }
        prescriptionInfoDao.save(wlyyPrescriptionInfoDOS);
        Icd10 = Icd10.substring(0, Icd10.length() - 1);
        Icd10Name = Icd10Name.substring(0, Icd10Name.length() - 1);
        wlyyOutpatientDO.setIcd10(Icd10);
        wlyyOutpatientDO.setIcd10Name(Icd10Name);
    }
    /**
     * 获取处方详情
     *
     * @param params
     * @return
     * @throws Exception
     */
        public  List<WlyyPrescriptionVO> getWlyyPrescriptionVO(Map<String, Object> params)throws Exception{
            //根据处方号获取处方状态
            String result=  HttpUtils.doGet(hlwyyEntranceUrl+"/mqsdk/BS16017",params).getContent();
            ObjectMapper objectMapper=new ObjectMapper();
            ListEnvelop listEnvelop=objectMapper.readValue(result,ListEnvelop.class);
            if(null!=listEnvelop&& EnvelopStatus.success.code.equals(listEnvelop.getStatus())&&null!=listEnvelop.getDetailModelList()&&listEnvelop.getDetailModelList().size()>0){
    public List<WlyyPrescriptionVO> getWlyyPrescriptionVO(Map<String, Object> params) throws Exception {
        //根据处方号获取处方状态
        String result = HttpUtils.doGet(hlwyyEntranceUrl + "/mqsdk/BS16017", params).getContent();
        ObjectMapper objectMapper = new ObjectMapper();
        ListEnvelop listEnvelop = objectMapper.readValue(result, ListEnvelop.class);
        if (null != listEnvelop && EnvelopStatus.success.code.equals(listEnvelop.getStatus()) && null != listEnvelop.getDetailModelList() && listEnvelop.getDetailModelList().size() > 0) {
//                logger.info("result:"+listEnvelop.getDetailModelList());
                List<WlyyPrescriptionVO> wlyyPrescriptionVOS=listEnvelop.getDetailModelList();
                return wlyyPrescriptionVOS;
            }
            return null;
            List<WlyyPrescriptionVO> wlyyPrescriptionVOS = listEnvelop.getDetailModelList();
            return wlyyPrescriptionVOS;
        }
        return null;
    }
}

+ 9 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/survey/SurveyEndpoint.java

@ -148,6 +148,15 @@ public class SurveyEndpoint extends EnvelopRestEndpoint {
        return success(surveyService.findSurveyByDept(dept));
    }
    @GetMapping(value = BaseHospitalRequestMapping.WlyySurvey.findSurveyByDeptAndPatient)
    @ApiOperation(value = "模板-查询部门下发放的问卷用户答题情况")
    public ListEnvelop findSurveyByDeptAndPatient(@ApiParam(name = "dept", value = "科室")
                                                  @RequestParam(value = "dept",required = true)String dept,
                                                  @ApiParam(name = "patient", value = "居民code")
                                                  @RequestParam(value = "patient",required = true)String patient)throws Exception {
        return success(surveyService.findSurveyByDeptAndPatient(dept,patient));
    }
    @GetMapping(value = BaseHospitalRequestMapping.WlyySurvey.findDeptBySurvey)
    @ApiOperation(value = "模板-查询模板下的科室")
    public ListEnvelop findDeptBySurvey(@ApiParam(name = "tempId", value = "模板ID")