| | |
| | | //@PreAuthorize("@ss.hasPermi('system:answer:add')") |
| | | @Log(title = "ä»»å¡é®å·é®é¢é项", businessType = BusinessType.INSERT) |
| | | @ApiOperation("æ°å¢ä»»å¡é®å·é®é¢é项") |
| | | @PostMapping("/add") |
| | | @PostMapping("/add") |
| | | public AjaxResult add(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) { |
| | | SysUser user = getLoginUser().getUser(); |
| | | serviceSubtaskAnswer.setOrgid(user.getOrgid()); |
| | |
| | | //@PreAuthorize("@ss.hasPermi('system:answer:edit')") |
| | | @Log(title = "ä»»å¡é®å·é®é¢é项", businessType = BusinessType.UPDATE) |
| | | @ApiOperation("ä¿®æ¹ä»»å¡é®å·é®é¢é项") |
| | | @PostMapping("/edit") |
| | | @PostMapping("/edit") |
| | | public AjaxResult edit(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) { |
| | | log.info("ãsaveQuestionCache-----editãçå
¥å为ï¼{}", serviceSubtaskAnswer); |
| | | return toAjax(serviceSubtaskAnswerService.updateServiceSubtaskAnswer(serviceSubtaskAnswer)); |
| | |
| | | package com.ruoyi.web.controller.smartor; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.github.pagehelper.ISelect; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | |
| | | import com.ruoyi.common.core.domain.model.LoginUser; |
| | | import com.ruoyi.common.core.page.TableDataInfo; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.dx.MessageSend; |
| | | import com.ruoyi.common.enums.BusinessType; |
| | | import com.ruoyi.common.enums.MsgLSEnum; |
| | | import com.ruoyi.common.enums.PreachFormEnum; |
| | | import com.ruoyi.common.enums.SendStateEnum; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.PageUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.utils.reflect.ReflectUtils; |
| | | import com.ruoyi.quartz.service.ICollectHISService; |
| | | import com.ruoyi.quartz.task.RyTask; |
| | | import com.ruoyi.system.domain.SysConfig; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.system.service.ISysUserDeptService; |
| | | import com.smartor.common.LSHospTokenUtil; |
| | | import com.smartor.common.QwenLLMUtil; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.VO.HeLibraryCountVO; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | |
| | | for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) { |
| | | String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform()); |
| | | serviceSubtaskExport.setPreachform(pf); |
| | | if(serviceSubtaskExport.getSendstate() != null) { |
| | | if (serviceSubtaskExport.getSendstate() != null) { |
| | | String stName = SendStateEnum.getDescByCode("" + serviceSubtaskExport.getSendstate()); |
| | | serviceSubtaskExport.setStName(stName); |
| | | } |
| | |
| | | |
| | | Integer statisticaltype = serviceSubtaskCountReq.getStatisticaltype(); |
| | | |
| | | if(ObjectUtils.isNotEmpty(statisticaltype)){ |
| | | if (ObjectUtils.isNotEmpty(statisticaltype)) { |
| | | SysUser user = getLoginUser().getUser(); |
| | | if(!isAdmin.contains(user.getUserId())){ |
| | | if(statisticaltype==1){ |
| | | if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())){ |
| | | if (!isAdmin.contains(user.getUserId())) { |
| | | if (statisticaltype == 1) { |
| | | if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) { |
| | | //å
¨é¨ç
åº |
| | | String deptInfo = user.getDeptInfo(); |
| | | List<String> leavehospitaldistrictcodes = JSON.parseArray(deptInfo) |
| | | .stream() |
| | | .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); |
| | | List<String> leavehospitaldistrictcodes = JSON.parseArray(deptInfo).stream().map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); |
| | | serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes); |
| | | } |
| | | }else if(statisticaltype==2){ |
| | | if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())){ |
| | | } else if (statisticaltype == 2) { |
| | | if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())) { |
| | | //å
¨é¨ç§å®¤ |
| | | String hospInfo = user.getHospInfo(); |
| | | List<String> deptCodes = JSON.parseArray(hospInfo) |
| | | .stream() |
| | | .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); |
| | | List<String> deptCodes = JSON.parseArray(hospInfo).stream().map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); |
| | | serviceSubtaskCountReq.setDeptcodes(deptCodes); |
| | | } |
| | | } |
| | |
| | | return serviceSubtaskService.getHeLibraryCount(heLibraryCountVO); |
| | | } |
| | | |
| | | /** |
| | | * æå¨åéé®å·æ¨¡æ¿ççä¿¡åè½ |
| | | * |
| | | * @param subid |
| | | * @return |
| | | */ |
| | | @GetMapping(value = "/smsSubTask/{subid}") |
| | | public Map<String, Object> smsSubTask(@PathVariable("subid") Long subid) { |
| | | return serviceSubtaskService.smsSubTask(subid); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/test") |
| | | public void test() { |
| | |
| | | } |
| | | |
| | | @PostMapping("/compensateTasktest") |
| | | public void compensateTasktest(@RequestParam("subId")Long subId) { |
| | | public void compensateTasktest(@RequestParam("subId") Long subId) { |
| | | ryTask.compensateTaskTest(subId); |
| | | } |
| | | |
| | | @PostMapping("/longTaskSendtest") |
| | | public void longTaskSendtest(@RequestParam("subId")Long subId) { |
| | | public void longTaskSendtest(@RequestParam("subId") Long subId) { |
| | | ryTask.longTaskSendTest(subId); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @PostMapping("/qwenLLMTest") |
| | | public int qwenLLMTest(@RequestParam("voiceText") String questionText, @RequestParam("voiceText") String voiceText, |
| | | @RequestParam("value") String value,@RequestParam("regexText") String regexText) { |
| | | public int qwenLLMTest(@RequestParam("voiceText") String questionText, @RequestParam("voiceText") String voiceText, @RequestParam("value") String value, @RequestParam("regexText") String regexText) { |
| | | int result = ryTask.qwenLLMTest(questionText, voiceText, value, regexText); |
| | | return result; |
| | | } |
| | |
| | | package com.smartor.controller; |
| | | package com.ruoyi.web.controller.smartor; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | * æ¥è¯¢ç信模æ¿å表 |
| | | */ |
| | | //@PreAuthorize("@ss.hasPermi('smartor:smstemplet:list')") |
| | | @PostMapping("list") |
| | | public TableDataInfo list(@RequestBody SmsTemplet smsTemplet) { |
| | | startPage(); |
| | | @PostMapping("/list") |
| | | public Map<String, Object> list(@RequestBody SmsTemplet smsTemplet) { |
| | | //è¿ä¸ªä¸éè¦å页ï¼ä¸ä¸ªç§å®¤ä¹ä¸ä¼æå¤å°æ¡çä¿¡æ¨¡æ¿ |
| | | smsTemplet.setPageNum(null); |
| | | smsTemplet.setPageSize(null); |
| | | List<SmsTemplet> list = smsTempletService.selectSmsTempletList(smsTemplet); |
| | | return getDataTable(list); |
| | | return getDataTable3(ObjectUtil.isNotEmpty(list)?list.size():0, list); |
| | | } |
| | | |
| | | /** |
| | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.*; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.Date; |
| | | |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | |
| | | * 计ç®ç¸å·®å¤©æ° |
| | | */ |
| | | public static int differentDaysByMillisecond(Date date1, Date date2) { |
| | | return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); |
| | | LocalDate d1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | LocalDate d2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | return (int) ChronoUnit.DAYS.between(d1, d2); |
| | | } |
| | | |
| | | /** |
| | |
| | | Map<String, String> headerMap = new HashMap<>(); |
| | | headerMap.put("sign", encode); |
| | | String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap); |
| | | |
| | | log.info("ãgetWXCodeã微信å
¬ä¼å·è¿ååæ°ï¼{}", result); |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | String code = (String) jsonObject.toString(); |
| | | return code; |
| | |
| | | package com.ruoyi.system.domain; |
| | | |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | import org.apache.commons.lang3.builder.ToStringBuilder; |
| | | import org.apache.commons.lang3.builder.ToStringStyle; |
| | | import com.ruoyi.common.annotation.Excel; |
| | |
| | | * @author smartor |
| | | * @date 2023-03-06 |
| | | */ |
| | | public class SmsTemplet extends BaseEntity |
| | | { |
| | | @Data |
| | | public class SmsTemplet extends BaseEntity { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * ä¸»é® |
| | | */ |
| | | private Long templetid; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * ç信模æ¿ç¼å· |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String templetno; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * ç信模æ¿åç§° |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String templetname; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * 模æ¿å
容 |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String templetcontent; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * é¨é¨ç¼ç |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String deptCode; |
| | | |
| | | /** |
| | | * é¨é¨åç§° |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String deptName; |
| | | |
| | | /** |
| | | * ç
åºç¼ç |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String wardCode; |
| | | |
| | | /** |
| | | * ç
åºåç§° |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String wardName; |
| | | |
| | | /** |
| | | * ç¨æ·å·¥å· |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String userName; |
| | | |
| | | /** |
| | | * ç¨æ·éç® |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private String nickName; |
| | | |
| | | /** |
| | | * $column.columnComment |
| | | */ |
| | | private String delFlag; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * $column.columnComment |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private Long isupload; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * $column.columnComment |
| | | */ |
| | | @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") |
| | | private Date uploadTime; |
| | | |
| | | public void setTempletid(Long templetid) |
| | | { |
| | | this.templetid = templetid; |
| | | } |
| | | |
| | | public Long getTempletid() |
| | | { |
| | | return templetid; |
| | | } |
| | | public void setTempletno(String templetno) |
| | | { |
| | | this.templetno = templetno; |
| | | } |
| | | |
| | | public String getTempletno() |
| | | { |
| | | return templetno; |
| | | } |
| | | public void setTempletname(String templetname) |
| | | { |
| | | this.templetname = templetname; |
| | | } |
| | | |
| | | public String getTempletname() |
| | | { |
| | | return templetname; |
| | | } |
| | | public void setTempletcontent(String templetcontent) |
| | | { |
| | | this.templetcontent = templetcontent; |
| | | } |
| | | |
| | | public String getTempletcontent() |
| | | { |
| | | return templetcontent; |
| | | } |
| | | public void setDelFlag(String delFlag) |
| | | { |
| | | this.delFlag = delFlag; |
| | | } |
| | | |
| | | public String getDelFlag() |
| | | { |
| | | return delFlag; |
| | | } |
| | | public void setIsupload(Long isupload) |
| | | { |
| | | this.isupload = isupload; |
| | | } |
| | | |
| | | public Long getIsupload() |
| | | { |
| | | return isupload; |
| | | } |
| | | public void setUploadTime(Date uploadTime) |
| | | { |
| | | this.uploadTime = uploadTime; |
| | | } |
| | | |
| | | public Date getUploadTime() |
| | | { |
| | | return uploadTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) |
| | | .append("templetid", getTempletid()) |
| | | .append("templetno", getTempletno()) |
| | | .append("templetname", getTempletname()) |
| | | .append("templetcontent", getTempletcontent()) |
| | | .append("delFlag", getDelFlag()) |
| | | .append("updateBy", getUpdateBy()) |
| | | .append("updateTime", getUpdateTime()) |
| | | .append("createBy", getCreateBy()) |
| | | .append("createTime", getCreateTime()) |
| | | .append("isupload", getIsupload()) |
| | | .append("uploadTime", getUploadTime()) |
| | | .toString(); |
| | | } |
| | | } |
| | |
| | | |
| | | import java.util.List; |
| | | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * ç信模æ¿Mapperæ¥å£ |
| | | * |
| | |
| | | * @param templetids éè¦å é¤çæ°æ®ä¸»é®éå |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteSmsTempletByTempletids(Long[] templetids); |
| | | public int deleteSmsTempletByTempletids(@Param("templetids") Long[] templetids); |
| | | } |
| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import java.util.List; |
| | | |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | * @date 2023-03-06 |
| | | */ |
| | | @Service |
| | | public class SmsTempletServiceImpl implements ISmsTempletService |
| | | { |
| | | public class SmsTempletServiceImpl implements ISmsTempletService { |
| | | @Autowired |
| | | private SmsTempletMapper smsTempletMapper; |
| | | |
| | |
| | | * @return çä¿¡æ¨¡æ¿ |
| | | */ |
| | | @Override |
| | | public SmsTemplet selectSmsTempletByTempletid(Long templetid) |
| | | { |
| | | public SmsTemplet selectSmsTempletByTempletid(Long templetid) { |
| | | return smsTempletMapper.selectSmsTempletByTempletid(templetid); |
| | | } |
| | | |
| | |
| | | * @return çä¿¡æ¨¡æ¿ |
| | | */ |
| | | @Override |
| | | public List<SmsTemplet> selectSmsTempletList(SmsTemplet smsTemplet) |
| | | { |
| | | public List<SmsTemplet> selectSmsTempletList(SmsTemplet smsTemplet) { |
| | | return smsTempletMapper.selectSmsTempletList(smsTemplet); |
| | | } |
| | | |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertSmsTemplet(SmsTemplet smsTemplet) |
| | | { |
| | | public int insertSmsTemplet(SmsTemplet smsTemplet) { |
| | | smsTemplet.setCreateTime(DateUtils.getNowDate()); |
| | | return smsTempletMapper.insertSmsTemplet(smsTemplet); |
| | | } |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int updateSmsTemplet(SmsTemplet smsTemplet) |
| | | { |
| | | public int updateSmsTemplet(SmsTemplet smsTemplet) { |
| | | smsTemplet.setUpdateTime(DateUtils.getNowDate()); |
| | | return smsTempletMapper.updateSmsTemplet(smsTemplet); |
| | | } |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteSmsTempletByTempletids(Long[] templetids) |
| | | { |
| | | return smsTempletMapper.deleteSmsTempletByTempletids(templetids); |
| | | public int deleteSmsTempletByTempletids(Long[] templetids) { |
| | | return smsTempletMapper.deleteSmsTempletByTempletids(templetids); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteSmsTempletByTempletid(Long templetid) |
| | | { |
| | | public int deleteSmsTempletByTempletid(Long templetid) { |
| | | return smsTempletMapper.deleteSmsTempletByTempletid(templetid); |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.system.mapper.SmsTempletMapper"> |
| | | |
| | | <resultMap type="SmsTemplet" id="SmsTempletResult"> |
| | | <result property="templetid" column="templetid" /> |
| | | <result property="templetno" column="templetno" /> |
| | | <result property="templetname" column="templetname" /> |
| | | <result property="templetcontent" column="templetcontent" /> |
| | | <result property="delFlag" column="del_flag" /> |
| | | <result property="updateBy" column="update_by" /> |
| | | <result property="updateTime" column="update_time" /> |
| | | <result property="createBy" column="create_by" /> |
| | | <result property="createTime" column="create_time" /> |
| | | <result property="isupload" column="isupload" /> |
| | | <result property="uploadTime" column="upload_time" /> |
| | | <result property="guid" column="guid" /> |
| | | <result property="orgid" column="orgid" /> |
| | | <result property="templetid" column="templetid"/> |
| | | <result property="templetno" column="templetno"/> |
| | | <result property="templetname" column="templetname"/> |
| | | <result property="templetcontent" column="templetcontent"/> |
| | | <result property="delFlag" column="del_flag"/> |
| | | <result property="updateBy" column="update_by"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | <result property="createBy" column="create_by"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="isupload" column="isupload"/> |
| | | <result property="uploadTime" column="upload_time"/> |
| | | <result property="guid" column="guid"/> |
| | | <result property="orgid" column="orgid"/> |
| | | <result property="deptCode" column="dept_code"/> |
| | | <result property="deptName" column="dept_name"/> |
| | | <result property="wardName" column="ward_name"/> |
| | | <result property="wardCode" column="ward_code"/> |
| | | <result property="userName" column="user_name"/> |
| | | <result property="nickName" column="nick_name"/> |
| | | |
| | | </resultMap> |
| | | |
| | | <sql id="selectSmsTempletVo"> |
| | | select templetid, templetno, orgid, templetname, templetcontent, del_flag, update_by, guid, update_time, create_by, create_time, isupload, upload_time from sms_templet |
| | | select templetid, |
| | | templetno, |
| | | orgid, |
| | | templetname, |
| | | templetcontent, |
| | | del_flag, |
| | | update_by, |
| | | guid, |
| | | update_time, |
| | | create_by, |
| | | create_time, |
| | | isupload, |
| | | upload_time, |
| | | dept_code, |
| | | dept_name, |
| | | ward_name, |
| | | ward_code, |
| | | user_name, |
| | | nick_name |
| | | from sms_templet |
| | | </sql> |
| | | |
| | | <select id="selectSmsTempletList" parameterType="SmsTemplet" resultMap="SmsTempletResult"> |
| | | <include refid="selectSmsTempletVo"/> |
| | | where 1=1 |
| | | <if test="orgid != null and orgid != ''"> |
| | | AND orgid = #{orgid} |
| | | </if> |
| | | <if test="templetno != null and templetno != ''"> and templetno = #{templetno}</if> |
| | | <if test="templetname != null and templetname != ''"> and templetname like concat('%', #{templetname}, '%')</if> |
| | | <if test="templetcontent != null and templetcontent != ''"> and templetcontent = #{templetcontent}</if> |
| | | <if test="isupload != null "> and isupload = #{isupload}</if> |
| | | <if test="uploadTime != null "> and upload_time = #{uploadTime}</if> |
| | | <if test="orgid != null and orgid != ''"> |
| | | AND orgid = #{orgid} |
| | | </if> |
| | | <if test="templetno != null and templetno != ''">and templetno = #{templetno}</if> |
| | | <if test="templetname != null and templetname != ''">and templetname like concat('%', #{templetname}, '%')</if> |
| | | <if test="templetcontent != null and templetcontent != ''">and templetcontent = #{templetcontent}</if> |
| | | <if test="isupload != null ">and isupload = #{isupload}</if> |
| | | <if test="uploadTime != null ">and upload_time = #{uploadTime}</if> |
| | | <if test="deptCode != null and deptCode != ''">and dept_code = #{deptCode}</if> |
| | | <if test="deptName != null and deptName != ''">and dept_name = #{deptName}</if> |
| | | <if test="wardName != null and wardName != ''">and ward_name = #{wardName}</if> |
| | | <if test="wardCode != null and wardCode != ''">and ward_code = #{wardCode}</if> |
| | | <if test="userName != null and userName != ''">and user_name = #{userName}</if> |
| | | <if test="nickName != null and nickName != ''">and nick_name = #{nickName}</if> |
| | | </select> |
| | | |
| | | <select id="selectSmsTempletByTempletid" parameterType="Long" resultMap="SmsTempletResult"> |
| | |
| | | where templetid = #{templetid} |
| | | </select> |
| | | |
| | | <insert id="insertSmsTemplet" parameterType="SmsTemplet"> |
| | | <insert id="insertSmsTemplet" parameterType="SmsTemplet" useGeneratedKeys="true" |
| | | keyProperty="templetid"> |
| | | insert into sms_templet |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="templetid != null">templetid,</if> |
| | | <if test="templetno != null">templetno,</if> |
| | | <if test="templetname != null">templetname,</if> |
| | | <if test="templetcontent != null">templetcontent,</if> |
| | |
| | | <if test="uploadTime != null">upload_time,</if> |
| | | <if test="guid != null">guid,</if> |
| | | <if test="orgid != null">orgid,</if> |
| | | </trim> |
| | | <if test="deptCode != null">dept_code,</if> |
| | | <if test="deptName != null">dept_name,</if> |
| | | <if test="wardCode != null">ward_code,</if> |
| | | <if test="wardName != null">ward_name,</if> |
| | | <if test="userName != null">user_name,</if> |
| | | <if test="nickName != null">nick_name,</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="templetid != null">#{templetid},</if> |
| | | <if test="templetno != null">#{templetno},</if> |
| | | <if test="templetname != null">#{templetname},</if> |
| | | <if test="templetcontent != null">#{templetcontent},</if> |
| | |
| | | <if test="uploadTime != null">#{uploadTime},</if> |
| | | <if test="guid != null">#{guid},</if> |
| | | <if test="orgid != null">#{orgid},</if> |
| | | </trim> |
| | | <if test="deptCode != null">#{deptCode},</if> |
| | | <if test="deptName != null">#{deptName},</if> |
| | | <if test="wardCode != null">#{wardCode},</if> |
| | | <if test="wardName != null">#{wardName},</if> |
| | | <if test="userName != null">#{userName},</if> |
| | | <if test="nickName != null">#{nickName},</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <update id="updateSmsTemplet" parameterType="SmsTemplet"> |
| | |
| | | <if test="uploadTime != null">upload_time = #{uploadTime},</if> |
| | | <if test="guid != null">guid = #{guid},</if> |
| | | <if test="orgid != null">orgid = #{orgid},</if> |
| | | <if test="deptCode != null">dept_code = #{deptCode},</if> |
| | | <if test="deptName != null">dept_name = #{deptName},</if> |
| | | <if test="wardCode != null">ward_code = #{wardCode},</if> |
| | | <if test="wardName != null">ward_name = #{wardName},</if> |
| | | <if test="userName != null">user_name = #{userName},</if> |
| | | <if test="nickName != null">nick_name = #{nickName},</if> |
| | | </trim> |
| | | where templetid = #{templetid} |
| | | </update> |
| | | |
| | | <delete id="deleteSmsTempletByTempletid" parameterType="Long"> |
| | | delete from sms_templet where templetid = #{templetid} |
| | | update sms_templet |
| | | set del_flag = '1' |
| | | where templetid = #{templetid} |
| | | </delete> |
| | | |
| | | <delete id="deleteSmsTempletByTempletids" parameterType="String"> |
| | | delete from sms_templet where templetid in |
| | | <foreach item="templetid" collection="array" open="(" separator="," close=")"> |
| | | update sms_templet set del_flag = '1' where templetid in |
| | | <foreach item="templetid" collection="templetids" open="(" separator="," close=")"> |
| | | #{templetid} |
| | | </foreach> |
| | | </delete> |
| | |
| | | <artifactId>aliyun-java-sdk-ecs</artifactId> |
| | | <version>4.24.59</version> |
| | | </dependency> |
| | | <!-- é¿éäºèªç¶è¯è¨å¤çï¼NLPï¼ SDK --> |
| | | <dependency> |
| | | <groupId>com.aliyun</groupId> |
| | | <artifactId>aliyun-java-sdk-alinlp</artifactId> |
| | | <version>1.8.17</version> |
| | | </dependency> |
| | | <!-- éç¨å·¥å
·--> |
| | | <dependency> |
| | | <groupId>com.ruoyi</groupId> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.smartor.common; |
| | | |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.aliyuncs.CommonRequest; |
| | | import com.aliyuncs.CommonResponse; |
| | | import com.aliyuncs.DefaultAcsClient; |
| | | import com.aliyuncs.IAcsClient; |
| | | import com.aliyuncs.exceptions.ClientException; |
| | | import com.aliyuncs.exceptions.ServerException; |
| | | import com.aliyuncs.http.MethodType; |
| | | import com.aliyuncs.profile.DefaultProfile; |
| | | import com.aliyuncs.profile.IClientProfile; |
| | | import com.google.gson.Gson; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.junit.Test; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * é¿éäºèªç¶è¯è¨å¤çï¼NLPï¼å·¥å
፱ȋ |
| | | * <p> |
| | | * ææ¡£ï¼<a href="https://help.aliyun.com/zh/document_detail/181284.html">NLP èªå¦ä¹ å¹³å° / åºç¡ææ¬æå¡</a> |
| | | * <p> |
| | | * è°ç¨æ¹å¼åºäº {@code aliyun-java-sdk-alinlp} ç {@link CommonRequest}ï¼ |
| | | * ç»ä¸å {@code alinlp.cn-hangzhou.aliyuncs.com} åé POST 请æ±ï¼çæ¬å· 2020-06-29ï¼ |
| | | * éè¿ä¼ å
¥ä¸åç {@code Action} ä¸ {@code ServiceCode} è°ç¨å
·ä½è½åã |
| | | * <p> |
| | | * é
置项ï¼application.ymlï¼ï¼ |
| | | * <pre> |
| | | * aliyun: |
| | | * nlp: |
| | | * access-key-id: ${accessKeyId} # é»è®¤å¤ç¨ä¸»è´¦å· accessKeyId |
| | | * access-key-secret: ${accessKeySecret} |
| | | * region-id: cn-hangzhou |
| | | * domain: alinlp.cn-hangzhou.aliyuncs.com |
| | | * version: 2020-06-29 |
| | | * read-timeout: 5000 |
| | | * connect-timeout: 3000 |
| | | * </pre> |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class AliNlpUtil { |
| | | |
| | | /** é¿éäº AccessKey IDï¼é»è®¤å¤ç¨ä¸»è´¦å·é
ç½® */ |
| | | @Value("${aliyun.nlp.access-key-id:${accessKeyId:}}") |
| | | private String accessKeyId; |
| | | |
| | | /** é¿éäº AccessKey Secret */ |
| | | @Value("${aliyun.nlp.access-key-secret:${accessKeySecret:}}") |
| | | private String accessKeySecret; |
| | | |
| | | /** å°å IDï¼å
Œ
±äºåºå®ä¸º cn-hangzhou */ |
| | | @Value("${aliyun.nlp.region-id:cn-hangzhou}") |
| | | private String regionId; |
| | | |
| | | /** æ¥å
¥åå */ |
| | | @Value("${aliyun.nlp.domain:alinlp.cn-hangzhou.aliyuncs.com}") |
| | | private String domain = "alinlp.cn-hangzhou.aliyuncs.com"; |
| | | |
| | | /** API çæ¬å· */ |
| | | @Value("${aliyun.nlp.version:2020-06-29}") |
| | | private String version = "2020-06-29"; |
| | | |
| | | /** 读åè¶
æ¶ï¼æ¯«ç§ï¼ */ |
| | | @Value("${aliyun.nlp.read-timeout:5000}") |
| | | private int readTimeout = 5000; |
| | | |
| | | /** è¿æ¥è¶
æ¶ï¼æ¯«ç§ï¼ */ |
| | | @Value("${aliyun.nlp.connect-timeout:3000}") |
| | | private int connectTimeout = 3000; |
| | | |
| | | // NLPå°ååºå® cn-hangzhou |
| | | private static final String REGION_ID = "cn-hangzhou"; |
| | | private static final String PRODUCT = "nlp"; |
| | | private static final String VERSION = "2020-06-08"; |
| | | |
| | | private static final Gson gson = new Gson(); |
| | | |
| | | private IAcsClient client; |
| | | |
| | | @PostConstruct |
| | | private void init() { |
| | | // String accessKeyId = "LTAI5tPfc1VJzz7VuhzcBwug"; |
| | | // String accessKeySecret = "gG1srKxPFDBNWe2oHfqmK1qsSQkf1e"; |
| | | |
| | | String accessKeyId = "LTAI5t6GBf9nUXfX37CUDi4H"; |
| | | String accessKeySecret = "BtjYAES4yjvde5Lwg46sTqnZefPnOE"; |
| | | String regionId = "cn-hangzhou"; |
| | | if (StringUtils.isBlank(accessKeyId) || StringUtils.isBlank(accessKeySecret)) { |
| | | log.warn("é¿éäº NLP æªé
ç½® AccessKeyï¼AliNlpUtil å°ä¸å¯ç¨"); |
| | | return; |
| | | } |
| | | IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); |
| | | this.client = new DefaultAcsClient(profile); |
| | | } |
| | | |
| | | // ============================== åºç¡è°ç¨ ============================== |
| | | |
| | | /** |
| | | * éç¨è°ç¨å
¥å£ï¼ä¼ å
¥ Action ä¸ä¸å¡åæ°ï¼è¿åè§£æåç JSON 对象ã |
| | | * |
| | | * @param action API å¨ä½åï¼ä¾å¦ {@code GetWsChGeneral} |
| | | * @param params ä¸å¡åæ°ï¼è³å°éè¦å
å« {@code ServiceCode}ã{@code Text} ç |
| | | * @return æ¥å£è¿åç JSON 对象ï¼å¤±è´¥æ¶è¿å {@code null} |
| | | */ |
| | | public JSONObject invoke(String action, Map<String, String> params) { |
| | | if (client == null) { |
| | | log.error("é¿éäº NLP 客æ·ç«¯æªåå§åï¼æ æ³è°ç¨ action={}", action); |
| | | return null; |
| | | } |
| | | if (StringUtils.isBlank(action)) { |
| | | throw new IllegalArgumentException("action ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain(domain); |
| | | request.setSysVersion(version); |
| | | request.setSysAction(action); |
| | | request.setSysReadTimeout(readTimeout); |
| | | request.setSysConnectTimeout(connectTimeout); |
| | | if (params != null) { |
| | | for (Map.Entry<String, String> e : params.entrySet()) { |
| | | if (e.getValue() != null) { |
| | | request.putBodyParameter(e.getKey(), e.getValue()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | String data = response.getData(); |
| | | if (StringUtils.isBlank(data)) { |
| | | log.error("é¿éäº NLP è¿å为空ï¼action={}, params={}", action, params); |
| | | return null; |
| | | } |
| | | return JSONObject.parseObject(data); |
| | | } catch (ClientException e) { |
| | | log.error("é¿éäº NLP è°ç¨å¤±è´¥ action={}, params={}, errCode={}, errMsg={}", |
| | | action, params, e.getErrCode(), e.getErrMsg(), e); |
| | | return null; |
| | | } catch (Exception e) { |
| | | log.error("é¿éäº NLP è°ç¨å¼å¸¸ action={}, params={}", action, params, e); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | // ============================== ä¾¿æ·æ¹æ³ ============================== |
| | | |
| | | /** |
| | | * 䏿åè¯ï¼éç¨é¢åï¼é«çº§çï¼ã |
| | | * å¯¹åº Actionï¼{@code GetWsChGeneral}ï¼ServiceCodeï¼{@code alinlp}ã |
| | | * |
| | | * @param text å¾
åè¯ææ¬ |
| | | * @param tokenizer åè¯ç²åº¦ï¼å¯ç©ºã常ç¨å¼ï¼{@code GENERAL_CHN}ï¼éç¨åºç¡ç²åº¦ï¼ |
| | | * @return åè¯ç»æå表ï¼è°ç¨å¤±è´¥è¿å空å表 |
| | | */ |
| | | public List<String> segmentChinese(String text, String tokenizer) { |
| | | if (StringUtils.isBlank(text)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | Map<String, String> params = new LinkedHashMap<>(); |
| | | params.put("ServiceCode", "alinlp"); |
| | | params.put("Text", text); |
| | | if (StringUtils.isNotBlank(tokenizer)) { |
| | | params.put("TokenizerId", tokenizer); |
| | | } |
| | | JSONObject resp = invoke("GetWsChGeneral", params); |
| | | return parseWordsFromData(resp); |
| | | } |
| | | |
| | | /** 䏿åè¯ï¼ä½¿ç¨é»è®¤éç¨ç²åº¦ {@code GENERAL_CHN}ã */ |
| | | public List<String> segmentChinese(String text) { |
| | | return segmentChinese(text, "GENERAL_CHN"); |
| | | } |
| | | |
| | | /** |
| | | * æ
æåæï¼éç¨é¢åï¼åºç¡çï¼ã |
| | | * å¯¹åº Actionï¼{@code GetSaChGeneral}ã |
| | | * |
| | | * @param text å¾
åæææ¬ |
| | | * @return å½¢å¦ {@code {"sentiment":"positive","positive_prob":0.97,...}} ç对象ï¼å¤±è´¥è¿å {@code null} |
| | | */ |
| | | public JSONObject sentimentAnalysis(String text) { |
| | | if (StringUtils.isBlank(text)) { |
| | | return null; |
| | | } |
| | | Map<String, String> params = new LinkedHashMap<>(); |
| | | params.put("ServiceCode", "alinlp"); |
| | | params.put("Text", text); |
| | | JSONObject resp = invoke("GetSaChGeneral", params); |
| | | return extractDataObject(resp); |
| | | } |
| | | |
| | | // æµè¯å
¥å£ |
| | | @Test |
| | | public void main() { |
| | | String text1 = "è¿å®¶å¥¶è¶è¶
级好åï¼ä¸æ¬¡è¿æ¥ï¼"; |
| | | String text2 = "å³éå¾å·®ï¼æå¡æåº¦ä¹ä¸å¥½ï¼ä¸æ¨è"; |
| | | String text3 = "ä»å¤©åºé¨ä¹°äºä¸ç¶ç¿æ³æ°´"; |
| | | |
| | | this.init(); |
| | | JSONObject res1 = sentimentAnalysis(text1); |
| | | JSONObject res2 = sentimentAnalysis(text2); |
| | | JSONObject res3 = sentimentAnalysis(text3); |
| | | |
| | | System.out.println("æ£é¢ææ¬ç»æï¼" + gson.toJson(res1)); |
| | | System.out.println("è´é¢ææ¬ç»æï¼" + gson.toJson(res2)); |
| | | System.out.println("䏿§ææ¬ç»æï¼" + gson.toJson(res3)); |
| | | } |
| | | |
| | | /** |
| | | * å½åå®ä½è¯å«ï¼éç¨é¢åï¼ã |
| | | * å¯¹åº Actionï¼{@code GetNerChGeneral}ã |
| | | * |
| | | * @param text å¾
è¯å«ææ¬ |
| | | * @return å®ä½åè¡¨ï¼æ¯ä¸ªå
ç´ å« wordãtagãstartIndex çåæ®µï¼ï¼å¤±è´¥è¿å空å表 |
| | | */ |
| | | public JSONArray namedEntityRecognition(String text) { |
| | | if (StringUtils.isBlank(text)) { |
| | | return new JSONArray(); |
| | | } |
| | | Map<String, String> params = new LinkedHashMap<>(); |
| | | params.put("ServiceCode", "alinlp"); |
| | | params.put("Text", text); |
| | | JSONObject resp = invoke("GetNerChGeneral", params); |
| | | JSONObject data = extractDataObject(resp); |
| | | if (data == null) { |
| | | return new JSONArray(); |
| | | } |
| | | JSONArray arr = data.getJSONArray("result"); |
| | | return arr == null ? new JSONArray() : arr; |
| | | } |
| | | |
| | | // ============================== ååºè§£æ ============================== |
| | | |
| | | /** |
| | | * è§£æé¿é NLP ç {@code Data} åæ®µï¼å符串åç JSONï¼ã |
| | | * é¡¶å±ååºå½¢å¦ï¼{@code {"Data":"{...}","RequestId":"..."}}ã |
| | | */ |
| | | private JSONObject extractDataObject(JSONObject resp) { |
| | | if (resp == null) { |
| | | return null; |
| | | } |
| | | String dataStr = resp.getString("Data"); |
| | | if (StringUtils.isBlank(dataStr)) { |
| | | log.warn("é¿éäº NLP ååºç¼ºå° Data åæ®µï¼resp={}", resp); |
| | | return null; |
| | | } |
| | | try { |
| | | return JSONObject.parseObject(dataStr); |
| | | } catch (Exception e) { |
| | | log.error("é¿éäº NLP Data åæ®µè§£æå¤±è´¥ï¼dataStr={}", dataStr, e); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä»åè¯ååºéæ½åè¯å表ãresult å½¢å¦ {@code [{"word":"ä»å¤©","tag":"t"},...]}ã |
| | | */ |
| | | private List<String> parseWordsFromData(JSONObject resp) { |
| | | JSONObject data = extractDataObject(resp); |
| | | if (data == null) { |
| | | return Collections.emptyList(); |
| | | } |
| | | JSONArray result = data.getJSONArray("result"); |
| | | if (result == null || result.isEmpty()) { |
| | | return Collections.emptyList(); |
| | | } |
| | | String[] words = new String[result.size()]; |
| | | for (int i = 0; i < result.size(); i++) { |
| | | JSONObject item = result.getJSONObject(i); |
| | | words[i] = item == null ? "" : item.getString("word"); |
| | | } |
| | | return Arrays.asList(words); |
| | | } |
| | | |
| | | @Test |
| | | public void test() { |
| | | List <String> result = segmentChinese("é¿éå·´å·´éå¢çä½¿å½æ¯è®©å¤©ä¸æ²¡æé¾åççæã"); |
| | | log.info(result.toString()); |
| | | } |
| | | |
| | | @Test |
| | | public void testP() { |
| | | JSONObject result = sentimentAnalysis("æè§å¾ä½ å¯è½æ¯å¯¹ç"); |
| | | log.info(result.toString()); |
| | | } |
| | | } |
| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.common.annotation.Excel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | @ApiModelProperty(value = "ç»ææ¶é´") |
| | | private Date endTime; |
| | | |
| | | @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "åºé¢å¼å§æ¶é´") |
| | | private Date hospitalStartTime; |
| | | |
| | | @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "åºé¢ç»ææ¶é´") |
| | | private Date hospitalEndTime; |
| | | |
| | | @ApiModelProperty(value = "æå¡ç±»å") |
| | | private List<Long> serviceType; |
| | | |
| | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ä»»å¡åç§° |
| | | * ç§å®¤åç§° |
| | | */ |
| | | @Excel(name = "ä»»å¡åç§°") |
| | | @ApiModelProperty(value = "ä»»å¡åç§°") |
| | | private String taskName; |
| | | @Excel(name = "ç§å®¤åç§°") |
| | | @ApiModelProperty(value = "ç§å®¤åç§°") |
| | | private String deptname; |
| | | |
| | | /** |
| | | * åé人 |
| | |
| | | @Excel(name = " å§å ") |
| | | @ApiModelProperty(value = "åé人") |
| | | private String sendname; |
| | | |
| | | /** |
| | | * åéç¶æ |
| | | */ |
| | | // @Excel(name = " ä»»å¡ç¶æ ") |
| | | @ApiModelProperty(value = "åéç¶æ 1 被é¢å(å¨ä»»å¡ä¸æ¯æ°å»ºï¼å¨æå¡ä¸æ¯è¢«é¢å) 2 å¾
åé 3 å·²åé 4 䏿§è¡ 5 åé失败 6 已宿 7 è¶
æ¶(人工)") |
| | | private Long sendstate; |
| | | |
| | | /** |
| | | * åéç¶æ |
| | | */ |
| | | @Excel(name = " ä»»å¡ç¶æ ") |
| | | @ApiModelProperty(value = "åéç¶æ 1 被é¢å(å¨ä»»å¡ä¸æ¯æ°å»ºï¼å¨æå¡ä¸æ¯è¢«é¢å) 2 å¾
åé 3 å·²åé 4 䏿§è¡ 5 åé失败 6 已宿 7 è¶
æ¶(人工)") |
| | | private String stName; |
| | | |
| | | /** |
| | | * 宿æ¶é´ |
| | | */ |
| | | @Excel(name = " 宿æ¶é´ ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "宿æ¶é´") |
| | | private Date finishtime; |
| | | |
| | | /** |
| | | * åºé¢æ¶é´ |
| | |
| | | @ApiModelProperty(value = "åºéè®¿æ¥æ") |
| | | private Date visitTime; |
| | | |
| | | /** |
| | | * 宿æ¶é´ |
| | | */ |
| | | @Excel(name = " 宿æ¶é´ ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "宿æ¶é´") |
| | | private Date finishtime; |
| | | |
| | | /** |
| | | * é访人å |
| | | */ |
| | | @Excel(name = "é访人å") |
| | | private String updateBy; |
| | | |
| | | /** |
| | | * å»çå§å |
| | |
| | | @ApiModelProperty(value = "å»çå§å") |
| | | private String drname; |
| | | |
| | | /** |
| | | * é访人å |
| | | */ |
| | | @Excel(name = "é访人å") |
| | | private String updateBy; |
| | | |
| | | @Excel(name = "åºé¢å¤©æ°", suffix = "天") |
| | | @ApiModelProperty(value = "åºé¢å¤©æ°") |
| | | private Integer endDay; |
| | | |
| | | /** |
| | | * åºé¢è¯æ |
| | | */ |
| | | @Excel(name = " åºé¢è¯æ ") |
| | | @ApiModelProperty(value = "åºé¢è¯æ") |
| | | private String leavediagname; |
| | | |
| | | |
| | | /** |
| | | * åéç¶æ |
| | | */ |
| | | // @Excel(name = " ä»»å¡ç¶æ ") |
| | | @ApiModelProperty(value = "åéç¶æ 1 被é¢å(å¨ä»»å¡ä¸æ¯æ°å»ºï¼å¨æå¡ä¸æ¯è¢«é¢å) 2 å¾
åé 3 å·²åé 4 䏿§è¡ 5 åé失败 6 已宿 7 è¶
æ¶(人工)") |
| | | private Long sendstate; |
| | | |
| | | /** |
| | | * åéç¶æ |
| | | */ |
| | | @Excel(name = " ä»»å¡ç¶æ ") |
| | | @ApiModelProperty(value = "åéç¶æ 1 被é¢å(å¨ä»»å¡ä¸æ¯æ°å»ºï¼å¨æå¡ä¸æ¯è¢«é¢å) 2 å¾
åé 3 å·²åé 4 䏿§è¡ 5 åé失败 6 已宿 7 è¶
æ¶(人工)") |
| | | private String stName; |
| | | |
| | | |
| | | /** |
| | | * 身份è¯å· |
| | |
| | | |
| | | |
| | | /** |
| | | * ç§å®¤åç§° |
| | | */ |
| | | @Excel(name = "ç§å®¤åç§°") |
| | | @ApiModelProperty(value = "ç§å®¤åç§°") |
| | | private String deptname; |
| | | |
| | | |
| | | /** |
| | | * åºé¢ç
åºåç§° |
| | | */ |
| | | @ApiModelProperty(value = "åºé¢ç
åºåç§°") |
| | |
| | | @Excel(name = "任塿§è¡æ¹å¼") |
| | | private String preachform; |
| | | |
| | | /** |
| | | * ä»»å¡åç§° |
| | | */ |
| | | @Excel(name = "ä»»å¡åç§°") |
| | | @ApiModelProperty(value = "ä»»å¡åç§°") |
| | | private String taskName; |
| | | |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @Excel(name = "夿³¨") |
| | | @ApiModelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | |
| | | @ApiModelProperty(value = "主é®id") |
| | | private Long subId; |
| | | |
| | | /** |
| | | * 主é®idéå |
| | | */ |
| | | @ApiModelProperty(value = "主é®idéå") |
| | | private List<Long> subIdList; |
| | | |
| | | |
| | | /** |
| | | * ç¬¬ä¸æ¹ä»»å¡ID |
| | |
| | | public void setFailSubTaskDefalutVal(Long failDay); |
| | | |
| | | public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO); |
| | | |
| | | Map<String, Object> smsSubTask(Long subid); |
| | | } |
| | |
| | | @Value("${lwl_app_key}") |
| | | private String APP_KEY; |
| | | |
| | | |
| | | @Value("${spring.profiles.active}") |
| | | private String active; |
| | | |
| | | @Override |
| | | public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) { |
| | | try { |
| | |
| | | patMedInhosp.setCampusid(dto.getCampusId()); |
| | | if (StringUtils.isNotEmpty(dto.getHealthcareRecordStatus()) && dto.getHealthcareRecordStatus().equals("FH0109.25")) |
| | | patMedInhosp.setRemark("é¢åºé¢"); |
| | | if (active.equals("nhfy") && dto.getAreaId() != null && dto.getAreaId().toString().equals("40003483") && StringUtils.isNotEmpty(patMedInhosp.getPatname())) { |
| | | //ååéä¸ç产ç§ï¼è¦æ±ä¸çæâä¹åãä¹å¥³ãä¹å©´âçéè®¿ä»»å¡ |
| | | if (patMedInhosp.getPatname().contains("ä¹å") || patMedInhosp.getPatname().contains("ä¹å¥³") || patMedInhosp.getPatname().contains("ä¹å©´")) { |
| | | patMedInhosp.setDeptcheckFlag("3"); |
| | | patMedInhosp.setWardcheckFlag("3"); |
| | | patMedInhosp.setDiagcheckFlag("3"); |
| | | patMedInhosp.setRemark(patMedInhosp.getRemark() + ";ä¸çæä¹åãä¹å¥³ãä¹å©´é®å·"); |
| | | } |
| | | } |
| | | |
| | | return patMedInhosp; |
| | | } |
| | | |
| | |
| | | */ |
| | | private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) { |
| | | // æå»ºéç keyï¼åºäº patientno æ idcardno |
| | | String lockKey = "pat_archive_lock:" + |
| | | (StringUtils.isNotEmpty(dto.getMedicalRecordNo()) ? dto.getMedicalRecordNo() : dto.getIdCardNo()); |
| | | |
| | | String lockKey = "pat_archive_lock:" + (StringUtils.isNotEmpty(dto.getMedicalRecordNo()) ? dto.getMedicalRecordNo() : dto.getIdCardNo()); |
| | | |
| | | // å°è¯è·ååå¸å¼éï¼æå¤çå¾
3 ç§ï¼éå® 10 ç§èªå¨éæ¾ |
| | | Boolean lockAcquired = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", 10, TimeUnit.SECONDS); |
| | | |
| | | |
| | | if (lockAcquired == null || !lockAcquired) { |
| | | log.warn("ãprocessPatientArchiveãè·ååå¸å¼é失败ï¼è·³è¿æ¬æ¬¡å¤çï¼å
¶ä»çº¿ç¨æ£å¨å¤çï¼ï¼patientno={}", dto.getMedicalRecordNo()); |
| | | // çå¾
䏿®µæ¶é´åéè¯æ¥è¯¢ |
| | |
| | | Thread.currentThread().interrupt(); |
| | | } |
| | | } |
| | | |
| | | |
| | | try { |
| | | return doProcessPatientArchive(dto); |
| | | } finally { |
| | |
| | | } |
| | | |
| | | PatArchive patArchive = buildPatientArchive(dto); |
| | | log.info("ãprocessPatientArchiveãæ£è
æ¡£æ¡æ¥é宿ï¼patientno={}, æ¯å¦å·²åå¨={}", |
| | | patArchive.getPatientno(), CollectionUtils.isEmpty(existingArchives) ? "å¦" : "æ¯(id=" + existingArchives.get(0).getId() + ")"); |
| | | |
| | | log.info("ãprocessPatientArchiveãæ£è
æ¡£æ¡æ¥é宿ï¼patientno={}, æ¯å¦å·²åå¨={}", patArchive.getPatientno(), CollectionUtils.isEmpty(existingArchives) ? "å¦" : "æ¯(id=" + existingArchives.get(0).getId() + ")"); |
| | | |
| | | if (CollectionUtils.isEmpty(existingArchives)) { |
| | | try { |
| | | // æç»ç¡®è®¤æ¥è¯¢ï¼é²å¾¡æ§ç¼ç¨ï¼é²æ¢Redisé失æçæç«¯æ
åµï¼ |
| | |
| | | if (StringUtils.isNotEmpty(dto.getMedicalRecordNo())) { |
| | | finalQuery.setPatientno(dto.getMedicalRecordNo()); |
| | | } |
| | | |
| | | |
| | | List<PatArchive> finalCheck = patArchiveService.selectPatArchiveList(finalQuery); |
| | | log.info("ãprocessPatientArchiveãæç»ç¡®è®¤æ¥è¯¢ï¼patientno={}, idcardno={}, ç»ææ°é={}", |
| | | dto.getMedicalRecordNo(), dto.getIdCardNo(), finalCheck.size()); |
| | | |
| | | log.info("ãprocessPatientArchiveãæç»ç¡®è®¤æ¥è¯¢ï¼patientno={}, idcardno={}, ç»ææ°é={}", dto.getMedicalRecordNo(), dto.getIdCardNo(), finalCheck.size()); |
| | | |
| | | if (CollectionUtils.isEmpty(finalCheck)) { |
| | | patArchiveService.insertPatArchive(patArchive); |
| | | log.info("ãprocessPatientArchiveãâ æ°å¢æ£è
æ¡£æ¡æåï¼patientno={}, id={}", |
| | | patArchive.getPatientno(), patArchive.getId()); |
| | | log.info("ãprocessPatientArchiveãâ æ°å¢æ£è
æ¡£æ¡æåï¼patientno={}, id={}", patArchive.getPatientno(), patArchive.getId()); |
| | | } else { |
| | | // å
¶ä»çº¿ç¨å·²ç»æå
¥ï¼ç´æ¥ä½¿ç¨å·²æè®°å½ |
| | | existingArchives = finalCheck; |
| | |
| | | log.info("ãprocessPatientArchiveãæ¡£æ¡å·²è¢«å
¶ä»çº¿ç¨å建ï¼ä½¿ç¨å·²æè®°å½ï¼id={}", patArchive.getId()); |
| | | } |
| | | } catch (org.springframework.dao.DuplicateKeyException e) { |
| | | log.warn("ãprocessPatientArchiveãæ£è
æ¡£æ¡å·²åå¨(å¹¶åæå
¥å¼å¸¸)ï¼è·³è¿ï¼patientno={}, idcardno={}", |
| | | patArchive.getPatientno(), patArchive.getIdcardno()); |
| | | log.warn("ãprocessPatientArchiveãæ£è
æ¡£æ¡å·²åå¨(å¹¶åæå
¥å¼å¸¸)ï¼è·³è¿ï¼patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno()); |
| | | // å¹¶åæå
¥åºæ¯ï¼éæ°æ¥è¯¢è·åå·²åå¨çè®°å½ |
| | | PatArchive queryRetry = new PatArchive(); |
| | | queryRetry.setPatientno(patArchive.getPatientno()); |
| | |
| | | patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag()); |
| | | patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason()); |
| | | patArchiveService.updateArchive(patArchive); |
| | | log.info("ãprocessPatientArchiveãâ æ´æ°æ£è
æ¡£æ¡ï¼patientno={}, id={}", |
| | | patArchive.getPatientno(), patArchive.getId()); |
| | | log.info("ãprocessPatientArchiveãâ æ´æ°æ£è
æ¡£æ¡ï¼patientno={}, id={}", patArchive.getPatientno(), patArchive.getId()); |
| | | } |
| | | |
| | | return patArchive; |
| | |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.common.core.service.IConfigService; |
| | | import com.ruoyi.common.utils.spring.SpringUtils; |
| | | import com.ruoyi.system.domain.SysConfig; |
| | | import com.ruoyi.system.mapper.SysConfigMapper; |
| | | import com.smartor.common.FtpService; |
| | | import com.smartor.common.MtSubmitSmUtil; |
| | | import com.smartor.config.PhoneUtils; |
| | | import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; |
| | | import com.smartor.domain.*; |
| | |
| | | |
| | | @Value("${ASRCallBackPath}") |
| | | private String ASRCallBackPath; |
| | | |
| | | @Autowired |
| | | private MtSubmitSmUtil mtSubmitSmUtil; |
| | | |
| | | @Autowired |
| | | private SysConfigMapper sysConfigMapper; |
| | | |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | |
| | | // serviceTaskVO.setPreachform(result); |
| | | } |
| | | |
| | | if(StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())){ |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())) { |
| | | //ç´æ¥éè¿PreachformDescçæListè¿å |
| | | try { |
| | | List<Map<String, Object>> mapList = objectMapper.readValue(serviceTaskVO.getPreachformDesc(), List.class); |
| | | serviceTaskVO.setPreachformList(mapList); |
| | | }catch (Exception e) { |
| | | } catch (Exception e) { |
| | | } |
| | | }else { |
| | | if(CollectionUtils.isNotEmpty(list)){ |
| | | } else { |
| | | if (CollectionUtils.isNotEmpty(list)) { |
| | | //è·å该æ£è
ææçæ§è¡ç¶æ |
| | | List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream() |
| | | .filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList()); |
| | | List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList()); |
| | | List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("sort", item.getSort()); |
| | |
| | | serviceSubtaskRes.setContinueContent(serviceSubtask.getContinueContent()); |
| | | } |
| | | // 1ï¼å¾
é访ï¼2 å¾
åéï¼ï¼2ï¼é访ä¸ï¼3 å·²åéã1 被é¢åï¼ã3ï¼æªå®æï¼5 åé失败ã7ãè¶
æ¶ï¼ã4ï¼å·²å®æï¼ 6 已宿ï¼ã5ï¼æ éé访ï¼4 䏿§è¡ï¼ |
| | | if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 2L || serviceSubtaskRes.getSendstate() == 3L || serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L) serviceSubtaskRes.setSendstateView(1L); |
| | | if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 2L || serviceSubtaskRes.getSendstate() == 3L || serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L) |
| | | serviceSubtaskRes.setSendstateView(1L); |
| | | if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(2L); |
| | | if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(3L); |
| | | serviceSubtaskResList.add(serviceSubtaskRes); |
| | |
| | | //ååéä¸çicd10codeæ¯æéå¤çï¼æä»¥ä¸è½ç¨ååéä¸çicd10code廿¥è¯¢ |
| | | log.info("----serviceTaskdiagçå¼ä¸ºï¼{}", serviceTaskdiag); |
| | | if (!StringUtils.isEmpty(serviceTaskVO.getIcd10name())) { |
| | | String[] Icd10Names = serviceTaskVO.getIcd10name().split(","); |
| | | String[] Icd10codes = serviceTaskVO.getIcd10code().split(","); |
| | | String[] Icd10Names = serviceTaskVO.getIcd10name().split("$"); |
| | | String[] Icd10codes = serviceTaskVO.getIcd10code().split("$"); |
| | | for (int i = 0; i < Icd10Names.length; i++) { |
| | | serviceTaskdiag.setIcd10code(Icd10codes[i]); |
| | | serviceTaskdiag.setIcd10name(Icd10Names[i]); |
| | |
| | | serviceSubtask.setInhospid(patTaskRelevance.getHospid()); |
| | | //æ°å»ºå®æå°±æ¯å¾
åéç¶æ |
| | | serviceSubtask.setSendstate(2L); |
| | | serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode())?patTaskRelevance.getDeptcode():serviceTaskVO.getDeptcode()); |
| | | serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName())?patTaskRelevance.getDeptName():serviceTaskVO.getDeptname()); |
| | | serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode()) ? patTaskRelevance.getDeptcode() : serviceTaskVO.getDeptcode()); |
| | | serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname()); |
| | | serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); |
| | | serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname()); |
| | | serviceSubtask.setType(serviceTaskVO.getType()); |
| | |
| | | serviceSubtask.setUpdateBy(serviceTask.getCreateBy()); |
| | | serviceSubtask.setVisitTime(DateUtils.parseDate(serviceTaskVO.getShowTimeMorn())); |
| | | //妿ç«å³æ§è¡ï¼æ¶é´å°±æ¯å½åæ¶é´ |
| | | if(serviceTaskVO.getSendType()!=null&&serviceTaskVO.getSendType()==2) serviceSubtask.setVisitTime(new Date()); |
| | | if (serviceTaskVO.getSendType() != null && serviceTaskVO.getSendType() == 2) |
| | | serviceSubtask.setVisitTime(new Date()); |
| | | if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) { |
| | | serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime()); |
| | | serviceSubtask.setVisitTime(patTaskRelevance.getVisittime()); |
| | |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) { |
| | | String[] icd10codes = serviceTaskVO.getIcd10code().split(","); |
| | | String[] icd10names = serviceTaskVO.getIcd10name().split(","); |
| | | if(!active.equals("nhfy")&&!active.equals("druid")){ |
| | | if (!active.equals("nhfy") && !active.equals("druid")) { |
| | | if (icd10codes.length != icd10names.length) { |
| | | throw new BaseException("ç¾ç
ç¼ç åç¾ç
åç§°æ°éä¸ä¸è´"); |
| | | } |
| | |
| | | } |
| | | return serviceSubtaskStatistic; |
| | | } |
| | | |
| | | /** |
| | | * 馿¬¡é访ç»è®¡ |
| | | * |
| | |
| | | return resultMap; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> smsSubTask(Long subid) { |
| | | log.info("smsSubTaskçå
¥å为ï¼{}", subid); |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | resultMap.put("code", "500"); |
| | | resultMap.put("msg", "åé失败"); |
| | | |
| | | //è·åæ£è
çåºæ¬ä¿¡æ¯ |
| | | ServiceSubtask serviceSubtask = selectServiceSubtaskById(subid); |
| | | RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); |
| | | String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); |
| | | String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); |
| | | String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key); |
| | | |
| | | //åéæ°æ®çå°è£
|
| | | ServiceOutPath serviceOutPath = new ServiceOutPath(); |
| | | serviceOutPath.setParam1(taskId); |
| | | serviceOutPath.setParam2(patid); |
| | | serviceOutPath.setParam3(serviceSubtask.getTaskName()); |
| | | serviceOutPath.setParam6(subId); |
| | | serviceOutPath.setCreateTime(new Date()); |
| | | serviceOutPath.setOrgid(serviceSubtask.getOrgid()); |
| | | iServiceOutPathService.insertServiceOutPath(serviceOutPath); |
| | | String format = String.format("%03X", serviceOutPath.getId()); |
| | | serviceOutPath.setRadix(format); |
| | | serviceOutPath.setUpdateTime(new Date()); |
| | | iServiceOutPathService.updateServiceOutPath(serviceOutPath); |
| | | |
| | | SendMagParam sendMagParam = new SendMagParam(); |
| | | sendMagParam.setType("4"); |
| | | sendMagParam.setPhone(serviceSubtask.getPhone()); |
| | | sendMagParam.setUrl(StringUtils.isNotEmpty(req_path) ? localIP + ":" + req_path + "/wt?p=" + format : localIP + "/wt?p=" + format); |
| | | |
| | | SysConfig sysConfig = new SysConfig(); |
| | | |
| | | sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template"); |
| | | |
| | | if (!Objects.isNull(sysConfig)) { |
| | | String smsContemt = sysConfig.getConfigValue(); |
| | | sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl())); |
| | | } |
| | | |
| | | if (active.equals("nhfy")) { |
| | | Map<String, Object> smsResult = mtSubmitSmUtil.submitSm(sendMagParam.getPhone(), sendMagParam.getContent()); |
| | | if (smsResult != null && smsResult.get("result") != null && smsResult.get("result").toString().equals("0")) { |
| | | resultMap.put("code", "200"); |
| | | resultMap.put("msg", "åéæå"); |
| | | serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";çä¿¡åéæå" : "çä¿¡åéæå"); |
| | | log.info("æ¯å¦åéæåï¼{}", serviceSubtask.getRemark()); |
| | | updateServiceSubtask(serviceSubtask); |
| | | } |
| | | } |
| | | return resultMap; |
| | | } |
| | | |
| | | private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) { |
| | | Boolean result = true; |
| | |
| | | #{state} |
| | | </foreach> |
| | | </if> |
| | | <if test="subIdList != null and sendstates.size() > 0"> |
| | | AND id IN |
| | | <foreach collection="subIdList" item="subId" open="(" separator="," close=")"> |
| | | #{subId} |
| | | </foreach> |
| | | </if> |
| | | <!-- taskIdsçé --> |
| | | <if test="taskIds != null and taskIds.size() > 0"> |
| | | AND taskid IN |
| | |
| | | AND visit_time >= DATE(#{startTime}) |
| | | AND visit_time < DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="hospitalStartTime != null and hospitalEndTime!=null"> |
| | | AND endtime >= DATE(#{hospitalStartTime}) |
| | | AND endtime < DATE_ADD(DATE(#{hospitalEndTime}), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> |
| | | <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> |
| | | <if test="isabnormal != null">and isabnormal = #{isabnormal}</if> |
| | |
| | | AND visit_time >= DATE(#{startTime}) |
| | | AND visit_time < DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="hospitalStartTime != null and hospitalEndTime!=null"> |
| | | AND endtime >= DATE(#{hospitalStartTime}) |
| | | AND endtime < DATE_ADD(DATE(#{hospitalEndTime}), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> |
| | | <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> |
| | | <if test="isabnormal != null">and isabnormal = #{isabnormal}</if> |