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

161 lines
7.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tqq9.lc123.cloud.app.plugin.form.result;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.form.control.events.BeforeItemClickEvent;
import kd.bos.form.control.events.ItemClickEvent;
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.util.StringUtils;
import tqq9.lc123.cloud.app.plugin.utils.BillCloseCancelUtils;
import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils;
import java.util.EventObject;
import java.util.HashSet;
import java.util.Map;
import static tqq9.lc123.cloud.app.plugin.form.result.CloneBill.cloneOperation;
//收货通知单(单据取消)
public class PmReceiptNoticeFormPlugin extends AbstractBillPlugIn {
private final static Log logger = LogFactory.getLog(PmReceiptNoticeFormPlugin.class);
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
this.addItemClickListeners("tbmain");
}
@Override
public void beforeItemClick(BeforeItemClickEvent evt) {
super.beforeItemClick(evt);
String itemKey = evt.getItemKey();
if ("tqq9_close".equals(itemKey)) {
boolean tqq9_isclose = (boolean) this.getModel().getValue("tqq9_isclose");
if (tqq9_isclose) {
this.getView().showMessage("该单据已关闭");
evt.setCancel(true);
}
}
/*String operationKey = evt.getOperationKey();
if ("unaudit".equals(operationKey)) {
boolean tqq9_isclose = (boolean) this.getModel().getValue("tqq9_isclose");
if (!tqq9_isclose) {
this.getView().showMessage("请先关闭该单据,然后进行反审核");
evt.setCancel(true);
}
}*/
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String itemKey = evt.getItemKey();
if ("tqq9_close".equals(itemKey)) {
String billNo = (String) this.getModel().getValue("billno");
String message = null;
DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("pm_receiptnotice", new QFilter[]{new QFilter("billno", QCP.equals, billNo)});
String entityType = "pm_receiptnotice";
String entityName;
String label = "tqq9_isclose";
DynamicObject receiveorg = dataEntity.getDynamicObject("receiveorg");//收货组织
if (null != receiveorg) {
String number = receiveorg.getString("number");
if ("SHLC".equals(number)) {
DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry");
String warehouseCode = null;
for (DynamicObject dynamicObject : billentry) {
DynamicObject warehouse = dynamicObject.getDynamicObject("warehouse");
if (null != warehouse) {
warehouseCode = warehouse.getString("number");
}
}
String orderType = "CGRK";
entityName = "WMS-SH-收货通知单取消";
message = BillCloseCancelUtils.wmsPartClose(orderType, warehouseCode, billNo, entityType, entityName, label);
} else if ("BJLC".equals(number)) {
String BJ_URL = ConfigUtils.getThirdConfigByNumber("BJ_POSTURL");
entityName = "WMS-BJ-收货通知单取消";
message = BillCloseCancelUtils.BGPurOrderCancel(billNo, BJ_URL, entityType, entityName, label);
} else if ("GZLC".equals(number)) {
String GZURL = ConfigUtils.getThirdConfigByNumber("GZ_POSTURL");
entityName = "WMS-GZ-收货通知单取消";
message = BillCloseCancelUtils.BGPurOrderCancel(billNo, GZURL, entityType, entityName, label);
}
if (StringUtils.isNotEmpty(message)) {
this.getView().showMessage(String.valueOf(message));
}
if (StringUtils.isNotEmpty(message) && message.contains("关闭成功")) {
Map<String, HashSet<Long>> targetBills = BFTrackerServiceHelper.findTargetBills("pm_receiptnotice", new Long[]{dataEntity.getLong("id")});
//如果下游没有采购入库单,就克隆单据原单删除
if (null == targetBills || targetBills.size() == 0) {
cloneOperation(dataEntity, "收货通知单", "pm_purorderbill");
}
StringBuilder stringBuilder = new StringBuilder();
//下游存在采购入库单,调用系统标准关闭
if (null != targetBills && targetBills.size() > 0 && targetBills.containsKey("im_purinbill")) {
OperationResult bizcloseResult = OperationServiceHelper.executeOperate("bizclose", "pm_receiptnotice", new DynamicObject[]{dataEntity}, OperateOption.create());
if (!bizcloseResult.isSuccess()) {
bizcloseResult.getAllErrorOrValidateInfo().forEach((error) -> {
stringBuilder.append(error.getMessage());
});
if (stringBuilder.length() > 0) {
logger.info("收货通知单:" + dataEntity.getString("billno") + "调用bizclose失败" + stringBuilder);
}
}
}
}
}
} else if ("tqq9_partclose".equals(itemKey)) {
String billNo = (String) this.getModel().getValue("billno");
String message = null;
DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("pm_receiptnotice", new QFilter[]{new QFilter("billno", QCP.equals, billNo)});
String entityType = "pm_receiptnotice";
String entityName;
String label = "tqq9_ispartclose";
DynamicObject receiveorg = dataEntity.getDynamicObject("receiveorg");//收货组织
if (null != receiveorg) {
String number = receiveorg.getString("number");
if ("SHLC".equals(number)) {
DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry");
String warehouseCode = null;
for (DynamicObject dynamicObject : billentry) {
DynamicObject warehouse = dynamicObject.getDynamicObject("warehouse");
if (null != warehouse) {
warehouseCode = warehouse.getString("number");
}
}
String orderType = "CGRK";
entityName = "WMS-SH-收货通知单部分取消";
message = BillCloseCancelUtils.wmsPartClose(orderType, warehouseCode, billNo, entityType, entityName, label);
}
if (StringUtils.isNotEmpty(message)) {
this.getView().showMessage(String.valueOf(message));
}
}
}
}
}