package tqq9.lc123.cloud.app.plugin.operate.im; import com.google.gson.Gson; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.ExtendedDataEntitySet; import kd.bos.entity.botp.plugin.AbstractConvertPlugIn; import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs; 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.HashMap; import java.util.Map; /** * 单据转换插件 */ public class PurApplyPushPurOrderConverPlugin extends AbstractConvertPlugIn 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 afterConvert(AfterConvertEventArgs e) { super.afterConvert(e); ExtendedDataEntitySet targetExtDataEntitySet = e.getTargetExtDataEntitySet(); ExtendedDataEntity[] extendedDataEntities = targetExtDataEntitySet.FindByEntityKey("pm_purorderbill"); Map variables = this.getOption().getVariables(); for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { //采购订单 DynamicObject dataEntity = extendedDataEntity.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); } } dataEntity.set("tqq9_lswdhje", totalAmount); dataEntity.set("tqq9_lswdhsl", totalCount); LCLogService lcLogService = new LCLogServiceImpl(); HashMap tokenMap = new HashMap(); tokenMap.put("Authorization", FLXT_TOKEN); DynamicObject org = dataEntity.getDynamicObject("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)}); String orgid_fl = org_fl != null ? org_fl.getString("name") : null; HashMap queryMap = new HashMap<>(); String tqq9_ztsupplierid = supplier.getString("tqq9_ztsupplierid"); if (kd.bos.dataentity.utils.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 (kd.bos.dataentity.utils.StringUtils.equals(type, "0.0")) { //货返 dataEntity.set("tqq9_hshfzje", totalMoney);//含税货返总金额 dataEntity.set("tqq9_hshfkyje", totalMoneyAvailable);//含税货返可用金额 } else if (kd.bos.dataentity.utils.StringUtils.equals(type, "1.0")) { //现返 dataEntity.set("tqq9_hsxfzje", totalMoney);//含税现返总金额 dataEntity.set("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 + ",请求返利系统失败"); } } } } } }