|
@@ -85,9 +85,18 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
throw new ServiceException("请传入excel文件");
|
|
|
}
|
|
|
List<ContractInventoryForm> excels = ExcelUtil.read(file, ContractInventoryForm.class);
|
|
|
+ excels = excels.stream()
|
|
|
+ .filter(l->(StringUtils.isNotBlank(l.getImportNumber()) || StringUtils.isNotBlank(l.getFormNumber() ) || StringUtils.isNotBlank(l.getFormName())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
if (excels == null || excels.size() == 0){
|
|
|
- throw new ServiceException("未识别到excel中数据,请检查后重新导入");
|
|
|
+ throw new ServiceException("未检测到excel中清单数据,请检查格式后后重新导入");
|
|
|
}
|
|
|
+ //校验必填字段是否为空
|
|
|
+ excels.stream().forEach(l->{
|
|
|
+ if (StringUtils.isBlank(l.getImportNumber()) || StringUtils.isBlank(l.getFormNumber() ) || StringUtils.isBlank(l.getFormName())){
|
|
|
+ throw new ServiceException("excel中有必填项未填写,请检查(导入编号,清单编号,清单名称)后重新导入");
|
|
|
+ }
|
|
|
+ });
|
|
|
allTotal = excels.size();
|
|
|
List<Integer> firstNode = new ArrayList<>();
|
|
|
//获取当前合同的首节点
|
|
@@ -104,12 +113,12 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
.isNotNull(ContractInventoryForm::getImportNumber));
|
|
|
nodes = allNode.size();
|
|
|
Map<String, ContractInventoryForm> map = allNode.stream().collect(Collectors.toMap(ContractInventoryForm::getImportNumber, l -> l));
|
|
|
- //校验必填字段是否为空,设置通用字段,并且通过导入编号对已经存在的节点做标识
|
|
|
+ //设置通用字段,并且通过导入编号对已经存在的节点做标识
|
|
|
for (int i = 0; i < excels.size(); i++) {
|
|
|
ContractInventoryForm excel = excels.get(i);
|
|
|
- if (StringUtils.isBlank(excel.getImportNumber()) || StringUtils.isBlank(excel.getFormNumber() ) || StringUtils.isBlank(excel.getFormName())){
|
|
|
- throw new ServiceException("excel中有必填项未填写,请检查后重新导入");
|
|
|
- }
|
|
|
+ excel.setImportNumber(excel.getImportNumber().trim());
|
|
|
+ excel.setFormNumber(excel.getFormNumber().trim());
|
|
|
+ excel.setFormName(excel.getFormName().trim());
|
|
|
//校验清单类型是否填写,未填写默认为1
|
|
|
if (excel.getFormType() == null){
|
|
|
excel.setFormType(1);
|
|
@@ -144,6 +153,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
if (size == 1){
|
|
|
lists.add(excels);
|
|
|
}else {
|
|
|
+ //规则是首节点下跟着子节点
|
|
|
for (int i = 0; i < size-1; i++) {
|
|
|
lists.add(excels.subList(firstNode.get(i),firstNode.get(i+1)));
|
|
|
}
|
|
@@ -206,7 +216,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
throw new ServiceException("清单节点:"+f.getFormName()+"未找到上级节点");
|
|
|
}
|
|
|
if (fo.getIsFormNode() == 1){
|
|
|
- throw new ServiceException("清单节点:"+fo.getFormName()+"下还有节点,检查后重新上传excel");
|
|
|
+ throw new ServiceException("清单节点:"+fo.getFormName()+"下还有节点,请检查后重新上传excel");
|
|
|
}
|
|
|
if (f.getStatus() == 0) {
|
|
|
//设置章编号和清单类型,必须根父节点一致
|
|
@@ -235,6 +245,14 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
}
|
|
|
//移除所有已经存在的节点,保存
|
|
|
List<ContractInventoryForm> list = excels.stream().filter(l -> l.getStatus() == 0).collect(Collectors.toList());
|
|
|
+ //判断要新增的数据中,清单编号是否已经存在
|
|
|
+ List<String> collect = list.stream().map(l -> l.getFormNumber()).collect(Collectors.toList());
|
|
|
+ if (nodes != 0 && collect.size() > 0){
|
|
|
+ List<String> numbers = baseMapper.getAllEqualsNumber(contractId,collect);
|
|
|
+ if (numbers.size() > 0){
|
|
|
+ throw new ServiceException("以下清单编号已经存在:["+StringUtils.join(numbers,",")+"],请修改excel后重新导入");
|
|
|
+ }
|
|
|
+ }
|
|
|
endTotal = list.size();
|
|
|
this.saveBatch(list);
|
|
|
|
|
@@ -330,6 +348,15 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
*/
|
|
|
@Override
|
|
|
public void add(ContractInventoryForm form) {
|
|
|
+ if (StringUtils.isNotBlank(form.getFormNumber())) {
|
|
|
+ //判断清单编号是否存在
|
|
|
+ long count = this.count(new LambdaQueryWrapper<ContractInventoryForm>()
|
|
|
+ .eq(ContractInventoryForm::getContractId,form.getContractId())
|
|
|
+ .eq(ContractInventoryForm::getFormNumber,form.getFormNumber()));
|
|
|
+ if (count > 0){
|
|
|
+ throw new ServiceException("新增失败:清单编号不能重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
//如果为增补清单,那么节点类型必须为清单节点
|
|
|
if (form.getIsSupplement() == 1){
|
|
|
if (form.getIsFormNode() == 0){
|
|
@@ -403,6 +430,16 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
|
|
|
public void updateForm(ContractInventoryForm form) {
|
|
|
//获取当前节点信息
|
|
|
ContractInventoryForm nodeInfo = this.getById(form.getId());
|
|
|
+ if (StringUtils.isNotBlank(form.getFormNumber())) {
|
|
|
+ //判断清单编号是否存在
|
|
|
+ long count = this.count(new LambdaQueryWrapper<ContractInventoryForm>()
|
|
|
+ .eq(ContractInventoryForm::getContractId,form.getContractId())
|
|
|
+ .eq(ContractInventoryForm::getFormNumber,form.getFormNumber())
|
|
|
+ .ne(ContractInventoryForm::getId,form.getId()));
|
|
|
+ if (count > 0){
|
|
|
+ throw new ServiceException("修改失败:清单编号不能重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
//判断节点是否已经锁定
|
|
|
if (nodeInfo.getIsLock() == 1){
|
|
|
throw new ServiceException("当前节点已经被锁定不能修改");
|