修改服务包内容配置修改接口

This commit is contained in:
youxilong 2024-03-06 17:58:36 +08:00
parent af78ce0cde
commit 56d9f7a4ab
5 changed files with 124 additions and 85 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -29,6 +29,12 @@ public class ServiceWayContentAndFrequencyVO {
@Excel(name = "服务内容")
private String serviceContent;
/**
* 所属服务方式id
*/
@ApiModelProperty(value = "所属服务方式id")
private Long serviceWayId;
/**
* 服务频次id
*/

View File

@ -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
<where>
service_content_id =#{serviceContentId}
and id != #{id}
service_content_id =#{serviceWayContentEditDTO.serviceContentId}
and id != #{serviceWayContentEditDTO.id}
<if test="serviceWayContentEditDTO.serviceFrequencyType!=null and serviceWayContentEditDTO.serviceFrequencyType!=''">
and service_frequency_type =
#{serviceWayContentEditDTO.serviceFrequencyType}
@ -346,9 +347,33 @@
#{serviceWayContentEditDTO.serviceFrequencyEnd}
</if>
</where>
</select>
<select id="selectServiceContentByName" resultType="java.lang.Integer">
select count(*)
from service_way_content
where service_way_id = #{serviceWayId}
and service_content = #{serviceContent}
</select>
<select id="isServiceFrequencyTextDuplicate" resultType="java.lang.Boolean">
SELECT CASE WHEN COUNT(*) > 0 THEN true ELSE false END
FROM service_way_content
WHERE service_content_id = #{serviceWayContentEditDTO.serviceContentId}
AND service_frequency_text = #{serviceWayContentEditDTO.serviceFrequencyText}
AND id != #{serviceWayContentEditDTO.id}
</select>
<select id="isServiceFrequencyDigitDuplicate" resultType="java.lang.Boolean">
SELECT CASE WHEN COUNT(*) > 0 THEN true ELSE false END
FROM service_way_content
WHERE service_content_id = #{serviceWayContentEditDTO.serviceContentId}
AND service_frequency_start = #{serviceWayContentEditDTO.serviceFrequencyStart}
AND service_frequency_end = #{serviceWayContentEditDTO.serviceFrequencyEnd}
AND id != #{serviceWayContentEditDTO.id}
</select>
<insert id="insertServiceWayContent" parameterType="ServiceWayContent" useGeneratedKeys="true"
keyProperty="id">
insert into service_way_content

View File

@ -233,9 +233,9 @@
</if>
<if test="diseaseTypeName != null">#{diseaseTypeName},
</if>
<if test="templateId != null">#{templateId},
<if test="wechatTemplateName != null">#{wechatTemplateName},
</if>
<if test="wechatTemplateName != null">wechat_template_name,
<if test="templateId != null">#{templateId},
</if>
<if test="templateContent != null">#{templateContent},
</if>