|
@@ -1,4 +1,5 @@
|
|
|
package cn.com.qmth.examcloud.core.basic.service.impl;
|
|
|
+
|
|
|
import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.contains;
|
|
|
|
|
|
import java.io.InputStream;
|
|
@@ -38,11 +39,11 @@ import cn.com.qmth.examcloud.core.basic.service.bean.OrgDto;
|
|
|
@Service
|
|
|
public class OrgService {
|
|
|
|
|
|
- @Autowired
|
|
|
- OrgRepo orgRepo;
|
|
|
+ @Autowired
|
|
|
+ OrgRepo orgRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- UserRepo userRepo;
|
|
|
+ @Autowired
|
|
|
+ UserRepo userRepo;
|
|
|
|
|
|
@Autowired
|
|
|
ExamSiteRepo examSiteRepo;
|
|
@@ -53,31 +54,33 @@ public class OrgService {
|
|
|
@Autowired
|
|
|
OrgMemRepo orgMemRepo;
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional
|
|
|
public List<ExcelError> importLearnCenter(Long orgId, InputStream inputStream) {
|
|
|
ExcelReader excelReader = new ExcelReader(OrgDto.class);
|
|
|
- List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
|
|
|
- @Override
|
|
|
- public ExcelError handle(Object obj) {
|
|
|
+ List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
|
|
|
+ @Override
|
|
|
+ public ExcelError handle(Object obj) {
|
|
|
OrgDto dto = (OrgDto) obj;
|
|
|
dto.setParentId(orgId);
|
|
|
dto.setRootId(orgId);
|
|
|
- ExcelError error = importCheck(dto);
|
|
|
- if (error == null) {
|
|
|
- saveOrgAndExamSite(dto);
|
|
|
- }
|
|
|
- return error;
|
|
|
- }
|
|
|
- });
|
|
|
+ ExcelError error = importCheck(dto);
|
|
|
+ if (error == null) {
|
|
|
+ saveOrgAndExamSite(dto);
|
|
|
+ }
|
|
|
+ return error;
|
|
|
+ }
|
|
|
+ });
|
|
|
return excelErrors;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 保存学习中心和考点
|
|
|
+ *
|
|
|
* @param orgDto
|
|
|
- */
|
|
|
+ */
|
|
|
private void saveOrgAndExamSite(OrgDto orgDto) {
|
|
|
- Org org = orgRepo.findFirstByParentIdAndCode(orgDto.getParentId(), orgDto.getCode());
|
|
|
+ Org org = orgRepo.findByParentIdAndCodeAndEnable(orgDto.getParentId(), orgDto.getCode(),
|
|
|
+ true);
|
|
|
if (org == null) {
|
|
|
|
|
|
Org tempOrg = orgRepo.save(orgAssembler(orgDto));
|
|
@@ -93,13 +96,14 @@ public class OrgService {
|
|
|
orgRepo.save(org);
|
|
|
|
|
|
orgDto.setId(org.getId());
|
|
|
- ExamSite examSite = examSiteRepo.findFirstByOrgIdAndCode(org.getId(), orgDto.getExamSiteCode());
|
|
|
+ ExamSite examSite = examSiteRepo.findFirstByOrgIdAndCode(org.getId(),
|
|
|
+ orgDto.getExamSiteCode());
|
|
|
if (examSite == null) {
|
|
|
examSiteRepo.save(examSiteAssembler(orgDto));
|
|
|
} else {
|
|
|
examSite.setName(orgDto.getExamSiteName());
|
|
|
-// examSite.setContacts(orgDto.getContacts());
|
|
|
-// examSite.setTelphone(orgDto.getTelphone());
|
|
|
+ // examSite.setContacts(orgDto.getContacts());
|
|
|
+ // examSite.setTelphone(orgDto.getTelphone());
|
|
|
examSiteRepo.save(examSite);
|
|
|
}
|
|
|
}
|
|
@@ -108,10 +112,12 @@ public class OrgService {
|
|
|
|
|
|
/**
|
|
|
* 创建学习中心用户
|
|
|
+ *
|
|
|
* @param tempOrg
|
|
|
- */
|
|
|
- private void createOrgUser(Org tempOrg){
|
|
|
- UserEntity user = new UserEntity(tempOrg.getName(), UserScope.ORG, tempOrg.getRootId(), tempOrg.getId(), UserType.COMMON);
|
|
|
+ */
|
|
|
+ private void createOrgUser(Org tempOrg) {
|
|
|
+ UserEntity user = new UserEntity(tempOrg.getName(), UserScope.ORG, tempOrg.getRootId(),
|
|
|
+ tempOrg.getId(), UserType.COMMON);
|
|
|
user.setLoginName(tempOrg.getCode());
|
|
|
user.setEnable(true);
|
|
|
user.setCreateTime(new Date());
|
|
@@ -122,7 +128,7 @@ public class OrgService {
|
|
|
userRepo.save(user);
|
|
|
}
|
|
|
|
|
|
- private Org orgAssembler(OrgDto orgDto){
|
|
|
+ private Org orgAssembler(OrgDto orgDto) {
|
|
|
Org org = new Org();
|
|
|
org.setRootId(orgDto.getRootId());
|
|
|
org.setParentId(orgDto.getParentId());
|
|
@@ -131,40 +137,40 @@ public class OrgService {
|
|
|
org.setContacts(orgDto.getContacts());
|
|
|
org.setTelphone(orgDto.getTelphone());
|
|
|
org.setEnable(true);
|
|
|
- //添加机构类型
|
|
|
+ // 添加机构类型
|
|
|
org.setType(OrgType.SCHOOL);
|
|
|
return org;
|
|
|
}
|
|
|
|
|
|
- private ExamSite examSiteAssembler(OrgDto orgDto){
|
|
|
+ private ExamSite examSiteAssembler(OrgDto orgDto) {
|
|
|
ExamSite examSite = new ExamSite();
|
|
|
examSite.setCode(orgDto.getExamSiteCode());
|
|
|
examSite.setName(orgDto.getExamSiteName());
|
|
|
examSite.setOrgId(orgDto.getId());
|
|
|
-// examSite.setContacts(orgDto.getContacts());
|
|
|
-// examSite.setTelphone(orgDto.getTelphone());
|
|
|
+ // examSite.setContacts(orgDto.getContacts());
|
|
|
+ // examSite.setTelphone(orgDto.getTelphone());
|
|
|
examSite.setCreateTime(new Date());
|
|
|
examSite.setEnable(true);
|
|
|
return examSite;
|
|
|
}
|
|
|
|
|
|
private ExcelError importCheck(OrgDto dto) {
|
|
|
- if(StringUtils.isBlank(dto.getCode())){
|
|
|
+ if (StringUtils.isBlank(dto.getCode())) {
|
|
|
return new ExcelError("中心代码不能为空");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(dto.getName())){
|
|
|
+ if (StringUtils.isBlank(dto.getName())) {
|
|
|
return new ExcelError("中心名称不能为空");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(dto.getExamSiteCode())){
|
|
|
+ if (StringUtils.isBlank(dto.getExamSiteCode())) {
|
|
|
return new ExcelError("考点代码不能为空");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(dto.getExamSiteName())){
|
|
|
+ if (StringUtils.isBlank(dto.getExamSiteName())) {
|
|
|
return new ExcelError("考点名称不能为空");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(dto.getContacts())){
|
|
|
+ if (StringUtils.isBlank(dto.getContacts())) {
|
|
|
return new ExcelError("联系人不能为空");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(dto.getTelphone())){
|
|
|
+ if (StringUtils.isBlank(dto.getTelphone())) {
|
|
|
return new ExcelError("联系电话不能为空");
|
|
|
}
|
|
|
return null;
|
|
@@ -172,6 +178,7 @@ public class OrgService {
|
|
|
|
|
|
/**
|
|
|
* 启用/禁用机构;禁用机构时禁用该机构下的所有用户
|
|
|
+ *
|
|
|
* @param id
|
|
|
* @param enable
|
|
|
* @return
|
|
@@ -181,7 +188,7 @@ public class OrgService {
|
|
|
Org org = orgRepo.findOne(id);
|
|
|
org.setEnable(enable);
|
|
|
orgRepo.save(org);
|
|
|
- if(enable == false){
|
|
|
+ if (enable == false) {
|
|
|
List<UserEntity> users = userRepo.findByOrgId(id);
|
|
|
for (UserEntity user : users) {
|
|
|
user.setEnable(false);
|
|
@@ -192,87 +199,84 @@ public class OrgService {
|
|
|
}
|
|
|
|
|
|
public Page<Org> findAll(Org orgCriteria, Pageable pageable) {
|
|
|
- if(orgCriteria.getType() == null){
|
|
|
+ if (orgCriteria.getType() == null) {
|
|
|
Specification<Org> specification = getSpecification(orgCriteria);
|
|
|
- return orgRepo.findAll(specification,pageable);
|
|
|
+ return orgRepo.findAll(specification, pageable);
|
|
|
}
|
|
|
- //orgCriteria.setType(OrgType.SCHOOL);
|
|
|
- ExampleMatcher exampleMatcher = ExampleMatcher.matching()
|
|
|
- .withMatcher("name", contains())
|
|
|
+ // orgCriteria.setType(OrgType.SCHOOL);
|
|
|
+ ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("name", contains())
|
|
|
.withMatcher("code", contains());
|
|
|
- Example<Org> examExamStudentple = Example.of(orgCriteria,
|
|
|
- exampleMatcher);
|
|
|
+ Example<Org> examExamStudentple = Example.of(orgCriteria, exampleMatcher);
|
|
|
return orgRepo.findAll(examExamStudentple, pageable);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private Specification<Org> getSpecification(Org orgCriteria) {
|
|
|
Specification<Org> specification = (root, query, cb) -> {
|
|
|
- List<Predicate> predicates = new ArrayList<>();
|
|
|
- if(!StringUtils.isEmpty(orgCriteria.getName())){
|
|
|
- predicates.add(cb.equal(root.get("name"),orgCriteria.getName()));
|
|
|
- }
|
|
|
- if(!StringUtils.isEmpty(orgCriteria.getCode())){
|
|
|
- predicates.add(cb.equal(root.get("code"),orgCriteria.getCode()));
|
|
|
- }
|
|
|
- predicates.add(cb.notEqual(root.get("type"), OrgType.SCHOOL));
|
|
|
- predicates.add(cb.equal(root.get("parentId"),orgCriteria.getParentId()));
|
|
|
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
+ List<Predicate> predicates = new ArrayList<>();
|
|
|
+ if (!StringUtils.isEmpty(orgCriteria.getName())) {
|
|
|
+ predicates.add(cb.equal(root.get("name"), orgCriteria.getName()));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(orgCriteria.getCode())) {
|
|
|
+ predicates.add(cb.equal(root.get("code"), orgCriteria.getCode()));
|
|
|
+ }
|
|
|
+ predicates.add(cb.notEqual(root.get("type"), OrgType.SCHOOL));
|
|
|
+ predicates.add(cb.equal(root.get("parentId"), orgCriteria.getParentId()));
|
|
|
+ return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
};
|
|
|
return specification;
|
|
|
}
|
|
|
|
|
|
public List<Org> findAll(Org orgCriteria) {
|
|
|
- ExampleMatcher exampleMatcher = ExampleMatcher.matching()
|
|
|
- .withMatcher("name", contains())
|
|
|
+ ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("name", contains())
|
|
|
.withMatcher("code", contains());
|
|
|
- Example<Org> examExample = Example.of(orgCriteria,exampleMatcher);
|
|
|
- return orgRepo.findAll(examExample);
|
|
|
+ Example<Org> examExample = Example.of(orgCriteria, exampleMatcher);
|
|
|
+ return orgRepo.findAll(examExample);
|
|
|
}
|
|
|
|
|
|
- public Org save(Org org){
|
|
|
- checkCode(org.getParentId(),org.getCode());
|
|
|
+ public Org save(Org org) {
|
|
|
+ checkCode(org.getParentId(), org.getCode());
|
|
|
Org reOrg = orgRepo.save(org);
|
|
|
dataSendService.sendOrg(reOrg);
|
|
|
- //删除缓存
|
|
|
+ // 删除缓存
|
|
|
orgMemRepo.remove(reOrg.getId());
|
|
|
return reOrg;
|
|
|
}
|
|
|
|
|
|
- private void checkCode(Long parentId,String code) {
|
|
|
- Org old = orgRepo.findFirstByParentIdAndCode(parentId,code);
|
|
|
- if(old!=null){
|
|
|
+ private void checkCode(Long parentId, String code) {
|
|
|
+ Org old = orgRepo.findFirstByParentIdAndCode(parentId, code);
|
|
|
+ if (old != null) {
|
|
|
throw new RuntimeException("代码已存在");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public Org update(Long id, Org org) {
|
|
|
Org old = orgRepo.findOne(id);
|
|
|
- if(!old.getCode().equals(org.getCode())){
|
|
|
- checkCode(org.getParentId(),org.getCode());
|
|
|
+ if (!old.getCode().equals(org.getCode())) {
|
|
|
+ checkCode(org.getParentId(), org.getCode());
|
|
|
}
|
|
|
org.setUpdateTime(new Date());
|
|
|
Org reOrg = orgRepo.save(org);
|
|
|
dataSendService.sendOrg(reOrg);
|
|
|
- //删除缓存
|
|
|
+ // 删除缓存
|
|
|
orgMemRepo.remove(reOrg.getId());
|
|
|
return reOrg;
|
|
|
}
|
|
|
|
|
|
- public Org findOne(Long id){
|
|
|
+ public Org findOne(Long id) {
|
|
|
Org cacheOrg = orgMemRepo.get(id);
|
|
|
- if(cacheOrg != null){
|
|
|
+ if (cacheOrg != null) {
|
|
|
return cacheOrg;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
Org org = orgRepo.findOne(id);
|
|
|
- if(org != null){
|
|
|
- orgMemRepo.set(id,org);
|
|
|
+ if (org != null) {
|
|
|
+ orgMemRepo.set(id, org);
|
|
|
}
|
|
|
return org;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- public Org findFirstByParentIdAndCode(Long parentId,String code){
|
|
|
+
|
|
|
+ public Org findFirstByParentIdAndCode(Long parentId, String code) {
|
|
|
return orgRepo.findFirstByParentIdAndCode(parentId, code);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|