Commit 815e4223 authored by YangZhaoJun1's avatar YangZhaoJun1

Merge branch 'V2.0.3' of http://103.249.252.28:90/lcy/education into V2.0.3

# Conflicts:
#	src/main/java/org/rcisoft/business/barrange/controller/BArrangeController.java
#	src/main/java/org/rcisoft/business/barrange/dao/BSubAgencyRepository.java
#	src/main/java/org/rcisoft/business/barrange/dao/BSubtaskRepository.java
#	src/main/java/org/rcisoft/business/barrange/entity/BArrange.java
#	src/main/java/org/rcisoft/business/barrange/service/BArrangeService.java
#	src/main/java/org/rcisoft/business/barrange/service/impl/BArrangeServiceImpl.java
#	src/main/java/org/rcisoft/business/bcompany/service/impl/BCompanyServiceImpl.java
parents ab73d8e1 dd007a84
...@@ -96,36 +96,39 @@ public class BArrangeController extends PaginationController<BArrange> { ...@@ -96,36 +96,39 @@ public class BArrangeController extends PaginationController<BArrange> {
} }
@ApiOperation(value="excel导入", notes="excel导入排课信息") @ApiOperation(value="excel导入", notes="excel导入排课信息")
@ApiImplicitParam(name = "importFile", value = "excel文件", required = true, dataType = "MultipartFile") @ApiImplicitParams({@ApiImplicitParam(name = "importFile", value = "excel文件", required = true, dataType = "MultipartFile"),
@PreAuthorize("hasRole('ROLE_1001')") @ApiImplicitParam(name = "subAgencyId", value = "b_sub_agency.business_id", required = true, dataType = "varchar")})
@PostMapping(value = "excelImport") @PostMapping(value = "excelImport")
public Result excelImport(MultipartFile importFile,String subAgencyId,String termCode) throws Exception { public Result excelImport(MultipartFile importFile,String subAgencyId) throws Exception {
//将数据插入列表视图(b_schedule_dto)
PersistModel data = bArrangeServiceImpl.importExcel(MultipartFile2HSSFWorkbookConverter.convert(importFile),getToken(),subAgencyId); PersistModel data = bArrangeServiceImpl.importExcel(MultipartFile2HSSFWorkbookConverter.convert(importFile),getToken(),subAgencyId);
bSlScheduleServiceImpl.importFile(MultipartFile2HSSFWorkbookConverter.convert(importFile),getToken(),subAgencyId,termCode); //将数据插入周视图(b_sl_schedule)
bSlScheduleServiceImpl.importFile(MultipartFile2HSSFWorkbookConverter.convert(importFile),getToken(),subAgencyId);
return Result.builder(data, return Result.builder(data,
MessageConstant.MESSAGE_ALERT_SUCCESS, MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR, MessageConstant.MESSAGE_ALERT_ERROR,
data.getInfluenceReason()); data.getInfluenceReason());
} }
@ApiOperation(value="列表视图,通过教学单位code进行查询", notes="列表视图,通过教学单位code进行查询") @ApiOperation(value="按照subAgencyId查列表视图", notes="按照subAgencyId查列表视图")
@ApiImplicitParams({@ApiImplicitParam(name = "subAgencyId", value = "subAgencyId", required = true, dataType = "varchar")})
@GetMapping(value = "/findDtoBybSubtaskId") @GetMapping(value = "/findDtoBybSubtaskId")
public Result findDtoBybSubtaskId(String bSubtaskId) { public Result findDtoBybSubtaskId(String subAgencyId) {
return Result.builder(new PersistModel(1), return Result.builder(new PersistModel(1),
MessageConstant.MESSAGE_ALERT_SUCCESS, MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR, MessageConstant.MESSAGE_ALERT_ERROR,
bArrangeServiceImpl.queryDtoBySubtaskId(bSubtaskId)); bArrangeServiceImpl.queryDtoBySubAgencyId(subAgencyId));
} }
@ApiOperation(value="列表视图,查询全部", notes="列表视图,查询全部") // @ApiOperation(value="查看 集合", notes="查看单 集合")
@GetMapping(value = "/findDtoByMany") // @GetMapping(value = "/findDtoByMany")
public Result findDtoByMany(String agencyCode,String name,String termCode,String teacherCode) { // public Result findDtoByMany(String agencyCode,String name,String termCode,String teacherCode) {
return Result.builder(new PersistModel(1), // return Result.builder(new PersistModel(1),
MessageConstant.MESSAGE_ALERT_SUCCESS, // MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR, // MessageConstant.MESSAGE_ALERT_ERROR,
bArrangeServiceImpl.queryDtoByMany(agencyCode, name, termCode,teacherCode)); // bArrangeServiceImpl.queryDtoByMany(agencyCode, name, termCode,teacherCode));
} // }
@ApiOperation(value="排课审核通过后的开课接口", notes="排课审核通过后的开课接口") @ApiOperation(value="排课审核通过后的开课接口", notes="排课审核通过后的开课接口")
@GetMapping(value = "/changeArrangeToSl") @GetMapping(value = "/changeArrangeToSl")
...@@ -137,6 +140,17 @@ public class BArrangeController extends PaginationController<BArrange> { ...@@ -137,6 +140,17 @@ public class BArrangeController extends PaginationController<BArrange> {
businessId); businessId);
} }
@ApiOperation(value="按照subAgencyId查具体信息与审核内容", notes="按照subAgencyId查具体信息与审核内容")
@ApiImplicitParams({@ApiImplicitParam(name = "subAgencyId", value = "subAgencyId", required = true, dataType = "varchar")})
@GetMapping(value = "/selectSubAgencyAndOption")
public Result selectSubAgencyAndOption(String subAgencyId) {
return Result.builder(new PersistModel(1),
MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR,
bArrangeServiceImpl.selectSubAgencyAndOption(subAgencyId));
}
@ApiOperation(value="发布", notes="发布") @ApiOperation(value="发布", notes="发布")
@ApiImplicitParams({@ApiImplicitParam(name = "businessId", value = "businessId", required = true, dataType = "varchar"),}) @ApiImplicitParams({@ApiImplicitParam(name = "businessId", value = "businessId", required = true, dataType = "varchar"),})
......
...@@ -41,7 +41,7 @@ public interface BArrangeRepository extends BaseMapper<BArrange> { ...@@ -41,7 +41,7 @@ public interface BArrangeRepository extends BaseMapper<BArrange> {
//----------------------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------------------
//维护人员查看全部的排课信息---------------------------------------------------------------------------------------- //维护人员查看全部的排课信息----------------------------------------------------------------------------------------
@Select("<script>select * from b_arrange where 1=1 " @Select("<script>select b_arrange.*,b_term.name from b_arrange left join b_term on b_term.code = b_arrange.term_code where 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = #{delFlag} </if> " + "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = #{delFlag} </if> "
+ "<if test=\"flag !=null and flag != '' \">and flag = #{flag} </if> " + "<if test=\"flag !=null and flag != '' \">and flag = #{flag} </if> "
+ "<if test=\"termCode !=null and termCode != '' \">and term_code = #{termCode} </if> " + "<if test=\"termCode !=null and termCode != '' \">and term_code = #{termCode} </if> "
...@@ -59,9 +59,11 @@ public interface BArrangeRepository extends BaseMapper<BArrange> { ...@@ -59,9 +59,11 @@ public interface BArrangeRepository extends BaseMapper<BArrange> {
@ResultMap(value = "bSubtaskResultMap") @ResultMap(value = "bSubtaskResultMap")
List<BSubtask> queryBSubtask(String businessId); List<BSubtask> queryBSubtask(String businessId);
@Select("<script>select * from b_sub_agency where 1=1 " @Select("<script>select b_sub_agency.*,b_agency.name from b_sub_agency "
+ "and del_flag = 0 " + "left join b_agency on b_sub_agency.agency_code = b_agency.code "
+ "and flag = 1 and subtask_id = #{businessId}" + "where 1=1 "
+ "and b_sub_agency.del_flag = 0 "
+ "and b_sub_agency.flag = 1 and subtask_id = #{businessId}"
+ "</script>") + "</script>")
@ResultMap(value = "BSubAgencyResultMap") @ResultMap(value = "BSubAgencyResultMap")
List<BSubtask> queryBSubtask1(String businessId); List<BSubtask> queryBSubtask1(String businessId);
...@@ -69,12 +71,12 @@ public interface BArrangeRepository extends BaseMapper<BArrange> { ...@@ -69,12 +71,12 @@ public interface BArrangeRepository extends BaseMapper<BArrange> {
//----------------------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------------------
@Select("<script>select * from b_schedule_dto LEFT JOIN b_subtask on b_schedule_dto.subtask_id = b_subtask.business_id " + // @Select("<script>select * from b_schedule_dto LEFT JOIN b_sub_agency on b_schedule_dto.sub_agency_id = b_sub_agency.business_id " +
"LEFT JOIN b_arrange on b_subtask.arrange_id = b_arrange.business_id where 1=1 " + // "LEFT JOIN b_arrange on b_subtask.arrange_id = b_arrange.business_id where 1=1 " +
"and b_subtask.business_id = #{bSubtaskId}" + // "and b_subtask.business_id = #{bSubtaskId}" +
"</script>") // "</script>")
@ResultMap(value = "scheduleDtoResultMap") // @ResultMap(value = "scheduleDtoResultMap")
List<ScheduleDto> queryDtoByAgencySubtaskId(String bSubtaskId); // List<ScheduleDto> queryDtoByAgencySubtaskId(String bSubtaskId);
@Select("<script>select * from b_schedule_dto where sub_agency_id = #{subAgencyId} GROUP BY lesson_code</script>") @Select("<script>select * from b_schedule_dto where sub_agency_id = #{subAgencyId} GROUP BY lesson_code</script>")
@ResultMap(value = "scheduleDtoResultMap") @ResultMap(value = "scheduleDtoResultMap")
...@@ -110,5 +112,22 @@ public interface BArrangeRepository extends BaseMapper<BArrange> { ...@@ -110,5 +112,22 @@ public interface BArrangeRepository extends BaseMapper<BArrange> {
@ResultMap(value = "BaseResultMapByAgencyCode") @ResultMap(value = "BaseResultMapByAgencyCode")
BArrange selectArrangeById(String businessId); BArrange selectArrangeById(String businessId);
@Select("<script>select term_code from b_arrange "
+ "left join b_subtask on b_subtask.arrange_id = b_arrange.business_id "
+ "left join b_sub_agency on b_sub_agency.subtask_id = b_subtask.business_id "
+ "where b_sub_agency.business_id = #{bSubAgencyId} "
+ "</script>")
String selectTermCodeByBSubtaskId(String bSubAgencyId);
@Select("<script>select *,b_term.`name` as term_name,b_subtask.`name` as subtask_name,b_sub_agency.`status` as sub_agency_status from b_sub_agency "
+ "LEFT JOIN b_subtask on b_sub_agency.subtask_id = b_subtask.business_id "
+ "LEFT JOIN b_arrange on b_subtask.arrange_id = b_arrange.business_id "
+ "LEFT JOIN b_term on b_arrange.term_code = b_term.`code` "
+ "WHERE b_sub_agency.business_id = #{bSubAgencyId} "
+ "</script>")
@ResultMap(value = "selectSubAgencyAndOptionResultMap")
BSubAgency selectSubAgencyAndOption(String bSubAgencyId);
} }
package org.rcisoft.business.barrange.dao; package org.rcisoft.business.barrange.dao;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.rcisoft.business.barrange.entity.BSubAgency; import org.rcisoft.business.barrange.entity.BSubAgency;
import org.rcisoft.core.base.BaseMapper; import org.rcisoft.core.base.BaseMapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -17,4 +18,8 @@ public interface BSubAgencyRepository extends BaseMapper<BSubAgency> { ...@@ -17,4 +18,8 @@ public interface BSubAgencyRepository extends BaseMapper<BSubAgency> {
@Select("SELECT subtask_id FROM b_sub_agency where business_id = #{subAgencyId}") @Select("SELECT subtask_id FROM b_sub_agency where business_id = #{subAgencyId}")
String querySubTaskIdBySubAgencyId(String subAgencyId); String querySubTaskIdBySubAgencyId(String subAgencyId);
@Update("update b_sub_agency set del_flag = 1 where subtask_id = #{0}")
void deletePervious(String businessId);
} }
package org.rcisoft.business.barrange.dao; package org.rcisoft.business.barrange.dao;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.rcisoft.business.barrange.entity.BSubtask; import org.rcisoft.business.barrange.entity.BSubtask;
import org.rcisoft.core.base.BaseMapper; import org.rcisoft.core.base.BaseMapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -17,4 +18,8 @@ public interface BSubtaskRepository extends BaseMapper<BSubtask> { ...@@ -17,4 +18,8 @@ public interface BSubtaskRepository extends BaseMapper<BSubtask> {
@Select("SELECT arrange_id FROM b_subtask where business_id = #{subTaskId}") @Select("SELECT arrange_id FROM b_subtask where business_id = #{subTaskId}")
String queryArrangeIdById(String subTaskId); String queryArrangeIdById(String subTaskId);
@Update("update b_subtask set del_flag = 1 where arrange_id = #{0}")
void deleteSubtask(String businessId);
} }
...@@ -50,5 +50,8 @@ public class BArrange extends IdEntity<BArrange> { ...@@ -50,5 +50,8 @@ public class BArrange extends IdEntity<BArrange> {
this.businessId = businessId; this.businessId = businessId;
this.status = status; this.status = status;
} }
@Transient
private String termName;
} }
...@@ -3,10 +3,14 @@ package org.rcisoft.business.barrange.entity; ...@@ -3,10 +3,14 @@ package org.rcisoft.business.barrange.entity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.rcisoft.business.bagency.entity.BAgency;
import org.rcisoft.business.bopinion.entity.BOpinion;
import org.rcisoft.core.entity.IdEntity; import org.rcisoft.core.entity.IdEntity;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
@Entity @Entity
@Data @Data
...@@ -23,6 +27,20 @@ public class BSubAgency extends IdEntity<BSubAgency> { ...@@ -23,6 +27,20 @@ public class BSubAgency extends IdEntity<BSubAgency> {
private String status; private String status;
@Transient
private String agencyName;
@Transient
private String termName;
@Transient
private String termCode;
@Transient
private String subtaskName;
@Transient
private List<BOpinion> childList;
public BSubAgency(String businessId, String status) { public BSubAgency(String businessId, String status) {
this.businessId = businessId; this.businessId = businessId;
......
...@@ -2,6 +2,7 @@ package org.rcisoft.business.barrange.service; ...@@ -2,6 +2,7 @@ package org.rcisoft.business.barrange.service;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.rcisoft.business.barrange.entity.BArrange; import org.rcisoft.business.barrange.entity.BArrange;
import org.rcisoft.business.barrange.entity.BSubAgency;
import org.rcisoft.business.barrange.entity.ScheduleDto; import org.rcisoft.business.barrange.entity.ScheduleDto;
import org.rcisoft.core.model.PersistModel; import org.rcisoft.core.model.PersistModel;
import org.rcisoft.core.aop.PageUtil; import org.rcisoft.core.aop.PageUtil;
...@@ -46,7 +47,7 @@ public interface BArrangeService { ...@@ -46,7 +47,7 @@ public interface BArrangeService {
PersistModel importExcel(HSSFWorkbook convert, String token , String subtaskId); PersistModel importExcel(HSSFWorkbook convert, String token , String subtaskId);
List<ScheduleDto> queryDtoBySubtaskId(String bSubtaskId); List<ScheduleDto> queryDtoBySubAgencyId(String SubAgencyId);
List<ScheduleDto> queryDtoByMany(String agencyCode,String name,String termCode,String teacherCode); List<ScheduleDto> queryDtoByMany(String agencyCode,String name,String termCode,String teacherCode);
...@@ -54,4 +55,6 @@ public interface BArrangeService { ...@@ -54,4 +55,6 @@ public interface BArrangeService {
int changeArrangeToSl(String businessId, String subTaskId ,String termCode); int changeArrangeToSl(String businessId, String subTaskId ,String termCode);
PersistModel release(String businessId); PersistModel release(String businessId);
BSubAgency selectSubAgencyAndOption(String subAgencyId);
} }
...@@ -153,46 +153,38 @@ public class BArrangeServiceImpl implements BArrangeService { ...@@ -153,46 +153,38 @@ public class BArrangeServiceImpl implements BArrangeService {
@Override @Override
public PersistModel merge(String json){ public PersistModel merge(String json){
BArrange bArrange = new BArrange(); BArrange bArrange = new BArrange();
//json解析
JSONObject jsonObject = JSONObject.fromObject(json); JSONObject jsonObject = JSONObject.fromObject(json);
//arrange对象修改操作
JSONObject arrange = jsonObject.getJSONObject("arrange"); JSONObject arrange = jsonObject.getJSONObject("arrange");
if (arrange.get("desc") != null){ bArrange.setDescription(arrange.getString("desc"));
bArrange.setDescription(arrange.getString("desc")); bArrange.setTermCode(arrange.getString("termCode"));
}
if (arrange.get("termCode") != null){
bArrange.setTermCode(arrange.getString("termCode"));
}
bArrange.setBusinessId(arrange.getString("businessId")); bArrange.setBusinessId(arrange.getString("businessId"));
if (arrange.get("desc") != null || arrange.get("termCode") != null){ bArrangeRepository.updateByPrimaryKeySelective(bArrange);
bArrangeRepository.updateByPrimaryKeySelective(bArrange); //清除原来的subTask
} bSubtaskRepository.deleteSubtask(arrange.getString("businessId"));
if (arrange.get("childList") != null){ //重新添加subTask
JSONArray childList = arrange.getJSONArray("childList"); JSONArray childList = arrange.getJSONArray("childList");
for(int i = 0; i < childList.size() ; i++){ for(int i = 0; i < childList.size() ; i++){
JSONObject subtask = childList.getJSONObject(i); JSONObject subtask = childList.getJSONObject(i);
BSubtask bSubtask = new BSubtask(); BSubtask bSubtask = new BSubtask();
if (subtask.get("businessId") != null){ bSubtask.setName(subtask.getString("name"));
bSubtask.setBusinessId(subtask.getString("businessId")); bSubtask.setArrangeId(arrange.getString("businessId"));
} UserUtil.setCurrentPersistOperation(bSubtask);
if (subtask.get("name") != null){ bSubtaskRepository.insertSelective(bSubtask);
bSubtask.setName(subtask.getString("name")); JSONArray childList2 = subtask.getJSONArray("childList");
bSubtaskRepository.updateByPrimaryKeySelective(bSubtask); for(int j = 0; j < childList2.size() ; j++){
} JSONObject agency = childList2.getJSONObject(j);
if (subtask.get("childList") != null){ BSubAgency bSubAgency = new BSubAgency();
JSONArray childList2 = subtask.getJSONArray("childList"); if (agency.get("agencyCode") != null){
for(int j = 0; j < childList2.size() ; j++){ bSubAgency.setAgencyCode(agency.getString("agencyCode"));
JSONObject agency = childList2.getJSONObject(j); }
BSubAgency bSubAgency = new BSubAgency(); //再插入新记录
if (agency.get("agencyCode") != null){ UserUtil.setCurrentPersistOperation(bSubAgency);
bSubAgency.setAgencyCode(agency.getString("agencyCode")); bSubAgency.setSubtaskId(bSubtask.getBusinessId());
} bSubAgencyRepository.insertSelective(bSubAgency);
if (agency.get("businessId") != null){
bSubAgency.setBusinessId(agency.getString("businessId"));
bSubAgencyRepository.updateByPrimaryKeySelective(bSubAgency);
}
}
} }
} }
}
return new PersistModel(1); return new PersistModel(1);
} }
...@@ -339,8 +331,8 @@ public class BArrangeServiceImpl implements BArrangeService { ...@@ -339,8 +331,8 @@ public class BArrangeServiceImpl implements BArrangeService {
} }
@Override @Override
public List<ScheduleDto> queryDtoBySubtaskId(String bSubtaskId) { public List<ScheduleDto> queryDtoBySubAgencyId(String SubAgencyId) {
return bArrangeRepository.queryDtoByAgencySubtaskId(bSubtaskId); return bArrangeRepository.queryDtoBySubAgencyId(SubAgencyId);
} }
@Override @Override
...@@ -416,9 +408,12 @@ public class BArrangeServiceImpl implements BArrangeService { ...@@ -416,9 +408,12 @@ public class BArrangeServiceImpl implements BArrangeService {
@Override @Override
public PersistModel release(String businessId) { public PersistModel release(String businessId) {
BArrange bArrange = new BArrange(businessId,"2"); BArrange bArrange = new BArrange(businessId, "2");
int line = bArrangeRepository.updateByPrimaryKeySelective(bArrange); int line = bArrangeRepository.updateByPrimaryKeySelective(bArrange);
return new PersistModel(line); return new PersistModel(line);
} }
public BSubAgency selectSubAgencyAndOption(String subAgencyId) {
return bArrangeRepository.selectSubAgencyAndOption(subAgencyId);
}
} }
...@@ -121,4 +121,10 @@ public class BCompanyServiceImpl implements BCompanyService{ ...@@ -121,4 +121,10 @@ public class BCompanyServiceImpl implements BCompanyService{
int line = bCompanyRepository.updateByPrimaryKeySelective(company); int line = bCompanyRepository.updateByPrimaryKeySelective(company);
return new PersistModel(line); return new PersistModel(line);
} }
} }
...@@ -83,14 +83,10 @@ public class BOpinionServiceImpl implements BOpinionService{ ...@@ -83,14 +83,10 @@ public class BOpinionServiceImpl implements BOpinionService{
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT) @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override @Override
public PersistModel save(String opinion,String id) { public PersistModel save(String opinion,String id) {
BSubtask bSubtask = bOpinionRepository.querySubtaskInfo(id);
BOpinion bOpinion = new BOpinion(); BOpinion bOpinion = new BOpinion();
bOpinion.setCommonBusinessId();
bOpinion.setOpinion(opinion); bOpinion.setOpinion(opinion);
bOpinion.setArrangeId(bSubtask.getArrangeId()); bOpinion.setSlId(id);
bOpinion.setSubtaskId(bSubtask.getBusinessId()); UserUtil.setCurrentPersistOperation(bOpinion);
Date day=new Date();
bOpinion.setCreateDate(day);
int line = bOpinionRepository.insertSelective(bOpinion); int line = bOpinionRepository.insertSelective(bOpinion);
return new PersistModel(line); return new PersistModel(line);
} }
......
...@@ -51,7 +51,7 @@ public interface BSlScheduleService { ...@@ -51,7 +51,7 @@ public interface BSlScheduleService {
PersistModel importFile(HSSFWorkbook hwb, String token , String subAgencyId , String termCode); PersistModel importFile(HSSFWorkbook hwb, String token , String subAgencyId);
ScheduleResult queryMoreBSlSchedules(String week, String subAgencyId, String termCode); ScheduleResult queryMoreBSlSchedules(String week, String subAgencyId, String termCode);
} }
...@@ -2,6 +2,7 @@ package org.rcisoft.business.bslschedule.service.impl; ...@@ -2,6 +2,7 @@ package org.rcisoft.business.bslschedule.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.rcisoft.business.barrange.dao.BArrangeRepository;
import org.rcisoft.business.barrange.entity.ScheduleDto; import org.rcisoft.business.barrange.entity.ScheduleDto;
import org.rcisoft.business.bcoursecode.dao.BCourseCodeRepository; import org.rcisoft.business.bcoursecode.dao.BCourseCodeRepository;
import org.rcisoft.business.bcoursecode.entity.BCourseCode; import org.rcisoft.business.bcoursecode.entity.BCourseCode;
...@@ -53,6 +54,9 @@ public class BSlScheduleServiceImpl implements BSlScheduleService { ...@@ -53,6 +54,9 @@ public class BSlScheduleServiceImpl implements BSlScheduleService {
@Autowired @Autowired
private BCourseCodeRepository bCourseCodeRepository; private BCourseCodeRepository bCourseCodeRepository;
@Autowired
private BArrangeRepository bArrangeRepository;
private static Map<String,Date> timeMap; private static Map<String,Date> timeMap;
private static String termCode; private static String termCode;
...@@ -127,8 +131,8 @@ public class BSlScheduleServiceImpl implements BSlScheduleService { ...@@ -127,8 +131,8 @@ public class BSlScheduleServiceImpl implements BSlScheduleService {
} }
@Override @Override
public PersistModel importFile(HSSFWorkbook hwb, String token, String subAgencyId, String termCode1) { public PersistModel importFile(HSSFWorkbook hwb, String token, String subAgencyId) {
termCode = termCode1; termCode = bArrangeRepository.selectTermCodeByBSubtaskId(subAgencyId);
BTerm bTerm = bTermRepository.queryBtermByCode(termCode).get(0); BTerm bTerm = bTermRepository.queryBtermByCode(termCode).get(0);
//获取时间集合 //获取时间集合
timeMap = FindTime.findTime(bTerm.getStartDate(),bTerm.getEndDate()); timeMap = FindTime.findTime(bTerm.getStartDate(),bTerm.getEndDate());
......
...@@ -126,7 +126,7 @@ public class BStudentServiceImpl implements BStudentService { ...@@ -126,7 +126,7 @@ public class BStudentServiceImpl implements BStudentService {
ArrayList<SysUser> users = new ArrayList<SysUser>(); ArrayList<SysUser> users = new ArrayList<SysUser>();
ArrayList<UserRole> userRoles = new ArrayList<UserRole>(); ArrayList<UserRole> userRoles = new ArrayList<UserRole>();
String[] headers = {"学号", "学生姓名", "性别","邮箱","年级"}; String[] headers = {"学号", "学生姓名", "性别","年级"};
ArrayList<String[]> values = ExcelUtil.importExcel(hwb, headers,true,1); //获取excel数据 ArrayList<String[]> values = ExcelUtil.importExcel(hwb, headers,true,1); //获取excel数据
if (values.size()<=0){ if (values.size()<=0){
...@@ -162,21 +162,21 @@ public class BStudentServiceImpl implements BStudentService { ...@@ -162,21 +162,21 @@ public class BStudentServiceImpl implements BStudentService {
} }
//判断3:邮箱是否存在、格式是否正确; //判断3:邮箱是否存在、格式是否正确;
SysUser user2 = new SysUser(); // SysUser user2 = new SysUser();
user2.setEmail(value[3]); // user2.setEmail(value[3]);
boolean nullEmail = StringUtils.isEmpty(value[3]); // boolean nullEmail = StringUtils.isEmpty(value[3]);
boolean emailCheck = RegexValidateUtil.checkEmail(value[3]); // boolean emailCheck = RegexValidateUtil.checkEmail(value[3]);
boolean emailRepeat = sysUserMapper.selectOne(user2)!=null; // boolean emailRepeat = sysUserMapper.selectOne(user2)!=null;
if(nullEmail||!emailCheck||emailRepeat){ // if(nullEmail||!emailCheck||emailRepeat){
valuesEmailExist.add(value[3]); // valuesEmailExist.add(value[3]);
continue; // continue;
} // }
//判断4:学年是否存在,存在才能录入 //判断4:学年是否存在,存在才能录入
BStudent bs = new BStudent(); BStudent bs = new BStudent();
bs.setGradeCode(value[4]); bs.setGradeCode(value[3]);
if (bStudentRepository.checkStudentGrade(bs).size() == 0){ if (bStudentRepository.checkStudentGrade(bs).size() == 0){
valuesGrade.add(value[4]); valuesGrade.add(value[3]);
continue; continue;
} }
...@@ -191,7 +191,7 @@ public class BStudentServiceImpl implements BStudentService { ...@@ -191,7 +191,7 @@ public class BStudentServiceImpl implements BStudentService {
value[2] = ""; value[2] = "";
//1. 添加user //1. 添加user
SysUser user = new SysUser(value[0], passwordEncoder.encode(global.getDEFAULT_PASSWORD()), value[1], value[2]); //学号,密码,姓名,性别; SysUser user = new SysUser(value[0], passwordEncoder.encode(global.getDEFAULT_PASSWORD()), value[1], value[2]); //学号,密码,姓名,性别;
user.setEmail(value[3]); // user.setEmail(value[3]);
UserUtil.setCurrentPersistOperation(user); UserUtil.setCurrentPersistOperation(user);
//2 创建gitlab账户 //2 创建gitlab账户
/*GitUser gitUser = new GitUser(); /*GitUser gitUser = new GitUser();
...@@ -212,7 +212,7 @@ public class BStudentServiceImpl implements BStudentService { ...@@ -212,7 +212,7 @@ public class BStudentServiceImpl implements BStudentService {
//创建完Gitlab账户后,将完整的User信息和UserRole计入users和userRoles中等待插入数据库 //创建完Gitlab账户后,将完整的User信息和UserRole计入users和userRoles中等待插入数据库
BStudent bStudent = new BStudent(value[0]); BStudent bStudent = new BStudent(value[0]);
bStudent.setGradeCode(value[4]); bStudent.setGradeCode(value[3]);
UserUtil.setCurrentPersistOperation(bStudent); UserUtil.setCurrentPersistOperation(bStudent);
if (!students.contains(bStudent)) { if (!students.contains(bStudent)) {
students.add(bStudent); students.add(bStudent);
......
...@@ -40,6 +40,9 @@ public class BTeacherController extends PaginationController<BTeacher> { ...@@ -40,6 +40,9 @@ public class BTeacherController extends PaginationController<BTeacher> {
@ApiOperation(value="添加/编辑教师信息", notes="businessId为空时是添加方法,不为空时是修改方法") @ApiOperation(value="添加/编辑教师信息", notes="businessId为空时是添加方法,不为空时是修改方法")
@ApiImplicitParams({@ApiImplicitParam(name = "businessId", value = "businessId", required = false, dataType = "varchar"), @ApiImplicitParams({@ApiImplicitParam(name = "businessId", value = "businessId", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "code", value = "教师工号(1-11)", required = true, dataType = "varchar"), @ApiImplicitParam(name = "code", value = "教师工号(1-11)", required = true, dataType = "varchar"),
@ApiImplicitParam(name = "email", value = "邮箱", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "name", value = "教室姓名", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "sex", value = "性别", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "isRecommend", value = "0:未推荐,1:推荐", required = false, dataType = "varchar"), @ApiImplicitParam(name = "isRecommend", value = "0:未推荐,1:推荐", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "recommendDate", value = "推荐时间,排序依据", required = false, dataType = "varchar"), @ApiImplicitParam(name = "recommendDate", value = "推荐时间,排序依据", required = false, dataType = "varchar"),
@ApiImplicitParam(name = "recommendOrder", value = "推荐排序", required = false, dataType = "varchar"), @ApiImplicitParam(name = "recommendOrder", value = "推荐排序", required = false, dataType = "varchar"),
......
...@@ -117,19 +117,19 @@ public class BTeacherServiceImpl implements BTeacherService { ...@@ -117,19 +117,19 @@ public class BTeacherServiceImpl implements BTeacherService {
} }
//判断3:邮箱是否存在、格式是否正确; //判断3:邮箱是否存在、格式是否正确;
SysUser user2 = new SysUser(); // SysUser user2 = new SysUser();
user2.setEmail(value[3]); // user2.setEmail(value[3]);
boolean nullEmail = StringUtils.isEmpty(value[3]); // boolean nullEmail = StringUtils.isEmpty(value[3]);
boolean emailCheck = RegexValidateUtil.checkEmail(value[3]); // boolean emailCheck = RegexValidateUtil.checkEmail(value[3]);
boolean emailRepeat = sysUserMapper.selectOne(user2)!=null; // boolean emailRepeat = sysUserMapper.selectOne(user2)!=null;
if(nullEmail||!emailCheck||emailRepeat){ // if(nullEmail||!emailCheck||emailRepeat){
valuesEmailExist.add(value[1]); // valuesEmailExist.add(value[3]);
continue; // continue;
} // }
//判断4:教师的所属教学单位是否存在,存在才能添加; //判断4:教师的所属教学单位是否存在,存在才能添加;
if (sysUserMapper.checkTeacherAgency(value[4]).size() == 0){ if (sysUserMapper.checkTeacherAgency(value[3]).size() == 0){
valuesAgencyExist.add(value[4]); valuesAgencyExist.add(value[3]);
continue; continue;
} }
...@@ -145,7 +145,7 @@ public class BTeacherServiceImpl implements BTeacherService { ...@@ -145,7 +145,7 @@ public class BTeacherServiceImpl implements BTeacherService {
//1. 添加user //1. 添加user
SysUser user = new SysUser(value[0], passwordEncoder.encode(global.getDEFAULT_PASSWORD()), value[1], value[2]); //教师工号,密码,姓名,性别; SysUser user = new SysUser(value[0], passwordEncoder.encode(global.getDEFAULT_PASSWORD()), value[1], value[2]); //教师工号,密码,姓名,性别;
user.setEmail(value[3]); // user.setEmail(value[3]);
UserUtil.setCurrentPersistOperation(user); UserUtil.setCurrentPersistOperation(user);
//2 创建gitlab账户 //2 创建gitlab账户
/*GitUser gitUser = new GitUser(); /*GitUser gitUser = new GitUser();
...@@ -165,7 +165,7 @@ public class BTeacherServiceImpl implements BTeacherService { ...@@ -165,7 +165,7 @@ public class BTeacherServiceImpl implements BTeacherService {
userRole.setCommonBusinessId(); userRole.setCommonBusinessId();
//创建完Gitlab账户后,将完整的User信息和UserRole计入users和userRoles中等待插入数据库 //创建完Gitlab账户后,将完整的User信息和UserRole计入users和userRoles中等待插入数据库
BTeacher bTeacher= new BTeacher(value[0],value[4]); BTeacher bTeacher= new BTeacher(value[0],value[3]);
UserUtil.setCurrentPersistOperation(bTeacher); UserUtil.setCurrentPersistOperation(bTeacher);
if (!teachers.contains(bTeacher)) { if (!teachers.contains(bTeacher)) {
teachers.add(bTeacher); teachers.add(bTeacher);
...@@ -192,9 +192,9 @@ public class BTeacherServiceImpl implements BTeacherService { ...@@ -192,9 +192,9 @@ public class BTeacherServiceImpl implements BTeacherService {
if(valuesShort.size()>0){ if(valuesShort.size()>0){
result+="以下教师的工号位数不在8~15位之间:"+ JSON.toJSONString(valuesShort)+"。"; result+="以下教师的工号位数不在8~15位之间:"+ JSON.toJSONString(valuesShort)+"。";
} }
if(valuesEmailExist.size()>0){ // if(valuesEmailExist.size()>0){
result+="以下教师邮箱已注册或格式不正确:"+ JSON.toJSONString(valuesEmailExist)+"。"; // result+="以下教师邮箱已注册或格式不正确:"+ JSON.toJSONString(valuesEmailExist)+"。";
} // }
if (valuesAgencyExist.size()>0){ if (valuesAgencyExist.size()>0){
result+="以下教师的所属教学单位不存在:"+JSON.toJSONString(valuesAgencyExist)+"。"; result+="以下教师的所属教学单位不存在:"+JSON.toJSONString(valuesAgencyExist)+"。";
} }
...@@ -242,8 +242,11 @@ public class BTeacherServiceImpl implements BTeacherService { ...@@ -242,8 +242,11 @@ public class BTeacherServiceImpl implements BTeacherService {
user1.setEmail(model.getEmail()); user1.setEmail(model.getEmail());
user1.setDelFlag("0"); user1.setDelFlag("0");
user1.setFlag("1"); user1.setFlag("1");
if(sysUserMapper.selectOne(user1)!=null) if(user1.getEmail()!=null) {
{throw new ServiceException(ResultServiceEnums.EMAIL_EXISTS);} if (sysUserMapper.selectOne(user1) != null) {
throw new ServiceException(ResultServiceEnums.EMAIL_EXISTS);
}
}
//1添加用户 //1添加用户
user.setHeadPic(global.getDEFAULT_TEACHER_LOCATION()); user.setHeadPic(global.getDEFAULT_TEACHER_LOCATION());
UserUtil.setCurrentPersistOperation(user); UserUtil.setCurrentPersistOperation(user);
......
...@@ -31,6 +31,7 @@ public class ExcelDownloadController { ...@@ -31,6 +31,7 @@ public class ExcelDownloadController {
private static final String SL_FILE_NAME = "sl.xls"; private static final String SL_FILE_NAME = "sl.xls";
private static final String ROOM_FILE_NAME = "room.xls"; private static final String ROOM_FILE_NAME = "room.xls";
private static final String BUSINESS_CLASS = "business-class.xls"; private static final String BUSINESS_CLASS = "business-class.xls";
private static final String IMPORT_DTO = "import-dto.xls";
@Autowired @Autowired
private Global global; private Global global;
...@@ -97,6 +98,9 @@ public class ExcelDownloadController { ...@@ -97,6 +98,9 @@ public class ExcelDownloadController {
case "9": case "9":
name = BUSINESS_CLASS; name = BUSINESS_CLASS;
break; break;
case "10":
name = IMPORT_DTO;
break;
} }
return name; return name;
} }
......
...@@ -51,7 +51,6 @@ public class SysRoleController extends PaginationController<SysRole> { ...@@ -51,7 +51,6 @@ public class SysRoleController extends PaginationController<SysRole> {
MessageConstant.MESSAGE_ALERT_SUCCESS, MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR, MessageConstant.MESSAGE_ALERT_ERROR,
sysRole); sysRole);
} }
...@@ -72,7 +71,6 @@ public class SysRoleController extends PaginationController<SysRole> { ...@@ -72,7 +71,6 @@ public class SysRoleController extends PaginationController<SysRole> {
@ApiImplicitParam(name = "menus", value = "菜单id,逗号间隔", required = true, dataType = "varchar")}) @ApiImplicitParam(name = "menus", value = "菜单id,逗号间隔", required = true, dataType = "varchar")})
@PostMapping(value = "/rolePermission") @PostMapping(value = "/rolePermission")
public Result rolePermission(@RequestParam("roleId") String roleId, @RequestParam("menus") String menus ){ public Result rolePermission(@RequestParam("roleId") String roleId, @RequestParam("menus") String menus ){
return Result.builder(sysRoleServiceImpl.doAuthorization(roleId,menus,getToken()), return Result.builder(sysRoleServiceImpl.doAuthorization(roleId,menus,getToken()),
MessageConstant.MESSAGE_ALERT_SUCCESS, MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR, MessageConstant.MESSAGE_ALERT_ERROR,
......
...@@ -110,4 +110,15 @@ public class SysUserController extends PaginationController<SysUser> { ...@@ -110,4 +110,15 @@ public class SysUserController extends PaginationController<SysUser> {
id); id);
} }
@ApiOperation(value="停用/启用用户", notes="停用/启用用户")
@ApiImplicitParam(name = "id", value = "businessId", required = true, dataType = "varchar", paramType = "path")
@PostMapping(value = "/stopOrStart")
public Result stopOrStart(String businessId){
int line = userServiceImpl.stopOrStartUserByUserBusinessId(businessId);
return Result.builder(new PersistModel(line),
MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR,
businessId);
}
} }
...@@ -26,9 +26,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> { ...@@ -26,9 +26,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
List<SysUser> queryUserByName(String username); List<SysUser> queryUserByName(String username);
@Insert("<script>INSERT INTO s_user" + @Insert("<script>INSERT INTO s_user" +
"(create_date,update_date,create_by,update_by,remarks,del_flag,flag,business_id,login_name,password,name,sex,git_lab_id,git_lab_username,git_lab_impression_token,head_pic,email,agency_code)VALUES" + "(create_date,update_date,create_by,update_by,remarks,del_flag,flag,business_id,login_name,password,name,sex,git_lab_id,git_lab_username,git_lab_impression_token,head_pic,email)VALUES" +
"<foreach collection=\"list\" item=\"item\" separator=\",\">" + "<foreach collection=\"list\" item=\"item\" separator=\",\">" +
"( #{item.createDate},#{item.updateDate},#{item.createBy},#{item.updateBy},#{item.remarks},#{item.delFlag},#{item.flag},#{item.businessId},#{item.loginName},#{item.password},#{item.name},#{item.sex},#{item.gitLabId},#{item.gitLabUsername},#{item.gitLabImpressionToken},#{item.headPic},#{item.email},#{item.agencyCode})" + "( #{item.createDate},#{item.updateDate},#{item.createBy},#{item.updateBy},#{item.remarks},#{item.delFlag},#{item.flag},#{item.businessId},#{item.loginName},#{item.password},#{item.name},#{item.sex},#{item.gitLabId},#{item.gitLabUsername},#{item.gitLabImpressionToken},#{item.headPic},#{item.email})" +
"</foreach></script>") "</foreach></script>")
int insertList(List<SysUser> users); int insertList(List<SysUser> users);
...@@ -89,4 +89,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> { ...@@ -89,4 +89,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
@Update("update s_user set flag =#{flag} where login_name = #{loginName} and del_flag = 0 and flag = 1") @Update("update s_user set flag =#{flag} where login_name = #{loginName} and del_flag = 0 and flag = 1")
int stopOrStartUser(SysUser user); int stopOrStartUser(SysUser user);
@Update("update s_user set flag =#{flag} where business_id = #{businessId} ")
int stopOrStartUserByUserBusinessId(SysUser sysUser);
} }
...@@ -26,4 +26,6 @@ public interface SysUserService { ...@@ -26,4 +26,6 @@ public interface SysUserService {
List<SysUser> queryUsersByPagination(PageUtil pageUtil, SysUser sysUser); List<SysUser> queryUsersByPagination(PageUtil pageUtil, SysUser sysUser);
int removeUser(String id, String token); int removeUser(String id, String token);
int stopOrStartUserByUserBusinessId(String businessId);
} }
...@@ -111,4 +111,12 @@ public class SysUserServiceImpl implements SysUserService { ...@@ -111,4 +111,12 @@ public class SysUserServiceImpl implements SysUserService {
} }
return sysUserMapper.resetPassword(userCode,businessId,passwordEncoder.encode(global.getDEFAULT_PASSWORD())); return sysUserMapper.resetPassword(userCode,businessId,passwordEncoder.encode(global.getDEFAULT_PASSWORD()));
} }
@Override
public int stopOrStartUserByUserBusinessId(String businessId){
SysUser sysUser = sysUserMapper.selectByPrimaryKey(businessId);
String status = sysUser.getFlag().equals("0") ? "1":"0";
sysUser.setFlag(status);
return sysUserMapper.stopOrStartUserByUserBusinessId(sysUser);
}
} }
...@@ -11,7 +11,7 @@ server: ...@@ -11,7 +11,7 @@ server:
# org.springframework.web: DEBUG # org.springframework.web: DEBUG
druid: druid:
url: jdbc:mysql://127.0.0.1:3306/edu_db?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false url: jdbc:mysql://192.168.1.125:13318/edu_db?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
username: root username: root
password: root password: root
initial-size: 1 initial-size: 1
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
<result column="agency_code" jdbcType="VARCHAR" property="agencyCode"/> <result column="agency_code" jdbcType="VARCHAR" property="agencyCode"/>
<result column="subtask_id" jdbcType="VARCHAR" property="subtaskId" /> <result column="subtask_id" jdbcType="VARCHAR" property="subtaskId" />
<result column="status" jdbcType="VARCHAR" property="status"/> <result column="status" jdbcType="VARCHAR" property="status"/>
<result column="name" jdbcType="VARCHAR" property="agencyName" />
</resultMap> </resultMap>
<resultMap id="BaseResultMapByAgencyCode" type="org.rcisoft.business.barrange.entity.BArrange"> <resultMap id="BaseResultMapByAgencyCode" type="org.rcisoft.business.barrange.entity.BArrange">
<id column="business_id" jdbcType="VARCHAR" property="businessId"/> <id column="business_id" jdbcType="VARCHAR" property="businessId"/>
...@@ -87,6 +88,7 @@ ...@@ -87,6 +88,7 @@
<result column="term_code" jdbcType="VARCHAR" property="termCode"/> <result column="term_code" jdbcType="VARCHAR" property="termCode"/>
<result column="description" jdbcType="VARCHAR" property="description"/> <result column="description" jdbcType="VARCHAR" property="description"/>
<result column="status" jdbcType="VARCHAR" property="status"/> <result column="status" jdbcType="VARCHAR" property="status"/>
<result column="name" jdbcType="VARCHAR" property="termName" />
<collection property="childList" javaType="ArrayList" column="business_id" ofType="org.rcisoft.business.barrange.entity.BSubtask" <collection property="childList" javaType="ArrayList" column="business_id" ofType="org.rcisoft.business.barrange.entity.BSubtask"
select="org.rcisoft.business.barrange.dao.BArrangeRepository.queryBSubtask" select="org.rcisoft.business.barrange.dao.BArrangeRepository.queryBSubtask"
/> />
...@@ -141,4 +143,16 @@ ...@@ -141,4 +143,16 @@
resultMap="BSubAgencyResultMap"> resultMap="BSubAgencyResultMap">
select * from b_sub_agency where 1=1 and del_flag = 0 and flag = 1 and agency_code = #{agencyCode} and subtask_id = #{subtaskId} select * from b_sub_agency where 1=1 and del_flag = 0 and flag = 1 and agency_code = #{agencyCode} and subtask_id = #{subtaskId}
</select> </select>
<resultMap id="selectSubAgencyAndOptionResultMap" type="org.rcisoft.business.barrange.entity.BSubAgency">
<id column="business_id" jdbcType="VARCHAR" property="businessId"/>
<result column="term_code" jdbcType="VARCHAR" property="termCode"/>
<result column="term_name" jdbcType="VARCHAR" property="termName"/>
<result column="sub_agency_status" jdbcType="VARCHAR" property="status"/>
<result column="subtask_id" jdbcType="VARCHAR" property="subtaskId" />
<result column="subtask_name" jdbcType="VARCHAR" property="subtaskName" />
<collection property="childList" javaType="ArrayList" column="business_id" ofType="org.rcisoft.business.bopinion.entity.BOpinion"
select="org.rcisoft.business.bopinion.dao.BOpinionRepository.queryOpinionBySlId"
/>
</resultMap>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment