Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
hello 2025-08-01 15:23:21 +08:00
commit 42a0b2cb1e
12 changed files with 242 additions and 165 deletions

View File

@ -199,6 +199,22 @@ public class TriprAutoCalWorkingDaysPlugin extends AbstractBillPlugIn implements
return addDateSet; return addDateSet;
} }
public Set<LocalDate> calTripentryDay(Date startdate,Date enddate){
int allHomeCount = 0;
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity()
.getDynamicObjectCollection("tripentry");
Set<LocalDate> addDateSet = new HashSet<>();
for (DynamicObject dynamicObject : dynamicObjectCollection) {
if(startdate!=null && enddate!=null){
Set<LocalDate> datesExcludingWeekends = getWorkingDays(dateToLocalDate(startdate), dateToLocalDate(enddate));
addDateSet.addAll(datesExcludingWeekends);
}
}
return addDateSet;
}
//获取开始结束时间 //获取开始结束时间
public static Set<LocalDate> getStartAndEnd(LocalDate startDate, LocalDate endDate) { public static Set<LocalDate> getStartAndEnd(LocalDate startDate, LocalDate endDate) {
Set<LocalDate> result = new HashSet<>(); Set<LocalDate> result = new HashSet<>();
@ -242,11 +258,10 @@ public class TriprAutoCalWorkingDaysPlugin extends AbstractBillPlugIn implements
} }
return workingDays; return workingDays;
}else{ }else{
if (startDate.isAfter(endDate)) { /*if (!startDate.isAfter(endDate)) {
throw new IllegalArgumentException("开始日期不能晚于结束日期"); throw new IllegalArgumentException("开始日期不能晚于结束日期");
} }*/
LocalDate currentDate = startDate; LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) { while (!currentDate.isAfter(endDate)) {
if (!isWeekend(currentDate)) { if (!isWeekend(currentDate)) {
workingDays.add(currentDate); workingDays.add(currentDate);

View File

@ -45,14 +45,16 @@ public class DailyReimbursSubOp extends AbstractOperationServicePlugIn {
String zcgj_invoiceremark = dataEntity.getString("zcgj_invoiceremark");//特殊说明 String zcgj_invoiceremark = dataEntity.getString("zcgj_invoiceremark");//特殊说明
DynamicObjectCollection accountEntryCollection = dataEntity.getDynamicObjectCollection("accountentry");//收款信息 DynamicObjectCollection accountEntryCollection = dataEntity.getDynamicObjectCollection("accountentry");//收款信息
if (accountEntryCollection.size() > 0) { if (accountEntryCollection.size() > 0) {
for (int i = 0; i < accountEntryCollection.size(); i++) { for (DynamicObject accountEntry : accountEntryCollection) {
DynamicObject accountEntry = accountEntryCollection.get(i);
String payerType = accountEntry.getString("payertype");//收款人类型 String payerType = accountEntry.getString("payertype");//收款人类型
if (payerType.equals("er_payeer")) { if (payerType.equals("er_payeer")) {
DynamicObject payer = accountEntry.getDynamicObject("payer");//收款人(个人 DynamicObject payer = accountEntry.getDynamicObject("payer");//收款人(个人
if (payer != null && applier != null) { if (payer != null && applier != null) {
String applierNumber = applier.getString("number");//申请人编号 String applierNumber = applier.getString("number");//申请人编号
DynamicObject payer1 = payer.getDynamicObject("payer"); DynamicObject payer1 = payer.getDynamicObject("payer");//收款人个人-收款人
if (payer1 == null) {
return;
}
String payer1Number = payer1.getString("number");//收款人编号 String payer1Number = payer1.getString("number");//收款人编号
if (!applierNumber.equals(payer1Number) && "".equals(zcgj_invoiceremark)) { if (!applierNumber.equals(payer1Number) && "".equals(zcgj_invoiceremark)) {
//申请人和收款人不一致 //申请人和收款人不一致

View File

@ -1,6 +1,7 @@
package zcgj.zcdev.zcdev.fs.plugin.report; package zcgj.zcdev.zcdev.fs.plugin.report;
import kd.bos.context.RequestContext; import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.PackageDataEvent; import kd.bos.entity.datamodel.events.PackageDataEvent;
import kd.bos.entity.report.FilterInfo; import kd.bos.entity.report.FilterInfo;
@ -9,6 +10,7 @@ import kd.bos.report.events.CellStyleRule;
import kd.bos.report.events.SortAndFilterEvent; import kd.bos.report.events.SortAndFilterEvent;
import kd.bos.report.plugin.AbstractReportFormPlugin; import kd.bos.report.plugin.AbstractReportFormPlugin;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -44,7 +46,8 @@ public class PositionFeesRptListPlugin extends AbstractReportFormPlugin implemen
IDataModel model = this.getModel(); IDataModel model = this.getModel();
//获取当前登陆人所在组织 //获取当前登陆人所在组织
long orgId = RequestContext.get().getOrgId(); long orgId = RequestContext.get().getOrgId();
model.setValue("zcgj_query_org",orgId); DynamicObject orgByNumber = OrgCheckUtils.getOrgByNumber("10008253");//领导板班子成员部门编码
model.setValue("zcgj_query_org",orgByNumber.getLong("id"));
model.setValue("zcgj_query_year",new Date()); model.setValue("zcgj_query_year",new Date());
} }
@ -104,4 +107,5 @@ public class PositionFeesRptListPlugin extends AbstractReportFormPlugin implemen
ent.setSort(true); ent.setSort(true);
} }
}*/ }*/
} }

View File

@ -34,6 +34,12 @@ public class OrgCheckUtils {
* 判断是否为矿山 * 判断是否为矿山
*/ */
public static boolean isKS(Long currentOrgId){ public static boolean isKS(Long currentOrgId){
QFilter costCompanyId = new QFilter("zcgj_costcompany.id", QCP.equals,currentOrgId);
DynamicObject zcgj_minecompany = BusinessDataServiceHelper.loadSingle("zcgj_minecompany",
"id", new QFilter[]{costCompanyId});//基础资料矿山公司
if(zcgj_minecompany != null){
return true;
}
QFilter filterOrgId = new QFilter("number", QCP.equals,ksNumberTop);//中材矿山建设有限公司 QFilter filterOrgId = new QFilter("number", QCP.equals,ksNumberTop);//中材矿山建设有限公司
DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId}); DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId});
long orgId = adminOrg.getLong("id"); long orgId = adminOrg.getLong("id");
@ -67,4 +73,13 @@ public class OrgCheckUtils {
} }
return false; return false;
} }
/**
* 判断是否为矿山
*/
public static DynamicObject getOrgByNumber(String orgNumber){
QFilter filterOrgId = new QFilter("number", QCP.equals,orgNumber);//中材矿山建设有限公司
DynamicObject org = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId});
return org;
}
} }

