Compare commits

...

2 Commits

Author SHA1 Message Date
陈绍鑫 f3c6c7d0db Merge remote-tracking branch 'origin/main' into main 2024-11-11 09:35:10 +08:00
陈绍鑫 dd022b1578 代码提交
提交人:陈绍鑫
时间:2024/11/11
内容:成本测算附件修改插件以及实体类
2024-11-11 09:34:55 +08:00
2 changed files with 89 additions and 18 deletions

View File

@ -20,12 +20,22 @@ public class Calculation {
//合价含税
Double entry_amount;
public Calculation(String entry_longnumber, String entry_accountname, String entry_workloadunit, Double entry_adjustcoefficient, Double entry_amount) {
//单价
Double entry_price;
//工程量
Double entry_workload;
public Calculation(String entry_longnumber, String entry_accountname, String entry_workloadunit, Double entry_adjustcoefficient, Double entry_amount,Double entry_price,Double entry_workload) {
this.entry_longnumber = entry_longnumber;
this.entry_accountname = entry_accountname;
this.entry_workloadunit = entry_workloadunit;
this.entry_adjustcoefficient = entry_adjustcoefficient;
this.entry_amount = entry_amount;
this.entry_price = entry_price;
this.entry_workload = entry_workload;
}
public String getEntry_longnumber() {
@ -68,6 +78,23 @@ public class Calculation {
this.entry_amount = entry_amount;
}
public Double getEntry_price() {
return entry_price;
}
public void setEntry_price(Double entry_price) {
this.entry_price = entry_price;
}
public Double getEntry_workload() {
return entry_workload;
}
public void setEntry_workload(Double entry_workload) {
this.entry_workload = entry_workload;
}
public Calculation() {
}
}

View File

@ -2,28 +2,29 @@ package shkd.repc.recos.formplugin;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.IFormView;
import kd.bos.form.control.AttachmentPanel;
import kd.bos.form.control.events.UploadListener;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.operate.FormOperate;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.mvc.bill.BillView;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.AttachmentDto;
import kd.bos.servicehelper.AttachmentServiceHelper;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import org.apache.poi.ss.usermodel.*;
import shkd.repc.recos.domain.Calculation;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class RecosMeasurecosFormPlugin extends AbstractFormPlugin implements UploadListener {
@ -45,6 +46,19 @@ public class RecosMeasurecosFormPlugin extends AbstractFormPlugin implements Upl
case "qeug_test":
Long id = (Long) this.getModel().getValue("id");//获取单据id
Map<String, String> result = new HashMap<>();
//获取不同楼对应标签得pageid
Map<String, String> all = this.getPageCache().getAll();
for (Map.Entry<String, String> entry : all.entrySet()) {
if (entry.getKey().startsWith("tab_measureci")) {//建安测算
IFormView view = this.getView().getView(entry.getValue());//标签里面的页面
Long producttypeid = (Long) view.getModel().getValue("producttypeid");//产品类型id
DynamicObject single = BusinessDataServiceHelper.loadSingle(producttypeid,"repmd_producttypes");
String fullname = single.getString("fullname");
result.put(fullname, entry.getValue());
}
}
//遍历附件前校验
AttachmentPanel att = this.getView().getControl("attachmentpanelap");
if (att.getAttachmentData().size()==0){
@ -88,11 +102,13 @@ public class RecosMeasurecosFormPlugin extends AbstractFormPlugin implements Upl
row.getCell(9).getStringCellValue(),//单位
//Double.parseDouble(row.getCell(12).getStringCellValue().replace("%", ""))/100.0,
Double.parseDouble(row.getCell(12).toString()),// 调整系数
row.getCell(17).getNumericCellValue()//合价含税
row.getCell(17).getNumericCellValue(),//合价含税
row.getCell(16).getNumericCellValue(),//单价
row.getCell(13).getNumericCellValue()//工程量
);
arrayList.add(calculation);
}
String res = updateRecosMeasurecos(arrayList, sheetName);
String res = updateRecosMeasurecos(arrayList, sheetName,result);
if (!"success".equals(res)){
this.getView().showSuccessNotification("功能失败:"+res);
return;
@ -102,6 +118,8 @@ public class RecosMeasurecosFormPlugin extends AbstractFormPlugin implements Upl
throw new RuntimeException(e);
}
}
this.getView().showSuccessNotification("功能成功");
break;
}
}
@ -120,19 +138,45 @@ public class RecosMeasurecosFormPlugin extends AbstractFormPlugin implements Upl
/*
* 根据入参信息修改成本测算方法
* */
public String updateRecosMeasurecos(List<Calculation> arrayList,String sheetName) {
public String updateRecosMeasurecos(List<Calculation> arrayList,String sheetName,Map<String, String> result) {
try {
//处理
System.out.println(arrayList);
System.out.println(sheetName);
// QFilter filter = new QFilter("measurecostid", QCP.equals, (Long) this.getModel().getValue("id"));
// DynamicObject[] DynamicObjects = BusinessDataServiceHelper.load("recos_measureci", "id,status,cientry", filter.toArray());
// Long fid = (Long) DynamicObjects[0].get("id");
// DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle(fid,"recos_measureci");
// DynamicObjectCollection cientry = loadSingle.getDynamicObjectCollection("cientry");
// cientry.get(4).set("entry_amount",666);
// Object[] save = SaveServiceHelper.save(new DynamicObject[]{loadSingle});
// System.out.println(save);
List<String> numberStrings = arrayList.stream()
.map(calculation -> String.valueOf(calculation.getEntry_longnumber()))
.collect(Collectors.toList());
String sheetNamepage = result.get(sheetName);
BillView sheetNameView = (BillView) this.getView().getView(sheetNamepage);
DynamicObject dataEntity = sheetNameView.getModel().getDataEntity(true);
DynamicObjectCollection cientry = dataEntity.getDynamicObjectCollection("cientry");
Map<Integer, Calculation> hashMap = new HashMap<>();//存储修改的数据和下标
for (DynamicObject dynamicObject : cientry) {
if (numberStrings.contains(dynamicObject.getString("entry_longnumber"))){
Calculation res = arrayList.stream()
.filter(calculation -> dynamicObject.getString("entry_longnumber").equals(calculation.getEntry_longnumber()))
.findFirst() // 获取第一个匹配的元素
.orElse(null);
hashMap.put((int) dynamicObject.get("seq")-1,res);
}
}
hashMap.forEach((key, value) -> {
String entry_workloadunit = value.getEntry_workloadunit();
DynamicObject unit = QueryServiceHelper.queryOne("bd_measureunits", "id,name,number", new QFilter("name", QCP.equals, entry_workloadunit).toArray());
DynamicObject single = BusinessDataServiceHelper.loadSingle(unit.getString("id"),"bd_measureunits");
sheetNameView.getModel().setValue("entry_workloadunit",single,key);//单位
sheetNameView.getModel().setValue("entry_adjustcoefficient",value.getEntry_adjustcoefficient(),key);//调整系数
sheetNameView.getModel().setValue("entry_price",value.getEntry_price(),key);//单价
sheetNameView.getModel().setValue("entry_workload",value.getEntry_workload(),key);//工程量
sheetNameView.getModel().setValue("entry_amount",value.getEntry_amount(),key);//合价(含税)
});
getView().sendFormAction(sheetNameView);
return "success";
} catch (Exception e) {
return e.getMessage();