142 lines
8.5 KiB
Java
142 lines
8.5 KiB
Java
package tqq9.lc123.cloud.app.plugin.operate.im;
|
||
|
||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||
import kd.bos.dataentity.entity.DynamicObject;
|
||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||
import kd.bos.dataentity.metadata.IDataEntityProperty;
|
||
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
||
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.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.sdk.plugin.Plugin;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.util.*;
|
||
|
||
/**
|
||
* 其他入库申请下推其他入库
|
||
*/
|
||
public class OtherInApplyPushOtherInConvertPlugin extends AbstractConvertPlugIn implements Plugin {
|
||
|
||
private final static Log logger = LogFactory.getLog(OtherInApplyPushOtherInConvertPlugin.class);
|
||
private static String OTHERINBILL = "im_otherinbill";
|
||
|
||
|
||
/**
|
||
* 入库回传下推写入对应的
|
||
* quantity 入库数量
|
||
* manufactureDate 生产日期
|
||
* expirationDate 失效期
|
||
* batch 批次
|
||
* registrationCode 注册证号
|
||
* licenceCode 生产许可证号
|
||
* producer 生产厂商
|
||
*
|
||
* @param e
|
||
*/
|
||
@Override
|
||
public void afterConvert(AfterConvertEventArgs e) {
|
||
super.afterConvert(e);
|
||
ExtendedDataEntitySet targetExtDataEntitySet = e.getTargetExtDataEntitySet();
|
||
ExtendedDataEntity[] extendedDataEntities = targetExtDataEntitySet.FindByEntityKey(OTHERINBILL);
|
||
Map<String, String> variables = this.getOption().getVariables();
|
||
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
|
||
//采购入库单
|
||
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
||
DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("billentry");
|
||
ListIterator<DynamicObject> iterator = dynamicObjectCollection.listIterator();
|
||
while (iterator.hasNext()) {
|
||
DynamicObject entry = iterator.next();
|
||
String srcbillentryid = entry.getString("srcbillentryid");
|
||
//核心单据号一致,写入数据
|
||
if (variables.containsKey(srcbillentryid)) {
|
||
String jsonString = variables.get(srcbillentryid);
|
||
ObjectMapper objectMapper = new ObjectMapper();
|
||
List<HashMap<String, Object>> jsonList = null;
|
||
try {
|
||
jsonList = objectMapper.readValue(jsonString, objectMapper.getTypeFactory().constructCollectionType(List.class, HashMap.class));
|
||
} catch (JsonProcessingException ex) {
|
||
throw new RuntimeException(ex);
|
||
}
|
||
if (jsonList != null) {
|
||
dataEntity.set("tqq9_isrebulidlink", true);
|
||
for (int i = 0; i < jsonList.size(); i++) {
|
||
HashMap<String, Object> jsonMap = jsonList.get(i);
|
||
String VoucherType = jsonMap.get("VoucherType").toString();//类型
|
||
Date manufactureDate = null;
|
||
Date expirationDate = null;
|
||
if (jsonMap.get("manufactureDate") instanceof Long) {
|
||
manufactureDate = new Date((Long) jsonMap.get("manufactureDate")); //生产日期
|
||
}
|
||
if (jsonMap.get("expirationDate") instanceof Long) {
|
||
expirationDate = new Date((Long) jsonMap.get("expirationDate")); //生产日期
|
||
}
|
||
BigDecimal quantity = BigDecimal.ZERO;
|
||
if (com.alibaba.nacos.common.utils.StringUtils.equals("sm_delivernotice", VoucherType)) {
|
||
quantity = new BigDecimal(jsonMap.get("quantity").toString());//入库数量
|
||
} else {
|
||
quantity = new BigDecimal(jsonMap.get("quantity").toString()).negate();//入库数量
|
||
}
|
||
String batch = jsonMap.get("batch") != null ? jsonMap.get("batch").toString() : null; // 批次
|
||
String wmsDetailId = jsonMap.get("wmsDetailId") != null ? jsonMap.get("wmsDetailId").toString() : null; // WMS分录id
|
||
String uniqueCode = jsonMap.get("uniqueCode") != null ? jsonMap.get("uniqueCode").toString() : null; // 商品编码
|
||
String registrationCode = jsonMap.get("registrationCode") != null ? jsonMap.get("registrationCode").toString() : null; // 注册证号
|
||
String licenceCode = jsonMap.get("licenceCode") != null ? jsonMap.get("licenceCode").toString() : null; // 生产许可证号
|
||
String producer = jsonMap.get("producer") != null ? jsonMap.get("producer").toString() : null; // 生产厂商
|
||
DynamicObject tqq9_goodspackage = BusinessDataServiceHelper.loadSingle("tqq9_goodspackage", new QFilter[]{new QFilter("tqq9_mater.number", QCP.equals, uniqueCode).and("tqq9_isauto", QCP.equals, true)});
|
||
DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("number", QCP.equals, registrationCode)});
|
||
DynamicObject tqq9_proxyandfactory = BusinessDataServiceHelper.loadSingle("tqq9_proxyandfactory", new QFilter[]{new QFilter("number", QCP.equals, producer)});
|
||
// 处理第一次逻辑
|
||
if (i == 0) {
|
||
// 第一次直接赋值
|
||
entry.set("qty", quantity);
|
||
entry.set("baseqty", quantity);
|
||
entry.set("tqq9_goods", tqq9_goodspackage);
|
||
entry.set("producedate", manufactureDate);
|
||
entry.set("expirydate", expirationDate);
|
||
entry.set("lotnumber", batch);
|
||
entry.set("tqq9_wmsdetailid", wmsDetailId);
|
||
entry.set("tqq9_licenseno", licenceCode);
|
||
entry.set("tqq9_zczh", tqq9_registration);
|
||
entry.set("tqq9_sccs", tqq9_proxyandfactory);
|
||
DynamicObjectCollection billentry_lk = entry.getDynamicObjectCollection("billentry_lk");
|
||
billentry_lk.clear();
|
||
} else {
|
||
DataEntityPropertyCollection properties = entry.getDataEntityType().getProperties();
|
||
// 后续循环复制entry并赋值
|
||
DynamicObject newEntry = new DynamicObject(dynamicObjectCollection.getDynamicObjectType());
|
||
for (IDataEntityProperty property : properties) {
|
||
newEntry.set(property.getName(), entry.get(property.getName()));
|
||
}
|
||
newEntry.set("qty", quantity);
|
||
newEntry.set("baseqty", quantity);
|
||
newEntry.set("tqq9_goods", tqq9_goodspackage);
|
||
newEntry.set("producedate", manufactureDate);
|
||
newEntry.set("expirydate", expirationDate);
|
||
newEntry.set("lotnumber", batch);
|
||
newEntry.set("tqq9_wmsdetailid", wmsDetailId);
|
||
newEntry.set("tqq9_licenseno", licenceCode);
|
||
newEntry.set("tqq9_zczh", tqq9_registration);
|
||
newEntry.set("tqq9_sccs", tqq9_proxyandfactory);
|
||
DynamicObjectCollection billentry_lk = newEntry.getDynamicObjectCollection("billentry_lk");
|
||
billentry_lk.clear();
|
||
// 处理完新entry后的逻辑(比如加入集合或其他操作)
|
||
iterator.add(newEntry);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
} |