View File

@ -23,6 +23,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
import kd.fi.gl.util.DateUtil; import kd.fi.gl.util.DateUtil;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -35,6 +36,7 @@ import java.time.YearMonth;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException; import java.time.format.DateTimeParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugin { public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugin {
@ -51,17 +53,6 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
super.itemClick(evt); super.itemClick(evt);
String itemKey = evt.getItemKey(); String itemKey = evt.getItemKey();
if (itemKey.equals("zcgj_idle")){//闲置 if (itemKey.equals("zcgj_idle")){//闲置
Set<Long> setIds = getSelectOrderIds(this.getSelectedRows());
DynamicObject[] equipments = BusinessDataServiceHelper.load("eceq_equipment_card", "billno,billname,equipstatus", new QFilter[]{new QFilter("id", "in", setIds)});
for (DynamicObject equipment : equipments) {
equipment.set("equipstatus","FREE");
}
Object[] save = SaveServiceHelper.save(equipments);
System.out.println();
this.getView().showMessage("闲置成功!");
IFormView view = this.getView();
view.invokeOperation("refresh");
} else if (itemKey.equals("zcgj_asset")) {//同步资产卡片
Set<String> strings = new HashSet(); Set<String> strings = new HashSet();
DynamicObject[] equipmenttype = BusinessDataServiceHelper.load("zcgj_equipmenttype", "number,zcgj_assetcat",new QFilter[]{new QFilter("zcgj_assetcat.number", QCP.is_notnull,"" )}); DynamicObject[] equipmenttype = BusinessDataServiceHelper.load("zcgj_equipmenttype", "number,zcgj_assetcat",new QFilter[]{new QFilter("zcgj_assetcat.number", QCP.is_notnull,"" )});
for (DynamicObject dynamicObject : equipmenttype) { for (DynamicObject dynamicObject : equipmenttype) {
@ -70,9 +61,19 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
strings.add(number) ; strings.add(number) ;
} }
} }
QFilter filterOrgId = new QFilter("number", QCP.equals,"10006431");//中材矿山建设有限公司
DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId});
long orgId = adminOrg.getLong("id");
List<Long> orgIds = new ArrayList<>(1);
//orgIds.add(1692204547985902592L);
orgIds.add(orgId);
List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, orgIds, true);
Set<Long> orgSer = subOrgIds.stream().collect(Collectors.toSet());
QFilter qFilter = new QFilter("assetcat.number", QCP.in, strings); QFilter qFilter = new QFilter("assetcat.number", QCP.in, strings);
qFilter.and(new QFilter("assetunit.number", QCP.in, orgSer)) ;
DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_asset_card", "zcgj_costcenter,headusedept,finentry,assetcat,number,assetname,model,realaccountdate," + DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_asset_card", "zcgj_costcenter,headusedept,finentry,assetcat,number,assetname,model,realaccountdate," +
"assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor,finentry.fin_originalval,finentry.fin_preresidualval,finentry.fin_depredamount,finentry.fin_preusingamount,finentry.fin_accumdepre,finentry.fin_networth", new QFilter[]{qFilter}); "assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor,finentry.fin_originalval,finentry.fin_preresidualval,finentry.fin_depredamount,finentry.fin_preusingamount,finentry.fin_accumdepre,finentry.fin_networth", new QFilter[]{qFilter});
log.info("同步的实物数量有"+realcards.length);
for (DynamicObject realcard : realcards) { for (DynamicObject realcard : realcards) {
String number = realcard.getString("number");//资产编码 String number = realcard.getString("number");//资产编码
// DynamicObject assetcat = realcard.getDynamicObject("assetcat");//资产类别 // DynamicObject assetcat = realcard.getDynamicObject("assetcat");//资产类别
@ -107,17 +108,23 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
long timestamp=date.getTime(); //时间戳 long timestamp=date.getTime(); //时间戳
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式
String timeText=format.format(timestamp); String timeText=format.format(timestamp);
DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("number", QCP.equals, number)}); DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("zcgj_assetnumber", QCP.equals, number)});
if (eceq_equipment_card!=null){ if (eceq_equipment_card!=null){
equipmentcard.set("id",eceq_equipment_card.getLong("id")); equipmentcard.set("id",eceq_equipment_card.getLong("id"));
String cardString = eceq_equipment_card.getString("number");
if(!cardString.isEmpty() && cardString!=null){
equipmentcard.set("number",cardString);//设备编号
}else{
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
}
}else{
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
} }
equipmentcard.set("billno",timeText);//单据编号 equipmentcard.set("billno",timeText);//单据编号
equipmentcard.set("status","C");//单据状态 equipmentcard.set("status","C");//单据状态
equipmentcard.set("billstatus","C");// equipmentcard.set("billstatus","C");//
equipmentcard.set("enable","1");//可用 equipmentcard.set("enable","1");//可用
equipmentcard.set("property","OWN");//设备性质 equipmentcard.set("property","OWN");//设备性质
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
equipmentcard.set("name",assetname);//设备名称 equipmentcard.set("name",assetname);//设备名称
equipmentcard.set("modelnum",model);//规格型号 equipmentcard.set("modelnum",model);//规格型号
equipmentcard.set("indate",realaccountdate);//入库日期 equipmentcard.set("indate",realaccountdate);//入库日期

