161 lines
7.5 KiB
Java
161 lines
7.5 KiB
Java
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));
|
||
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|