Commit 1a76459e6ca292bfc78226ea8fae2f99a8bb948a

Authored by cfl
1 parent 105ef40ee7
Exists in master and in 1 other branch dev

第二版优化内容

Showing 11 changed files with 116 additions and 52 deletions

talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java View file @ 1a76459
... ... @@ -434,15 +434,17 @@
434 434 * @return
435 435 */
436 436 @GetMapping("getChatStat")
437   - @TokenRequired
  437 + //@TokenRequired
438 438 public BaseResponse getChatStat(String groupId){
439 439 BaseResponse baseResponse =new BaseResponse();
440 440 try {
441 441 final LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper<LymsChatgroup>()
442 442 .lambda().eq(LymsChatgroup::getHxgroupid, groupId));
443   - final LymsTkrecord tkrecord = lymsTkrecordService.getOne(new QueryWrapper<LymsTkrecord>()
  443 + //应该查询这个组的最新tkrecord记录状态
  444 + /*final LymsTkrecord tkrecord = lymsTkrecordService.getOne(new QueryWrapper<LymsTkrecord>()
444 445 .lambda().eq(LymsTkrecord::getHxgroupid, groupId)
445   - .groupBy(LymsTkrecord::getHxgroupid));
  446 + .groupBy(LymsTkrecord::getHxgroupid));*/
  447 + final LymsTkrecord tkrecord = lymsTkrecordService.getLeastRecordByHxgroupId(groupId);
446 448 Map<String,Object> map= new LinkedHashMap<>();
447 449 map.put("groupStat",null==chatgroup?"":chatgroup.getStat());
448 450 map.put("tkrecordStat",null==tkrecord?"":tkrecord.getStat());
... ... @@ -578,7 +580,8 @@
578 580 tkrecord.setFid((byte) 1);
579 581 }else{
580 582 baseResponse.setErrorcode(1);
581   - throw new RuntimeException("已经没有咨询卡,请联系客服购买!");
  583 + baseResponse.setErrormsg("已经没有咨询卡,请联系客服购买!");
  584 + return baseResponse;
582 585 }
583 586 }
584 587  
... ... @@ -588,6 +591,7 @@
588 591 tkrecord.setDid(patientInfo.getDtid());
589 592 tkrecord.setDid(patientInfo.getDtid());
590 593 tkrecord.setHxgroupid(chatgroup.getHxgroupid());
  594 + tkrecord.setStat(0);