View File

@ -0,0 +1,37 @@
package zcgj.zcdev.zcdev.pr.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.BizDataEventArgs;
import kd.sdk.plugin.Plugin;
import java.time.LocalDate;
import java.util.EventObject;
import java.util.HashSet;
import java.util.Set;
/**
* 资金计划申请插件
*/
public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void afterBindData(EventObject e) {
super.afterBindData(e);
BillShowParameter bsp=(BillShowParameter)this.getView().getFormShowParameter();
if(bsp.getStatus()== OperationStatus.ADDNEW ){
DynamicObjectCollection zcgjFinApprovedAmount = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_fin_approved_amount");
String[] typeArray = new String[]{"XJ","YHCD","SYCD","GYL","QTJRCP"};
for (String type : typeArray) {
DynamicObject item = zcgjFinApprovedAmount.addNew();
item.set("zcgj_setttype",type);
}
getView().updateView("zcgj_fin_approved_amount");
}
}
}

View File

@ -281,8 +281,10 @@ public class InContractFinaceConfirmeInvoicePlugin extends AbstractBillPlugIn im
for(int i = selRows.length - 1; i >= 0; --i) { for(int i = selRows.length - 1; i >= 0; --i) {
int rowIndex = selRows[i]; int rowIndex = selRows[i];
DynamicObject invoice = (DynamicObject)this.getModel().getValue("zcgj_invoice", rowIndex); DynamicObject invoice = (DynamicObject)this.getModel().getValue("zcgj_invoice", rowIndex);
updateInvoicePks.add(invoice.getPkValue()); if (invoice != null) {
delPks[i] = ((DynamicObject)subEntryEntityCol.get(selRows[i])).getPkValue(); updateInvoicePks.add(invoice.getPkValue());
delPks[i] = ((DynamicObject)subEntryEntityCol.get(selRows[i])).getPkValue();
}
this.getModel().deleteEntryRow("zcgj_entryentity", rowIndex); this.getModel().deleteEntryRow("zcgj_entryentity", rowIndex);
} }

View File

