package tqq9.lc123.cloud.app.plugin.form.pm; import com.google.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.IDataModel; import kd.bos.form.plugin.AbstractFormPlugin; 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.math.BigDecimal; import java.util.ArrayList; import java.util.EventObject; import java.util.HashMap; import java.util.Map; /** * 采购订单单复制实时查询供应商历史未到货金额,数量,已经返利信息 */ public class PurOrderCopyBillPlugin extends AbstractFormPlugin implements Plugin { private static String URL; private static String FLXT_TOKEN; static { DynamicObject url = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", new QFilter[]{new QFilter("number", QCP.equals, "FLXT_Balance_Url")}); 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 afterCopyData(EventObject e) { super.afterCopyData(e); DynamicObject dataEntity = this.getModel().getDataEntity(); DynamicObject supplier = dataEntity.getDynamicObject("supplier"); BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalCount = BigDecimal.ZERO; if (null != supplier) { //查询已审核未关闭非克隆(上游单据编号为空)数量-到货数量、有优惠有返利含税单价*(数量-到货数量) // 查询正常的采购订单 总额,总数量 QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue()); QFilter f2 = new QFilter("billstatus", "=", "C");//已审核 QFilter f3 = new QFilter("closestatus", "=", "A");//关闭状态正常 QFilter f4 = new QFilter("tqq9_sourcebillno", "=", "");//上游单据编号为空 DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_receiptnotice", "id,billno,supplier,billentry.qty,billentry.tqq9_dhsl,billentry.tqq9_yyhyflje,tqq9_sourcebillno", new QFilter[]{f1, f2, f3, f4}); for (DynamicObject bill : pmBillArr) { //String billno = bill.getString("billno"); //String tqq9_sourcebillno = bill.getString("tqq9_sourcebillno"); DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry"); for (DynamicObject entry : entries) { BigDecimal qty = entry.getBigDecimal("qty") == null ? BigDecimal.ZERO : entry.getBigDecimal("qty");//数量 BigDecimal tqq9_dhsl = entry.getBigDecimal("tqq9_dhsl") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_dhsl");//到货数量 BigDecimal wrkqty = qty.subtract(tqq9_dhsl);//未入库数量 totalCount = totalCount.add(wrkqty); BigDecimal tqq9_disandrefoundprice = entry.getBigDecimal("tqq9_yyhyflje") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_yyhyflje");//有优惠有返利含税单价 BigDecimal wrkAmount = tqq9_disandrefoundprice.multiply(wrkqty); totalAmount = totalAmount.add(wrkAmount); } } this.getModel().setValue("tqq9_lswdhje", totalAmount); this.getModel().setValue("tqq9_lswdhsl", totalCount); LCLogService lcLogService = new LCLogServiceImpl(); HashMap tokenMap = new HashMap(); tokenMap.put("Authorization", FLXT_TOKEN); IDataModel model = this.getModel(); DynamicObject org = (DynamicObject) model.getValue("org");//组织 if (supplier != null && org != null) { String number = org.getString("number"); DynamicObject org_fl = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", new QFilter[]{new QFilter("number", QCP.equals, number)}); if (org_fl == null) { this.getView().showErrorNotification("组织选择错误"); } String orgid_fl = org_fl != null ? org_fl.getString("name") : null; HashMap queryMap = new HashMap<>(); String tqq9_ztsupplierid = supplier.getString("tqq9_ztsupplierid"); if (StringUtils.isBlank(tqq9_ztsupplierid)) { tqq9_ztsupplierid = "0"; } queryMap.put("supplierId", tqq9_ztsupplierid); queryMap.put("companyId", orgid_fl); Gson gson = new Gson(); try { String bodyString = HttpRequestUtils.doGet(URL, queryMap, tokenMap); HashMap map = gson.fromJson(bodyString, HashMap.class); ArrayList> data = (ArrayList) map.get("data"); if (data != null) { for (Map datum : data) { Map dataMap = datum; String type = dataMap.get("type").toString();//类型 BigDecimal totalMoney = new BigDecimal((Double) dataMap.get("totalMoney"));//剩余总金额 BigDecimal totalMoneyAvailable = new BigDecimal((Double) dataMap.get("totalMoneyAvailable"));//可使用金额 if (StringUtils.equals(type, "0.0")) { //货返 model.setValue("tqq9_hshfzje", totalMoney);//含税货返总金额 model.setValue("tqq9_hshfkyje", totalMoneyAvailable);//含税货返可用金额 } else if (StringUtils.equals(type, "1.0")) { //现返 model.setValue("tqq9_hsxfzje", totalMoney);//含税现返总金额 model.setValue("tqq9_hsxfkyje", totalMoneyAvailable);//含税现返可用金额 } } lcLogService.savelog("查询返利金额", URL, false, true, queryMap.toString(), bodyString); } } catch (IOException ex) { lcLogService.savelog("查询返利金额", URL, false, false, queryMap.toString(), "接口调用报错,无返回值"); throw new RuntimeException(ex + ",请求返利系统失败"); } } } } }