146 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Java
		
	
	
	
package tqq9.lc123.cloud.app.plugin.operate.im;
 | 
						||
 | 
						||
import com.alibaba.nacos.common.utils.StringUtils;
 | 
						||
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.EntityMetadataCache;
 | 
						||
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.ORM;
 | 
						||
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 PurInConvertPlugin extends AbstractConvertPlugIn implements Plugin {
 | 
						||
 | 
						||
    private final static Log logger = LogFactory.getLog(PurInConvertPlugin.class);
 | 
						||
    private static String IM_PURINBILL = "im_purinbill";
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * 入库回传下推写入对应的
 | 
						||
     * 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(IM_PURINBILL);
 | 
						||
        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) {
 | 
						||
                        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 (StringUtils.equals("pm_receiptnotice", 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_registration", tqq9_registration);
 | 
						||
                                entry.set("tqq9_proxyandfactory", tqq9_proxyandfactory);
 | 
						||
                            } 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()));
 | 
						||
                                }
 | 
						||
                                ORM orm = ORM.create();
 | 
						||
                                Long id = orm.genLongId(EntityMetadataCache.getDataEntityType("im_purinbill"));
 | 
						||
                                newEntry.set("id",id);
 | 
						||
                                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_registration", tqq9_registration);
 | 
						||
                                newEntry.set("tqq9_proxyandfactory", tqq9_proxyandfactory);
 | 
						||
                                // 处理完新entry后的逻辑(比如加入集合或其他操作)
 | 
						||
                                iterator.add(newEntry);
 | 
						||
                            }
 | 
						||
 | 
						||
                        }
 | 
						||
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
} |