开发超期未审核提前提醒功能(差插第三方库表)

master
zengwh 5 years ago
parent 4493a824b1
commit cb2a1f389a

@ -1,8 +1,8 @@
package com.emr.controller;
import com.emr.dao.EmrOvertimeSetMapper;
import com.alibaba.fastjson.JSON;
import com.emr.entity.ArchiveRemindDeptUser;
import com.emr.entity.EmrOvertimeSet;
import com.emr.entity.Emr_Dictionary;
import com.emr.service.ipml.EmrOvertimeSetService;
import com.emr.util.ExceptionPrintUtil;
import com.emr.util.Msg;
@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@ -87,4 +88,29 @@ public class OverTimeSetController {
return null;
}
}
/**
*
* @return
*/
@RequestMapping(value="updateRemindCancleSet",method = RequestMethod.POST)
@ResponseBody
public Msg updateRemindCancleSet(String deptIds) throws Exception{
overtimeSetService.updateRemindCancleSet(deptIds);
return Msg.success();
}
/**
*
* @return
*/
@RequestMapping(value="updateRemindDeptUserSet",method = RequestMethod.POST)
@ResponseBody
public Msg updateRemindDeptUserSet(String jsonStr) throws Exception{
//json字符串转换成list集合
List<ArchiveRemindDeptUser> list = JSON.parseArray(jsonStr, ArchiveRemindDeptUser.class);
//批量添加
overtimeSetService.updateRemindDeptUserSet(list);
return Msg.success();
}
}

@ -0,0 +1,19 @@
package com.emr.dao;
import com.emr.entity.ArchiveRemindDeptUserInfo;
public interface ArchiveRemindDeptUserInfoMapper extends CommomMapper{
int deleteByPrimaryKey(Integer id);
int insert(ArchiveRemindDeptUserInfo record);
int insertSelective(ArchiveRemindDeptUserInfo record);
ArchiveRemindDeptUserInfo selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(ArchiveRemindDeptUserInfo record);
int updateByPrimaryKey(ArchiveRemindDeptUserInfo record);
int updateSendSuccess();
}

