Merge remote-tracking branch 'origin/jihan_0920_护理服务、商城、积分兑换、在线问诊功能分支' into jihan_0920_护理服务、商城、积分兑换、在线问诊功能分支

This commit is contained in:
HaoWang 2023-11-08 09:35:27 +08:00
commit f5580afe0a
43 changed files with 770 additions and 50 deletions

View File

@ -83,7 +83,7 @@ public class ResidentRescindApplyServiceImpl implements IResidentRescindApplySer
MessagePushBody messagePushBody = new MessagePushBody();
messagePushBody.setMessageCategory("4");
messagePushBody.setBusType("10");
messagePushBody.setOpenid(patientInfo.getOpenid());
messagePushBody.setOpenid(patientInfo.getBindOpenid());
messagePushBody.setReceiveName(patientInfo.getPatientName());
messagePushBody.setText1(body.getOrgName());
messagePushBody.setText2("解约申请");

View File

@ -91,12 +91,15 @@ public class ResidentServiceApplyServiceImpl implements IResidentServiceAppletSe
if(StringUtils.isBlank(entity.getServiceWay())) {
entity.setServiceWay("2");
}
if(StringUtils.isBlank(entity.getResidentName())) {
entity.setResidentName(patientInfo.getPatientName());
}
residentServiceApplyMapper.insert(entity);
MessagePushBody messagePushBody = new MessagePushBody();
messagePushBody.setMessageCategory("4");
messagePushBody.setBusType("10");
messagePushBody.setOpenid(patientInfo.getOpenid());
messagePushBody.setOpenid(patientInfo.getBindOpenid());
messagePushBody.setReceiveName(patientInfo.getPatientName());
messagePushBody.setText1(body.getOrgName());
messagePushBody.setText2(body.getFormName().length() >= 20? body.getFormName().substring(0,17) + "...": body.getFormName());
@ -329,6 +332,7 @@ public class ResidentServiceApplyServiceImpl implements IResidentServiceAppletSe
sp.setProjectName(project.getProjectName());
sp.setPrice(project.getPrice());
sp.setDiscountPrice(project.getDiscountPrice());
sp.setPackageName(project.getHospitalName());
projectList.add(sp);
}
}

View File

@ -100,7 +100,7 @@ public class ResidentSignApplyServiceImpl implements IResidentSignAppletService
MessagePushBody messagePushBody = new MessagePushBody();
messagePushBody.setMessageCategory("4");
messagePushBody.setBusType("10");
messagePushBody.setOpenid(patientInfo.getOpenid());
messagePushBody.setOpenid(patientInfo.getBindOpenid());
messagePushBody.setReceiveName(body.getResidentName());
messagePushBody.setText1(body.getOrgName());
messagePushBody.setText2("签约申请");

View File

@ -5,7 +5,7 @@ import com.xinelu.applet.dto.nursepersonapplogin.OrderFallbackDTO;
import com.xinelu.applet.service.nurseappletpersonworkorder.NurseAppletPersonWorkOrderService;
import com.xinelu.common.annotation.MobileRequestAuthorization;
import com.xinelu.common.core.domain.AjaxResult;
import net.sf.jsqlparser.statement.update.Update;
import com.xinelu.common.custominterface.Update;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

View File

