|
@@ -9,6 +9,7 @@ import com.rongwei.bscommon.sys.service.QcsLossDetailService;
|
|
|
import com.rongwei.bscommon.sys.service.QcsMainCostService;
|
|
|
import com.rongwei.bscommon.sys.service.QcsMainDetailService;
|
|
|
import com.rongwei.bscommon.sys.utils.ExcelUtils;
|
|
|
+import com.rongwei.bscommon.sys.utils.StringUtil;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
|
|
|
import com.rongwei.rwadmincommon.system.service.SysOrganizationService;
|
|
@@ -26,6 +27,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.lang.reflect.Method;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.text.ParseException;
|
|
@@ -106,6 +109,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainCostDo1.setBasename(qcsMainCostDo.getBasename());
|
|
|
qcsMainCostDo1.setYearmonth(qcsMainCostDo.getYearmonth());
|
|
|
qcsMainCostDo1.setCosttype("1");
|
|
|
+ qcsMainCostDo1.setRoption(params.get("dataSource"));
|
|
|
|
|
|
//明细数据
|
|
|
List<QcsSubjectConfigDo> qcsSubjectConfigDos1 = qcsSubjectConfigDos.stream().filter(s -> s.getSecsubject().equals("预防成本")).collect(Collectors.toList());
|
|
@@ -116,6 +120,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainDetailDo.setThrsubject(qcsSubjectConfigDo.getThrsubject());
|
|
|
qcsMainDetailDo.setFousubject(qcsSubjectConfigDo.getFousubject());
|
|
|
qcsMainDetailDo.setSort(qcsSubjectConfigDo.getSort());
|
|
|
+ qcsMainDetailDo.setRoption(params.get("dataSource"));
|
|
|
qcsMainDetailDoList.add(qcsMainDetailDo);
|
|
|
}
|
|
|
}
|
|
@@ -139,6 +144,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainCostDo2.setBasename(qcsMainCostDo.getBasename());
|
|
|
qcsMainCostDo2.setYearmonth(qcsMainCostDo.getYearmonth());
|
|
|
qcsMainCostDo2.setCosttype("2");
|
|
|
+ qcsMainCostDo2.setRoption(params.get("dataSource"));
|
|
|
|
|
|
//明细数据
|
|
|
List<QcsSubjectConfigDo> qcsSubjectConfigDos2 = qcsSubjectConfigDos.stream().filter(s -> s.getSecsubject().equals("鉴定成本")).collect(Collectors.toList());
|
|
@@ -149,6 +155,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainDetailDo.setThrsubject(qcsSubjectConfigDo.getThrsubject());
|
|
|
qcsMainDetailDo.setFousubject(qcsSubjectConfigDo.getFousubject());
|
|
|
qcsMainDetailDo.setSort(qcsSubjectConfigDo.getSort());
|
|
|
+ qcsMainDetailDo.setRoption(params.get("dataSource"));
|
|
|
qcsMainDetailDoList.add(qcsMainDetailDo);
|
|
|
}
|
|
|
}
|
|
@@ -204,6 +211,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainCostDo3.setBasename(qcsMainCostDo.getBasename());
|
|
|
qcsMainCostDo3.setYearmonth(qcsMainCostDo.getYearmonth());
|
|
|
qcsMainCostDo3.setCosttype("3");
|
|
|
+ qcsMainCostDo3.setRoption(params.get("dataSource"));
|
|
|
|
|
|
//明细
|
|
|
// QcsLossDetailDo qcsLossDetailDo3 = new QcsLossDetailDo();
|
|
@@ -263,6 +271,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainCostDo4.setBasename(qcsMainCostDo.getBasename());
|
|
|
qcsMainCostDo4.setYearmonth(qcsMainCostDo.getYearmonth());
|
|
|
qcsMainCostDo4.setCosttype("4");
|
|
|
+ qcsMainCostDo4.setRoption(params.get("dataSource"));
|
|
|
|
|
|
//明细
|
|
|
// QcsLossDetailDo qcsLossDetailDo4 = new QcsLossDetailDo();
|
|
@@ -470,6 +479,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
String yearMonth = "";
|
|
|
String costId = SecurityUtil.getUUID();
|
|
|
List<String> hasThrSub = new ArrayList<>();//已存在的三级科目
|
|
|
+ QcsMainCostDo oldMainCostDo = null;//未提交的旧数据
|
|
|
for (int i = 0; i <= lastRowNum; i++) {
|
|
|
Row row = sheet.getRow(i);
|
|
|
if (ExcelUtils.isRowEmpty(row) || i == 1) {
|
|
@@ -490,8 +500,11 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
LocalDate date = LocalDate.parse(dateArr[1], inputFormatter);
|
|
|
yearMonth = outputFormatter.format(date);
|
|
|
List<QcsMainCostDo> qcsMainCostDos = qcsMainCostDao.getMainCosts(unitId, yearMonth);
|
|
|
- if (qcsMainCostDos.size() > 0) {
|
|
|
- return R.error(sysOrganizationDo.getFullname() + "已存在" + yearMonth + "的数据");
|
|
|
+ oldMainCostDo = qcsMainCostDos.stream().filter(m -> m.getCosttype().equals(costType)).findAny().orElse(null);
|
|
|
+ if (oldMainCostDo != null) {
|
|
|
+ if (oldMainCostDo.getStatus().equals("已提交")) {
|
|
|
+ return R.error(sysOrganizationDo.getFullname() + "已存在" + yearMonth + "提交的数据");
|
|
|
+ }
|
|
|
}
|
|
|
} catch (DateTimeParseException e) {
|
|
|
return R.error("填表日期格式不正确");
|
|
@@ -549,6 +562,12 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
} else if (hasThrSub.size() == 0 || hasThrSub.size() != qcsSubjectConfigDos.size()) {
|
|
|
return R.error("三级科目与系统科目配置表里不匹配");
|
|
|
} else {
|
|
|
+ //删掉未提交的数据
|
|
|
+ if (oldMainCostDo != null) {
|
|
|
+ qcsMainCostDao.delMainCost(oldMainCostDo.getId());
|
|
|
+ qcsMainCostDao.delMainDetail(oldMainCostDo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
|
|
|
qcsMainCostDo.setId(costId);
|
|
|
qcsMainCostDo.setRoption("导入");
|
|
@@ -564,6 +583,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
otherMap.put("formId", costId);
|
|
|
otherMap.put("insertFlag", "0");
|
|
|
otherMap.put("tjFlag", "0");
|
|
|
+ otherMap.put("dataSource", "导入");
|
|
|
setOtherCost(otherMap);
|
|
|
|
|
|
return R.ok();
|
|
@@ -575,8 +595,7 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
|
|
|
//内外部数据导入
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
- public R importLossMainCost(MultipartFile file, String costType, String unitId) throws IOException, ParseException {
|
|
|
+ public R importLossMainCost(MultipartFile file, String costType, String unitId) throws IOException, ParseException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
|
|
StringBuilder allStrBuilder = new StringBuilder();
|
|
|
QueryWrapper<SysOrganizationDo> entity = new QueryWrapper<SysOrganizationDo>().eq("DELETED", 0).eq("ID", unitId);
|
|
|
SysOrganizationDo sysOrganizationDo = sysOrganizationService.getOne(entity);
|
|
@@ -584,12 +603,15 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
List<QcsLossDetailDo> qcsLossDetailDoList = new ArrayList<>();
|
|
|
List<QcsSubjectConfigDo> qcsSubjectConfigDos = qcsMainCostDao.getSubjectConfig("and COSTTYPE='" + costType + "'");//科目配置
|
|
|
List<QcsPartNoDo> allPartnos = slaveDao.getAllPartnos();//工号及图号信息
|
|
|
+ List<Map<String, Object>> typeResMap = qcsMainCostDao.getTypeRess();
|
|
|
|
|
|
Sheet sheet = new XSSFWorkbook(file.getInputStream()).getSheetAt(0);
|
|
|
int lastRowNum = sheet.getLastRowNum();
|
|
|
String yearMonth = "";
|
|
|
String costId = SecurityUtil.getUUID();
|
|
|
List<String> hasThrSub = new ArrayList<>();//已存在的三级科目
|
|
|
+ Map<Integer, String> subIndex = new HashMap<>();//三级科目对应的字段位置
|
|
|
+ QcsMainCostDo oldMainCostDo = null;//未提交的旧数据
|
|
|
for (int i = 0; i <= lastRowNum; i++) {
|
|
|
Row row = sheet.getRow(i);
|
|
|
if (ExcelUtils.isRowEmpty(row) || i == 1) {
|
|
@@ -610,8 +632,11 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
LocalDate date = LocalDate.parse(dateArr[1], inputFormatter);
|
|
|
yearMonth = outputFormatter.format(date);
|
|
|
List<QcsMainCostDo> qcsMainCostDos = qcsMainCostDao.getMainCosts(unitId, yearMonth);
|
|
|
- if (qcsMainCostDos.size() > 0) {
|
|
|
- return R.error(sysOrganizationDo.getFullname() + "已存在" + yearMonth + "的数据");
|
|
|
+ oldMainCostDo = qcsMainCostDos.stream().filter(m -> m.getCosttype().equals(costType)).findAny().orElse(null);
|
|
|
+ if (oldMainCostDo != null) {
|
|
|
+ if (oldMainCostDo.getStatus().equals("已提交")) {
|
|
|
+ return R.error(sysOrganizationDo.getFullname() + "已存在" + yearMonth + "提交的数据");
|
|
|
+ }
|
|
|
}
|
|
|
} catch (DateTimeParseException e) {
|
|
|
return R.error("填表日期格式不正确");
|
|
@@ -627,11 +652,18 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
if (thrSubStr.equals("合计金额(元)") || hasThrSub.size() == qcsSubjectConfigDos.size()) {
|
|
|
break;
|
|
|
}
|
|
|
- String[] thrSubArr = thrSubStr.split("\\(");
|
|
|
- if (!subjectConfigDo.getThrsubject().equals(thrSubArr[0])) {
|
|
|
- stringBuilder.append(thrSubStr + ",");
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(thrSubStr)) {
|
|
|
+ String[] thrSubArr = thrSubStr.split("\\(");
|
|
|
+ QcsSubjectConfigDo existSubDo = qcsSubjectConfigDos.stream().filter(sc -> sc.getThrsubject().equals(thrSubArr[0])).findAny().orElse(null);
|
|
|
+ if (existSubDo == null) {
|
|
|
+ stringBuilder.append("第" + (thrSubIndex + 1) + "列" + thrSubStr + ",");
|
|
|
+ } else {
|
|
|
+ hasThrSub.add(thrSubArr[0]);
|
|
|
+ subIndex.put(thrSubIndex, "ubject" + existSubDo.getSort());
|
|
|
+ }
|
|
|
} else {
|
|
|
- hasThrSub.add(thrSubArr[0]);
|
|
|
+ stringBuilder.append("第" + (thrSubIndex + 1) + "列科目名称不能为空,");
|
|
|
}
|
|
|
thrSubIndex++;
|
|
|
}
|
|
@@ -642,36 +674,46 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
}
|
|
|
} else {
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ QcsLossDetailDo qcsLossDetailDo = new QcsLossDetailDo();
|
|
|
+ qcsLossDetailDo.setRoption("导入");
|
|
|
|
|
|
//项目工号
|
|
|
String procode = row.getCell(0).toString().replaceAll("\\s+", "");
|
|
|
+ List<QcsPartNoDo> codeParts = new ArrayList<>();
|
|
|
if (StringUtils.isEmpty(procode)) {
|
|
|
stringBuilder.append("项目工号不能为空,");
|
|
|
- continue;
|
|
|
} else if (procode.equals("小计")) {
|
|
|
break;
|
|
|
- }
|
|
|
-
|
|
|
- QcsLossDetailDo qcsLossDetailDo = new QcsLossDetailDo();
|
|
|
- List<QcsPartNoDo> codeParts = allPartnos.stream().filter(c -> c.getDlprojid().equals(procode)).collect(Collectors.toList());
|
|
|
- if (codeParts.size() == 0) {
|
|
|
- stringBuilder.append("项目工号" + procode + "不存在,");
|
|
|
- continue;
|
|
|
} else {
|
|
|
- qcsLossDetailDo.setId(SecurityUtil.getUUID());
|
|
|
- qcsLossDetailDo.setMainid(costId);
|
|
|
- qcsLossDetailDo.setProid(codeParts.get(0).getDtserialid());
|
|
|
- qcsLossDetailDo.setProcode(procode);
|
|
|
- qcsLossDetailDo.setProname(codeParts.get(0).getDlprojname());
|
|
|
+ if (StringUtil.isScience(procode)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(procode);
|
|
|
+ procode = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finalProcode = procode;
|
|
|
+ codeParts = allPartnos.stream().filter(c -> c.getDlprojid().equals(finalProcode)).collect(Collectors.toList());
|
|
|
+ if (codeParts.size() == 0) {
|
|
|
+ stringBuilder.append("项目工号" + procode + "不存在,");
|
|
|
+ } else {
|
|
|
+ qcsLossDetailDo.setId(SecurityUtil.getUUID());
|
|
|
+ qcsLossDetailDo.setMainid(costId);
|
|
|
+ qcsLossDetailDo.setProid(codeParts.get(0).getDtserialid());
|
|
|
+ qcsLossDetailDo.setProcode(procode);
|
|
|
+ qcsLossDetailDo.setProname(codeParts.get(0).getDlprojname());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//部件图号
|
|
|
String partno = row.getCell(2).toString().replaceAll("\\s+", "");
|
|
|
if (StringUtils.isNotEmpty(partno)) {
|
|
|
- List<QcsPartNoDo> partNos = codeParts.stream().filter(p -> p.getDtdrawingno().equals(partno)).collect(Collectors.toList());
|
|
|
+ if (StringUtil.isScience(partno)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(partno);
|
|
|
+ partno = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ String finalPartno = partno;
|
|
|
+ List<QcsPartNoDo> partNos = codeParts.stream().filter(p -> p.getDtdrawingno().equals(finalPartno)).collect(Collectors.toList());
|
|
|
if (partNos.size() == 0) {
|
|
|
- stringBuilder.append("部件图号" + partno + "不存在,");
|
|
|
- continue;
|
|
|
+ stringBuilder.append("部件图号" + partno + "与项目工号" + procode + "不匹配,");
|
|
|
} else {
|
|
|
qcsLossDetailDo.setPartnoid(partNos.get(0).getPartnoid());
|
|
|
qcsLossDetailDo.setPartno(partno);
|
|
@@ -685,10 +727,8 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
List<String> lossType = new ArrayList<>(Arrays.asList("修改单", "检查报告", "整改单", "事故单"));
|
|
|
if (costType.equals("3") && !lossType.contains(losstype)) {
|
|
|
stringBuilder.append("类别不正确,");
|
|
|
- continue;
|
|
|
} else if (costType.equals("4") && !losstype.equals("事故单")) {
|
|
|
stringBuilder.append("外部损失的类别必须为事故单,");
|
|
|
- continue;
|
|
|
} else {
|
|
|
qcsLossDetailDo.setLosstype(losstype);
|
|
|
}
|
|
@@ -697,14 +737,32 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
//编号
|
|
|
String lossno = row.getCell(5).toString().replaceAll("\\s+", "");
|
|
|
if (StringUtils.isNotEmpty(lossno)) {
|
|
|
+ if (StringUtil.isScience(lossno)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(lossno);
|
|
|
+ lossno = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
qcsLossDetailDo.setLossno(lossno);
|
|
|
}
|
|
|
|
|
|
if (costType.equals("3")) {
|
|
|
//修改原因
|
|
|
String modifyreason = row.getCell(6).toString().replaceAll("\\s+", "");
|
|
|
- if (StringUtils.isNotEmpty(modifyreason)) {
|
|
|
-
|
|
|
+ if (StringUtils.isNotEmpty(modifyreason) && StringUtils.isNotEmpty(losstype)) {
|
|
|
+ if (typeResMap == null) {
|
|
|
+ return R.error("系统没有维护类别与原因关系数据");
|
|
|
+ } else {
|
|
|
+ List<Map<String, Object>> typeRes = typeResMap.stream()
|
|
|
+ .filter(map -> {
|
|
|
+ Object loType = map.get("LOSSTYPE");
|
|
|
+ Object resson = map.get("REASON");
|
|
|
+ return loType.equals(losstype) && resson.equals(modifyreason);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if (typeRes.size() == 0) {
|
|
|
+ stringBuilder.append("类别与原因关系不对,");
|
|
|
+ } else {
|
|
|
+ qcsLossDetailDo.setModifyreason(modifyreason);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
//事故问题概述
|
|
@@ -713,10 +771,28 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
}
|
|
|
|
|
|
//三级科目
|
|
|
-
|
|
|
+ int thrSubIndex = 7;
|
|
|
+ for (QcsSubjectConfigDo subjectConfigDo : qcsSubjectConfigDos) {
|
|
|
+ String amountStr = row.getCell(thrSubIndex).toString().replaceAll("\\s+", "");
|
|
|
+ BigDecimal amount = null;
|
|
|
+ if (amountStr != null && StringUtils.isNotEmpty(amountStr)) {
|
|
|
+ String toAmount = convertToTwoDecimalPlaces(amountStr);
|
|
|
+ if (toAmount.equals("金额要为数字,")) {
|
|
|
+ stringBuilder.append(toAmount);
|
|
|
+ } else {
|
|
|
+ amount = new BigDecimal(toAmount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String columnName = "setS" + subIndex.get(thrSubIndex);
|
|
|
+ Method method = QcsLossDetailDo.class.getMethod(columnName, BigDecimal.class);
|
|
|
+ method.invoke(qcsLossDetailDo, amount);
|
|
|
+ thrSubIndex++;
|
|
|
+ }
|
|
|
|
|
|
if (StringUtils.isNotBlank(stringBuilder.toString())) {
|
|
|
allStrBuilder.append("第").append(i + 1).append("行").append(stringBuilder.deleteCharAt(stringBuilder.length() - 1)).append("<br>");
|
|
|
+ } else {
|
|
|
+ qcsLossDetailDoList.add(qcsLossDetailDo);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -727,6 +803,13 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
} else if (hasThrSub.size() == 0 || hasThrSub.size() != qcsSubjectConfigDos.size()) {
|
|
|
return R.error("三级科目与系统科目配置表里不匹配");
|
|
|
} else {
|
|
|
+ //删掉未提交的数据
|
|
|
+ if (oldMainCostDo != null) {
|
|
|
+ qcsMainCostDao.delMainCost(oldMainCostDo.getId());
|
|
|
+ qcsMainCostDao.delLossDetail(oldMainCostDo.getId());
|
|
|
+ qcsMainCostDao.delColConfig(oldMainCostDo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
|
|
|
qcsMainCostDo.setId(costId);
|
|
|
qcsMainCostDo.setRoption("导入");
|
|
@@ -735,20 +818,20 @@ public class QcsMainCostServiceImpl extends ServiceImpl<QcsMainCostDao, QcsMainC
|
|
|
qcsMainCostDo.setYearmonth(format.parse(yearMonth));
|
|
|
qcsMainCostDo.setCosttype(costType);
|
|
|
|
|
|
- return R.ok();
|
|
|
-// Boolean bool1 = qcsMainCostService.save(qcsMainCostDo);
|
|
|
-// Boolean bool2 = qcsLossDetailService.saveBatch(qcsLossDetailDoList);
|
|
|
-// if (bool1 && bool2) {
|
|
|
-// Map<String, String> otherMap = new HashMap<>();
|
|
|
-// otherMap.put("formId", costId);
|
|
|
-// otherMap.put("insertFlag", "1");
|
|
|
-// otherMap.put("tjFlag", "0");
|
|
|
-// setOtherCost(otherMap);
|
|
|
-//
|
|
|
-// return R.ok();
|
|
|
-// } else {
|
|
|
-// return R.error("数据导入异常");
|
|
|
-// }
|
|
|
+// return R.ok();
|
|
|
+ Boolean bool1 = qcsMainCostService.save(qcsMainCostDo);
|
|
|
+ Boolean bool2 = qcsLossDetailService.saveBatch(qcsLossDetailDoList);
|
|
|
+ if (bool1 && bool2) {
|
|
|
+ Map<String, String> otherMap = new HashMap<>();
|
|
|
+ otherMap.put("formId", costId);
|
|
|
+ otherMap.put("insertFlag", "1");
|
|
|
+ otherMap.put("tjFlag", "0");
|
|
|
+ setOtherCost(otherMap);
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ } else {
|
|
|
+ return R.error("数据导入异常");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|