@ -4,7 +4,7 @@ import com.emr.entity.ArchiveRemindDeptUser;
import java.util.List;
public interface ArchiveRemindDeptUserMapper {
public interface ArchiveRemindDeptUserMapper extends CommomMapper{
int deleteByPrimaryKey(Integer id);
int insert(ArchiveRemindDeptUser record);
@ -18,4 +18,6 @@ public interface ArchiveRemindDeptUserMapper {
int updateByPrimaryKey(ArchiveRemindDeptUser record);
List<ArchiveRemindDeptUser> selectAll();
void deleteRemindDeptUser();
}

@ -1,10 +1,11 @@
package com.emr.dao;
import com.emr.entity.ArchiveRemindcancleDept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ArchiveRemindcancleDeptMapper {
public interface ArchiveRemindcancleDeptMapper{
int deleteByPrimaryKey(Integer id);
int insert(ArchiveRemindcancleDept record);
@ -18,4 +19,6 @@ public interface ArchiveRemindcancleDeptMapper {
int updateByPrimaryKey(ArchiveRemindcancleDept record);
List<ArchiveRemindcancleDept> selectAll();
void updateRemindCancleSet(@Param("deptIds") String deptIds);
}

@ -0,0 +1,23 @@
package com.emr.dao;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2020/10/29 13:22
* @UpdateUser:
* @UpdateDate: 2020/10/29 13:22
* @UpdateRemark:
* @Version: 1.0
*/
public interface CommomMapper {
int selectColByTableName(@Param("tableName")String tableName);
void insertBatch(@Param("list") List<Object> list);
}

@ -0,0 +1,194 @@
package com.emr.entity;
import java.io.Serializable;
import java.util.Date;
public class ArchiveRemindDeptUserInfo implements Serializable {
private Integer id;
private String userName;
private String userTel;
private String name;
private Integer roleId;
private String deptCode;
private Date createTime;
private Byte sendSuccess;
private String sendContext;
private String roleName;
private String deptName;
private String userWechat;
private Integer int1;
private String str1;
private Integer int2;
private String str2;
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName == null ? null : userName.trim();
}
public String getUserTel() {
return userTel;
}
public void setUserTel(String userTel) {
this.userTel = userTel == null ? null : userTel.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getDeptCode() {
return deptCode;
}
public void setDeptCode(String deptCode) {
this.deptCode = deptCode == null ? null : deptCode.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Byte getSendSuccess() {
return sendSuccess;
}
public void setSendSuccess(Byte sendSuccess) {
this.sendSuccess = sendSuccess;
}
public String getSendContext() {
return sendContext;
}
public void setSendContext(String sendContext) {
this.sendContext = sendContext == null ? null : sendContext.trim();
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName == null ? null : roleName.trim();
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName == null ? null : deptName.trim();
}
public String getUserWechat() {
return userWechat;
}
public void setUserWechat(String userWechat) {
this.userWechat = userWechat == null ? null : userWechat.trim();
}
public Integer getInt1() {
return int1;
}
public void setInt1(Integer int1) {
this.int1 = int1;
}
public String getStr1() {
return str1;
}
public void setStr1(String str1) {
this.str1 = str1 == null ? null : str1.trim();
}
public Integer getInt2() {
return int2;
}
public void setInt2(Integer int2) {
this.int2 = int2;
}
public String getStr2() {
return str2;
}
public void setStr2(String str2) {
this.str2 = str2 == null ? null : str2.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", userName=").append(userName);
sb.append(", userTel=").append(userTel);
sb.append(", name=").append(name);
sb.append(", roleId=").append(roleId);
sb.append(", deptCode=").append(deptCode);
sb.append(", createTime=").append(createTime);
sb.append(", sendSuccess=").append(sendSuccess);
sb.append(", sendContext=").append(sendContext);
sb.append(", roleName=").append(roleName);
sb.append(", deptName=").append(deptName);
sb.append(", userWechat=").append(userWechat);
sb.append(", int1=").append(int1);
sb.append(", str1=").append(str1);
sb.append(", int2=").append(int2);
sb.append(", str2=").append(str2);
sb.append("]");
return sb.toString();
}
}

@ -1,22 +1,27 @@
package com.emr.quart;
import com.emr.dao.ArchiveRemindDeptUserInfoMapper;
import com.emr.dao.ArchiveRemindDeptUserMapper;
import com.emr.dao.ArchiveRemindcancleDeptMapper;
import com.emr.entity.ArchiveRemindDeptUser;
import com.emr.entity.ArchiveRemindcancleDept;
import com.emr.entity.Archive_Master_Vo;
import com.emr.service.ipml.RecordService;
import com.emr.dao.RecordMapper;
import com.emr.entity.*;
import com.emr.service.ipml.CommomService;
import com.emr.service.ipml.EmrOvertimeSetService;
import com.emr.service.ipml.StatisticsService;
import com.emr.util.ExceptionPrintUtil;
import com.emr.vo.RecordSearch;
import com.emr.vo.SubmitRecord;
import com.emr.vo.User;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.lang.reflect.Field;
import java.util.*;
/**
* @ProjectName:
@ -32,39 +37,306 @@ import java.util.List;
*/
@Component
public class Task1 {
private static Logger log = Logger.getLogger("myMsg");
@Value("${overDateSet}")
private String overDateSet;
@Autowired
private RecordService recordService;
private RecordMapper recordMapper;
@Autowired
private ArchiveRemindcancleDeptMapper remindcancleDeptMapper;
@Autowired
private ArchiveRemindDeptUserMapper remindDeptUserMapper;
@Autowired
private StatisticsService statisticsService;
@Autowired
private EmrOvertimeSetService overtimeSetService;
@Autowired
private CommomService commomService;
@Autowired
private ArchiveRemindDeptUserInfoMapper remindDeptUserInfoMapper;
@Scheduled(cron="#{@getCronValue}")
public void task1(){
Date date = new Date();
try {
List<User> userList = statisticsService.getUserList("admin");
long start = System.currentTimeMillis();
RecordSearch recordSearch = new RecordSearch();
//设置查询超期标识
recordSearch.setFlag(2);
//设置起始时间
recordSearch.setStartDate(overDateSet);
//设置提前提醒天数
EmrOvertimeSet emrOvertimeSet = overtimeSetService.selectByPrimaryKey(1);
recordSearch.setSurplus(emrOvertimeSet.getSurplusDays());
//查询超期记录
//List<Archive_Master_Vo> submitRecords = recordService.selectRecordGroupDeptAndRole(recordSearch);
/*if(!CollectionUtils.isEmpty(submitRecords)){
List<SubmitRecord> list = recordMapper.selectUnCountGroupDept(recordSearch);
if(!CollectionUtils.isEmpty(list)){
//定义添加记录集合
List<ArchiveRemindDeptUserInfo> remindList = new ArrayList<>();
//获取用户集合
List<User> userListTemp = statisticsService.getUserList("admin");
//查询科室取消提醒集合
List<ArchiveRemindcancleDept> cancleDeptList = remindcancleDeptMapper.selectAll();
//查询科室取消单独开启的用户
List<ArchiveRemindDeptUser> deptUsers = remindDeptUserMapper.selectAll();
//获取用户集合
List<User> userList = statisticsService.getUserList();
for(Archive_Master_Vo vo : submitRecords){
//通知医生
//通知医生质控员
for(SubmitRecord vo : list){
//获取科室编号
String deptCode = vo.getDeptName();
if(StringUtils.isNotBlank(deptCode)) {
//定义需要通知的集合
List<User> userList = new ArrayList<>();
//根据科室取消提醒集合判断是否需要提醒
boolean remindFlag = judgeRemindFlag(deptCode, cancleDeptList);
if(!remindFlag){
//通知取消通知的该科室下需要通知的用户
userList = selectUserListByDeptUsers(userListTemp,deptUsers,deptCode);
}else{
//通知该科室所有用户
userList = userListTemp;
}
if(!CollectionUtils.isEmpty(userList)) {
//通知医生
remindList.addAll(remindDoctor(vo, userListTemp,recordSearch,date));
//通知除了医生其他审核角色
selectRemindOtherRoleInfo(date, remindList, vo, userList);
}
}
}
log.info(remindList);
//批量添加进提醒记录表
if(!CollectionUtils.isEmpty(remindList)){
commomService.insertBatch("archive_remind_dept_user_info",remindList,remindDeptUserInfoMapper);
}
try {
//添加第三方库表
int i = 1/0;
//修改记录表当天记录send_success字段为1
remindDeptUserInfoMapper.updateSendSuccess();
}catch (Exception e){
log.info("通知超期提前提醒业务总共"+list.size()+"个科室发送第三方库表失败");
e.printStackTrace();
ExceptionPrintUtil.printException(e);
}
}*/
}
long end = System.currentTimeMillis();
log.info("通知超期提前提醒业务总共"+list.size()+"个科室总耗时:"+(end-start)/1000.0+"s");
}catch (Exception e){
e.printStackTrace();
}
}
/**
*
* @param date
* @param remindList list
* @param vo
* @param userList
* @throws Exception
*/
private void selectRemindOtherRoleInfo(Date date, List<ArchiveRemindDeptUserInfo> remindList, SubmitRecord vo, List<User> userList) throws Exception {
//通知医生质控员
remindList.addAll(remindDoctorCheck(vo, userList, 5, "unDoctorCheckCount",date));
//通知科主任
remindList.addAll(remindDoctorCheck(vo, userList, 6, "unDirectorCheckCount",date));
//通知护士
remindList.addAll(remindDoctorCheck(vo, userList, 2, "unNurseSubmitCount",date));
//通知护士质控员
remindList.addAll(remindDoctorCheck(vo, userList, 8, "unNurseCheckCount",date));
//通知护士长
remindList.addAll(remindDoctorCheck(vo, userList, 7, "unHeadNurseCount",date));
//通知病案室
remindList.addAll(remindDoctorCheck(vo, userList, 3, "unRecordRoomCount",date));
}
/**
*
* @param userListTemp
* @param deptUsers
* @return
*/
private List<User> selectUserListByDeptUsers(List<User> userListTemp, List<ArchiveRemindDeptUser> deptUsers,String deptName) {
List<User> userList = new ArrayList<>();
if(!CollectionUtils.isEmpty(deptUsers) && !CollectionUtils.isEmpty(userListTemp)){
for(User user : userListTemp){
if(StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptName)) {
for (ArchiveRemindDeptUser deptUser : deptUsers) {
if (user.getUserName().equals(deptUser.getUserName())) {
userList.add(user);
break;
}
}
}
}
}
return userList;
}
/**
*
* @param vo
* @param userList
* @return
*/
private List<ArchiveRemindDeptUserInfo> remindDoctorCheck(SubmitRecord vo, List<User> userList,Integer roleId,String fieldName,Date date) throws Exception{
List<ArchiveRemindDeptUserInfo> list = new ArrayList<>();
//通过放射获取属性值,获取待审核份数
Field field = vo.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
Integer unCheckCount = (Integer) field.get(vo);
if(unCheckCount > 0){
//获取该角色的用户集合
List<User> roleUserList = selectUserByDeptCodeAndRoleId(vo.getDeptName(), roleId, userList);
if(!CollectionUtils.isEmpty(roleUserList)){
for(User user : roleUserList) {
//根据用户名获取用户
User currentUser = selectUserByUserName(user.getUserName(),userList);
//添加记录
ArchiveRemindDeptUserInfo obj = setArchiveRemindDeptUserInfo(vo, currentUser, unCheckCount,date);
list.add(obj);
}
}
}
return list;
}
/**
*
* @param vo
* @param userList
* @return
*/
private List<ArchiveRemindDeptUserInfo> remindDoctor(SubmitRecord vo, List<User> userList,RecordSearch recordSearch,Date date) {
List<ArchiveRemindDeptUserInfo> list = new ArrayList<>();
if(vo.getUnDoctorSubmitCount() > 0){
String deptCode = vo.getDeptName();
recordSearch.setDeptName(deptCode);
//查询超期记录
List<Archive_Master_Vo> masterVoList = recordMapper.selectRecordGroupDeptAndRole(recordSearch);
if(!CollectionUtils.isEmpty(masterVoList)){
Map<String,Integer> map = new HashMap<>();
for(Archive_Master_Vo masterVo : masterVoList){
//主管医生分组
map.put(masterVo.getDoctorInCharge(),masterVo.getOverTimeCounts());
}
for(String key : map.keySet()){
//根据科室和姓名获取用户信息
User user = selectUserByUserName(key,deptCode, userList);
//设置插入信息
int count = map.get(key);
ArchiveRemindDeptUserInfo obj = setArchiveRemindDeptUserInfo(vo, user, count,date);
list.add(obj);
}
}
}
return list;
}
/**
*
* @param vo
* @param currentUser
* @param count
* @return
*/
private ArchiveRemindDeptUserInfo setArchiveRemindDeptUserInfo(SubmitRecord vo,User currentUser,int count,Date date) {
//填充信息
ArchiveRemindDeptUserInfo obj = new ArchiveRemindDeptUserInfo();
//设置科室编号
obj.setDeptCode(vo.getDeptName());
//设置科室名称
obj.setDeptName(vo.getDeptNameCn());
//设置创建时间
obj.setCreateTime(date);
//设置初始化标识
obj.setSendSuccess(new Byte("0"));
//设置用户名
obj.setUserName(currentUser.getUserName());
String name = "";
if(null != currentUser){
name = currentUser.getName();
obj.setRoleId(currentUser.getRoleId());
obj.setRoleName(currentUser.getRoleName());
obj.setUserTel(currentUser.getUserTel());
obj.setUserWechat(currentUser.getUserWechat());
}else{
name = "无效用户";
obj.setRoleId(-1);
obj.setRoleName("无效角色");
}
//设置姓名
obj.setName(name);
//设置发送内容 xx您有x份病历无纸化归档系统待审核
String sendContext = name + ",您有"+count+"份病历无纸化归档系统待审核";
obj.setSendContext(sendContext);
return obj;
}
/**
*
* @param userName
* @param userList
* @return
*/
private User selectUserByUserName(String userName, List<User> userList) {
if(!CollectionUtils.isEmpty(userList)){
for(User user : userList){
if(StringUtils.isNotBlank(user.getUserTel()) && user.getUserName().equals(userName)){
return user;
}
}
}
return new User();
}
/**
*
* @param name
* @param deptCode
* @param userList
* @return
*/
private User selectUserByUserName(String name, String deptCode,List<User> userList) {
if(!CollectionUtils.isEmpty(userList)){
for(User user : userList){
if(StringUtils.isNotBlank(user.getUserTel()) && user.getName().equals(name) && StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptCode)){
return user;
}
}
}
return new User();
}
/**
* id
* @param deptCode
* @param roleId
* @param userList
* @return
*/
private List<User> selectUserByDeptCodeAndRoleId(String deptCode,Integer roleId,List<User> userList) {
List<User> list = new ArrayList<>();
if(!CollectionUtils.isEmpty(userList)){
for(User user : userList){
if(StringUtils.isNotBlank(user.getUserTel()) && user.getRoleId().equals(roleId) && StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptCode)){
list.add(user);
}
}
}
return list;
}
/**
*
* @param deptCode
* @param cancleDeptList
* @return
*/
private boolean judgeRemindFlag(String deptCode, List<ArchiveRemindcancleDept> cancleDeptList) {
//遍历科室取消提醒集合,判断是否存在该科室
for(ArchiveRemindcancleDept obj : cancleDeptList){
if(StringUtils.isNotBlank(obj.getDeptCode()) && obj.getDeptCode().equals(deptCode)){
return false;
}
}
return true;
}
}

