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

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}) where s.dict_id = (select id from sys_dict where dict_code = #{code})
and s.item_text = #{text} and s.item_text = #{text}
</select> </select>
<!--通过查询指定table的 text code 获取字典--> <!--通过查询指定table的 text code 获取字典-->
<select id="queryTableDictItemsByCode" parameterType="String" resultType="com.jero.common.system.vo.DictModel"> <select id="queryTableDictItemsByCode" parameterType="String" resultType="com.jero.common.system.vo.DictModel">
select ${text} as "text",${code} as "value" from ${table} select ${text} as "text",${code} as "value" from ${table}
@@ -167,4 +167,6 @@ public interface ISysDictService extends IService<SysDict> {
/**根据字典code查询中英文名*/ /**根据字典code查询中英文名*/
String queryDictItemByName(String code, String itemName, String cut); 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 * @return
*/ */
@Override @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)) { if (CutEnum.CN.getValue().equals(cut)) {
String dictItemsCnName = sysDictMapper.queryDictTextByKey(code,itemName); String dictItemsCnName = sysDictMapper.queryDictTextByKey(code,itemValue);
return dictItemsCnName; return dictItemsCnName;
}else { }else {
String dictItemsEnName = sysDictMapper.queryDictTextByKeyEn(code,itemName); String dictItemsEnName = sysDictMapper.queryDictTextByKeyEn(code,itemValue);
return dictItemsEnName; 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); Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<ProjectRelatedPersonnel> clazz, String projectId,String cut);
List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records,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.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.util.ExcelLangUtils; import com.jero.modules.project.util.ExcelLangUtils;
import com.jero.modules.system.entity.SysUser; 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.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
@@ -57,6 +58,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Autowired @Autowired
private ISysDictService sysDictService; 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); List<ProjectRelatedPersonnel> records = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
if(CollectionUtils.isNotEmpty(records)) { if(CollectionUtils.isNotEmpty(records)) {
oppositeDisposeData(records,projectId,cut); oppositeDisposeData(records,projectId,cut);
saveBatch(records);
//中英切换提示语 //中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) { if(CutEnum.CN.getValue().equals(cut)) {
result.success("文件导入成功!数据行数:" + records.size()); result.success("文件导入成功!数据行数:" + records.size());
@@ -474,12 +478,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
} }
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
//中英切换提示语 result.error500(e.getMessage());
if(CutEnum.CN.getValue().equals(cut)) {
result.error500("文件导入失败:" + e.getMessage());
}else {
result.error500("File import failed.:" + e.getMessage());
}
} finally { } finally {
try { try {
file.getInputStream().close(); file.getInputStream().close();
@@ -492,29 +491,43 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
} }
/** /**
* 把导入的数据翻译成对应的id * 把导入的数据翻译成对应的id,并校验
* @return * @return
*/ */
@Override
public List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records,String projectId,String cut) { public List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records,String projectId,String cut) {
int row=1; int row=1;
for (ProjectRelatedPersonnel projectRelatedPersonnel:records) { for (ProjectRelatedPersonnel projectRelatedPersonnel:records) {
//责任领域 //责任领域
if(!projectRelatedPersonnel.getDutyTerritory().isEmpty()) { if(!projectRelatedPersonnel.getDutyTerritory().isEmpty()) {
//导入的一条数据,只能有一个责任领域
if (projectRelatedPersonnel.getDutyTerritory().contains(",")) { if (projectRelatedPersonnel.getDutyTerritory().contains(",")) {
//中英切换提示语 //中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) { if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的责任领域只能填一个.请检查第" + row + "行"); throw new JeroBootException("导入的责任领域只能填一个.请检查第" + row + "行");
}else{ } else {
throw new JeroBootException("Only one duty territory can be filled in for import. Please check line " + row); throw new JeroBootException("Only one duty territory can be filled in for import. Please check line " + row);
} }
} } else {
String dictItemsName = sysDictService.queryDictItemByName(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut); // String dictItemsName = sysDictService.queryDictItemByName(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut);
if (dictItemsName.isEmpty()) { String dictItemValue = sysDictService.queryDictItemByValue(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut);
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) { if (StringUtils.isBlank(dictItemValue)) {
throw new JeroBootException("导入的责任领域不存在.请检查第" + row + "行"); //中英切换提示语
}else{ if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("The imported duty territory does not exist. Please check line " + row ); 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{ }else{
@@ -644,7 +657,67 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
} }
projectRelatedPersonnel.setProjectId(projectId); projectRelatedPersonnel.setProjectId(projectId);
row++; row++;
updateDataById(projectRelatedPersonnel);
} }
return records; 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);
}
}
} }