92 lines
5.0 KiB
Java
92 lines
5.0 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} |