@ -284,8 +284,10 @@ public class OutContractFinaceConfirmeInvoicePlugin extends AbstractBillPlugIn i
for(int i = selRows.length - 1; i >= 0; --i) { for(int i = selRows.length - 1; i >= 0; --i) {
int rowIndex = selRows[i]; int rowIndex = selRows[i];
DynamicObject invoice = (DynamicObject)this.getModel().getValue("zcgj_invoice", rowIndex); DynamicObject invoice = (DynamicObject)this.getModel().getValue("zcgj_invoice", rowIndex);
updateInvoicePks.add(invoice.getPkValue()); if(invoice!=null){
delPks[i] = ((DynamicObject)subEntryEntityCol.get(selRows[i])).getPkValue(); updateInvoicePks.add(invoice.getPkValue());
delPks[i] = ((DynamicObject)subEntryEntityCol.get(selRows[i])).getPkValue();
}
this.getModel().deleteEntryRow("zcgj_entryentity", rowIndex); this.getModel().deleteEntryRow("zcgj_entryentity", rowIndex);
} }

View File

@ -5,6 +5,7 @@ import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus; import kd.bos.bill.OperationStatus;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectEvent;
@ -14,6 +15,7 @@ import kd.bos.mvc.bill.BillView;
import kd.bos.orm.query.QCP; import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.util.StringUtils;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import java.util.ArrayList; import java.util.ArrayList;
@ -58,64 +60,20 @@ public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plu
@Override @Override
public void propertyChanged(PropertyChangedArgs e) { public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e); super.propertyChanged(e);
String name = e.getProperty().getName(); String billFormId = ((BillView) this.getView()).getFormId();//单据标识
/*if("person".equals(name)){ if("ec_paymentapply".equals(billFormId)) {//付款申请单
String name = e.getProperty().getName();
ChangeData changeData = e.getChangeSet()[0];//获取改变的数据 ChangeData changeData = e.getChangeSet()[0];//获取改变的数据
DynamicObject oldValue = (DynamicObject) changeData.getOldValue(); if("paymenttype".equals(name)){
DynamicObject newValue = (DynamicObject) changeData.getNewValue(); int rowIndex = e.getChangeSet()[0].getRowIndex();
if(newValue !=null){ DynamicObject dataEntity = this.getModel().getDataEntity(true);
long userid = newValue.getLong("id"); DynamicObjectCollection entryentity = (DynamicObjectCollection)dataEntity.get("entryentity");
long mainOrgId = UserServiceHelper.getUserMainOrgId(userid); if(entryentity != null){
List<Long> orgsUserJoin = UserServiceHelper.getOrgsUserJoin(userid); entryentity.get(rowIndex).set("zcgj_expenseitem", null);
DynamicObject org = (DynamicObject) this.getModel().getValue("fiaccountorg"); this.getView().updateView("zcgj_expenseitem",rowIndex);
if(org!=null && orgsUserJoin!=null && !orgsUserJoin.isEmpty()){
Set<Long> collect = new HashSet<>(orgsUserJoin);
if(collect.contains(org.getLong("id"))){
this.getModel().setValue("zcgj_persondepart", org.getLong("id"));
this.getView().updateView("zcgj_persondepart");
}else{
this.getModel().setValue("zcgj_persondepart", mainOrgId);
this.getView().updateView("zcgj_persondepart");
}
}else{
this.getModel().setValue("zcgj_persondepart", mainOrgId);
this.getView().updateView("zcgj_persondepart");
} }
}else{
this.getView().showErrorNotification("申请人不能为空");
} }
}*/ }
/*else if("fiaccountorg".equals(name)){
ChangeData changeData = e.getChangeSet()[0];//获取改变的数据
DynamicObject oldValue = (DynamicObject) changeData.getOldValue();
DynamicObject newValue = (DynamicObject) changeData.getNewValue();
if(newValue !=null){
DynamicObject person = this.getModel().getDataEntity().getDynamicObject("person");
long userid = person.getLong("id");
long mainOrgId = UserServiceHelper.getUserMainOrgId(userid);
List<Long> orgsUserJoin = UserServiceHelper.getOrgsUserJoin(userid);
List<Long> allDepartment = UserServiceHelper.getAllDepartmentByUserId(userid);
HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(userid,false);
List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
List<Long> userDepartment = UserServiceHelper.getUserDepartment(userid, false);
if(hasPermOrgs!=null && !hasPermOrgs.isEmpty()){
Set<Long> collect = new HashSet<>(hasPermOrgs);
if(collect.contains(newValue.getLong("id"))){
this.getModel().setValue("zcgj_persondepart", newValue.getLong("id"));
this.getView().updateView("zcgj_persondepart");
}else{
this.getModel().setValue("zcgj_persondepart", mainOrgId);
this.getView().updateView("zcgj_persondepart");
}
}else{
this.getModel().setValue("zcgj_persondepart", mainOrgId);
this.getView().updateView("zcgj_persondepart");
}
}else{
this.getView().showErrorNotification("所属组织不能为空!");
}
}*/
} }
@Override @Override
@ -139,26 +97,29 @@ public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plu
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity"); DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");
if (dynamicObjectCollection != null) { if (dynamicObjectCollection != null) {
String paymenttype = dynamicObjectCollection.get(row).getString("paymenttype");//支付类型 String paymenttype = dynamicObjectCollection.get(row).getString("paymenttype");//支付类型
List<String> numbers = new ArrayList<>();
QFilter biztypefilter = null;
if("PREPAYMENT".equals(paymenttype)){ if("PREPAYMENT".equals(paymenttype)){
QFilter biztypefilter = new QFilter("zcgj_biztype", QCP.equals, "50"); //过滤业务单据为支出财务确认单 biztypefilter= new QFilter("zcgj_biztype", QCP.equals, "50");
//分录过滤 }else{
//使用BusinessDataServiceHelper.load查出来的数据返回的是符合条件的整单即使只有分录中的某一行符合条件也会返回整张单包括其他分录行的数据 biztypefilter = new QFilter("zcgj_biztype", QCP.not_equals, "50");
//使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行不含其他行数据 }
DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", //分录过滤
"zcgj_entryentity.zcgj_fee.number", new QFilter[]{biztypefilter});//费用与科目分类单 //使用BusinessDataServiceHelper.load查出来的数据返回的是符合条件的整单即使只有分录中的某一行符合条件也会返回整张单包括其他分录行的数据
List<String> numbers = new ArrayList<>(); //使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行不含其他行数据
if (accountfeeEntries != null) { DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee",
for (DynamicObject dynamicObject : accountfeeEntries) { "zcgj_entryentity.zcgj_fee.number", new QFilter[]{biztypefilter});//费用与科目分类单
String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_fee.number"); if (accountfeeEntries != null) {
if (zcgjAccounttypeNumber != null) { for (DynamicObject dynamicObject : accountfeeEntries) {
numbers.add(zcgjAccounttypeNumber); String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_fee.number");
} if (zcgjAccounttypeNumber != null) {
numbers.add(zcgjAccounttypeNumber);
} }
} }
QFilter qFilter = new QFilter("number", QCP.in, numbers);
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
formShowParameter.getListFilterParameter().getQFilters().add(qFilter);
} }
QFilter qFilter = new QFilter("number", QCP.in, numbers);
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
formShowParameter.getListFilterParameter().getQFilters().add(qFilter);
} }
} }

