项目库相关人员-导入校验

This commit is contained in:
xiejunyu
2022-04-24 17:21:15 +08:00
parent ad7fd4ce1c
commit 62fa749813
5 changed files with 106 additions and 22 deletions
@@ -28,7 +28,6 @@
where s.dict_id = (select id from sys_dict where dict_code = #{code})
and s.item_text = #{text}
</select>
<!--通过查询指定table的 text code 获取字典-->
<select id="queryTableDictItemsByCode" parameterType="String" resultType="com.jero.common.system.vo.DictModel">
select ${text} as "text",${code} as "value" from ${table}
@@ -167,4 +167,6 @@ public interface ISysDictService extends IService<SysDict> {
/**根据字典code查询中英文名*/
String queryDictItemByName(String code, String itemName, String cut);
String queryDictItemByValue(String code, String itemName, String cut);
}
@@ -428,14 +428,23 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
* @return
*/
@Override
public String queryDictItemByName(String code,String itemName,String cut) {
public String queryDictItemByName(String code, String itemName, String cut) {
String itemValue = sysDictMapper.queryDictKeyByText(code, itemName);
if (CutEnum.CN.getValue().equals(cut)) {
String dictItemsCnName = sysDictMapper.queryDictTextByKey(code,itemName);
String dictItemsCnName = sysDictMapper.queryDictTextByKey(code,itemValue);
return dictItemsCnName;
}else {
String dictItemsEnName = sysDictMapper.queryDictTextByKeyEn(code,itemName);
String dictItemsEnName = sysDictMapper.queryDictTextByKeyEn(code,itemValue);
return dictItemsEnName;
}
}
@Override
public String queryDictItemByValue(String code, String itemValue, String cut) {
String dictItemValue= sysDictMapper.queryDictTextByKey(code,itemValue);
return dictItemValue;
}
}
@@ -79,5 +79,6 @@ public interface IProjectRelatedPersonnelService extends IService<ProjectRelated
Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<ProjectRelatedPersonnel> clazz, String projectId,String cut);
List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records,String projectId,String cut);
}
@@ -14,6 +14,7 @@ import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.util.ExcelLangUtils;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictMapper;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.service.ISysUserService;
@@ -57,6 +58,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Autowired
private ISysDictService sysDictService;
@Autowired
private SysDictMapper sysDictMapper;
/**
* 保存
*
@@ -457,7 +461,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
List<ProjectRelatedPersonnel> records = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
if(CollectionUtils.isNotEmpty(records)) {
oppositeDisposeData(records,projectId,cut);
saveBatch(records);
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
result.success("文件导入成功!数据行数:" + records.size());
@@ -474,12 +478,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
}
} catch (Exception e) {
log.error(e.getMessage(), e);
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
result.error500("文件导入失败:" + e.getMessage());
}else {
result.error500("File import failed.:" + e.getMessage());
}
result.error500(e.getMessage());
} finally {
try {
file.getInputStream().close();
@@ -492,29 +491,43 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
}
/**
* 把导入的数据翻译成对应的id
* 把导入的数据翻译成对应的id,并校验
* @return
*/
@Override
public List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records,String projectId,String cut) {
int row=1;
for (ProjectRelatedPersonnel projectRelatedPersonnel:records) {
//责任领域
if(!projectRelatedPersonnel.getDutyTerritory().isEmpty()) {
//导入的一条数据,只能有一个责任领域
if (projectRelatedPersonnel.getDutyTerritory().contains(",")) {
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的责任领域只能填一个.请检查第" + row + "");
}else{
} else {
throw new JeroBootException("Only one duty territory can be filled in for import. Please check line " + row);
}
}
String dictItemsName = sysDictService.queryDictItemByName(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut);
if (dictItemsName.isEmpty()) {
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的责任领域不存在.请检查第" + row + "");
}else{
throw new JeroBootException("The imported duty territory does not exist. Please check line " + row );
} else {
// String dictItemsName = sysDictService.queryDictItemByName(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut);
String dictItemValue = sysDictService.queryDictItemByValue(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut);
if (StringUtils.isBlank(dictItemValue)) {
//中英切换提示语
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的责任领域不存在.请检查第" + row + "");
} else {
throw new JeroBootException("The imported duty territory does not exist. Please check line " + row);
}
}else {
QueryWrapper<ProjectRelatedPersonnel> queryWrapper = new QueryWrapper<>();
//String itemValue = sysDictMapper.queryDictTextByKey(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory());
List<ProjectRelatedPersonnel> idList = list(queryWrapper.select("id").eq("duty_territory", projectRelatedPersonnel.getDutyTerritory()).eq("project_id",projectId));
projectRelatedPersonnel.setId(idList.get(0).getId());
//projectRelatedPersonnel.setDutyTerritory(itemValue);
}
}
}else{
@@ -644,7 +657,67 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
}
projectRelatedPersonnel.setProjectId(projectId);
row++;
updateDataById(projectRelatedPersonnel);
}
return records;
}
//导入时,把传入的数据,拼到原来数据后面
private void updateDataById(ProjectRelatedPersonnel projectRelatedPersonnel) {
List<ProjectRelatedPersonnel> records = projectRelatedPersonnelMapper.queryById(projectRelatedPersonnel.getId());
for (ProjectRelatedPersonnel data : records) {
if (StringUtils.isBlank(data.getLawEngineer())) {//数据库里法规工程师是空的
projectRelatedPersonnel.setLawEngineer(projectRelatedPersonnel.getLawEngineer());
}else{//数据库里不空,原+新
StringBuilder law = new StringBuilder(data.getLawEngineer());
String lawString = law.append(",").append(projectRelatedPersonnel.getLawEngineer()).toString();
//去重
List<String> lawList = Arrays.asList(lawString.split(","));
String lawDistinct = lawList.stream().distinct().collect(Collectors.joining(","));
projectRelatedPersonnel.setLawEngineer(lawDistinct);
}
if (StringUtils.isBlank(data.getEngineeringInterfacePerson())) {//数据库里工程接口人是空的
projectRelatedPersonnel.setEngineeringInterfacePerson(projectRelatedPersonnel.getEngineeringInterfacePerson());
}else{//数据库里不空,原+新
StringBuilder interfacePerson = new StringBuilder(data.getEngineeringInterfacePerson());
String interfaceString = interfacePerson.append(",").append(projectRelatedPersonnel.getEngineeringInterfacePerson()).toString();
//去重
List<String> interfaceList = Arrays.asList(interfaceString.split(","));
String interfaceDistinct = interfaceList.stream().distinct().collect(Collectors.joining(","));
projectRelatedPersonnel.setEngineeringInterfacePerson(interfaceDistinct);
}
if (StringUtils.isBlank(data.getCertificationEngineer())) {//数据库里工程接口人是空的
projectRelatedPersonnel.setCertificationEngineer(projectRelatedPersonnel.getCertificationEngineer());
}else{//数据库里不空,原+新
StringBuilder certification = new StringBuilder(data.getCertificationEngineer());
String certificationString = certification.append(",").append(projectRelatedPersonnel.getCertificationEngineer()).toString();
//去重
List<String> certificationList = Arrays.asList(certificationString.split(","));
String certificationDistinct= certificationList.stream().distinct().collect(Collectors.joining(","));
projectRelatedPersonnel.setCertificationEngineer(certificationDistinct);
}
if (StringUtils.isBlank(data.getRemark())) {//数据库里备注是空的
projectRelatedPersonnel.setRemark(projectRelatedPersonnel.getRemark());
} else {//数据库里备注不是空的
if (StringUtils.isNotBlank(projectRelatedPersonnel.getRemark())) {//导入的备注不是空的
}
if (StringUtils.isNotBlank(projectRelatedPersonnel.getRemark())) {//导入的备注不是是空的,原+新
StringBuilder remark = new StringBuilder(data.getRemark());
projectRelatedPersonnel.setRemark(remark.append(",").append(projectRelatedPersonnel.getRemark()).toString());
} else {
projectRelatedPersonnel.setRemark(data.getRemark());
}
}
Date now = new Date();
projectRelatedPersonnel.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
projectRelatedPersonnel.setUpdateBy(sysUser.getUsername());
saveOrUpdate(projectRelatedPersonnel);
}
}
}