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},