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

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 * @param serviceWayContentEditDTO
* @return * @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 结果 * @return 结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public int insertServiceWayContent(ServiceWayContentAddDTO serviceWayContentAddDTO) { public int insertServiceWayContent(ServiceWayContentAddDTO serviceWayContentAddDTO) {
// 判断服务内容在服务内容表中是否存在 // 判断服务内容在服务内容表中是否存在
ServiceWayContentVO serviceWayContentVO = serviceWayContentMapper.countByWayIdAndContent(serviceWayContentAddDTO.getServiceWayId(), serviceWayContentAddDTO.getServiceContent()); ServiceWayContentVO serviceWayContentVO = serviceWayContentMapper.countByWayIdAndContent(serviceWayContentAddDTO.getServiceWayId(), serviceWayContentAddDTO.getServiceContent());
@ -130,91 +131,77 @@ public class ServiceWayContentServiceImpl implements IServiceWayContentService {
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public int updateServiceWayContent(ServiceWayContentEditDTO serviceWayContentEditDTO) { public int updateServiceWayContent(ServiceWayContentEditDTO serviceWayContentEditDTO) {
// // 判断服务内容在服务内容表中是否存在
// ServiceWayContentVO serviceWayContentVO = serviceWayContentMapper.countByWayIdAndContent(serviceWayContentEditDTO.getServiceWayId(), serviceWayContentEditDTO.getServiceContent());
String username = SecurityUtils.getUsername(); String username = SecurityUtils.getUsername();
Date date = DateUtils.getNowDate(); Date date = DateUtils.getNowDate();
ServiceWayContent serviceFrequency = new ServiceWayContent(); // 获取当前的服务频次记录
// 检查除当前记录之外是否存在同名的服务内容 ServiceWayContent currentFrequency = serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getId());
if (!serviceWayContentEditDTO.getServiceContent().equals(serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getServiceContentId())) if (currentFrequency == null) {
&& serviceWayContentMapper.countByContentExcludingId(serviceWayContentEditDTO.getServiceContentId(), serviceWayContentEditDTO.getServiceWayId(), serviceWayContentEditDTO.getServiceContent()) > 0) { throw new ServiceException("未找到对应的服务频次记录");
throw new ServiceException("服务内容已存在");
} }
ServiceWayContent serviceContent = new ServiceWayContent(); // 获取当前服务内容的详细信息
serviceContent.setId(serviceWayContentEditDTO.getServiceContentId()); ServiceWayContent currentServiceContent = serviceWayContentMapper.selectServiceWayContentById(currentFrequency.getServiceContentId());
serviceContent.setServiceWayId(serviceWayContentEditDTO.getServiceWayId()); if (currentServiceContent == null) {
serviceContent.setServiceContent(serviceWayContentEditDTO.getServiceContent()); throw new ServiceException("未找到对应的服务内容记录");
serviceContent.setUpdateBy(username);
serviceContent.setUpdateTime(date);
if (serviceWayContentMapper.updateServiceWayContent(serviceContent) <= 0) {
throw new ServiceException("修改服务内容失败");
} }
// 检查除当前记录之外是否存在相同的服务频次 // 检查服务内容名称是否改变
if (!serviceWayContentEditDTO.equals(serviceWayContentMapper.selectServiceWayContentById(serviceWayContentEditDTO.getId())) boolean serviceContentChanged = !currentServiceContent.getServiceContent().equals(serviceWayContentEditDTO.getServiceContent());
&& serviceWayContentMapper.countByServiceFrequencyExcludingId(serviceWayContentEditDTO.getId(), serviceWayContentEditDTO.getServiceContentId(), serviceWayContentEditDTO) > 0) { // 如果服务内容名称改变
throw new ServiceException("服务频次已存在"); 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()); boolean serviceFrequencyChanged = false;
serviceFrequency.setServiceFrequencyType(serviceWayContentEditDTO.getServiceFrequencyType()); boolean isFrequencyDuplicate = false;
serviceFrequency.setServiceFrequencyText(serviceWayContentEditDTO.getServiceFrequencyText());
serviceFrequency.setServiceFrequencyStart(serviceWayContentEditDTO.getServiceFrequencyStart()); if ("TEXT".equals(serviceWayContentEditDTO.getServiceFrequencyType())) {
serviceFrequency.setServiceFrequencyEnd(serviceWayContentEditDTO.getServiceFrequencyEnd()); serviceFrequencyChanged = !currentFrequency.getServiceFrequencyText().equals(serviceWayContentEditDTO.getServiceFrequencyText());
serviceFrequency.setUpdateBy(username); if (serviceFrequencyChanged) {
serviceFrequency.setUpdateTime(date); // 检查TEXT类型的serviceFrequencyText是否重复
if (serviceWayContentMapper.updateServiceWayContent(serviceFrequency) <= 0) { 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("修改服务频次失败"); 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; return 1;
} }

View File

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

View File

@ -180,6 +180,7 @@
parameterType="java.lang.Long"> parameterType="java.lang.Long">
SELECT swc2.id AS serviceContentId, SELECT swc2.id AS serviceContentId,
swc2.service_content, swc2.service_content,
swc2.service_way_id,
swc1.id AS serviceFrequencyId, swc1.id AS serviceFrequencyId,
swc1.service_frequency_type, swc1.service_frequency_type,
swc1.service_frequency_text, swc1.service_frequency_text,
@ -327,8 +328,8 @@
select count(1) select count(1)
from service_way_content from service_way_content
<where> <where>
service_content_id =#{serviceContentId} service_content_id =#{serviceWayContentEditDTO.serviceContentId}
and id != #{id} and id != #{serviceWayContentEditDTO.id}
<if test="serviceWayContentEditDTO.serviceFrequencyType!=null and serviceWayContentEditDTO.serviceFrequencyType!=''"> <if test="serviceWayContentEditDTO.serviceFrequencyType!=null and serviceWayContentEditDTO.serviceFrequencyType!=''">
and service_frequency_type = and service_frequency_type =
#{serviceWayContentEditDTO.serviceFrequencyType} #{serviceWayContentEditDTO.serviceFrequencyType}
@ -346,9 +347,33 @@
#{serviceWayContentEditDTO.serviceFrequencyEnd} #{serviceWayContentEditDTO.serviceFrequencyEnd}
</if> </if>
</where> </where>
</select> </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" <insert id="insertServiceWayContent" parameterType="ServiceWayContent" useGeneratedKeys="true"
keyProperty="id"> keyProperty="id">
insert into service_way_content insert into service_way_content

View File

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