diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/servicewaycontent/ServiceWayContentMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/servicewaycontent/ServiceWayContentMapper.java
index df470e7c..6c04f17a 100644
--- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/servicewaycontent/ServiceWayContentMapper.java
+++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/servicewaycontent/ServiceWayContentMapper.java
@@ -177,10 +177,31 @@ public interface ServiceWayContentMapper {
/**
* 检查除当前记录之外是否存在相同的服务频次
*
- * @param id
- * @param serviceContentId
* @param serviceWayContentEditDTO
* @return
*/
- int countByServiceFrequencyExcludingId(@Param("id") Long id, @Param("serviceContentId") Long serviceContentId, @Param("serviceWayContentEditDTO") ServiceWayContentEditDTO serviceWayContentEditDTO);
+ int countByServiceFrequencyExcludingId(@Param("serviceWayContentEditDTO") ServiceWayContentEditDTO serviceWayContentEditDTO);
+
+ /**
+ * 判断当前服务方式下服务内容是否重复
+ *
+ * @param serviceContent
+ * @param serviceWayId
+ * @return
+ */
+ int selectServiceContentByName(@Param("serviceContent") String serviceContent, @Param("serviceWayId") Long serviceWayId);
+
+ /**
+ * 检查TEXT类型的serviceFrequencyText是否重复
+ * @param serviceWayContentEditDTO
+ * @return
+ */
+ boolean isServiceFrequencyTextDuplicate(@Param("serviceWayContentEditDTO") ServiceWayContentEditDTO serviceWayContentEditDTO);
+
+ /**
+ * 检查DIGIT类型的serviceFrequencyStart和serviceFrequencyEnd是否重复
+ * @param serviceWayContentEditDTO
+ * @return
+ */
+ boolean isServiceFrequencyDigitDuplicate(@Param("serviceWayContentEditDTO") ServiceWayContentEditDTO serviceWayContentEditDTO);
}
diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/servicewaycontent/impl/ServiceWayContentServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/servicewaycontent/impl/ServiceWayContentServiceImpl.java
index fce9e32f..3cf8edd7 100644
--- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/servicewaycontent/impl/ServiceWayContentServiceImpl.java
+++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/servicewaycontent/impl/ServiceWayContentServiceImpl.java
@@ -67,6 +67,7 @@ public class ServiceWayContentServiceImpl implements IServiceWayContentService {
* @return 结果
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public int insertServiceWayContent(ServiceWayContentAddDTO serviceWayContentAddDTO) {
// 判断服务内容在服务内容表中是否存在
ServiceWayContentVO serviceWayContentVO = serviceWayContentMapper.countByWayIdAndContent(serviceWayContentAddDTO.getServiceWayId(), serviceWayContentAddDTO.getServiceContent());
@@ -130,91 +131,77 @@ public class ServiceWayContentServiceImpl implements IServiceWayContentService {
* @return 结果
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public int updateServiceWayContent(ServiceWayContentEditDTO serviceWayContentEditDTO) {
-// // 判断服务内容在服务内容表中是否存在
-// ServiceWayContentVO serviceWayContentVO = serviceWayContentMapper.countByWayIdAndContent(serviceWayContentEditDTO.getServiceWayId(), serviceWayContentEditDTO.getServiceContent());
String username = SecurityUtils.getUsername();
Date date = DateUtils.getNowDate();
- ServiceWayContent serviceFrequency = new ServiceWayContent();
- // 检查除当前记录之外是否存在同名的服务内容
- if (!serviceWayContentEditDTO.getServiceContent().equals(serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getServiceContentId()))
- && serviceWayContentMapper.countByContentExcludingId(serviceWayContentEditDTO.getServiceContentId(), serviceWayContentEditDTO.getServiceWayId(), serviceWayContentEditDTO.getServiceContent()) > 0) {
- throw new ServiceException("服务内容已存在");
+ // 获取当前的服务频次记录
+ ServiceWayContent currentFrequency = serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getId());
+ if (currentFrequency == null) {
+ throw new ServiceException("未找到对应的服务频次记录");
}
- ServiceWayContent serviceContent = new ServiceWayContent();
- serviceContent.setId(serviceWayContentEditDTO.getServiceContentId());
- serviceContent.setServiceWayId(serviceWayContentEditDTO.getServiceWayId());
- serviceContent.setServiceContent(serviceWayContentEditDTO.getServiceContent());
- serviceContent.setUpdateBy(username);
- serviceContent.setUpdateTime(date);
- if (serviceWayContentMapper.updateServiceWayContent(serviceContent) <= 0) {
- throw new ServiceException("修改服务内容失败");
+ // 获取当前服务内容的详细信息
+ ServiceWayContent currentServiceContent = serviceWayContentMapper.selectServiceWayContentById(currentFrequency.getServiceContentId());
+ if (currentServiceContent == null) {
+ throw new ServiceException("未找到对应的服务内容记录");
}
- // 检查除当前记录之外是否存在相同的服务频次
- if (!serviceWayContentEditDTO.equals(serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getId()))
- && serviceWayContentMapper.countByServiceFrequencyExcludingId(serviceWayContentEditDTO.getId(), serviceWayContentEditDTO.getServiceContentId(), serviceWayContentEditDTO) > 0) {
- throw new ServiceException("服务频次已存在");
+ // 检查服务内容名称是否改变
+ boolean serviceContentChanged = !currentServiceContent.getServiceContent().equals(serviceWayContentEditDTO.getServiceContent());
+ // 如果服务内容名称改变
+ if (serviceContentChanged) {
+ // 检查新的服务内容名称是否已存在
+ int existingServiceContent = serviceWayContentMapper.selectServiceContentByName(serviceWayContentEditDTO.getServiceContent(), serviceWayContentEditDTO.getServiceWayId());
+ if (existingServiceContent > 0) {
+ // 如果新服务内容名称已存在,提示错误
+ throw new ServiceException("修改后的服务内容已存在");
+ } else {
+ // 如果新服务内容名称不存在,创建新的服务内容
+ ServiceWayContent newServiceContent = new ServiceWayContent();
+ newServiceContent.setServiceWayId(serviceWayContentEditDTO.getServiceWayId());
+ newServiceContent.setServiceContent(serviceWayContentEditDTO.getServiceContent());
+ newServiceContent.setServiceType(ServiceWayContentServiceType.SERVICE_CONTENT.toString());
+ newServiceContent.setCreateBy(username);
+ newServiceContent.setCreateTime(date);
+ serviceWayContentMapper.insertServiceWayContent(newServiceContent);
+ // 更新当前频次记录的ServiceContentId为新创建的服务内容ID
+ currentFrequency.setServiceContentId(newServiceContent.getId());
+ }
}
- // 如果当前服务内容下服务频次不存在,更新服务频次
- serviceFrequency.setId(serviceWayContentEditDTO.getId());
- serviceFrequency.setServiceContentId(serviceWayContentEditDTO.getServiceContentId());
- serviceFrequency.setServiceFrequencyType(serviceWayContentEditDTO.getServiceFrequencyType());
- serviceFrequency.setServiceFrequencyText(serviceWayContentEditDTO.getServiceFrequencyText());
- serviceFrequency.setServiceFrequencyStart(serviceWayContentEditDTO.getServiceFrequencyStart());
- serviceFrequency.setServiceFrequencyEnd(serviceWayContentEditDTO.getServiceFrequencyEnd());
- serviceFrequency.setUpdateBy(username);
- serviceFrequency.setUpdateTime(date);
- if (serviceWayContentMapper.updateServiceWayContent(serviceFrequency) <= 0) {
+
+ // 检查服务频次是否改变
+ boolean serviceFrequencyChanged = false;
+ boolean isFrequencyDuplicate = false;
+
+ if ("TEXT".equals(serviceWayContentEditDTO.getServiceFrequencyType())) {
+ serviceFrequencyChanged = !currentFrequency.getServiceFrequencyText().equals(serviceWayContentEditDTO.getServiceFrequencyText());
+ if (serviceFrequencyChanged) {
+ // 检查TEXT类型的serviceFrequencyText是否重复
+ isFrequencyDuplicate = serviceWayContentMapper.isServiceFrequencyTextDuplicate(serviceWayContentEditDTO);
+ }
+ } else if ("DIGIT".equals(serviceWayContentEditDTO.getServiceFrequencyType())) {
+ serviceFrequencyChanged = !currentFrequency.getServiceFrequencyStart().equals(serviceWayContentEditDTO.getServiceFrequencyStart())
+ || !currentFrequency.getServiceFrequencyEnd().equals(serviceWayContentEditDTO.getServiceFrequencyEnd());
+ if (serviceFrequencyChanged) {
+ // 检查DIGIT类型的serviceFrequencyStart和serviceFrequencyEnd是否重复
+ isFrequencyDuplicate = serviceWayContentMapper.isServiceFrequencyDigitDuplicate(serviceWayContentEditDTO);
+ }
+ }
+ // 如果服务频次改变了,检查新服务频次的重复性
+ if (serviceFrequencyChanged && isFrequencyDuplicate) {
+ throw new ServiceException("当前服务内容下服务频次已存在");
+ }
+
+ // 更新服务频次记录
+ currentFrequency.setServiceFrequencyType(serviceWayContentEditDTO.getServiceFrequencyType());
+ currentFrequency.setServiceFrequencyText(serviceWayContentEditDTO.getServiceFrequencyText());
+ currentFrequency.setServiceFrequencyStart(serviceWayContentEditDTO.getServiceFrequencyStart());
+ currentFrequency.setServiceFrequencyEnd(serviceWayContentEditDTO.getServiceFrequencyEnd());
+ currentFrequency.setUpdateBy(username);
+ currentFrequency.setUpdateTime(date);
+
+ if (serviceWayContentMapper.updateServiceWayContent(currentFrequency) <= 0) {
throw new ServiceException("修改服务频次失败");
}
-
-
-// if (ObjectUtils.isNotEmpty(serviceWayContentVO)) {
-// // 判断服务频次是否在服务频次表中是否存在
-// ServiceFrequencyDTO serviceFrequencyDTO = new ServiceFrequencyDTO();
-// BeanUtils.copyProperties(serviceWayContentEditDTO, serviceFrequencyDTO);
-// serviceFrequencyDTO.setServiceContentId(serviceWayContentVO.getId());
-// // 如果当前服务内容下服务频次已存在
-// if (serviceWayContentMapper.countByServiceFrequencyDTO(serviceFrequencyDTO) > 0) {
-// throw new ServiceException("当前服务内容下服务频次已存在");
-// }
-// // 如果当前服务内容下服务频次不存在,更新服务频次
-// serviceFrequency.setId(serviceWayContentEditDTO.getId());
-// serviceFrequency.setServiceContentId(serviceWayContentVO.getId());
-// serviceFrequency.setServiceFrequencyType(serviceWayContentEditDTO.getServiceFrequencyType());
-// serviceFrequency.setServiceFrequencyText(serviceWayContentEditDTO.getServiceFrequencyText());
-// serviceFrequency.setServiceFrequencyStart(serviceWayContentEditDTO.getServiceFrequencyStart());
-// serviceFrequency.setServiceFrequencyEnd(serviceWayContentEditDTO.getServiceFrequencyEnd());
-// serviceFrequency.setUpdateBy(username);
-// serviceFrequency.setUpdateTime(date);
-// if (serviceWayContentMapper.updateServiceWayContent(serviceFrequency) <= 0) {
-// throw new ServiceException("修改服务频次失败");
-// }
-// } else {
-// // 如果服务内容在服务内容表不存在,更新服务内容,更新服务频次
-// // 修改服务内容
-// ServiceWayContent serviceContent = new ServiceWayContent();
-// serviceContent.setId(serviceWayContentEditDTO.getServiceContentId());
-// serviceContent.setServiceWayId(serviceWayContentEditDTO.getServiceWayId());
-// serviceContent.setServiceContent(serviceWayContentEditDTO.getServiceContent());
-// serviceContent.setUpdateBy(username);
-// serviceContent.setUpdateTime(date);
-// if (serviceWayContentMapper.updateServiceWayContent(serviceContent) <= 0) {
-// throw new ServiceException("修改服务内容失败");
-// }
-// // 修改服务频次
-// serviceFrequency.setId(serviceWayContentEditDTO.getId());
-// serviceFrequency.setServiceContentId(serviceContent.getId());
-// serviceFrequency.setServiceFrequencyType(serviceWayContentEditDTO.getServiceFrequencyType());
-// serviceFrequency.setServiceFrequencyText(serviceWayContentEditDTO.getServiceFrequencyText());
-// serviceFrequency.setServiceFrequencyStart(serviceWayContentEditDTO.getServiceFrequencyStart());
-// serviceFrequency.setServiceFrequencyEnd(serviceWayContentEditDTO.getServiceFrequencyEnd());
-// serviceFrequency.setUpdateBy(username);
-// serviceFrequency.setUpdateTime(date);
-// if (serviceWayContentMapper.updateServiceWayContent(serviceFrequency) <= 0) {
-// throw new ServiceException("修改服务频次失败");
-// }
-// }
return 1;
}
diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/servicewaycontent/ServiceWayContentAndFrequencyVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/servicewaycontent/ServiceWayContentAndFrequencyVO.java
index cc1b5fba..33c53622 100644
--- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/servicewaycontent/ServiceWayContentAndFrequencyVO.java
+++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/servicewaycontent/ServiceWayContentAndFrequencyVO.java
@@ -29,6 +29,12 @@ public class ServiceWayContentAndFrequencyVO {
@Excel(name = "服务内容")
private String serviceContent;
+ /**
+ * 所属服务方式id
+ */
+ @ApiModelProperty(value = "所属服务方式id")
+ private Long serviceWayId;
+
/**
* 服务频次id
*/
diff --git a/postdischarge-manage/src/main/resources/mapper/manage/servicewaycontent/ServiceWayContentMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/servicewaycontent/ServiceWayContentMapper.xml
index cb14314f..6476a90a 100644
--- a/postdischarge-manage/src/main/resources/mapper/manage/servicewaycontent/ServiceWayContentMapper.xml
+++ b/postdischarge-manage/src/main/resources/mapper/manage/servicewaycontent/ServiceWayContentMapper.xml
@@ -180,6 +180,7 @@
parameterType="java.lang.Long">
SELECT swc2.id AS serviceContentId,
swc2.service_content,
+ swc2.service_way_id,
swc1.id AS serviceFrequencyId,
swc1.service_frequency_type,
swc1.service_frequency_text,
@@ -327,8 +328,8 @@
select count(1)
from service_way_content
- service_content_id =#{serviceContentId}
- and id != #{id}
+ service_content_id =#{serviceWayContentEditDTO.serviceContentId}
+ and id != #{serviceWayContentEditDTO.id}
and service_frequency_type =
#{serviceWayContentEditDTO.serviceFrequencyType}
@@ -346,9 +347,33 @@
#{serviceWayContentEditDTO.serviceFrequencyEnd}
-
+
+
+
+
+
+
+
insert into service_way_content
diff --git a/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml
index fe3b88bd..1e1dfc7d 100644
--- a/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml
+++ b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml
@@ -233,9 +233,9 @@
#{diseaseTypeName},
- #{templateId},
+ #{wechatTemplateName},
- wechat_template_name,
+ #{templateId},
#{templateContent},