591 595 tkrecord.setCreatedtime(new Date());
592 596 final boolean save = lymsTkrecordService.save(tkrecord);
593 597 if (!save) {
594 598  
... ... @@ -596,16 +600,12 @@
596 600 throw new RuntimeException("回滚状态,执行失败,请联系管理员");
597 601 }
598 602 //修改同一群组记录的状态
599   - final List<LymsTkrecord> tkrecordList = lymsTkrecordService.list(new QueryWrapper<LymsTkrecord>()
  603 + /*final List<LymsTkrecord> tkrecordList = lymsTkrecordService.list(new QueryWrapper<LymsTkrecord>()
600 604 .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid()));
601 605 for (LymsTkrecord lymsTkrecord : tkrecordList) {
602 606 lymsTkrecord.setStat(0);
603 607 final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord);
604   - if (!saveOrUpdate) {
605   - baseResponse.setErrorcode(1);
606   - throw new RuntimeException("回滚状态,执行失败,请联系管理员");
607   - }
608   - }
  608 + }*/
609 609 baseResponse.setErrorcode(0);
610 610 baseResponse.setErrormsg("成功");
611 611 } catch (Exception e) {
talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java View file @ 1a76459
... ... @@ -90,9 +90,14 @@
90 90 .lambda().eq(LymsChatgroup::getPcid, tkrecord.getPcid()));
91 91 //之前有这个病例的问诊就不用新创建组
92 92 if(gLst.size() > 0){
93   - group=gLst.get(0);
  93 + group = gLst.get(0);
94 94 tkrecord.setHxgroupid(group.getHxgroupid());
95 95 lymsTkrecordService.save(tkrecord);
  96 + //如果对应的聊天组已关闭,重新打开聊天组
  97 + if(group.getStat() == 1){
  98 + group.setStat(0);
  99 + lymsChatgroupService.updateById(group);
  100 + }
96 101 baseResponse.setObject(group);
97 102 baseResponse.setErrormsg("成功");
98 103 return baseResponse;
... ... @@ -209,6 +214,23 @@
209 214 } catch (Exception e) {
210 215 baseResponse.setErrormsg("失败");
211 216 e.printStackTrace();
  217 + }
  218 +
  219 + return baseResponse;
  220 + }
  221 + @GetMapping("queryUnusedCardCount")
  222 + @TokenRequired
  223 + public BaseResponse queryTkCardCountBYPcid(Integer pcid){
  224 + BaseResponse baseResponse=new BaseResponse();
  225 + try {
  226 + LymsTcard card = new LymsTcard();
  227 + card.setPcid(pcid);
  228 + Integer count = lymsTcardService.queryUnusedCount(card);
  229 + baseResponse.setObject(count == null ? 0 : count);
  230 + baseResponse.setErrormsg("成功");
  231 + } catch (Exception e) {
  232 + baseResponse.setErrormsg("失败");
  233 + log.error("查询未使用就诊卡数量异常",e);
212 234 }
213 235  
214 236 return baseResponse;
talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTcardMapper.java View file @ 1a76459
... ... @@ -17,5 +17,7 @@
17 17 Map<String, Object> cardStat(@Param("pSql") String pSql,@Param("cSql") String cSql);
18 18  
19 19 List<LymsTcard> queryUnused(LymsTcard lymsTcard);
  20 +
  21 + Integer queryUnusedCount(LymsTcard lymsTcard);
20 22 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTkrecordMapper.java View file @ 1a76459
... ... @@ -2,6 +2,7 @@
2 2  
3 3 import com.lyms.talkonlineweb.domain.LymsTkrecord;
4 4 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5 +import org.apache.ibatis.annotations.Param;
5 6  
6 7 /**
7 8 * @Entity com.lyms.talkonlineweb.domain.LymsTkrecord
... ... @@ -11,5 +12,8 @@
11 12 * 批量修改未结束的聊天记录为结束
12 13 */
13 14 void batchUpdateStatEnd();
  15 +
  16 + LymsTkrecord getLeastRecordByHxgroupId(@Param("hxgroupId") String hxgroupId);
  17 +
14 18 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTcardService.java View file @ 1a76459
... ... @@ -19,5 +19,12 @@
19 19 * @return
20 20 */
21 21 List<LymsTcard> queryUnused(LymsTcard lymsTcard);
  22 +
  23 + /**
  24 + * 查询未使用的问诊卡数量
  25 + * @param lymsTcard
  26 + * @return
  27 + */
  28 + Integer queryUnusedCount(LymsTcard lymsTcard);
22 29 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTkrecordService.java View file @ 1a76459
... ... @@ -12,5 +12,7 @@
12 12 */
13 13 void batchUpdateStatEnd();
14 14  
  15 + LymsTkrecord getLeastRecordByHxgroupId(String hxgroupId);
  16 +
15 17 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTcardServiceImpl.java View file @ 1a76459
... ... @@ -7,6 +7,7 @@
7 7 import org.springframework.beans.factory.annotation.Autowired;
8 8 import org.springframework.stereotype.Service;
9 9  
  10 +import javax.annotation.Resource;
10 11 import java.util.List;
11 12 import java.util.Map;
12 13  
... ... @@ -16,7 +17,7 @@
16 17 @Service
17 18 public class LymsTcardServiceImpl extends ServiceImpl<LymsTcardMapper, LymsTcard>
18 19 implements LymsTcardService{
19   - @Autowired
  20 + @Resource
20 21 private LymsTcardMapper lymsTcardMapper;
21 22  
22 23 @Override
... ... @@ -27,6 +28,11 @@
27 28 @Override
28 29 public List<LymsTcard> queryUnused(LymsTcard lymsTcard) {
29 30 return lymsTcardMapper.queryUnused(lymsTcard);
  31 + }
  32 +
  33 + @Override
  34 + public Integer queryUnusedCount(LymsTcard lymsTcard) {
  35 + return lymsTcardMapper.queryUnusedCount(lymsTcard);
30 36 }
31 37 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTkrecordServiceImpl.java View file @ 1a76459
... ... @@ -6,6 +6,8 @@
6 6 import com.lyms.talkonlineweb.mapper.LymsTkrecordMapper;
7 7 import org.springframework.stereotype.Service;
8 8  
  9 +import javax.annotation.Resource;
  10 +
9 11 /**
10 12 *
11 13 */
12 14  
... ... @@ -13,9 +15,17 @@
13 15 public class LymsTkrecordServiceImpl extends ServiceImpl<LymsTkrecordMapper, LymsTkrecord>
14 16 implements LymsTkrecordService{
15 17  
  18 + @Resource
  19 + LymsTkrecordMapper lymsTkrecordMapper;
  20 +
16 21 @Override
17 22 public void batchUpdateStatEnd() {
18 23  
  24 + }
  25 +
  26 + @Override
  27 + public LymsTkrecord getLeastRecordByHxgroupId(String hxgroupId) {
  28 + return lymsTkrecordMapper.getLeastRecordByHxgroupId(hxgroupId);
19 29 }
20 30 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java View file @ 1a76459
... ... @@ -82,8 +82,10 @@
82 82 if(!on_off){
83 83 return;
84 84 }
  85 + log.info("自动回访功能定时任务,开始....");
85 86 //用户下的病例信息。每个环信群组代表一个病例,一个病例下有多个疾病种类。
86 87 List<Map<String,Object>> PcInfoList=lymsPatientService.getPcInfoList();
  88 + log.info("自动回访功能定时任务,病例数size = {}",PcInfoList.size());
87 89 for (Map<String, Object> map : PcInfoList) {
88 90  
89 91 try {
... ... @@ -96,6 +98,7 @@
96 98  
97 99 //计算(自动回复周期上传病例后- 1:第二天2:第五天3:第十天4:第二十天5:第三十天)
98 100 int day = DateUtil.daysBetween(DateUtil.parseYMD(map.get("createdtime").toString()),new Date());
  101 + log.info("自动回访功能定时任务,pcid={},day={}",map.get("pcid"),day);
99 102 switch (day) {
100 103 case 1:
101 104 getEverydayInfo(map,patient,doctor,0,1);
102 105  
103 106  
... ... @@ -109,15 +112,16 @@
109 112 case 19:
110 113 getEverydayInfo(map,patient,doctor,0,4);
111 114 break;
112   - case 20:
  115 + case 29:
113 116 getEverydayInfo(map,patient,doctor,1,5);
114 117 break;
115 118 }
116 119 } catch (Exception e) {
117   - e.printStackTrace();
  120 + log.error(e);
118 121 }
119 122  
120 123 }
  124 + log.info("自动回访功能定时任务,end.....");
121 125 }
122 126  
123 127 /**
... ... @@ -151,6 +155,7 @@
151 155 }else {
152 156 doctor2=doctor;
153 157 }
  158 + log.info("自动回访功能定时任务,pcid={},doctor={}",map.get("pcid"),doctor2);
154 159 //环信群组
155 160 LymsChatgroup chatgroup=null;
156 161 //病例下的疾病
... ... @@ -167,6 +172,7 @@
167 172 chatgroup = lymsChatgroupService.getOne(new QueryWrapper<LymsChatgroup>()
168 173 .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid")));
169 174 if(null==chatgroup){
  175 + log.info("自动回访功能定时任务,pcid={},开始创建聊天组...",map.get("pcid"));
170 176 //创建聊天群组
171 177 List<String> adminDlogins=new ArrayList<>();
172 178 adminDlogins.add(patient.getIdno());
173 179  
174 180  
175 181  
... ... @@ -174,46 +180,20 @@
174 180 groupnames.add(patient.getPname());
175 181 //患者注册环信
176 182 if (StringUtil.isEmpty(patient.getHxid())) {
177   - JSONObject json = hxService.addUser(patient.getIdno(), Constant.COMMON_PASSWD, patient.getPname());
178   - JSONArray rArr = json.getJSONArray("entities");
179   - if (rArr.size() > 0) {
180   - patient.setHxid(rArr.getJSONObject(0).getString("uuid"));
181   - final boolean b = lymsPatientService.updateById(patient);
182   - if (!b) {
183   - throw new Exception("回滚状态,执行失败,请联系管理员");
184   - }
185   - }else {
186   - throw new Exception("回滚状态,执行失败,请联系管理员");
187   - }
  183 + lymsPatientService.addPatientHxId(patient);
188 184 }
189 185 //科室值班医生注册环信
190 186 for (LymsDoctor lymsDoctor : doctorAminList) {
191 187 if(StringUtil.isEmpty(lymsDoctor.getHxid())) {
192   - JSONObject json = hxService.addUser(lymsDoctor.getDlogin(), Constant.COMMON_PASSWD, lymsDoctor.getDname());
193   - JSONArray rArr = json.getJSONArray("entities");
194   - if (rArr.size() > 0) {
195   - lymsDoctor.setHxid(rArr.getJSONObject(0).getString("uuid"));
196   - final boolean b = lymsDoctorService.updateById(lymsDoctor);
197   - if (!b) {
198   - throw new Exception("回滚状态,执行失败,请联系管理员");
199   - }
200   - }
  188 + lymsDoctorService.addDoctorHxId(lymsDoctor);
201 189 }
202 190 adminDlogins.add(lymsDoctor.getDlogin());
203 191 groupnames.add(lymsDoctor.getDname());
204 192 }
205   - if ( ! adminDlogins.contains(doctor.getDlogin())) {
  193 + if (!adminDlogins.contains(doctor.getDlogin())) {
206 194 //医生注册环信
207 195 if (StringUtil.isEmpty(doctor.getHxid())) {
208   - JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname());
209   - JSONArray rArr = json.getJSONArray("entities");
210   - if (rArr.size() > 0) {
211   - doctor.setHxid(rArr.getJSONObject(0).getString("uuid"));
212   - final boolean b = lymsDoctorService.updateById(doctor);
213   - if (!b) {
214   - throw new Exception("回滚状态,执行失败,请联系管理员");
215   - }
216   - }
  196 + lymsDoctorService.addDoctorHxId(doctor);
217 197 }
218 198 adminDlogins.add(doctor.getDlogin());
219 199 groupnames.add(doctor.getDname());
220 200  
... ... @@ -236,8 +216,10 @@
236 216 }
237 217 chatgroup=group;
238 218 }
  219 + log.info("自动回访功能定时任务,pcid={},chatgroup={}",map.get("pcid"),chatgroup);
239 220 //推送回访消息和保存发送记录
240 221 JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), doctor2.getDlogin());
  222 + log.info("自动回访功能定时任务,pcid={},推送回访消息返回值={}",map.get("pcid"),jsonObject);
241 223 if (null!=jsonObject) {
242 224 //保存发送消息记录
243 225 LymsMessage message=new LymsMessage();
244 226  
... ... @@ -249,10 +231,10 @@
249 231 message.setType(1);
250 232 final boolean save = lymsMessageService.save(message);
251 233 if (! save) {
252   - throw new Exception("回滚状态,执行失败,请联系管理员");
  234 + throw new Exception("自动回访功能定时任务,执行失败,请联系管理员");
253 235 }
254 236 }else {
255   - throw new Exception("回滚状态,执行失败,请联系管理员");
  237 + throw new Exception("自动回访功能定时任务,执行失败,请联系管理员");
256 238 }
257 239 //同时推送公众号消息
258 240 Map<String,Object> mapTemplate=new HashMap<>();
... ... @@ -277,7 +259,7 @@
277 259 lymsPushVisitRecord.setRemark("推送短消息-> " + VisitEnum.getName(chatInfo.getType())+" - "+patient.getPname()+" ;回访医生:"+doctor2.getDname()+";疾病名称:"+ lymsIllness.getIname() + "; [ "+(lymsPushVisitRecord.getState()==1?"成功":"失败")+"]; code:" + code);
278 260 lymsPushVisitRecordService.save(lymsPushVisitRecord);
279 261 }else {
280   - throw new Exception("回滚操作,没有疾病话术。");
  262 + throw new Exception("自动回访功能定时任务,执行失败,没有疾病话术。");
281 263 }
282 264 }
283 265 //增加回访记录,修改环信群组状态,修改问诊记录状态
284 266  
... ... @@ -285,9 +267,11 @@
285 267 returnVisitRecord.setDlogin(doctor2.getDlogin());
286 268 returnVisitRecord.setDpid(doctor2.getDpid());
287 269 returnVisitRecord.setIdno(patient.getIdno());
  270 + //0 自动回访 1 医生回访
288 271 returnVisitRecord.setType(0);
289 272 returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid());
290 273 returnVisitRecord.setPcid(chatgroup.getPcid());
  274 + returnVisitRecord.setCreatedtime(new Date());
291 275 final boolean save = lymsReturnVisitRecordService.save(returnVisitRecord);
292 276 if (!save) {
293 277 throw new Exception("回滚状态,执行失败,请联系管理员");
... ... @@ -299,7 +283,7 @@
299 283 throw new Exception("回滚状态,执行失败,请联系管理员");
300 284 }
301 285 //修改同一群组记录的状态
302   - final List<LymsTkrecord> tkrecordList = lymsTkrecordService.list(new QueryWrapper<LymsTkrecord>()
  286 + /*final List<LymsTkrecord> tkrecordList = lymsTkrecordService.list(new QueryWrapper<LymsTkrecord>()
303 287 .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid()));
304 288 for (LymsTkrecord lymsTkrecord : tkrecordList) {
305 289 lymsTkrecord.setStat(0);
306 290  
... ... @@ -307,10 +291,9 @@
307 291 if (!saveOrUpdate) {
308 292 throw new Exception("回滚状态,执行失败,请联系管理员");
309 293 }
310   - }
  294 + }*/
311 295 } catch (Exception e) {
312   - e.printStackTrace();
313   - throw new Exception("回滚状态,执行失败,请联系管理员");
  296 + log.error(e);
314 297 }
315 298 }
316 299  
talkonlineweb/src/main/resources/mapper/LymsTcardMapper.xml View file @ 1a76459
... ... @@ -42,5 +42,24 @@
42 42 card.fid desc,card.createdtime ASC
43 43  
44 44 </select>
  45 +
  46 + <select id="queryUnusedCount" parameterType="com.lyms.talkonlineweb.domain.LymsTcard" resultType="java.lang.Integer">
  47 +
  48 + select
  49 + count(1)
  50 + from lyms_tcard card
  51 + where 1 = 1
  52 + <if test="pid != null">
  53 + and card.pid = #{pid}
  54 + </if>
  55 + <if test="pcid != null">
  56 + and card.pcid = #{pcid}
  57 + </if>
  58 + <if test="fid != null">
  59 + and card.fid = #{fid}
  60 + </if>
  61 + and not EXISTS ( SELECT r.cid FROM lyms_tkrecord r where r.cid = card.id )
  62 +
  63 + </select>
