lc/lc123/cloud/app/plugin/form/result/CloneBill.java

88 lines
4.1 KiB
Java

package tqq9.lc123.cloud.app.plugin.form.result;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.botp.runtime.BFRow;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.util.List;
import java.util.Map;
public class CloneBill extends AbstractOperationServicePlugIn {
private final static Log logger = LogFactory.getLog(CloneBill.class);
public static String cloneOperation(DynamicObject dynamicObject, String entityName, String sourceEntityNumber) {
String entityNumber = dynamicObject.getDataEntityType().getName();
StringBuilder billnoSet = new StringBuilder();
//找直接上游单据,将上游单据编号存在复制的单据上面
Map<Long, List<BFRow>> sourceBillsMap = BFTrackerServiceHelper.findDirtSourceBills(entityNumber, new Long[]{dynamicObject.getLong("id")});
if (null != sourceBillsMap && sourceBillsMap.size() > 0) {
List<BFRow> bfRows = sourceBillsMap.get(dynamicObject.getLong("id"));
if (null != bfRows) {
for (BFRow bfRow : bfRows) {
Long billId = bfRow.getSId().getBillId();//获取到采购退货申请id
DynamicObject[] pm_purrefundapplybill = BusinessDataServiceHelper.load(sourceEntityNumber, "billno",
new QFilter[]{new QFilter("id", "=", billId)});
for (int i = 0; i < pm_purrefundapplybill.length; i++) {
DynamicObject object = pm_purrefundapplybill[i];
String billno = object.getString("billno");
billnoSet.append(billno);
if (i < pm_purrefundapplybill.length - 1) {
billnoSet.append("");
}
}
}
}
}
dynamicObject = BusinessDataServiceHelper.loadSingle(entityNumber, new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getLong("id"))});
StringBuilder message = new StringBuilder();
OperationResult unauditResult = OperationServiceHelper.executeOperate("unaudit", entityNumber, new DynamicObject[]{dynamicObject}, OperateOption.create());
if (unauditResult.isSuccess()) {
OperationResult deleteResult = OperationServiceHelper.executeOperate("delete", entityNumber, new DynamicObject[]{dynamicObject}, OperateOption.create());
if (!deleteResult.isSuccess()) {
deleteResult.getAllErrorOrValidateInfo().forEach((error) -> {
message.append(error.getMessage());
});
logger.info(entityName + dynamicObject.getString("billno") + "删除失败:" + message);
} else {
DynamicObject newData = (DynamicObject) new CloneUtils(false, true).clone(dynamicObject);
newData.set("billno", dynamicObject.getString("billno"));
newData.set("billstatus", "C");
newData.set("tqq9_sourcebillno", billnoSet);
switch (entityNumber) {
case "sm_delivernotice":
case "pm_receiptnotice":
case "pm_purrefundapplybill":
newData.set("closestatus", "B");
break;
}
SaveServiceHelper.save(new DynamicObject[]{newData});
}
} else {
unauditResult.getAllErrorOrValidateInfo().forEach((error) -> {
message.append(error.getMessage());
});
logger.info(entityName + dynamicObject.getString("billno") + "反审核失败:" + message);
}
return message.toString();
}
}