View File

@ -44,7 +44,7 @@ public class InContractSettleFiConfirmWorkFlowPlugin implements IWorkflowPlugin
inFinaceconfirm.set("zcgj_description",inContractSettle.getString("description")); inFinaceconfirm.set("zcgj_description",inContractSettle.getString("description"));
inFinaceconfirm.set("zcgj_currency",inContractSettle.getDynamicObject("currency")); inFinaceconfirm.set("zcgj_currency",inContractSettle.getDynamicObject("currency"));
inFinaceconfirm.set("zcgj_invoice_org",inContractSettle.getDynamicObject("project").getDynamicObject("projectorg")); inFinaceconfirm.set("zcgj_invoice_org",inContractSettle.getDynamicObject("project").getDynamicObject("projectorg"));
// getModel().setValue("zcgj_jscustomer",ecincontractsettle.getDynamicObject("zcgj_jscustomer")); inFinaceconfirm.set("zcgj_jscustomer",inContractSettle.getDynamicObject("zcgj_jscustomer"));
inFinaceconfirm.set("billstatus","A"); inFinaceconfirm.set("billstatus","A");
inFinaceconfirm.set("creator",inContractSettle.getDynamicObject("creator")); inFinaceconfirm.set("creator",inContractSettle.getDynamicObject("creator"));

View File

