|
|
@@ -3,15 +3,18 @@ package com.fs.his.service.impl;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
|
|
|
+import com.fs.common.core.domain.entity.SysDictData;
|
|
|
import com.fs.common.exception.CustomException;
|
|
|
import com.fs.his.param.FsPackageCateUParam;
|
|
|
import com.fs.his.vo.OptionsVO;
|
|
|
+import com.fs.system.mapper.SysDictDataMapper;
|
|
|
+import com.fs.system.service.ISysDictDataService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import com.fs.his.mapper.FsPackageCateMapper;
|
|
|
import com.fs.his.domain.FsPackageCate;
|
|
|
import com.fs.his.service.IFsPackageCateService;
|
|
|
@@ -25,9 +28,18 @@ import com.fs.his.service.IFsPackageCateService;
|
|
|
@Service
|
|
|
public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
{
|
|
|
+ private static final String PRIVATE_TYPE_DICT = "sys_package_private_type";
|
|
|
+ private static final Integer PRIVATE_CATE_TYPE = 2;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsPackageCateMapper fsPackageCateMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ISysDictDataService dictDataService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysDictDataMapper dictDataMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 查询套餐包分类
|
|
|
*
|
|
|
@@ -47,7 +59,6 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
* @return 套餐包分类
|
|
|
*/
|
|
|
@Override
|
|
|
- @Cacheable(value = "getPackagCateList", key = "#param")
|
|
|
public List<FsPackageCate> selectFsPackageCateList(FsPackageCateUParam param)
|
|
|
{
|
|
|
return fsPackageCateMapper.selectFsPackageCateList(param);
|
|
|
@@ -60,7 +71,7 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- @CacheEvict(value = {"getPackageList","getPackagCateList"}, allEntries = true)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public int insertFsPackageCate(FsPackageCate fsPackageCate)
|
|
|
{
|
|
|
Long cateCode = fsPackageCate.getCateCode();
|
|
|
@@ -69,7 +80,11 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
if (cate!=null){
|
|
|
throw new CustomException("分类标识存在重复");
|
|
|
}
|
|
|
- return fsPackageCateMapper.insertFsPackageCate(fsPackageCate);
|
|
|
+ int rows = fsPackageCateMapper.insertFsPackageCate(fsPackageCate);
|
|
|
+ if (rows > 0) {
|
|
|
+ saveOrUpdatePrivateTypeDict(fsPackageCate);
|
|
|
+ }
|
|
|
+ return rows;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -79,16 +94,21 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- @CacheEvict(value = {"getPackageList","getPackagCateList"}, allEntries = true)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public int updateFsPackageCate(FsPackageCate fsPackageCate)
|
|
|
{
|
|
|
+ FsPackageCate oldCate = fsPackageCateMapper.selectFsPackageCateByCateId(fsPackageCate.getCateId());
|
|
|
Long cateCode = fsPackageCate.getCateCode();
|
|
|
Integer type = fsPackageCate.getType();
|
|
|
FsPackageCate cate = fsPackageCateMapper.selectFsPackageCateByCateCode(cateCode, type);
|
|
|
if (cate!=null&&cate.getCateId()!=fsPackageCate.getCateId()){
|
|
|
throw new CustomException("分类标识存在重复");
|
|
|
}
|
|
|
- return fsPackageCateMapper.updateFsPackageCate(fsPackageCate);
|
|
|
+ int rows = fsPackageCateMapper.updateFsPackageCate(fsPackageCate);
|
|
|
+ if (rows > 0 && oldCate != null) {
|
|
|
+ syncPrivateTypeDictOnUpdate(oldCate, fsPackageCate);
|
|
|
+ }
|
|
|
+ return rows;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -98,9 +118,15 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- @CacheEvict(value = {"getPackageList","getPackagCateList"}, allEntries = true)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public int deleteFsPackageCateByCateIds(Long[] cateIds)
|
|
|
{
|
|
|
+ for (Long cateId : cateIds) {
|
|
|
+ FsPackageCate cate = fsPackageCateMapper.selectFsPackageCateByCateId(cateId);
|
|
|
+ if (cate != null) {
|
|
|
+ deletePrivateTypeDict(cate.getCateCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
return fsPackageCateMapper.deleteFsPackageCateByCateIds(cateIds);
|
|
|
}
|
|
|
|
|
|
@@ -111,7 +137,6 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- @CacheEvict(value = {"getPackageList","getPackagCateList"}, allEntries = true)
|
|
|
public int deleteFsPackageCateByCateId(Long cateId)
|
|
|
{
|
|
|
return fsPackageCateMapper.deleteFsPackageCateByCateId(cateId);
|
|
|
@@ -131,4 +156,67 @@ public class FsPackageCateServiceImpl implements IFsPackageCateService
|
|
|
public List<OptionsVO> selectCateList() {
|
|
|
return fsPackageCateMapper.selectFsArticleCateByType(2);
|
|
|
}
|
|
|
+
|
|
|
+ private void saveOrUpdatePrivateTypeDict(FsPackageCate fsPackageCate) {
|
|
|
+ if (!PRIVATE_CATE_TYPE.equals(fsPackageCate.getType())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysDictData dictData = buildPrivateTypeDict(fsPackageCate);
|
|
|
+ SysDictData existing = dictDataMapper.selectDictDataByTypeAndValue(
|
|
|
+ PRIVATE_TYPE_DICT, String.valueOf(fsPackageCate.getCateCode()));
|
|
|
+ if (existing != null) {
|
|
|
+ dictData.setDictCode(existing.getDictCode());
|
|
|
+ dictDataService.updateDictData(dictData);
|
|
|
+ } else {
|
|
|
+ dictDataService.insertDictData(dictData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void syncPrivateTypeDictOnUpdate(FsPackageCate oldCate, FsPackageCate newCate) {
|
|
|
+ boolean wasPrivate = PRIVATE_CATE_TYPE.equals(oldCate.getType());
|
|
|
+ boolean isPrivate = PRIVATE_CATE_TYPE.equals(newCate.getType());
|
|
|
+ if (wasPrivate && !isPrivate) {
|
|
|
+ deletePrivateTypeDict(oldCate.getCateCode());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!wasPrivate && isPrivate) {
|
|
|
+ saveOrUpdatePrivateTypeDict(newCate);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!wasPrivate) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysDictData existing = dictDataMapper.selectDictDataByTypeAndValue(
|
|
|
+ PRIVATE_TYPE_DICT, String.valueOf(oldCate.getCateCode()));
|
|
|
+ if (existing != null) {
|
|
|
+ SysDictData dictData = buildPrivateTypeDict(newCate);
|
|
|
+ dictData.setDictCode(existing.getDictCode());
|
|
|
+ dictDataService.updateDictData(dictData);
|
|
|
+ } else {
|
|
|
+ saveOrUpdatePrivateTypeDict(newCate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void deletePrivateTypeDict(Long cateCode) {
|
|
|
+ if (cateCode == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysDictData existing = dictDataMapper.selectDictDataByTypeAndValue(
|
|
|
+ PRIVATE_TYPE_DICT, String.valueOf(cateCode));
|
|
|
+ if (existing != null) {
|
|
|
+ dictDataService.deleteDictDataByIds(new Long[]{existing.getDictCode()});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private SysDictData buildPrivateTypeDict(FsPackageCate fsPackageCate) {
|
|
|
+ SysDictData dictData = new SysDictData();
|
|
|
+ dictData.setDictType(PRIVATE_TYPE_DICT);
|
|
|
+ dictData.setDictValue(String.valueOf(fsPackageCate.getCateCode()));
|
|
|
+ dictData.setDictLabel(fsPackageCate.getCateName());
|
|
|
+ dictData.setDictSort(fsPackageCate.getSort() != null ? fsPackageCate.getSort().longValue() : 0L);
|
|
|
+ dictData.setStatus(fsPackageCate.getStatus() != null && fsPackageCate.getStatus() == 1 ? "0" : "1");
|
|
|
+ dictData.setIsDefault("N");
|
|
|
+ dictData.setListClass("default");
|
|
|
+ return dictData;
|
|
|
+ }
|
|
|
}
|