@ -51,7 +51,7 @@ public class NurseAppLoginController extends BaseController {
}
/**
* 查询护理人列表信息会员小程序和App共用
* 查询护理人列表信息-护理服务查询个人信息使用会员小程序和App共用
*
* @param patientId 用户id
* @return 护理人列表集合

View File

@ -2,8 +2,8 @@ package com.xinelu.applet.dto.appletlogin;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -3,8 +3,8 @@ package com.xinelu.applet.dto.appletlogin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

View File

@ -1,8 +1,8 @@
package com.xinelu.applet.dto.nursepersonapplogin;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

View File

@ -2,8 +2,8 @@ package com.xinelu.applet.dto.nursingstationgoods;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -207,7 +207,6 @@ public class NurseAppLoginServiceImpl implements NurseAppLoginService {
}
// 更新签约编号
setSignInfo(patientDisease);
//查询所有商品订单
List<GoodsOrder> goodsOrders = nurseAppLoginMapper.selectGoodsOrderListByPatient(patientId);
if (CollectionUtils.isEmpty(goodsOrders)) {
@ -217,11 +216,9 @@ public class NurseAppLoginServiceImpl implements NurseAppLoginService {
long waitPayCount = goodsOrders.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getOrderStatus())).filter(item -> GooodsOrderStatusEnum.WAIT_PAY.getInfo().equals(item.getOrderStatus())).count();
long waitReceivedGoodsCount = goodsOrders.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getOrderStatus())).filter(item -> GooodsOrderStatusEnum.WAIT_RECEIVED_GOODS.getInfo().equals(item.getOrderStatus())).count();
long receivedGoodsCount = goodsOrders.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getOrderStatus())).filter(item -> GooodsOrderStatusEnum.RECEIVED_GOODS.getInfo().equals(item.getOrderStatus())).count();
long evaluatedCount = goodsOrders.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getOrderStatus())).filter(item -> GooodsOrderStatusEnum.EVALUATED.getInfo().equals(item.getOrderStatus())).count();
patientDisease.setWaitPayCount(waitPayCount);
patientDisease.setWaitReceivedGoodsCount(waitReceivedGoodsCount);
patientDisease.setReceivedGoodsCount(receivedGoodsCount);
patientDisease.setEvaluatedCount(evaluatedCount);
return AjaxResult.success(patientDisease);
}

View File

@ -3,9 +3,9 @@ package com.xinelu.applet.vo.diseaseinfo;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;

View File

@ -2,9 +2,9 @@ package com.xinelu.applet.vo.nearbynursingstation;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -2,8 +2,8 @@ package com.xinelu.applet.vo.nurseapplogin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -2,8 +2,8 @@ package com.xinelu.applet.vo.nursepersonapplogin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -0,0 +1,107 @@
package com.xinelu.manage.controller.appfileinfo;
import com.xinelu.common.annotation.Log;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.appfileinfo.AppFileInfo;
import com.xinelu.manage.dto.appfileInfo.AppFileInfoDTO;
import com.xinelu.manage.service.appfileinfo.IAppFileInfoService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 护理员App文件管理Controller
*
* @author xinyilu
* @date 2022-11-15
*/
@RestController
@RequestMapping("/system/appFileInfo")
public class AppFileInfoController extends BaseController {
@Resource
private IAppFileInfoService appFileInfoService;
/**
* 查询护理员App文件管理列表
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:list')")
@GetMapping("/list")
public TableDataInfo list(AppFileInfo appFileInfo) {
startPage();
List<AppFileInfo> list = appFileInfoService.selectAppFileInfoList(appFileInfo);
return getDataTable(list);
}
/**
* 导出护理员App文件管理列表
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:export')")
@Log(title = "护理员App文件管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, AppFileInfo appFileInfo) {
List<AppFileInfo> list = appFileInfoService.selectAppFileInfoList(appFileInfo);
ExcelUtil<AppFileInfo> util = new ExcelUtil<>(AppFileInfo.class);
util.exportExcel(response, list, "护理员App文件管理数据");
}
/**
* 获取护理员App文件管理详细信息
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(appFileInfoService.selectAppFileInfoById(id));
}
/**
* 新增护理员App文件管理
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:add')")
@Log(title = "护理员App文件管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody AppFileInfo appFileInfo) {
return toAjax(appFileInfoService.insertAppFileInfo(appFileInfo));
}
/**
* 修改护理员App文件管理
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:edit')")
@Log(title = "护理员App文件管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody AppFileInfo appFileInfo) {
return toAjax(appFileInfoService.updateAppFileInfo(appFileInfo));
}
/**
* 删除护理员App文件管理
*/
@PreAuthorize("@ss.hasPermi('system:appFileInfo:remove')")
@Log(title = "护理员App文件管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(appFileInfoService.deleteAppFileInfoByIds(ids));
}
/**
* 护理员App上传apk
*
* @param appFileInfoDTO 文件及版本
* @return 结果
* @throws Exception 异常
*/
@PostMapping("uploadAppFileUrl")
public AjaxResult uploadAppFileUrl(@Validated(Insert.class) AppFileInfoDTO appFileInfoDTO) throws Exception {
return appFileInfoService.uploadAppFileInfo(appFileInfoDTO);
}
}