@ -0,0 +1,52 @@
package com.emr.service.ipml;
import com.emr.dao.CommomMapper;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2020/10/29 13:21
* @UpdateUser:
* @UpdateDate: 2020/10/29 13:21
* @UpdateRemark:
* @Version: 1.0
*/
@Service
@Transactional
public class CommomService {
/**
*
* @param tableName
* @param list
* @param commomMapper mapper
*/
public void insertBatch(String tableName, List list,CommomMapper commomMapper){
if(!CollectionUtils.isEmpty(list)){
//根据list数量插入
///查询表列数
int colCount = commomMapper.selectColByTableName(tableName);
int simpleInsertCount = 2100/colCount;
List<Object> insertList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
//处理批量添加sql太长问题设定个数为180
if(i != 0 && insertList.size()%simpleInsertCount == 0){
insertList.clear();
}
insertList.add(list.get(i));
//是180的倍数或最后一个
if(insertList.size()%simpleInsertCount == 0 || i == list.size() - 1){
//批量添加
commomMapper.insertBatch(insertList);
}
}
}
}
}

@ -1,5 +1,6 @@
package com.emr.service.ipml;
import com.alibaba.fastjson.JSON;
import com.emr.dao.ArchiveRemindDeptUserMapper;
import com.emr.dao.ArchiveRemindcancleDeptMapper;
import com.emr.dao.EmrOvertimeSetMapper;
@ -16,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.*;
/**
* @ProjectName:
@ -45,6 +44,8 @@ public class EmrOvertimeSetService {
private ArchiveRemindcancleDeptMapper remindcancleDeptMapper;
@Autowired
private ArchiveRemindDeptUserMapper remindDeptUserMapper;
@Autowired
private CommomService commomService;
/**
*
* @return
@ -111,15 +112,26 @@ public class EmrOvertimeSetService {
//查询取消科室提醒单独提醒的用户
List<ArchiveRemindDeptUser> remindDeptUsers = remindDeptUserMapper.selectAll();
//定义角色id集合
Integer[] roleList = {1,2,3,5,6,7,8};
String roleListJson = "[" +
"{'roleId':1,roleName:'医生'}," +
"{'roleId':5,roleName:'医生质控员'}," +
"{'roleId':6,roleName:'科主任'}," +
"{'roleId':2,roleName:'护士'}," +
"{'roleId':3,roleName:'护士质控员'}," +
"{'roleId':7,roleName:'护士长'}," +
"{'roleId':8,roleName:'病案室人员'}" +
"]";
List<User> roleList = JSON.parseArray(roleListJson, User.class);
//设定用户id从20000开始
int id = 1;
int twoParentId = 0;
int threeParentId = 0;
//组织用户
for(Emr_Dictionary dictionary : dictionaries) {
//获取编码
//获取科室编码
String code = dictionary.getCode();
if(StringUtils.isNotBlank(code)) {
//第一层,科室层
CommomTree tree1 = new CommomTree();
tree1.setId(id);
twoParentId = id;
@ -129,41 +141,67 @@ public class EmrOvertimeSetService {
tree1.setParentId(0);
//过滤字典类别科室 科室code=null
//定义存在用户的科室
boolean flag = false;
boolean checkedFlag = false;
for (User user : userList) {
//获取用户所属科室
String deptCode = user.getDeptCode();
//判断是否是审核角色
boolean contains = Arrays.asList(roleList).contains(user.getRoleId());
if (StringUtils.isNotBlank(deptCode) && deptCode.equals(code) && contains) {
CommomTree tree2 = new CommomTree();
tree2.setId(id);
id++;
tree2.setParentId(twoParentId);
String name = user.getName();
if(StringUtils.isNotBlank(name)){
tree2.setName(user.getUserName() + "-" + name);
}else{
tree2.setName(user.getUserName());
}
//判断是否用户选中
if(!CollectionUtils.isEmpty(remindDeptUsers)){
for(ArchiveRemindDeptUser remindDeptUser : remindDeptUsers){
if(remindDeptUser.getUserName().equals(user.getUserName())){
tree2.setChecked("true");
checkedFlag = true;
break;
boolean deptFlag = false;
boolean deptCheckedFlag = false;
for(User role : roleList){
//第二层,审核角色层
CommomTree tree2 = new CommomTree();
tree2.setId(id);
threeParentId = id;
id++;
tree2.setParentId(twoParentId);
tree2.setName(role.getRoleName());
//定义存在用户的角色
boolean roleFlag = false;
boolean roleCheckedFlag = false;
for (User user : userList) {
//第三层,用户层
//获取用户所属科室
String deptCode = user.getDeptCode();
if (StringUtils.isNotBlank(deptCode) && deptCode.equals(code) && role.getRoleId().equals(user.getRoleId())) {
CommomTree tree3 = new CommomTree();
tree3.setId(id);
id++;
tree3.setParentId(threeParentId);
String name = user.getName();
if(StringUtils.isNotBlank(name)){
tree3.setName(user.getUserName() + "-" + name);
}else{
tree3.setName(user.getUserName());
}
//设置工号
tree3.setRealName(user.getUserName());
//设置科室编号
tree3.setCode(deptCode);
//设置角色id
tree3.setRealParentId(user.getRoleId());
//判断是否用户选中
if(!CollectionUtils.isEmpty(remindDeptUsers)){
for(ArchiveRemindDeptUser remindDeptUser : remindDeptUsers){
if(remindDeptUser.getUserName().equals(user.getUserName())){
tree3.setChecked("true");
deptCheckedFlag = true;
roleCheckedFlag = true;
break;
}
}
}
list.add(tree3);
deptFlag = true;
roleFlag = true;
}
}
//角色不存在用户则移除。不添加
if(roleFlag){
if(roleCheckedFlag) {
tree2.setChecked("true");
}
list.add(tree2);
flag = true;
}
}
//科室不存在用户则移除。不添加
if(flag){
if(checkedFlag) {
if(deptFlag){
if(deptCheckedFlag) {
tree1.setChecked("true");
}
list.add(tree1);
@ -174,4 +212,23 @@ public class EmrOvertimeSetService {
}
return list;
}
/**
*
* @param deptIds
*/
public void updateRemindCancleSet(String deptIds) {
remindcancleDeptMapper.updateRemindCancleSet(deptIds);
}
/**
*
* @param list
*/
public void updateRemindDeptUserSet(List<ArchiveRemindDeptUser> list){
//先清空表
remindDeptUserMapper.deleteRemindDeptUser();
//批量插入
commomService.insertBatch("archive_remind_dept_user",list,remindDeptUserMapper);
}
}

