dev
This commit is contained in:
parent
d9f0155f08
commit
061f7f275c
|
|
@ -0,0 +1,45 @@
|
|||
package com.syjiaer.clinic.server.entity.social;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 医保目录
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("social_directory")
|
||||
@ApiModel(value = "SocialDirectory对象", description = "医保目录")
|
||||
public class SocialDirectoryMongodb{
|
||||
|
||||
|
||||
@ApiModelProperty("医保目录编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("检索关键词")
|
||||
private String keyword;
|
||||
|
||||
@ApiModelProperty("类型")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("生产企业")
|
||||
private String producer;
|
||||
}
|
||||
|
|
@ -13,7 +13,15 @@ import com.syjiaer.clinic.server.entity.social.vo.SocialDirectoryView;
|
|||
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
|
||||
import com.syjiaer.clinic.server.mapper.social.*;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.data.mongodb.core.index.Index;
|
||||
import org.springframework.data.mongodb.core.index.IndexInfo;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.data.mongodb.core.query.Update;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
@ -47,6 +55,9 @@ public class SocialDirectoryService extends BaseService {
|
|||
@Autowired
|
||||
private SocialDirectoryVersionService socialDirectoryVersionService;
|
||||
|
||||
@Autowired
|
||||
private MongoTemplate mongoTemplate;
|
||||
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
|
||||
|
|
@ -157,11 +168,53 @@ public class SocialDirectoryService extends BaseService {
|
|||
if(list.isEmpty()){
|
||||
return null;
|
||||
}
|
||||
socialDirectoryMapper.insert(list, 100);
|
||||
|
||||
socialDirectoryMapper.insert(list, 100);
|
||||
initMongoDb();
|
||||
saveListToMongoDb(list);
|
||||
return next_version_name;
|
||||
}
|
||||
|
||||
private void saveToMongoDb(SocialDirectory socialDirectory){
|
||||
SocialDirectoryMongodb socialDirectoryMongodb = new SocialDirectoryMongodb();
|
||||
BeanUtils.copyProperties(socialDirectory, socialDirectoryMongodb);
|
||||
Query query = new Query(Criteria.where("code").is(socialDirectoryMongodb.getCode()));
|
||||
if (mongoTemplate.exists(query, SocialDirectoryMongodb.class,"social_directory")) {
|
||||
|
||||
Update update = new Update();
|
||||
update.set("name", socialDirectoryMongodb.getName());
|
||||
update.set("keyword", socialDirectoryMongodb.getKeyword());
|
||||
update.set("type", socialDirectoryMongodb.getType());
|
||||
update.set("producer", socialDirectoryMongodb.getProducer());
|
||||
mongoTemplate.updateFirst(query, update, SocialDirectoryMongodb.class,"social_directory");
|
||||
}else{
|
||||
mongoTemplate.insert(socialDirectoryMongodb, "social_directory");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void saveListToMongoDb(List<SocialDirectory> list){
|
||||
for(SocialDirectory socialDirectory:list){
|
||||
saveToMongoDb(socialDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
private void initMongoDb(){
|
||||
if (!mongoTemplate.collectionExists("social_directory")) {
|
||||
System.out.println("创建了social_directory集合");
|
||||
mongoTemplate.createCollection("social_directory");
|
||||
}
|
||||
|
||||
List<IndexInfo> indexInfos = mongoTemplate.indexOps("social_directory").getIndexInfo();
|
||||
//判断索引是否存在
|
||||
if (indexInfos.stream().noneMatch(index -> index.getName().equals("code_uni"))) {
|
||||
System.out.println("创建了code索引");
|
||||
Index index = new Index().on("code", Sort.Direction.ASC).named("code_uni").unique();
|
||||
mongoTemplate.indexOps("social_directory").ensureIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 搜索接口
|
||||
* @param keyword 关键字
|
||||
|
|
@ -175,6 +228,13 @@ public class SocialDirectoryService extends BaseService {
|
|||
* @param keyword 关键字
|
||||
*/
|
||||
public Page<SocialDirectoryView> search(String keyword, List<Integer> typeList, int pageNum, int pageSize) {
|
||||
|
||||
//mongodb分页
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QueryWrapper<SocialDirectory> codeqw = new QueryWrapper<>();
|
||||
if (typeList.size() == 1) {
|
||||
codeqw.eq("type", typeList.get(0));
|
||||
|
|
@ -310,10 +370,50 @@ public class SocialDirectoryService extends BaseService {
|
|||
*/
|
||||
public List<SocialDirectoryView> fullList(List<String> codeList) {
|
||||
List<SocialDirectoryView> socialDirectoryViewList = new ArrayList<>();
|
||||
for (String code : codeList) {
|
||||
SocialDirectoryView socialDirectoryView = fullInfo(code);
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.in("code",codeList);
|
||||
List<SocialDirectory> socialDirectoryList = socialDirectoryMapper.selectList(queryWrapper);
|
||||
List<SocialDirectoryUpinfo> socialDirectoryUpinfoList = socialDirectoryUpinfoMapper.selectList(queryWrapper);
|
||||
List<SocialDirectoryLimit> socialDirectoryLimitList = socialDirectoryLimitMapper.selectList(queryWrapper);
|
||||
List<SocialDirectorySelf> socialDirectorySelfList = socialDirectorySelfMapper.selectList(queryWrapper);
|
||||
Map<String, SocialDirectoryUpinfo> upinfoMap = socialDirectoryUpinfoList.stream()
|
||||
.collect(Collectors.toMap(SocialDirectoryUpinfo::getCode, upinfo -> upinfo));
|
||||
Map<String, SocialDirectoryLimit> limitMap = socialDirectoryLimitList.stream()
|
||||
.collect(Collectors.toMap(SocialDirectoryLimit::getCode, limit -> limit));
|
||||
Map<String, SocialDirectorySelf> selfMap = socialDirectorySelfList.stream()
|
||||
.collect(Collectors.toMap(SocialDirectorySelf::getCode, self -> self));
|
||||
|
||||
for(SocialDirectory socialDirectory : socialDirectoryList){
|
||||
SocialDirectoryView socialDirectoryView = new SocialDirectoryView();
|
||||
socialDirectoryView.setJson(JSONObject.parseObject(socialDirectory.getData()));
|
||||
socialDirectoryView.setData(null);
|
||||
BeanUtils.copyProperties(socialDirectory, socialDirectoryView);
|
||||
// 合并 SocialDirectoryUpinfo 数据
|
||||
SocialDirectoryUpinfo upinfo = upinfoMap.get(socialDirectory.getCode());
|
||||
if (upinfo != null) {
|
||||
socialDirectoryView.setBegndate(upinfo.getBegndate());
|
||||
socialDirectoryView.setEnddate(upinfo.getEnddate());
|
||||
socialDirectoryView.setWubi(upinfo.getWubi());
|
||||
socialDirectoryView.setPinyin(upinfo.getPinyin());
|
||||
}
|
||||
|
||||
// 合并 SocialDirectoryLimit 数据
|
||||
SocialDirectoryLimit limit = limitMap.get(socialDirectory.getCode());
|
||||
if (limit != null) {
|
||||
socialDirectoryView.setHilistLmtpricType(limit.getHilistLmtpricType());
|
||||
socialDirectoryView.setHilistPricUplmtAmt(limit.getHilistPricUplmtAmt());
|
||||
}
|
||||
|
||||
// 合并 SocialDirectorySelf 数据
|
||||
SocialDirectorySelf self = selfMap.get(socialDirectory.getCode());
|
||||
if (self != null) {
|
||||
socialDirectoryView.setSelfpayPropType(self.getSelfpayPropType());
|
||||
socialDirectoryView.setSelfpayProp(self.getSelfpayProp());
|
||||
}
|
||||
socialDirectoryViewList.add(socialDirectoryView);
|
||||
}
|
||||
|
||||
|
||||
return socialDirectoryViewList;
|
||||
}
|
||||
|
||||
|
|
@ -383,22 +483,31 @@ public class SocialDirectoryService extends BaseService {
|
|||
}
|
||||
|
||||
public Page<SocialDirectoryView> getDocList(int type, int page, int size, String keyword) {
|
||||
QueryWrapper<SocialDirectory> codeqw = new QueryWrapper<>();
|
||||
codeqw.eq("type", type);
|
||||
|
||||
Query query = new Query();
|
||||
query.addCriteria(Criteria.where("type").is(type));
|
||||
|
||||
if (!keyword.trim().isEmpty()) {
|
||||
query.addCriteria(new Criteria().orOperator(
|
||||
Criteria.where("code").regex(keyword, "i"),
|
||||
Criteria.where("name").regex(keyword, "i"),
|
||||
Criteria.where("keyword").regex(keyword, "i"),
|
||||
Criteria.where("producer").regex(keyword, "i")
|
||||
));
|
||||
}
|
||||
long count = mongoTemplate.count(query, SocialDirectoryMongodb.class,"social_directory");
|
||||
query.skip((long) (page - 1) * size).limit(size);
|
||||
List<SocialDirectoryMongodb> mongodbList = mongoTemplate.find(query, SocialDirectoryMongodb.class,"social_directory");
|
||||
List<String> codeList=new ArrayList<>();
|
||||
for(SocialDirectoryMongodb mongodb:mongodbList){
|
||||
codeList.add(mongodb.getCode());
|
||||
}
|
||||
|
||||
|
||||
//模糊搜索
|
||||
if (!keyword.trim().isEmpty()) {
|
||||
codeqw.like("name", keyword);
|
||||
codeqw.or().like("code", keyword);
|
||||
codeqw.or().like("keyword", keyword);
|
||||
}
|
||||
//
|
||||
// 执行查询
|
||||
|
||||
codeqw.select("code");
|
||||
long count = socialDirectoryMapper.selectCount(codeqw);
|
||||
|
||||
codeqw.last("LIMIT " + size + " OFFSET " + (page - 1) * size);
|
||||
List<String> codeList = listObjs(codeqw, socialDirectoryMapper, obj -> obj.toString());
|
||||
Page<SocialDirectoryView> result = new Page<>();
|
||||
if (!codeList.isEmpty()) {
|
||||
List<SocialDirectoryView> list = fullList(codeList);
|
||||
|
|
|
|||
Loading…
Reference in New Issue