View File

@ -205,4 +205,18 @@ public class NurseStationController extends BaseController {
public AjaxResult nurseStationByUserId(NurseStationSysUserVO sysUser) {
return nurseStationService.getNurseStationByUserId(sysUser);
}
/**
* 护理站生成二维码
*
* @param nurseStationId 护理站id
* @return 邀请码图片地址
*/
@PostMapping("/nurseStationCode")
public AjaxResult nurseStationCode(Long nurseStationId) {
if (Objects.isNull(nurseStationId)) {
return AjaxResult.error("护理站id不能为空");
}
return nurseStationService.nurseStationCode(nurseStationId);
}
}

View File

@ -5,13 +5,13 @@ import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.nursestationdepartment.NurseStationDepartment;
import com.xinelu.manage.dto.nursestationdepartment.NurseStationDepartmentDTO;
import com.xinelu.manage.service.nursestationdepartment.INurseStationDepartmentService;
import com.xinelu.manage.vo.nursestationdepartment.NurseStationDepartmentVO;
import net.sf.jsqlparser.statement.update.Update;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

View File

@ -7,6 +7,7 @@ import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.poi.ExcelUtil;
@ -15,7 +16,6 @@ import com.xinelu.manage.dto.nursestationitem.NurseStationItemDTO;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO;
import com.xinelu.manage.service.nursestationitem.INurseStationItemService;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemVO;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;

View File

@ -5,11 +5,11 @@ import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.sysarea.SysArea;
import com.xinelu.manage.service.sysarea.ISysAreaService;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;

View File

@ -0,0 +1,78 @@
package com.xinelu.manage.domain.appfileinfo;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.io.Serializable;
/**
* 护理员App文件管理对象 app_file_info
*
* @author xinyilu
* @date 2022-11-15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "护理员App文件管理对象", description = "app_file_info")
public class AppFileInfo extends BaseDomain implements Serializable {
private static final long serialVersionUID = 1816389724122943745L;
/**
* 主键id
*/
private Long id;
/**
* 文件名称
*/
@ApiModelProperty(value = "文件名称")
@Excel(name = "文件名称")
private String fileName;
/**
* 文件对外下载路径
*/
@ApiModelProperty(value = "文件对外下载路径")
@Excel(name = "文件对外下载路径")
private String fileUrl;
/**
* 服务器本地路径
*/
@ApiModelProperty(value = "服务器本地路径")
@Excel(name = "服务器本地路径")
private String fileLocalPath;
/**
* 版本号
*/
@ApiModelProperty(value = "版本号")
@Excel(name = "版本号")
private String fileVersion;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("fileName", getFileName())
.append("fileUrl", getFileUrl())
.append("fileVersion", getFileVersion())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -3,10 +3,10 @@ package com.xinelu.manage.domain.diseaseinfo;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

View File

@ -3,13 +3,13 @@ package com.xinelu.manage.domain.nursestationconsumable;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

View File

@ -3,13 +3,13 @@ package com.xinelu.manage.domain.nursestationdepartment;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

View File

@ -4,13 +4,13 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

View File