45 64 </mapper>
talkonlineweb/src/main/resources/mapper/LymsTkrecordMapper.xml View file @ 1a76459
... ... @@ -12,6 +12,7 @@
12 12 <result property="cid" column="cid" jdbcType="INTEGER"/>
13 13 <result property="fid" column="fid" jdbcType="TINYINT"/>
14 14 <result property="stat" column="stat" jdbcType="INTEGER"/>
  15 + <result property="hxgroupid" column="hxgroupid" jdbcType="VARCHAR"/>
15 16 <result property="createdby" column="createdby" jdbcType="INTEGER"/>
16 17 <result property="createdtime" column="createdtime" jdbcType="TIMESTAMP"/>
17 18 <result property="updatedby" column="updatedby" jdbcType="INTEGER"/>
... ... @@ -21,7 +22,7 @@
21 22 <sql id="Base_Column_List">
22 23 id,pid,pcid,
23 24 did,cid,fid,
24   - stat,createdby,createdtime,
  25 + stat,hxgroupid,createdby,createdtime,
25 26 updatedby,updatedtime
26 27 </sql>
27 28  
... ... @@ -30,5 +31,13 @@
30 31 set stat = 1
31 32 where stat = 0
32 33 </update>
  34 +
  35 + <select id="getLeastRecordByHxgroupId" parameterType="java.lang.String" resultMap="BaseResultMap">
  36 + select
  37 + <include refid="Base_Column_List"></include>
  38 + from lyms_tkrecord where hxgroupid =#{hxgroupId}
  39 + order by createdtime desc
  40 + limit 1
  41 + </select>
33 42 </mapper>