diff --git a/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java new file mode 100644 index 0000000..9cbab55 --- /dev/null +++ b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java @@ -0,0 +1,103 @@ +package tqq9.lc123.cloud.app.plugin.form.conm; + +import com.alibaba.fastjson.JSONObject; +import com.bes.gson.Gson; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; +import tqq9.lc123.cloud.app.eip.iscb.LCLogService; +import tqq9.lc123.cloud.app.eip.iscb.impl.LCLogServiceImpl; +import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * 标准单据列表插件 + */ +public class ConmChangePlugin extends AbstractListPlugin implements Plugin { + final static String KEY_OPKEY = "bizchange"; + private static String Change_URL; + private static String FLXT_TOKEN; + + static { + DynamicObject url = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "FLXT_Change_Url")}); + Change_URL = url != null ? url.getString("name") : null; + DynamicObject token = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "FLXT_TOKEN")}); + FLXT_TOKEN = token != null ? token.getString("name") : null; + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate formOperate = (FormOperate) args.getSource(); + if (StringUtils.equals(KEY_OPKEY, formOperate.getOperateKey())) { + LCLogService lcLogService = new LCLogServiceImpl(); + BillList billlistap = this.getControl("billlistap"); + HashMap params = new HashMap<>(); + HashMap headers = new HashMap<>(); + headers.put("Authorization", FLXT_TOKEN); + ListSelectedRowCollection selectedRows = billlistap.getSelectedRows(); + if (selectedRows != null && selectedRows.size() > 0) { + for (ListSelectedRow listSelectedRow : selectedRows) { + Object primaryKeyValue = listSelectedRow.getPrimaryKeyValue(); //获取单据pkid + DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("conm_purcontract", + new QFilter[]{new QFilter("id", QCP.equals, primaryKeyValue)}); + DynamicObjectCollection tqq9Entryentity = dataEntity.getDynamicObjectCollection("tqq9_entryentity"); + for (DynamicObject dynamicObject : tqq9Entryentity) {// + DynamicObject tqq9_pur_rebate = dynamicObject.getDynamicObject("tqq9_pur_rebate"); + DynamicObject tqq9_pur_rebate1 = BusinessDataServiceHelper.loadSingle("tqq9_pur_rebate", new QFilter[]{new QFilter("id", QCP.equals, tqq9_pur_rebate.getLong("id"))}); + String id = tqq9_pur_rebate1.getString("id");//获取返利单据id + String tqq9_rebateruleid = tqq9_pur_rebate1.getString("tqq9_rebateruleid");//获取返利规则id + if (tqq9_rebateruleid != null && id != null) { + params.put("id", tqq9_rebateruleid); + } + + Gson gson = new Gson(); + try { + String bodyString = HttpRequestUtils.doGet(Change_URL, params, headers); + JSONObject map = gson.fromJson(bodyString, JSONObject.class); + Integer code = map.getInteger("code"); + if (code == 0) { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, true, params.toString(), bodyString); + Map data = (Map) map.get("data"); + if (data != null) { + Number statusNum = (Number) data.get("status"); + if (statusNum != null) { + int status = statusNum.intValue(); + if (status == -1 || status == 1 || status == 4) { + //终止流程 + this.getView().showErrorNotification("该状态下不允许变更!"); + args.setCancel(true); + return; + } + } + } + } else { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, true, params.toString(), bodyString); + args.setCancel(true); + return; + } + } catch (IOException e) { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, false, params.toString(), "接口调用报错,errormessage:" + e.getMessage()); + throw new RuntimeException(e + ",请求返利规则状态查询失败"); + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java b/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java new file mode 100644 index 0000000..b9be5a7 --- /dev/null +++ b/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java @@ -0,0 +1,83 @@ +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.entity.plugin.args.BeforeOperationArgs; +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 kd.sdk.plugin.Plugin; + +import java.util.List; +import java.util.Map; + +/** + * 单据操作插件 + */ +public class WarehouseReceiptClone extends AbstractOperationServicePlugIn implements Plugin { + private final static Log logger = LogFactory.getLog(WarehouseReceiptClone.class); + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + + DynamicObject[] dataEntities1 = e.getDataEntities();//获取数据实体 + for (DynamicObject dynamicObject : dataEntities1) { + StringBuilder billnoSet = new StringBuilder(); + //查找上游单据 + Map> sourceBillsMap = BFTrackerServiceHelper.findDirtSourceBills(dynamicObject.getDataEntityType().getName(), new Long[]{dynamicObject.getLong("id")}); + if (sourceBillsMap.size() > 0 && sourceBillsMap != null) { + List bfRows = sourceBillsMap.get(dynamicObject.getLong("id")); + if (bfRows != null) { + for (BFRow bfRow : bfRows) { + Long billId = bfRow.getSId().getBillId();//获取上游订单ID + DynamicObject[] im_otheroutbill = BusinessDataServiceHelper.load("im_otheroutbill", + "billno", new QFilter[]{new QFilter("id", QCP.equals, billId)}); + if (im_otheroutbill != null) { + for (int i = 0; i < im_otheroutbill.length; i++) { + DynamicObject doj = im_otheroutbill[i]; + billnoSet.append(doj.get("billno")); + if (i < im_otheroutbill.length - 1) { + billnoSet.append("、"); + } + } + } + } + } + } + //查找再克隆 + QFilter qf1 = new QFilter("id", QCP.equals, dynamicObject.getLong("id")); + dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getDataEntityType().getName(), new QFilter[]{qf1}); + DynamicObject newData = (DynamicObject) new CloneUtils(false, true).clone(dynamicObject); + newData.set("billno", dynamicObject.getString("billno")); + newData.set("billstatus", "C"); + newData.set("tqq9_sourcebillno", billnoSet); + //保存 + SaveServiceHelper.save(new DynamicObject[]{newData}); + //反审核 + OperateOption option = OperateOption.create(); + StringBuilder message = new StringBuilder(); + OperationResult unauditResult = OperationServiceHelper.executeOperate("unaudit", dynamicObject.getDataEntityType().getName(), new DynamicObject[]{dynamicObject}, OperateOption.create()); + if (unauditResult.isSuccess()) { + OperationResult deleteResult = OperationServiceHelper.executeOperate("delete", dynamicObject.getDataEntityType().getName(), new DynamicObject[]{dynamicObject}, OperateOption.create()); + + deleteResult.getAllErrorOrValidateInfo().forEach((error) -> { + message.append(error.getMessage()); + }); + } else { + unauditResult.getAllErrorOrValidateInfo().forEach((error) -> { + message.append(error.getMessage()); + }); + } + } + } +} \ No newline at end of file