@ -27,4 +27,8 @@ public class CommomTree {
private String checked;
private String code;
private String realName;
private Integer realParentId;
}

@ -51,4 +51,9 @@ public class RecordSearch {
* 123
*/
private Integer dateFlag;
/**
*
*/
private Integer surplus;
}

@ -27,6 +27,26 @@ public class User {
private String deptCode;
private String userTel;
private String userWechat;
public String getUserWechat() {
return userWechat;
}
public void setUserWechat(String userWechat) {
this.userWechat = userWechat;
}
public String getUserTel() {
return userTel;
}
public void setUserTel(String userTel) {
this.userTel = userTel;
}
public String getDeptCode() {
return deptCode;
}

@ -52,4 +52,7 @@ allAddortIds = 00000000
nurseAssortIds = 'C70E8C427A3648B79BE80798C08F4D12','85DAE73A87D047D28C222E878C78C670'
#\u7528\u4E8E\u8D85\u671F\u901A\u77E5\uFF0C\u53EA\u901A\u77E5\u8BE5\u65E5\u671F\u4EE5\u540E\u7684\u51FA\u9662\u8D85\u671F\u7684\u8BB0\u5F55
overDateSet = 2020-10-26
overDateSet = 2020-07-26
#\u5404\u5BA1\u6838\u89D2\u8272\u7528\u6237id 1\uFF1A\u533B\u751F\uFF1B2\uFF1A\u62A4\u58EB\uFF1B3\uFF1A\u75C5\u6848\u5BA4\u4EBA\u5458\uFF1B5\uFF1A\u533B\u751F\u8D28\u63A7\u5458\uFF1B6\uFF1A\u79D1\u4E3B\u4EFB\uFF1B7\uFF1A\u62A4\u58EB\u957F\uFF1B8\uFF1A\u62A4\u58EB\u8D28\u63A7\u5458

@ -0,0 +1,250 @@
<?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" >
<mapper namespace="com.emr.dao.ArchiveRemindDeptUserInfoMapper" >
<resultMap id="BaseResultMap" type="com.emr.entity.ArchiveRemindDeptUserInfo" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="NVARCHAR" />
<result column="user_tel" property="userTel" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="NVARCHAR" />
<result column="role_id" property="roleId" jdbcType="INTEGER" />
<result column="dept_code" property="deptCode" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="send_success" property="sendSuccess" jdbcType="TINYINT" />
<result column="send_context" property="sendContext" jdbcType="NVARCHAR" />
<result column="role_name" property="roleName" jdbcType="NVARCHAR" />
<result column="dept_name" property="deptName" jdbcType="NVARCHAR" />
<result column="user_wechat" property="userWechat" jdbcType="NVARCHAR" />
<result column="int1" property="int1" jdbcType="INTEGER" />
<result column="str1" property="str1" jdbcType="NVARCHAR" />
<result column="int2" property="int2" jdbcType="INTEGER" />
<result column="str2" property="str2" jdbcType="NVARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, user_name, user_tel, name, role_id, dept_code, create_time, send_success, send_context,
role_name, dept_name, user_wechat, int1, str1, int2, str2
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from archive_remind_dept_user_info
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from archive_remind_dept_user_info
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.emr.entity.ArchiveRemindDeptUserInfo" >
insert into archive_remind_dept_user_info (id, user_name, user_tel,
name, role_id, dept_code,
create_time, send_success, send_context,
role_name, dept_name, user_wechat,
int1, str1, int2,
str2)
values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=NVARCHAR}, #{userTel,jdbcType=VARCHAR},
#{name,jdbcType=NVARCHAR}, #{roleId,jdbcType=INTEGER}, #{deptCode,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP}, #{sendSuccess,jdbcType=TINYINT}, #{sendContext,jdbcType=NVARCHAR},
#{roleName,jdbcType=NVARCHAR}, #{deptName,jdbcType=NVARCHAR}, #{userWechat,jdbcType=NVARCHAR},
#{int1,jdbcType=INTEGER}, #{str1,jdbcType=NVARCHAR}, #{int2,jdbcType=INTEGER},
#{str2,jdbcType=NVARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.emr.entity.ArchiveRemindDeptUserInfo" >
insert into archive_remind_dept_user_info
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="userName != null" >
user_name,
</if>
<if test="userTel != null" >
user_tel,
</if>
<if test="name != null" >
name,
</if>
<if test="roleId != null" >
role_id,
</if>
<if test="deptCode != null" >
dept_code,
</if>
<if test="createTime != null" >
create_time,
</if>
<if test="sendSuccess != null" >
send_success,
</if>
<if test="sendContext != null" >
send_context,
</if>
<if test="roleName != null" >
role_name,
</if>
<if test="deptName != null" >
dept_name,
</if>
<if test="userWechat != null" >
user_wechat,
</if>
<if test="int1 != null" >
int1,
</if>
<if test="str1 != null" >
str1,
</if>
<if test="int2 != null" >
int2,
</if>
<if test="str2 != null" >
str2,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="userName != null" >
#{userName,jdbcType=NVARCHAR},
</if>
<if test="userTel != null" >
#{userTel,jdbcType=VARCHAR},
</if>
<if test="name != null" >
#{name,jdbcType=NVARCHAR},
</if>
<if test="roleId != null" >
#{roleId,jdbcType=INTEGER},
</if>
<if test="deptCode != null" >
#{deptCode,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="sendSuccess != null" >
#{sendSuccess,jdbcType=TINYINT},
</if>
<if test="sendContext != null" >
#{sendContext,jdbcType=NVARCHAR},
</if>
<if test="roleName != null" >
#{roleName,jdbcType=NVARCHAR},
</if>
<if test="deptName != null" >
#{deptName,jdbcType=NVARCHAR},
</if>
<if test="userWechat != null" >
#{userWechat,jdbcType=NVARCHAR},
</if>
<if test="int1 != null" >
#{int1,jdbcType=INTEGER},
</if>
<if test="str1 != null" >
#{str1,jdbcType=NVARCHAR},
</if>
<if test="int2 != null" >
#{int2,jdbcType=INTEGER},
</if>
<if test="str2 != null" >
#{str2,jdbcType=NVARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.emr.entity.ArchiveRemindDeptUserInfo" >
update archive_remind_dept_user_info
<set >
<if test="userName != null" >
user_name = #{userName,jdbcType=NVARCHAR},
</if>
<if test="userTel != null" >
user_tel = #{userTel,jdbcType=VARCHAR},
</if>
<if test="name != null" >
name = #{name,jdbcType=NVARCHAR},
</if>
<if test="roleId != null" >
role_id = #{roleId,jdbcType=INTEGER},
</if>
<if test="deptCode != null" >
dept_code = #{deptCode,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="sendSuccess != null" >
send_success = #{sendSuccess,jdbcType=TINYINT},
</if>
<if test="sendContext != null" >
send_context = #{sendContext,jdbcType=NVARCHAR},
</if>
<if test="roleName != null" >
role_name = #{roleName,jdbcType=NVARCHAR},
</if>
<if test="deptName != null" >
dept_name = #{deptName,jdbcType=NVARCHAR},
</if>
<if test="userWechat != null" >
user_wechat = #{userWechat,jdbcType=NVARCHAR},
</if>
<if test="int1 != null" >
int1 = #{int1,jdbcType=INTEGER},
</if>
<if test="str1 != null" >
str1 = #{str1,jdbcType=NVARCHAR},
</if>
<if test="int2 != null" >
int2 = #{int2,jdbcType=INTEGER},
</if>
<if test="str2 != null" >
str2 = #{str2,jdbcType=NVARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.emr.entity.ArchiveRemindDeptUserInfo" >
update archive_remind_dept_user_info
set user_name = #{userName,jdbcType=NVARCHAR},
user_tel = #{userTel,jdbcType=VARCHAR},
name = #{name,jdbcType=NVARCHAR},
role_id = #{roleId,jdbcType=INTEGER},
dept_code = #{deptCode,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
send_success = #{sendSuccess,jdbcType=TINYINT},
send_context = #{sendContext,jdbcType=NVARCHAR},
role_name = #{roleName,jdbcType=NVARCHAR},
dept_name = #{deptName,jdbcType=NVARCHAR},
user_wechat = #{userWechat,jdbcType=NVARCHAR},
int1 = #{int1,jdbcType=INTEGER},
str1 = #{str1,jdbcType=NVARCHAR},
int2 = #{int2,jdbcType=INTEGER},
str2 = #{str2,jdbcType=NVARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<insert id="insertBatch">
insert into archive_remind_dept_user_info(user_name, user_tel,
name, role_id, dept_code,
create_time, send_success, send_context,
role_name, dept_name, user_wechat,
int1, str1, int2,
str2)
values
<foreach collection="list" item="item" separator=",">
(#{item.userName,jdbcType=NVARCHAR}, #{item.userTel,jdbcType=VARCHAR},
#{item.name,jdbcType=NVARCHAR}, #{item.roleId,jdbcType=INTEGER}, #{item.deptCode,jdbcType=VARCHAR},
#{item.createTime,jdbcType=TIMESTAMP}, #{item.sendSuccess,jdbcType=TINYINT}, #{item.sendContext,jdbcType=NVARCHAR},
#{item.roleName,jdbcType=NVARCHAR}, #{item.deptName,jdbcType=NVARCHAR}, #{item.userWechat,jdbcType=NVARCHAR},
#{item.int1,jdbcType=INTEGER}, #{item.str1,jdbcType=NVARCHAR}, #{item.int2,jdbcType=INTEGER},
#{item.str2,jdbcType=NVARCHAR})
</foreach>
</insert>
<!--将当天记录更新为成功-->
<update id="updateSendSuccess">
UPDATE archive_remind_dept_user_info
SET send_success = 1
WHERE
datediff(
DAY,
create_time,
getdate ())=0
</update>
</mapper>

@ -128,4 +128,15 @@
<select id="selectAll" resultMap="BaseResultMap">
select * from archive_remind_dept_user
</select>
<!--清空remindDeptUser表-->
<delete id="deleteRemindDeptUser">
truncate table archive_remind_dept_user
</delete>
<!--保存取消提醒的科室单独提醒用户集合-->
<insert id="insertBatch">
insert into archive_remind_dept_user(dept_code,user_name,role_id) values
<foreach collection="list" item="item" separator=",">
(#{item.deptCode},#{item.userName},#{item.roleId})
</foreach>
</insert>
</mapper>

@ -104,4 +104,14 @@
<select id="selectAll" resultMap="BaseResultMap">
select * from archive_remindcancle_dept
</select>
<!--保存取消提醒的科室集合-->
<insert id="updateRemindCancleSet">
truncate table archive_remindcancle_dept;
<if test="deptIds != null and deptIds != ''">
insert into archive_remindcancle_dept(dept_code) values
<foreach collection="deptIds.split(',')" item="item" separator=",">
(#{item})
</foreach>
</if>
</insert>
</mapper>

@ -0,0 +1,10 @@
<?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" >
<mapper namespace="com.emr.dao.CommomMapper">
<!--查询表字段数-->
<select id="selectColByTableName" resultType="java.lang.Integer">
select count(*)
from syscolumns s
where s.id = object_id(#{tableName});
</select>
</mapper>

@ -13,6 +13,10 @@
<if test="doctorInCharge != null and doctorInCharge != ''">
AND archive_master.DOCTOR_IN_CHARGE in (${doctorInCharge})
</if>
<!--提醒通知过滤归档-->
<if test="surplus != null">
AND archive_master.ArchiveState != '128'
</if>
</if>
<if test="deptName != null and deptName != ''">
AND archive_master.dept_name in (${deptName})
@ -190,7 +194,12 @@
emr_overtime_set
WHERE
id = 1
) > 0
) >
<!--用于提醒,提前提醒-->
<choose>
<when test="surplus != null">#{surplus}</when>
<otherwise>0</otherwise>
</choose>
</sql>
<!--根据审核角色id和分组科室查询该科室完成份数-->
<select id="selectCountByRoleAndDeptName" resultMap="BaseResultMap" parameterType="com.emr.vo.RecordSearch">
@ -413,6 +422,7 @@
archive_master.id,
archive_master.ArchiveState,
archive_master.inp_no,
archive_master.dept_name,
archive_master.name,
archive_master.DOCTOR_IN_CHARGE,
archive_master.visit_id,

@ -56,7 +56,7 @@
</div>
</div>
<div class="form-group">
<label for="surplusDays" class="col-sm-5 control-label">倒数几工作日提醒:</label>
<label for="surplusDays" class="col-sm-5 control-label">超期提前提醒天数:</label>
<div class="col-sm-6">
<input type="number" min="1" oninput="if(value.length>2)value=value.slice(0,2)" class="form-control input-sm" id="surplusDays" name="surplusDays" value="${overtimeSet.surplusDays}" placeholder="倒数几工作日提醒">
</div>
@ -91,7 +91,7 @@
<div class="col-md-4">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title"><span style="color: red">不接收提醒科室</span>设置</h3>
<h3 class="box-title"><span style="color: red">取消提醒科室</span>设置</h3>
</div>
<div class="box-body">
<div class="form-inline">
@ -119,7 +119,7 @@
<div class="col-md-4">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">关闭科室提醒<span style="color: red">单独提醒科室用户</span>设置</h3>
<h3 class="box-title">取消科室提醒<span style="color: red">个别用户开启提醒</span>设置</h3>
</div>
<div class="box-body">
<div class="form-inline">
@ -171,6 +171,7 @@
initTree(path+"/overtime/selectRemindDeptTree",'科室列表',1);
initTree(path+"/overtime/selectRemindDeptUserTree",'用户列表',2);
});
/**
* 保存基础信息设置
*/
@ -190,6 +191,69 @@
})
});
/**
* 保存取消提醒科室设置
*/
$("#remindCancleDeptBtn").click(function(){
//获取取消提醒科室设置树选中
var deptIds = '';
var zTree = $.fn.zTree.getZTreeObj("ztree1");
var nodes=zTree.getCheckedNodes(true);
for (var i = 0; i < nodes.length; i++) {
if(nodes[i].level == 1){
if(deptIds != ''){
deptIds += ",";
}
deptIds += nodes[i].code;
}
}
$.ajax({
type:'post',
url:path+'/overtime/updateRemindCancleSet',
data:{deptIds:deptIds},
dateType:'json',
success:function(data){
if(data.code == 100){
toastr.success("保存成功");
}else{
toastr.error(data.msg);
}
}
})
});
/**
* 保存取消提醒科室单独提醒个别用户设置
*/
$("#remindDeptUserBtn").click(function(){
//获取取消提醒科室单独提醒个别用户设置树选中
var saveNodes = [];
var zTree = $.fn.zTree.getZTreeObj("ztree2");
var nodes=zTree.getCheckedNodes(true);
for (var i = 0; i < nodes.length; i++) {
if(nodes[i].level == 3){
var obj = new Map();
obj['deptCode'] = nodes[i].code;
obj['userName'] = nodes[i].realName;
obj['roleId'] = nodes[i].realParentId;
saveNodes.push(obj);
}
}
$.ajax({
type:'post',
url:path+'/overtime/updateRemindDeptUserSet',
data:{jsonStr:JSON.stringify(saveNodes)},
dateType:'json',
success:function(data){
if(data.code == 100){
toastr.success("保存成功");
}else{
toastr.error(data.msg);
}
}
})
});
var zNodes = [];
var opts = {
lines: 13, // The number of lines to draw |小长条的数量
@ -219,18 +283,22 @@
type: "POST",
async:false,
success: function (result) {
zNodes.push({id: 0, parentId: 0, name: treeName, open: true});
//定义根节点是否选中
var rootChecked = true;
if (result != null) {
for (var i = 0; i < result.length; i++) {
var obj = {};
obj.id = result[i].id;
obj.parentId = result[i].parentId;
obj.code = result[i].code;
obj.name = result[i].name.trim();
obj.checked = result[i].checked;
zNodes.push(obj);
for(var ele in result){
zNodes.push(result[ele]);
if(result[ele].checked == null){
rootChecked = false;
}
}
}
//判断是否根节点选中
if(rootChecked && result != null){
zNodes.push({id: 0, parentId: 0, name: treeName, open: true,checked:"true"});
}else{
zNodes.push({id: 0, parentId: 0, name: treeName, open: true});
}
$.fn.zTree.init($("#ztree"+num), setting, zNodes);
spinner.spin();
}, error: function () {

Loading…
Cancel
Save