1.优化合同清单导入功能

S
This commit is contained in:
weiyunlong 2025-03-03 17:23:54 +08:00
parent 7b551b4920
commit 6e18060411
1 changed files with 46 additions and 17 deletions

View File

@ -41,6 +41,9 @@ import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -289,7 +292,7 @@ public class ContractFormPlugin extends AbstractFormPlugin implements UploadLis
* 获取数据首行根据每个sheet页第一列属不属于数字判断 * 获取数据首行根据每个sheet页第一列属不属于数字判断
* 第一列不属于数字的行跳过 * 第一列不属于数字的行跳过
*/ */
ArrayList<DynamicObject> dynamicObjects = new ArrayList<>();
Map<String, BigDecimal> amounttotalMap = new HashMap<>(); Map<String, BigDecimal> amounttotalMap = new HashMap<>();
for (Sheet sheet : workbook) { for (Sheet sheet : workbook) {
int rowNum = 0; int rowNum = 0;
@ -307,7 +310,7 @@ public class ContractFormPlugin extends AbstractFormPlugin implements UploadLis
} }
} }
BigDecimal amounttotal =BigDecimal.ZERO; BigDecimal amounttotal =BigDecimal.ZERO;
for (int j = rowNum; j <= rowCountsheet - 1; j++) { for (int j = rowNum; j <= rowCountsheet - 2; j++) {
Row row = sheet.getRow(j); Row row = sheet.getRow(j);
//第一列断号 //第一列断号
String seq = row.getCell(0).toString(); String seq = row.getCell(0).toString();
@ -354,42 +357,66 @@ public class ContractFormPlugin extends AbstractFormPlugin implements UploadLis
break; break;
case 6: case 6:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_decimalqty",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//工程量 String expression = cell.toString();
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
try {
BigDecimal results =BigDecimal.valueOf(Double.parseDouble(engine.eval(expression).toString()));
contractsummarylist.set("qeug_decimalqty", results);
} catch (ScriptException e) {
e.printStackTrace();
// 处理计算失败的情况
}
} }
break; break;
case 7: case 7:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_unitprice",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//综合单价 String expression = cell.toString();
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
try {
BigDecimal results =BigDecimal.valueOf(Double.parseDouble(engine.eval(expression).toString()));
contractsummarylist.set("qeug_unitprice",results);//综合单价
} catch (ScriptException e) {
e.printStackTrace();
// 处理计算失败的情况
}
}
break;
case 8:
if (StringUtils.isNotEmpty(cell.toString())) {
String expression = cell.toString();
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
BigDecimal results = BigDecimal.ZERO;
try {
results =BigDecimal.valueOf(Double.parseDouble(engine.eval(expression).toString()));
contractsummarylist.set("qeug_amounttotal",results);//综合单价
} catch (ScriptException e) {
e.printStackTrace();
// 处理计算失败的情况
}
amounttotal = amounttotal.add(results);
} }
break; break;
case 9: case 9:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
BigDecimal bigDecimal = BigDecimal.valueOf(Double.parseDouble(cell.toString())); contractsummarylist.set("qeug_artificial",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//人工单价
contractsummarylist.set("qeug_amounttotal",bigDecimal);//合计
amounttotal = amounttotal.add(bigDecimal);
} }
break; break;
case 10: case 10:
if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_artificial",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//人工单价
}
break;
case 12:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_provisional",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//辅材单价 contractsummarylist.set("qeug_provisional",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//辅材单价
} }
break; break;
case 13: case 11:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_unitpriceofmainmater",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//主材单价 contractsummarylist.set("qeug_unitpriceofmainmater",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//主材单价
} }
break; break;
case 14: case 12:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_mechanicalunitprice",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//机械,设备单价 contractsummarylist.set("qeug_mechanicalunitprice",BigDecimal.valueOf(Double.parseDouble(cell.toString())));//机械,设备单价
} }
break; break;
case 15: case 13:
if (StringUtils.isNotEmpty(cell.toString())) { if (StringUtils.isNotEmpty(cell.toString())) {
contractsummarylist.set("qeug_remarks",cell);//备注 contractsummarylist.set("qeug_remarks",cell);//备注
} }
@ -398,12 +425,14 @@ public class ContractFormPlugin extends AbstractFormPlugin implements UploadLis
break; break;
} }
} }
SaveServiceHelper.save(new DynamicObject[]{contractsummarylist}); dynamicObjects.add(contractsummarylist);
} }
amounttotalMap.put(sheet.getSheetName(),amounttotal);//一个sheet一个总金额 amounttotalMap.put(sheet.getSheetName(),amounttotal);//一个sheet一个总金额
// this.getView().showSuccessNotification("清单汇总识别--生产明细成功"); // this.getView().showSuccessNotification("清单汇总识别--生产明细成功");
} }
for (DynamicObject dynamicObject : dynamicObjects) {
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
/** /**
* --------------------------------------汇总------------------------------------------------ * --------------------------------------汇总------------------------------------------------
*/ */