@ -44,7 +44,7 @@ public class InContractSettleInvalidWorkFlowPlugin implements IWorkflowPlugin {
inFinaceconfirm.set("zcgj_description",inContractSettle.getString("description")); inFinaceconfirm.set("zcgj_description",inContractSettle.getString("description"));
inFinaceconfirm.set("zcgj_currency",inContractSettle.getDynamicObject("currency")); inFinaceconfirm.set("zcgj_currency",inContractSettle.getDynamicObject("currency"));
inFinaceconfirm.set("zcgj_invoice_org",inContractSettle.getDynamicObject("project").getDynamicObject("projectorg")); inFinaceconfirm.set("zcgj_invoice_org",inContractSettle.getDynamicObject("project").getDynamicObject("projectorg"));
// getModel().setValue("zcgj_jscustomer",ecincontractsettle.getDynamicObject("zcgj_jscustomer")); inFinaceconfirm.set("zcgj_jscustomer",inContractSettle.getDynamicObject("zcgj_jscustomer"));
inFinaceconfirm.set("billstatus","C"); inFinaceconfirm.set("billstatus","C");
inFinaceconfirm.set("zcgj_is_invalid",true); inFinaceconfirm.set("zcgj_is_invalid",true);
inFinaceconfirm.set("creator",inContractSettle.getDynamicObject("creator")); inFinaceconfirm.set("creator",inContractSettle.getDynamicObject("creator"));

View File

@ -1,7 +1,6 @@
package zcgj.zcdev.zcdev.pr.task; package zcgj.zcdev.zcdev.pr.task;
import kd.bos.algo.DataSet; import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.coderule.api.CodeRuleInfo; import kd.bos.coderule.api.CodeRuleInfo;
import kd.bos.coderule.service.cache.CodeRuleCache; import kd.bos.coderule.service.cache.CodeRuleCache;
import kd.bos.context.RequestContext; import kd.bos.context.RequestContext;
@ -20,7 +19,7 @@ import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper;
import zcgj.zcdev.zcdev.pr.plugin.form.AdjustAmountOftaxBillPlugin; import kd.bos.servicehelper.org.OrgUnitServiceHelper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -29,6 +28,8 @@ import java.time.YearMonth;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException; import java.time.format.DateTimeParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 实物卡片同步设备定时任务 * 实物卡片同步设备定时任务
@ -46,9 +47,19 @@ public class EquipmentCardTaskPlugin extends AbstractTask {
strings.add(number) ; strings.add(number) ;
} }
} }
QFilter filterOrgId = new QFilter("number", QCP.equals,"10006431");//中材矿山建设有限公司
DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId});
long orgId = adminOrg.getLong("id");
List<Long> orgIds = new ArrayList<>(1);
//orgIds.add(1692204547985902592L);
orgIds.add(orgId);
List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, orgIds, true);
Set<Long> orgSer = subOrgIds.stream().collect(Collectors.toSet());
QFilter qFilter = new QFilter("assetcat.number", QCP.in, strings); QFilter qFilter = new QFilter("assetcat.number", QCP.in, strings);
qFilter.and(new QFilter("assetunit.number", QCP.in, orgSer)) ;
DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_asset_card", "zcgj_costcenter,headusedept,finentry,assetcat,number,assetname,model,realaccountdate," + DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_asset_card", "zcgj_costcenter,headusedept,finentry,assetcat,number,assetname,model,realaccountdate," +
"assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor,finentry.fin_originalval,finentry.fin_preresidualval,finentry.fin_depredamount,finentry.fin_preusingamount,finentry.fin_accumdepre,finentry.fin_networth", new QFilter[]{qFilter}); "assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor,finentry.fin_originalval,finentry.fin_preresidualval,finentry.fin_depredamount,finentry.fin_preusingamount,finentry.fin_accumdepre,finentry.fin_networth", new QFilter[]{qFilter});
log.info("同步的实物数量有"+realcards.length);
for (DynamicObject realcard : realcards) { for (DynamicObject realcard : realcards) {
String number = realcard.getString("number");//资产编码 String number = realcard.getString("number");//资产编码
// DynamicObject assetcat = realcard.getDynamicObject("assetcat");//资产类别 // DynamicObject assetcat = realcard.getDynamicObject("assetcat");//资产类别
@ -83,9 +94,17 @@ public class EquipmentCardTaskPlugin extends AbstractTask {
long timestamp=date.getTime(); //时间戳 long timestamp=date.getTime(); //时间戳
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式
String timeText=format.format(timestamp); String timeText=format.format(timestamp);
DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("number", QCP.equals, number)}); DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("zcgj_assetnumber", QCP.equals, number)});
if (eceq_equipment_card!=null){ if (eceq_equipment_card!=null){
equipmentcard.set("id",eceq_equipment_card.getLong("id")); equipmentcard.set("id",eceq_equipment_card.getLong("id"));
String cardString = eceq_equipment_card.getString("number");
if(!cardString.isEmpty() && cardString!=null){
equipmentcard.set("number",cardString);//设备编号
}else{
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
}
}else{
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
} }
equipmentcard.set("billno",timeText);//单据编号 equipmentcard.set("billno",timeText);//单据编号
@ -93,7 +112,6 @@ public class EquipmentCardTaskPlugin extends AbstractTask {
equipmentcard.set("billstatus","C");// equipmentcard.set("billstatus","C");//
equipmentcard.set("enable","1");//可用 equipmentcard.set("enable","1");//可用
equipmentcard.set("property","OWN");//设备性质 equipmentcard.set("property","OWN");//设备性质
equipmentcard.set("number",getCodeRule(equipmentcard,"53BT+ZJB86=L"));//设备编号
equipmentcard.set("name",assetname);//设备名称 equipmentcard.set("name",assetname);//设备名称
equipmentcard.set("modelnum",model);//规格型号 equipmentcard.set("modelnum",model);//规格型号
equipmentcard.set("indate",realaccountdate);//入库日期 equipmentcard.set("indate",realaccountdate);//入库日期
@ -144,80 +162,49 @@ public class EquipmentCardTaskPlugin extends AbstractTask {
} }
DynamicObject eceq_equipment = BusinessDataServiceHelper.loadSingle("eceq_equipinfo", new QFilter[]{new QFilter("number", QCP.equals, number)}); DynamicObject eceq_equipment = BusinessDataServiceHelper.loadSingle("eceq_equipinfo", new QFilter[]{new QFilter("number", QCP.equals, number)});
if (eceq_equipment != null) { if (eceq_equipment != null) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM"); //设置格式
String ym = sd.format(date);
DynamicObjectCollection entrys = eceq_equipment.getDynamicObjectCollection("zcgj_entryentity"); DynamicObjectCollection entrys = eceq_equipment.getDynamicObjectCollection("zcgj_entryentity");
QFilter qf = new QFilter("realcard.number", QCP.equals, number); QFilter qf = new QFilter("realcard.number", QCP.equals, number);
if (entrys.size() > 0) {//若分录行数大于0 则取上月的 // if (entrys.size() > 0) {//若分录行数大于0 则取上月的
qf.and(new QFilter("billno", QCP.in, ym)); // for (int i = 0; i < entrys.size(); i++) {
for (int i = 0; i < entrys.size(); i++) { // DynamicObject entry = entrys.get(i);
DynamicObject entry = entrys.get(i); // long billnoid = entry.getLong("zcgj_debillno");
String zcgjDebillno = entry.getString("zcgj_debillno"); // qf.and(new QFilter("id", QCP.not_equals, billnoid));
entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入 //// entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入
// }
// }
DynamicObjectCollection depresplitdetails = QueryServiceHelper.query("fa_depresplitdetail", "id,billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf});
log.info("前depresplitdetails:"+depresplitdetails.toArray().toString() + "长度:"+depresplitdetails.size());
Collections.sort(depresplitdetails , new Comparator<DynamicObject>(){
@Override
public int compare(DynamicObject o1, DynamicObject o2) {
long id1 = o1.getLong("id");
DynamicObject oo1 = BusinessDataServiceHelper.loadSingle("fa_depresplitdetail", new QFilter[]{new QFilter("id", QCP.equals, id1)});
long id2 = o2.getLong("id");
DynamicObject oo2 = BusinessDataServiceHelper.loadSingle("fa_depresplitdetail", new QFilter[]{new QFilter("id", QCP.equals, id2)});
return oo2.getDynamicObject("period").getString("number").compareTo(oo1.getDynamicObject("period").getString("number"));
} }
} });
DynamicObjectCollection depresplitdetails = QueryServiceHelper.query("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); log.info("后depresplitdetails:"+depresplitdetails.toArray().toString() + "长度:"+depresplitdetails.size());
// DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); entrys.clear();
// DataSet rows = QueryServiceHelper.queryDataSet(this.getClass().getName(), "fa_depresplitdetail", "billno,period,period.number,splitdept,assentry.costcentrer,assentry.splitamount", qFilter.toArray(), "period.number DESC", 1); for (int x = 0 ; x<depresplitdetails.size() ; x++) {
// 增强版比较器自动适配多种日期格式 DynamicObject depresplitdetail = depresplitdetails.get(x);
for (int i = 0; i < depresplitdetails.size(); i++) { long id = depresplitdetail.getLong("id");
DynamicObject item = depresplitdetails.get(i); DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("fa_depresplitdetail", new QFilter[]{new QFilter("id", QCP.equals, id)});
// log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number")); // String billnoid = loadSingle.getString("billno");
} DynamicObject period = loadSingle.getDynamicObject("period");//折旧区间
Comparator<DynamicObject> smartComparator = (o1, o2) -> { DynamicObject splitdept = loadSingle.getDynamicObject("splitdept");//使用部门
DynamicObject p1 = o1.getDynamicObject("period"); DynamicObjectCollection assentry = loadSingle.getDynamicObjectCollection("assentry");
DynamicObject p2 = o2.getDynamicObject("period");
// 空值处理
if (p1 == null && p2 == null) return 0;
if (p1 == null) return 1;
if (p2 == null) return -1;
String c1 = p1.getString("number");
String c2 = p2.getString("number");
if (c1 == null) c1 = "";
if (c2 == null) c2 = "";
// 尝试解析为年月
for (String pattern : new String[]{"yyyyMM", "yyyy-MM", "yyyy/MM"}) {
try {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern);
YearMonth ym1 = YearMonth.parse(c1, fmt);
YearMonth ym2 = YearMonth.parse(c2, fmt);
return ym2.compareTo(ym1); // 降序
} catch (Exception ignored) {}
}
// 纯数字比较 "202301"
try {
int num1 = Integer.parseInt(c1);
int num2 = Integer.parseInt(c2);
return Integer.compare(num2, num1);
} catch (NumberFormatException e) {
return c2.compareTo(c1); // 字符串降序
}
};
depresplitdetails.sort(smartComparator);
for (int i = 0; i < depresplitdetails.size(); i++) {
DynamicObject item = depresplitdetails.get(i);
log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number"));
}
for (DynamicObject depresplitdetail : depresplitdetails) {
String billno = depresplitdetail.getString("billno");
DynamicObject period = depresplitdetail.getDynamicObject("period");//折旧区间
DynamicObject splitdept = depresplitdetail.getDynamicObject("splitdept");//使用部门
DynamicObjectCollection assentry = depresplitdetail.getDynamicObjectCollection("assentry");
DynamicObject costcentrer = assentry.get(0).getDynamicObject("costcentrer");//成本中心 DynamicObject costcentrer = assentry.get(0).getDynamicObject("costcentrer");//成本中心
BigDecimal splitamount = assentry.get(0).getBigDecimal("splitamount");//分摊金额 BigDecimal splitamount = assentry.get(0).getBigDecimal("splitamount");//分摊金额
DynamicObject addNew = entrys.addNew(); DynamicObject addNew = new DynamicObject(entrys.getDynamicObjectType());
addNew.set("zcgj_debillno", billno); addNew.set("zcgj_debillno", id);
addNew.set("zcgj_assperiod", period); addNew.set("zcgj_assperiod", period);
addNew.set("zcgj_headusedept", splitdept); addNew.set("zcgj_headusedept", splitdept);
addNew.set("zcgj_entrybillno", number); addNew.set("zcgj_entrybillno", number);
addNew.set("zcgj_entryname", assetname); addNew.set("zcgj_entryname", assetname);
addNew.set("zcgj_costcenter", costcentrer); addNew.set("zcgj_costcenter", costcentrer);
addNew.set("zcgj_shareamount", splitamount); addNew.set("zcgj_shareamount", splitamount);
entrys.add(addNew);
} }
SaveServiceHelper.save(new DynamicObject[]{eceq_equipment}); SaveServiceHelper.save(new DynamicObject[]{eceq_equipment});
} }
@ -302,3 +289,48 @@ public class EquipmentCardTaskPlugin extends AbstractTask {
} }
} }
// DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf});
// DataSet rows = QueryServiceHelper.queryDataSet(this.getClass().getName(), "fa_depresplitdetail", "id,billno,period,splitdept,assentry,assentry.costcentrer,assentry.splitamount",
// new QFilter[]{new QFilter("realcard.number", QCP.equals, number)}, "period.number DESC");
// DynamicObjectCollection depresplitdetails = ORM.create().toPlainDynamicObjectCollection(rows.copy());
// // 增强版比较器自动适配多种日期格式
// for (int i = 0; i < depresplitdetails.size(); i++) {
// DynamicObject item = depresplitdetails.get(i);
//// log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number"));
// }
// Comparator<DynamicObject> smartComparator = (o1, o2) -> {
// DynamicObject p1 = o1.getDynamicObject("period");
// DynamicObject p2 = o2.getDynamicObject("period");
// // 空值处理
// if (p1 == null && p2 == null) return 0;
// if (p1 == null) return 1;
// if (p2 == null) return -1;
// String c1 = p1.getString("number");
// String c2 = p2.getString("number");
// if (c1 == null) c1 = "";
// if (c2 == null) c2 = "";
// // 尝试解析为年月
// for (String pattern : new String[]{"yyyyMM", "yyyy-MM", "yyyy/MM"}) {
// try {
// DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern);
// YearMonth ym1 = YearMonth.parse(c1, fmt);
// YearMonth ym2 = YearMonth.parse(c2, fmt);
// return ym2.compareTo(ym1); // 降序
// } catch (Exception ignored) {}
// }
// // 纯数字比较 "202301"
// try {
// int num1 = Integer.parseInt(c1);
// int num2 = Integer.parseInt(c2);
// return Integer.compare(num2, num1);
// } catch (NumberFormatException e) {
// return c2.compareTo(c1); // 字符串降序
// }
// };
// depresplitdetails.sort(smartComparator);
// for (int i = 0; i < depresplitdetails.size(); i++) {
// DynamicObject item = depresplitdetails.get(i);
// log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number"));
// }
//按字段 menuindex 排序