package tqq9.lc123.cloud.app.plugin.form.im; import com.alibaba.nacos.common.utils.StringUtils; import kd.bos.algo.DataSet; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.db.DB; import kd.bos.db.DBRoute; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.orm.ORM; import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.util.EventObject; /** * 其他出库申请复制实时查询批次可用量 */ public class OtherOutApplyCopyBillPlugin extends AbstractFormPlugin implements Plugin { @Override public void afterCopyData(EventObject e) { super.afterCopyData(e); DynamicObjectCollection entryentity = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity"); for (DynamicObject dynamicObject : entryentity) { DynamicObject materiel = dynamicObject.getDynamicObject("tqq9_materiel");//物料 DynamicObject dcck = dynamicObject.getDynamicObject("tqq9_dcck");//仓库 String lotNumber = dynamicObject.getString("tqq9_lotnumber");//批号 int seq = dynamicObject.getInt("seq");//批号 if (materiel != null && dcck != null && StringUtils.isNotBlank(lotNumber)) { String sql = "/*dialect*/SELECT \n" + " t1.fmaterialid, \n" + " t1.fwarehouseid,\n" + " t1.flotnum,\n" + " SUM(t1.fqty) - COALESCE(SUM(t2.f_qty), 0) AS qty_difference\n" + "FROM \n" + " (SELECT fmaterialid, fwarehouseid, flotnum, SUM(fqty) AS fqty\n" + " FROM t_im_inv_realbalance\n" + " GROUP BY fmaterialid, fwarehouseid, flotnum) t1\n" + "LEFT JOIN \n" + " (SELECT f_s_materiel, f_s_warehouse, f_s_lotnum, SUM(f_qty) AS f_qty\n" + " FROM t_msmod_reserverecord\n" + " GROUP BY f_s_materiel, f_s_warehouse, f_s_lotnum) t2\n" + "ON t1.fmaterialid = t2.f_s_materiel \n" + " AND t1.fwarehouseid = t2.f_s_warehouse\n" + " AND t1.flotnum = t2.f_s_lotnum\n" + " WHERE \n" + " t1.fmaterialid = " + materiel.getDynamicObject("masterid").getString("id") + "\n" + " AND t1.fwarehouseid = " + dcck.getString("id") + " \n" + " AND t1.flotnum = '" + lotNumber + "' \n" + "GROUP BY t1.fmaterialid, t1.fwarehouseid, t1.flotnum;\n"; DataSet materialDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), sql); DataSet copy1 = materialDataSet.copy(); DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy1); if (dynamicObjects.size() > 0) { BigDecimal total_qty = dynamicObjects.get(0).getBigDecimal("qty_difference"); this.getModel().setValue("tqq9_pckyamount", total_qty, seq-1); } }else if (materiel != null && dcck != null && StringUtils.isBlank(lotNumber)) { String sql = "/*dialect*/SELECT \n" + " t1.fmaterialid, \n" + " t1.fwarehouseid,\n" + " SUM(t1.fqty) - COALESCE(SUM(t2.f_qty), 0) AS qty_difference\n" + "FROM \n" + " (SELECT fmaterialid, fwarehouseid, SUM(fqty) AS fqty\n" + " FROM t_im_inv_realbalance\n" + " GROUP BY fmaterialid, fwarehouseid) t1\n" + "LEFT JOIN \n" + " (SELECT f_s_materiel, f_s_warehouse, SUM(f_qty) AS f_qty\n" + " FROM t_msmod_reserverecord\n" + " GROUP BY f_s_materiel, f_s_warehouse) t2\n" + "ON t1.fmaterialid = t2.f_s_materiel \n" + " AND t1.fwarehouseid = t2.f_s_warehouse\n" + " WHERE \n" + " t1.fmaterialid = " + materiel.getDynamicObject("masterid").getString("id") + "\n" + " AND t1.fwarehouseid = " + dcck.getString("id") + " \n" + "GROUP BY t1.fmaterialid, t1.fwarehouseid;\n"; DataSet materialDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), sql); DataSet copy1 = materialDataSet.copy(); DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy1); if (dynamicObjects.size() > 0) { BigDecimal total_qty = dynamicObjects.get(0).getBigDecimal("qty_difference"); this.getModel().setValue("tqq9_pckyamount", total_qty, seq-1); } } } } }