@ -264,6 +264,13 @@ public class PatientInfo extends BaseDomain implements Serializable {
*/
private String isChecked;
/**
* 同一微信绑定标识openid用于区分同一账号绑定的居民
*/
@ApiModelProperty(value = "同一微信绑定标识openid用于区分同一账号绑定的居民")
@Excel(name = "同一微信绑定标识openid用于区分同一账号绑定的居民")
private String bindOpenid;
@Override
public String toString() {
@ -296,6 +303,7 @@ public class PatientInfo extends BaseDomain implements Serializable {
.append("cityCode", getCityCode())
.append("bindingTime", getBindingTime())
.append("isChecked", getIsChecked())
.append("bindOpenid", getBindOpenid())
.toString();
}
}

View File

@ -68,7 +68,6 @@ public class PoserInfo extends BaseDomain implements Serializable {
*/
@ApiModelProperty(value = "海报简介")
@Excel(name = "海报简介")
@NotBlank(message = "海报简介不能为空", groups = {Insert.class, Update.class})
private String posterIntroduce;
/**

View File

@ -3,13 +3,13 @@ package com.xinelu.manage.domain.receiveAddressInfo;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;

View File

@ -0,0 +1,30 @@
package com.xinelu.manage.dto.appfileInfo;
import com.xinelu.common.custominterface.Insert;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Description 上传护理员App文件
* @Author zh
* @Date 2022-11-15
*/
@Data
public class AppFileInfoDTO implements Serializable {
private static final long serialVersionUID = 4349642127285334486L;
/**
* 版本号
*/
@NotBlank(message = "版本号不能为空", groups = {Insert.class})
private String version;
/**
* 文件
*/
@NotNull(message = "请选择所要上传的Apk文件", groups = {Insert.class})
private MultipartFile file;
}

View File

@ -2,10 +2,12 @@ package com.xinelu.manage.dto.chatrecord;
import com.xinelu.common.core.domain.BaseEntity;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@ -16,14 +18,15 @@ import java.util.Date;
* @author xinelu
* @date 2023-09-25
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ChatRecordDTO extends BaseEntity implements Serializable {
private static final long serialVersionUID = -3911806583514536587L;
@ApiModelProperty("消息类别 1通知公告2健康推送3在线咨询 4消息通知")
private String messageCategory;
@ApiModelProperty("消息类别 1通知公告2健康推送3在线咨询 4消息通知")
private String messageCategory;
/**
* 聊天记录业务主键(问诊表id)
@ -84,10 +87,10 @@ public class ChatRecordDTO extends BaseEntity implements Serializable {
@Length(max = 400, message = "消息内容不能超过18位", groups = {Insert.class, Update.class})
private String content;
/**
* 消息内容业务主键用于点击跳转
*/
private String contentId;
/**
* 消息内容业务主键用于点击跳转
*/
private String contentId;
/**
* 标题

View File

@ -3,16 +3,18 @@ package com.xinelu.manage.dto.consultationInfo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.core.domain.BaseEntity;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalTime;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
/**
* 在线问诊-问诊信息图文和视频问诊基本信息对象 consultation_info
@ -20,6 +22,7 @@ import org.hibernate.validator.constraints.Length;
* @author xinelu
* @date 2023-09-25
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel("在线问诊-问诊信息(图文和视频问诊基本信息)对象")
@Data
public class ConsultationInfoDTO extends BaseEntity implements Serializable {
@ -33,7 +36,7 @@ public class ConsultationInfoDTO extends BaseEntity implements Serializable {
/**
* 患者id
*/
@ApiModelProperty("患者id")
@ApiModelProperty("患者id")
@NotNull(message = "患者信息不能为空", groups = {Insert.class})
private Long patientId;

View File

@ -0,0 +1,70 @@
package com.xinelu.manage.mapper.appfileinfo;
import com.xinelu.manage.domain.appfileinfo.AppFileInfo;
import java.util.List;
/**
* 护理员App文件管理Mapper接口
*
* @author xinyilu
* @date 2022-11-15
*/
public interface AppFileInfoMapper {
/**
* 查询护理员App文件管理
*
* @param id 护理员App文件管理主键
* @return 护理员App文件管理
*/
AppFileInfo selectAppFileInfoById(Long id);
/**
* 查询护理员App文件管理列表
*
* @param appFileInfo 护理员App文件管理
* @return 护理员App文件管理集合
*/
List<AppFileInfo> selectAppFileInfoList(AppFileInfo appFileInfo);
/**
* 新增护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
int insertAppFileInfo(AppFileInfo appFileInfo);
/**
* 修改护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
int updateAppFileInfo(AppFileInfo appFileInfo);
/**
* 删除护理员App文件管理
*
* @param id 护理员App文件管理主键
* @return 结果
*/
int deleteAppFileInfoById(Long id);
/**
* 批量删除护理员App文件管理
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteAppFileInfoByIds(Long[] ids);
/**
* 查询泉医到家App文件信息表最新的一条数据
*
* @return com.xinyilu.base.domain.appfileinfo.AppFileInfo
**/
AppFileInfo getAppFileInfoByOneId();
}

View File

@ -0,0 +1,66 @@
package com.xinelu.manage.service.appfileinfo;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.appfileinfo.AppFileInfo;
import com.xinelu.manage.dto.appfileInfo.AppFileInfoDTO;
import java.util.List;
/**
* 护理员App文件管理Service接口
*
* @author xinyilu
* @date 2022-11-15
*/
public interface IAppFileInfoService {
/**
* 查询护理员App文件管理
*
* @param id 护理员App文件管理主键
* @return 护理员App文件管理
*/
AppFileInfo selectAppFileInfoById(Long id);
/**
* 查询护理员App文件管理列表
*
* @param appFileInfo 护理员App文件管理
* @return 护理员App文件管理集合
*/
List<AppFileInfo> selectAppFileInfoList(AppFileInfo appFileInfo);
/**
* 新增护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
int insertAppFileInfo(AppFileInfo appFileInfo);
/**
* 修改护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
int updateAppFileInfo(AppFileInfo appFileInfo);
/**
* 批量删除护理员App文件管理
*
* @param ids 需要删除的护理员App文件管理主键集合
* @return 结果
*/
int deleteAppFileInfoByIds(Long[] ids);
/**
* 护理员App上传apk
*
* @param appFileInfoDTO 文件及版本号
* @return 结果
* @throws Exception 异常
*/
AjaxResult uploadAppFileInfo(AppFileInfoDTO appFileInfoDTO) throws Exception;
}

View File

@ -0,0 +1,131 @@
package com.xinelu.manage.service.appfileinfo.impl;
import com.xinelu.common.config.XinELuConfig;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.file.FileUploadUtils;
import com.xinelu.common.utils.file.MimeTypeUtils;
import com.xinelu.manage.domain.appfileinfo.AppFileInfo;
import com.xinelu.manage.dto.appfileInfo.AppFileInfoDTO;
import com.xinelu.manage.mapper.appfileinfo.AppFileInfoMapper;
import com.xinelu.manage.service.appfileinfo.IAppFileInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* 护理员App文件管理Service业务层处理
*
* @author xinyilu
* @date 2022-11-15
*/
@Service
public class AppFileInfoServiceImpl implements IAppFileInfoService {
@Resource
private AppFileInfoMapper appFileInfoMapper;
@Resource
private XinELuConfig xinYiLuConfig;
/**
* 查询护理员App文件管理
*
* @param id 护理员App文件管理主键
* @return 护理员App文件管理
*/
@Override
public AppFileInfo selectAppFileInfoById(Long id) {
return appFileInfoMapper.selectAppFileInfoById(id);
}
/**
* 查询护理员App文件管理列表
*
* @param appFileInfo 护理员App文件管理
* @return 护理员App文件管理
*/
@Override
public List<AppFileInfo> selectAppFileInfoList(AppFileInfo appFileInfo) {
return appFileInfoMapper.selectAppFileInfoList(appFileInfo);
}
/**
* 新增护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
@Override
public int insertAppFileInfo(AppFileInfo appFileInfo) {
appFileInfo.setCreateTime(LocalDateTime.now());
return appFileInfoMapper.insertAppFileInfo(appFileInfo);
}
/**
* 修改护理员App文件管理
*
* @param appFileInfo 护理员App文件管理
* @return 结果
*/
@Override
public int updateAppFileInfo(AppFileInfo appFileInfo) {
appFileInfo.setUpdateTime(LocalDateTime.now());
return appFileInfoMapper.updateAppFileInfo(appFileInfo);
}
/**
* 批量删除护理员App文件管理
*
* @param ids 需要删除的护理员App文件管理主键
* @return 结果
*/
@Override
public int deleteAppFileInfoByIds(Long[] ids) {
return appFileInfoMapper.deleteAppFileInfoByIds(ids);
}
/**
* 护理员App上传apk文件
*
* @param appFileInfoDTO 文件
* @return 结果
*/
@Override
public AjaxResult uploadAppFileInfo(AppFileInfoDTO appFileInfoDTO) throws Exception {
if (StringUtils.isBlank(appFileInfoDTO.getFile().getOriginalFilename())
|| !appFileInfoDTO.getFile().getOriginalFilename().endsWith(Constants.APK)) {
return AjaxResult.error("文件格式不对请上传apk格式的文件");
}
if (!StringUtils.equals(Constants.APK_NAME, appFileInfoDTO.getFile().getOriginalFilename())) {
return AjaxResult.error("泉医到家护理员Apk文件名称不正确请将文件名称修改为" + Constants.APK_NAME);
}
//获取路径名称
String uploadPathUrl = XinELuConfig.getProfile() + xinYiLuConfig.getAppFileName();
//上传图片
String fileLocalPath = FileUploadUtils.uploadPersonAppApkPath(uploadPathUrl, appFileInfoDTO.getFile(), MimeTypeUtils.IMAGE_APK);
if (StringUtils.isBlank(fileLocalPath)) {
throw new ServiceException("护理员App文件上传失败请联系管理员");
}
AppFileInfo appFileInfo = new AppFileInfo();
appFileInfo.setFileName(Constants.APK_NAME);
appFileInfo.setFileUrl(xinYiLuConfig.getAppFilePath());
appFileInfo.setFileLocalPath(fileLocalPath);
appFileInfo.setFileVersion(appFileInfoDTO.getVersion());
appFileInfo.setCreateBy(SecurityUtils.getUsername());
appFileInfo.setCreateTime(LocalDateTime.now());
int insert = appFileInfoMapper.insertAppFileInfo(appFileInfo);
if (insert <= 0) {
throw new ServiceException("新增版本失败,请联系管理员!");
}
//获取返回值
AjaxResult ajax = AjaxResult.success("上传成功!");
ajax.put("imgUrl", fileLocalPath);
return ajax;
}
}

View File

@ -372,7 +372,7 @@ public class MessagePushServiceImpl implements MessagePushService {
}
FDWxMegDto wxMegDto = new FDWxMegDto();
wxMegDto.setTouser(patientInfo.getOpenid());
wxMegDto.setTouser(patientInfo.getBindOpenid());
wxMegDto.setTemplate_id(MessageTemplateType.getFolllowupTypeByCode(body.getTemplateType()).getTemplateId());
Map<String, TemplateData> meg = new HashMap<>();
switch (body.getTemplateType()) {

View File

@ -149,4 +149,12 @@ public interface INurseStationService {
* @return 护理站信息
*/
int getNurseStationById(List<Long> idList);
/**
* 护理站生成二维码
*
* @param nurseStationId 护理站id
* @return 邀请码图片地址
*/
AjaxResult nurseStationCode(Long nurseStationId);
}

View File

@ -6,6 +6,7 @@ import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.enums.NurseClassifyInfoEnum;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.AppletChatUtil;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
@ -66,6 +67,8 @@ public class NurseStationServiceImpl implements INurseStationService {
private NurseStationClassifyRelationMapper stationClassifyRelationMapper;
@Resource
private AppletPageConfig appletPageConfig;
@Resource
private XinELuConfig xinYiLuConfig;
/**
* 护理站营业时间默认值
@ -595,6 +598,47 @@ public class NurseStationServiceImpl implements INurseStationService {
return nurseStationMapper.getNurseStationCount(idList);
}
/**
* 护理站生成二维码
*
* @param nurseStationId 护理站id
* @return 邀请码图片地址
*/
@Override
public AjaxResult nurseStationCode(Long nurseStationId) {
//获取微信小程序AccessToken的值
NurseStation nurseStationById = nurseStationMapper.getNurseStationById(nurseStationId);
if (Objects.isNull(nurseStationById)) {
return AjaxResult.error("当前护理机构信息不存在,请联系管理员!");
}
if (StringUtils.isBlank(nurseStationById.getStationWechatCodeUrl())) {
String fileName = String.valueOf(System.nanoTime()) + nurseStationId + ".png";
//小程序跳转路径
String appletPageUrl = appletPageConfig.getNurseStationDetailsPageUrl();
//机构二维码存放路径
String filePathWeChatCodeUrl = xinYiLuConfig.getStationWechatCodeUrl();
String appletCodePicture = AppletChatUtil.createAppletCode(nurseStationId, false, fileName, appletPageUrl, filePathWeChatCodeUrl);
if (StringUtils.isNotBlank(appletCodePicture) && StringUtils.equals(FAIL, appletCodePicture)) {
//第一次调用获取小程序二维码信息失败重新递归调用一次第二次失败直接返回提示信息
appletCodePicture = AppletChatUtil.createAppletCode(nurseStationId, true, fileName, appletPageUrl, filePathWeChatCodeUrl);
if (StringUtils.isNotBlank(appletCodePicture) && StringUtils.equals(FAIL, appletCodePicture)) {
return AjaxResult.error("获取小程序二维码信息失败,请联系管理员!");
}
}
String pictureUrl = "";
if (StringUtils.isNotBlank(appletCodePicture)) {
pictureUrl = "/profile" + xinYiLuConfig.getStationWechatCodeUrl() + "/" + nurseStationId + "/" + fileName;
int updateCount = nurseStationMapper.updateStationWeChatCodeUrl(nurseStationId, pictureUrl);
if (updateCount <= 0) {
throw new ServiceException("生成机构二维码失败,请联系管理员!");
}
}
return AjaxResult.success(pictureUrl);
}
//直接返回二维码图片信息
return AjaxResult.success(nurseStationById.getStationWechatCodeUrl());
}
/**
* 新增护理站标签信息

View File

@ -135,7 +135,7 @@ public class ScreeningRecordServiceImpl implements IScreeningRecordService {
int flag = screeningRecordMapper.insert(recordBody);
if(flag > 0) {
// 组装发送消息通知参数
result.put("openid", registerVo.getOpenid());
result.put("openid", registerVo.getBindOpenid());
result.put("receiveName", registerVo.getPatientName());
result.put("text1", body.getHospitalName());
result.put("text2", (body.getProjectName().length() >= 17? (body.getProjectName().substring(0, 17) + "..."): body.getProjectName()));

View File

@ -3,9 +3,9 @@ package com.xinelu.manage.vo.nursestationperson;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.sf.jsqlparser.statement.update.Update;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;

View File

@ -0,0 +1,151 @@
<?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.xinelu.manage.mapper.appfileinfo.AppFileInfoMapper">
<resultMap type="AppFileInfo" id="AppFileInfoResult">
<result property="id" column="id"/>
<result property="fileName" column="file_name"/>
<result property="fileUrl" column="file_url"/>
<result property="fileLocalPath" column="file_local_path"/>
<result property="fileVersion" column="file_version"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectAppFileInfoVo">
select id,
file_name,
file_url,
file_local_path,
file_version,
create_by,
create_time,
update_by,
update_time
from app_file_info
</sql>
<select id="selectAppFileInfoList" parameterType="AppFileInfo" resultMap="AppFileInfoResult">
<include refid="selectAppFileInfoVo"/>
<where>
<if test="fileName != null and fileName != ''">
and file_name like concat('%', #{fileName}, '%')
</if>
<if test="fileUrl != null and fileUrl != ''">
and file_url = #{fileUrl}
</if>
<if test="fileVersion != null and fileVersion != ''">
and file_version = #{fileVersion}
</if>
</where>
</select>
<select id="selectAppFileInfoById" parameterType="Long"
resultMap="AppFileInfoResult">
<include refid="selectAppFileInfoVo"/>
where id = #{id}
</select>
<insert id="insertAppFileInfo" parameterType="AppFileInfo" useGeneratedKeys="true"
keyProperty="id">
insert into app_file_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="fileName != null">file_name,
</if>
<if test="fileUrl != null">file_url,
</if>
<if test="fileLocalPath != null">file_local_path,
</if>
<if test="fileVersion != null">file_version,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="fileName != null">#{fileName},
</if>
<if test="fileUrl != null">#{fileUrl},
</if>
<if test="fileLocalPath != null">#{fileLocalPath},
</if>
<if test="fileVersion != null">#{fileVersion},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>
<update id="updateAppFileInfo" parameterType="AppFileInfo">
update app_file_info
<trim prefix="SET" suffixOverrides=",">
<if test="fileName != null">file_name =
#{fileName},
</if>
<if test="fileUrl != null">file_url =
#{fileUrl},
</if>
<if test="fileLocalPath != null">file_local_path =
#{fileLocalPath},
</if>
<if test="fileVersion != null">file_version =
#{fileVersion},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteAppFileInfoById" parameterType="Long">
delete
from app_file_info
where id = #{id}
</delete>
<delete id="deleteAppFileInfoByIds" parameterType="String">
delete from app_file_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="getAppFileInfoByOneId" parameterType="AppFileInfo" resultType="AppFileInfo">
select id,
file_name,
file_url,
file_local_path,
file_version,
create_by,
create_time,
update_by,
update_time
from app_file_info
ORDER BY id DESC LIMIT 1
</select>
</mapper>

View File

@ -189,11 +189,9 @@
nst.appointment_time_interval,
nst.nurse_classify_name,
nst.shelf_status,
ns.nurse_station_name,
nt.nurse_type_name
ns.nurse_station_name
from nurse_station_item nst
LEFT JOIN nurse_station ns on ns.id = nst.nurse_station_id
LEFT JOIN nurse_type nt on nt.id = nst.nurse_type_id
where nst.id = #{id}
</select>

View File

@ -46,6 +46,7 @@
<result property="cityCode" column="city_code"/>
<result property="bindingTime" column="binding_time"/>
<result property="isChecked" column="is_checked"/>
<result property="bindOpenid" column="bind_openid"/>
</resultMap>
<sql id="selectPatientInfoVo">
@ -85,7 +86,8 @@
disease,
city_code,
binding_time,
is_checked
is_checked,
bind_openid
from patient_info
</sql>
@ -122,6 +124,7 @@
pi.create_time,
pi.disabling_condition,
pi.disabling_reason,
pi.bind_openid,
sa.area_name
from patient_info pi
left join sys_area sa on sa.area_code = pi.area_code
@ -217,6 +220,7 @@
pi.create_time,
pi.disabling_condition,
pi.disabling_reason,
pi.bind_openid,
sa.area_name
from patient_info pi
INNER join sys_area sa on sa.area_code = pi.area_code
@ -305,6 +309,7 @@
</if>
<if test="isChecked != null">is_checked,
</if>
<if test="bindOpenid != null">bind_openid,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="communityCode != null and communityCode != ''">#{communityCode},
@ -385,6 +390,7 @@
</if>
<if test="isChecked != null">#{isChecked},
</if>
<if test="bindOpenid != null">#{bindOpenid},</if>
</trim>
</insert>
@ -508,6 +514,9 @@
<if test="isChecked != null">is_checked =
#{isChecked},
</if>
<if test="bindOpenid != null">
bind_openid = #{bindOpenid},
</if>
</trim>
where id = #{id}
</update>
@ -565,7 +574,8 @@
disabling_condition,
disabling_reason,
city_code,
binding_time
binding_time,
bind_openid
FROM patient_info
WHERE id = #{id}
and del_flag = 0
@ -603,7 +613,8 @@
birth_date,
personal_wechat_code_url,
disabling_condition,
disabling_reason
disabling_reason,
bind_openid
FROM patient_info
WHERE card_no = #{cardNo}
and del_flag = 0 limit 1

View File

@ -288,9 +288,7 @@
<if test="poserCode != null">poser_code =
#{poserCode},
</if>
<if test="posterIntroduce != null">poster_introduce =
#{posterIntroduce},
</if>
poster_introduce = #{posterIntroduce},
<if test="posterPictureUrl != null">poster_picture_url =
#{posterPictureUrl},
</if>

View File

@ -51,7 +51,7 @@
<if test="createTime != null">
and date_format(create_time,'%Y%m%d') = date_format(#{createTime},'%Y%m%d')
</if>
order By id desc
order By hospital_id asc
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">