根据物料 批号,生产日期,到期日期查询商品
This commit is contained in:
		
							parent
							
								
									bae67f370a
								
							
						
					
					
						commit
						b357c2c27c
					
				|  | @ -213,13 +213,13 @@ public class WMSAdjustBillController { | ||||||
|                 materialinv = BusinessDataServiceHelper.loadSingle(materialinv.getPkValue(), "bd_materialinventoryinfo"); |                 materialinv = BusinessDataServiceHelper.loadSingle(materialinv.getPkValue(), "bd_materialinventoryinfo"); | ||||||
|                 //调整前商品 |                 //调整前商品 | ||||||
|                 DynamicObject oGoods = null; |                 DynamicObject oGoods = null; | ||||||
|                 DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cOBatch, true); |                 DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cOBatch, dOMDate, dOVDate, true); | ||||||
|                 if(oGoodsArr != null && oGoodsArr.length > 0){ |                 if(oGoodsArr != null && oGoodsArr.length > 0){ | ||||||
|                     oGoods = oGoodsArr[0]; |                     oGoods = oGoodsArr[0]; | ||||||
|                 } |                 } | ||||||
|                 //调整后商品 |                 //调整后商品 | ||||||
|                 DynamicObject iGoods = null; |                 DynamicObject iGoods = null; | ||||||
|                 DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cIBatch, true); |                 DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cIBatch, dIMDate, dIVDate, true); | ||||||
|                 if(iGoodsArr != null && iGoodsArr.length > 0){ |                 if(iGoodsArr != null && iGoodsArr.length > 0){ | ||||||
|                     iGoods = iGoodsArr[0]; |                     iGoods = iGoodsArr[0]; | ||||||
|                 } |                 } | ||||||
|  | @ -456,7 +456,7 @@ public class WMSAdjustBillController { | ||||||
|             String remark = ckObj.getString("remark");//备注 |             String remark = ckObj.getString("remark");//备注 | ||||||
|             //调整前商品 |             //调整前商品 | ||||||
|             DynamicObject oGoods = null; |             DynamicObject oGoods = null; | ||||||
|             DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode, true); |             DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode, productDate, expireDate, true); | ||||||
|             if(oGoodsArr != null && oGoodsArr.length > 0){ |             if(oGoodsArr != null && oGoodsArr.length > 0){ | ||||||
|                 oGoods = oGoodsArr[0]; |                 oGoods = oGoodsArr[0]; | ||||||
|             }else{ |             }else{ | ||||||
|  | @ -464,9 +464,13 @@ public class WMSAdjustBillController { | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             String batchCode_e = rkObj.getString("batchCode");//入库批号 |             String batchCode_e = rkObj.getString("batchCode");//入库批号 | ||||||
|  |             //调整后生产日期 | ||||||
|  |             Date productDate_e = rkObj.getDate("productDate"); | ||||||
|  |             //调整后有效期 | ||||||
|  |             Date expireDate_e = rkObj.getDate("expireDate"); | ||||||
|             //调整后商品 |             //调整后商品 | ||||||
|             DynamicObject iGoods = null; |             DynamicObject iGoods = null; | ||||||
|             DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode_e, true); |             DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode_e, productDate, expireDate, true); | ||||||
|             if(iGoodsArr != null && iGoodsArr.length > 0){ |             if(iGoodsArr != null && iGoodsArr.length > 0){ | ||||||
|                 iGoods = iGoodsArr[0]; |                 iGoods = iGoodsArr[0]; | ||||||
|             }else{ |             }else{ | ||||||
|  | @ -486,10 +490,6 @@ public class WMSAdjustBillController { | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             int quantity_e = rkObj.getInteger("quantity"); |             int quantity_e = rkObj.getInteger("quantity"); | ||||||
|             //调整后生产日期 |  | ||||||
|             Date productDate_e = rkObj.getDate("productDate"); |  | ||||||
|             //调整后有效期 |  | ||||||
|             Date expireDate_e = rkObj.getDate("expireDate"); |  | ||||||
| 
 | 
 | ||||||
|             //常量准备-查询单据类型 |             //常量准备-查询单据类型 | ||||||
|             QFilter f = new QFilter("number", "=", "im_Adjustbill_STD_BT_S"); |             QFilter f = new QFilter("number", "=", "im_Adjustbill_STD_BT_S"); | ||||||
|  |  | ||||||
|  | @ -0,0 +1,74 @@ | ||||||
|  | package tqq9.lc123.cloud.app.plugin.form.sys; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | import kd.bos.bill.AbstractBillPlugIn; | ||||||
|  | import kd.bos.dataentity.entity.DynamicObject; | ||||||
|  | import kd.bos.entity.datamodel.events.ChangeData; | ||||||
|  | import kd.bos.entity.datamodel.events.PropertyChangedArgs; | ||||||
|  | import tqq9.lc123.cloud.app.plugin.utils.BaseDataMatchUtils; | ||||||
|  | 
 | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  | import java.util.stream.Stream; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 根据物料获取商品信息 | ||||||
|  |  */ | ||||||
|  | public class GetGoodsByMaterialBillPlugin extends AbstractBillPlugIn { | ||||||
|  | 
 | ||||||
|  |     private static Set<String> materialFieldNameSet_1; | ||||||
|  |     private static Set<String> materialFieldNameSet_2; | ||||||
|  |     private static Set<String> materialFieldNameSet_3; | ||||||
|  |     static{ | ||||||
|  |         materialFieldNameSet_1 = Stream.of("im_purinbill", "sm_salorder", "sm_delivernotice", "im_saloutbill", | ||||||
|  |                 "im_otheroutbill", "tqq9_otherinapply", "im_otherinbill", "im_adjustbill").collect(Collectors.toSet());//material | ||||||
|  |         materialFieldNameSet_2 = Stream.of("ar_busbill", "ar_finarbill", "ap_payapply", "ar_busbill", "ar_finarbill").collect(Collectors.toSet());//e_material | ||||||
|  |         materialFieldNameSet_3 = Stream.of("tqq9_otheroutapply").collect(Collectors.toSet());//tqq9_materiel | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void propertyChanged(PropertyChangedArgs e) { | ||||||
|  |         super.propertyChanged(e); | ||||||
|  |         ChangeData[] changeSet = e.getChangeSet(); | ||||||
|  |         int rowIndex = changeSet[0].getRowIndex(); | ||||||
|  |         String name = e.getProperty().getName(); | ||||||
|  |         String materialFieldName = "material"; | ||||||
|  |         DynamicObject dataEntity = this.getModel().getDataEntity(true); | ||||||
|  |         String dataEntityName = dataEntity.getDataEntityType().getName(); | ||||||
|  |         if(materialFieldNameSet_1.contains(dataEntityName)){ | ||||||
|  |             materialFieldName = "material"; | ||||||
|  |         }else if (materialFieldNameSet_2.contains(dataEntityName)){ | ||||||
|  |             materialFieldName = "e_material"; | ||||||
|  |         }else if (materialFieldNameSet_3.contains(dataEntityName)){ | ||||||
|  |             materialFieldName = "tqq9_materiel"; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if(materialFieldName.equals(name) || "lotnumber".equals(name) || "producedate".equals(name) || "expirydate".equals(name)){ | ||||||
|  |             DynamicObject material = (DynamicObject) this.getModel().getValue(materialFieldName, rowIndex); | ||||||
|  |             String lotnumber = (String) this.getModel().getValue("lotnumber", rowIndex); | ||||||
|  |             Date producedate = (Date) this.getModel().getValue("producedate", rowIndex); | ||||||
|  |             Date expirydate = (Date) this.getModel().getValue("expirydate", rowIndex); | ||||||
|  |             if(material != null){ | ||||||
|  |                 DynamicObject[] goodsArr = BaseDataMatchUtils.materialMatchGoods(material.getString("number"), lotnumber, producedate, expirydate, false); | ||||||
|  |                 this.getModel().setValue("tqq9_goods", goodsArr[0], rowIndex); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 形态转换单子明细 | ||||||
|  |         if("im_adjustbill".equals(dataEntityName) ){ | ||||||
|  |             int parentRowIndex = changeSet[0].getParentRowIndex(); | ||||||
|  |             if ("material1".equals(name) || "lotnumber".equals(name) || "producedate".equals(name) || "expirydate".equals(name)){ | ||||||
|  |                 DynamicObject material = (DynamicObject) this.getModel().getValue("material1", rowIndex); | ||||||
|  |                 String lotnumber = (String) this.getModel().getValue("lotnumber", rowIndex); | ||||||
|  |                 Date producedate = (Date) this.getModel().getValue("producedate", rowIndex); | ||||||
|  |                 Date expirydate = (Date) this.getModel().getValue("expirydate", rowIndex); | ||||||
|  |                 if(material != null){ | ||||||
|  |                     DynamicObject[] goodsArr = BaseDataMatchUtils.materialMatchGoods(material.getString("number"), lotnumber, producedate, expirydate, false); | ||||||
|  |                     this.getModel().setValue("tqq9_goods", goodsArr[0], rowIndex, parentRowIndex); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -7,6 +7,7 @@ import org.apache.poi.util.ArrayUtil; | ||||||
| import scala.Dynamic; | import scala.Dynamic; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.Date; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -30,19 +31,32 @@ public class BaseDataMatchUtils { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 根据物料编码查找对应商品 |      * | ||||||
|      * @param materialNumber    物料编码 |      * @param materialNumber | ||||||
|      * @param lotNumber         批号 |      * @param lotNumber | ||||||
|      * @param isauto            是否自动封装的商品 |      * @param producedate | ||||||
|  |      * @param expirydate | ||||||
|  |      * @param isauto | ||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     public static DynamicObject[] materialMatchGoods(String materialNumber, String lotNumber, boolean isauto){ |     public static DynamicObject[] materialMatchGoods(String materialNumber, String lotNumber, Date producedate, Date expirydate, boolean isauto){ | ||||||
|         QFilter f1 = new QFilter("tqq9_mater.number", "=", materialNumber); |         QFilter f1 = new QFilter("tqq9_mater.number", "=", materialNumber); | ||||||
|         QFilter f2 = new QFilter("tqq9_entry.tqq9_lot.number", "=", lotNumber); |         QFilter f2 = new QFilter("tqq9_entry.tqq9_lot.number", "=", lotNumber); | ||||||
|         QFilter f3 = new QFilter("tqq9_isauto", "=", isauto); |         QFilter f3 = new QFilter("tqq9_entry.producedate", "=", producedate); | ||||||
|         DynamicObject[] goodsA = BusinessDataServiceHelper.load("tqq9_goodspackage", |         QFilter f4 = new QFilter("tqq9_entry.expirydate", "=", expirydate); | ||||||
|                 "id,number,name,tqq9_mater.baseunit,tqq9_mater.modelnum,tqq9_isauto", |         QFilter f5 = new QFilter("tqq9_isauto", "=", isauto); | ||||||
|                 new QFilter[]{f1, f2, f3}); |         DynamicObject[] goodsA = null; | ||||||
|  |         if(isauto){ | ||||||
|  |             // 只取自动封装的商品 | ||||||
|  |             goodsA = BusinessDataServiceHelper.load("tqq9_goodspackage", | ||||||
|  |                     "id,number,name,tqq9_mater.baseunit,tqq9_mater.modelnum,tqq9_isauto", | ||||||
|  |                     new QFilter[]{f1, f2, f3, f4, f5}); | ||||||
|  |         }else{ | ||||||
|  |             // 取所有的商品 | ||||||
|  |             goodsA = BusinessDataServiceHelper.load("tqq9_goodspackage", | ||||||
|  |                     "id,number,name,tqq9_mater.baseunit,tqq9_mater.modelnum,tqq9_isauto", | ||||||
|  |                     new QFilter[]{f1, f2, f3, f4}); | ||||||
|  |         } | ||||||
|         if(goodsA != null && goodsA.length > 0){ |         if(goodsA != null && goodsA.length > 0){ | ||||||
|             List<DynamicObject> goodsList = new ArrayList<>(); |             List<DynamicObject> goodsList = new ArrayList<>(); | ||||||
|             for (DynamicObject goods : goodsA) { |             for (DynamicObject goods : goodsA) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue