标记2
This commit is contained in:
parent
b4f0ce50d9
commit
2deeee51cb
|
|
@ -15,6 +15,7 @@ import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.dataentity.resource.ResManager;
|
import kd.bos.dataentity.resource.ResManager;
|
||||||
|
|
@ -43,6 +44,10 @@ import kd.ec.material.opplugin.validator.InvAdjustBillExistValidator;
|
||||||
import kd.ec.material.opplugin.validator.MaterialInBillValidator;
|
import kd.ec.material.opplugin.validator.MaterialInBillValidator;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单:(保存、提交撤销、审核反审核)操作插件系统代码二开
|
||||||
|
* 说明:1:审核生成即时库存第一单中的单价与后续更新即时库存的单价不一致,修改了第一单单价的逻辑
|
||||||
|
*/
|
||||||
public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
private static final String ecco_mainmatcost = "ecco_mainmatcost";
|
private static final String ecco_mainmatcost = "ecco_mainmatcost";
|
||||||
private static final String ecco_sporadicmatcost = "ecco_sporadicmatcost";
|
private static final String ecco_sporadicmatcost = "ecco_sporadicmatcost";
|
||||||
|
|
@ -105,7 +110,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
DynamicObject[] var6 = dataEntities;
|
DynamicObject[] var6 = dataEntities;
|
||||||
int var7 = dataEntities.length;
|
int var7 = dataEntities.length;
|
||||||
|
|
||||||
for(int var8 = 0; var8 < var7; ++var8) {
|
for (int var8 = 0; var8 < var7; ++var8) {
|
||||||
DynamicObject bill = var6[var8];
|
DynamicObject bill = var6[var8];
|
||||||
String billId = bill.getString(MaterialInBillConstant.ID_ENTITY_PK);
|
String billId = bill.getString(MaterialInBillConstant.ID_ENTITY_PK);
|
||||||
QFilter payDirectionFilter = new QFilter("paydirection", "=", PayDirectionEnum.OUT.getValue());
|
QFilter payDirectionFilter = new QFilter("paydirection", "=", PayDirectionEnum.OUT.getValue());
|
||||||
|
|
@ -115,7 +120,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
if (objects.length > 0) {
|
if (objects.length > 0) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
|
||||||
for(int i = 0; i < objects.length; ++i) {
|
for (int i = 0; i < objects.length; ++i) {
|
||||||
stringBuilder.append(objects[i].getString("billno"));
|
stringBuilder.append(objects[i].getString("billno"));
|
||||||
if (i != objects.length - 1) {
|
if (i != objects.length - 1) {
|
||||||
stringBuilder.append("、");
|
stringBuilder.append("、");
|
||||||
|
|
@ -151,7 +156,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
DynamicObject orderF7;
|
DynamicObject orderF7;
|
||||||
switch (operationKey) {
|
switch (operationKey) {
|
||||||
case "save":
|
case "save":
|
||||||
for(int i = 0; i < dataEntities.length; ++i) {
|
for (int i = 0; i < dataEntities.length; ++i) {
|
||||||
DynamicObject obj = dataEntities[i];
|
DynamicObject obj = dataEntities[i];
|
||||||
this.doSaveLot(obj);
|
this.doSaveLot(obj);
|
||||||
}
|
}
|
||||||
|
|
@ -161,7 +166,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
succObjs = new ArrayList();
|
succObjs = new ArrayList();
|
||||||
ArrayList<DynamicObject> orders = new ArrayList();
|
ArrayList<DynamicObject> orders = new ArrayList();
|
||||||
|
|
||||||
for(int i = 0; i < dataEntities.length; ++i) {
|
for (int i = 0; i < dataEntities.length; ++i) {
|
||||||
DynamicObject obj = dataEntities[i];
|
DynamicObject obj = dataEntities[i];
|
||||||
obj = obj.getDynamicObject("purchaseorder");
|
obj = obj.getDynamicObject("purchaseorder");
|
||||||
DynamicObjectCollection inEntry = obj.getDynamicObjectCollection("entryentity");
|
DynamicObjectCollection inEntry = obj.getDynamicObjectCollection("entryentity");
|
||||||
|
|
@ -171,8 +176,8 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
Map<String, BigDecimal> inEntriesMap = new HashMap();
|
Map<String, BigDecimal> inEntriesMap = new HashMap();
|
||||||
Iterator var43 = inEntry.iterator();
|
Iterator var43 = inEntry.iterator();
|
||||||
|
|
||||||
while(var43.hasNext()) {
|
while (var43.hasNext()) {
|
||||||
DynamicObject in = (DynamicObject)var43.next();
|
DynamicObject in = (DynamicObject) var43.next();
|
||||||
if (StringUtils.isNotBlank(in.getString("orderentryid"))) {
|
if (StringUtils.isNotBlank(in.getString("orderentryid"))) {
|
||||||
inEntriesMap.put(in.getString("orderentryid"), in.getBigDecimal("qty"));
|
inEntriesMap.put(in.getString("orderentryid"), in.getBigDecimal("qty"));
|
||||||
}
|
}
|
||||||
|
|
@ -181,9 +186,9 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
Boolean allIn = true;
|
Boolean allIn = true;
|
||||||
Iterator var48 = orderEntry.iterator();
|
Iterator var48 = orderEntry.iterator();
|
||||||
|
|
||||||
while(var48.hasNext()) {
|
while (var48.hasNext()) {
|
||||||
orderF7 = (DynamicObject)var48.next();
|
orderF7 = (DynamicObject) var48.next();
|
||||||
BigDecimal inQty = (BigDecimal)inEntriesMap.getOrDefault(orderF7.getString("id"), BigDecimal.ZERO);
|
BigDecimal inQty = (BigDecimal) inEntriesMap.getOrDefault(orderF7.getString("id"), BigDecimal.ZERO);
|
||||||
BigDecimal surplusQty = orderF7.getBigDecimal("surplusqty").subtract(inQty);
|
BigDecimal surplusQty = orderF7.getBigDecimal("surplusqty").subtract(inQty);
|
||||||
orderF7.set("surplusqty", surplusQty);
|
orderF7.set("surplusqty", surplusQty);
|
||||||
if (surplusQty.compareTo(BigDecimal.ZERO) > 0) {
|
if (surplusQty.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
|
@ -206,10 +211,10 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orders.size() > 0) {
|
if (orders.size() > 0) {
|
||||||
SaveServiceHelper.save(((DynamicObject)orders.get(0)).getDynamicObjectType(), orders.toArray(new DynamicObject[orders.size()]));
|
SaveServiceHelper.save(((DynamicObject) orders.get(0)).getDynamicObjectType(), orders.toArray(new DynamicObject[orders.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
|
e.setDataEntities((DynamicObject[]) succObjs.toArray(new DynamicObject[succObjs.size()]));
|
||||||
break;
|
break;
|
||||||
case "unaudit":
|
case "unaudit":
|
||||||
succObjs = new ArrayList();
|
succObjs = new ArrayList();
|
||||||
|
|
@ -218,7 +223,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
var34 = dataEntities;
|
var34 = dataEntities;
|
||||||
var35 = dataEntities.length;
|
var35 = dataEntities.length;
|
||||||
|
|
||||||
for(var37 = 0; var37 < var35; ++var37) {
|
for (var37 = 0; var37 < var35; ++var37) {
|
||||||
o = var34[var37];
|
o = var34[var37];
|
||||||
Object[] objects = o.getDynamicObjectCollection("entryentity").stream().map((entry) -> {
|
Object[] objects = o.getDynamicObjectCollection("entryentity").stream().map((entry) -> {
|
||||||
return entry.getPkValue();
|
return entry.getPkValue();
|
||||||
|
|
@ -248,8 +253,8 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
Map<String, BigDecimal> inEntriesMap = new HashMap();
|
Map<String, BigDecimal> inEntriesMap = new HashMap();
|
||||||
Iterator var26 = inEntry.iterator();
|
Iterator var26 = inEntry.iterator();
|
||||||
|
|
||||||
while(var26.hasNext()) {
|
while (var26.hasNext()) {
|
||||||
DynamicObject in = (DynamicObject)var26.next();
|
DynamicObject in = (DynamicObject) var26.next();
|
||||||
if (StringUtils.isNotBlank(in.getString("orderentryid"))) {
|
if (StringUtils.isNotBlank(in.getString("orderentryid"))) {
|
||||||
inEntriesMap.put(in.getString("orderentryid"), in.getBigDecimal("qty"));
|
inEntriesMap.put(in.getString("orderentryid"), in.getBigDecimal("qty"));
|
||||||
}
|
}
|
||||||
|
|
@ -258,9 +263,9 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
Boolean allIn = true;
|
Boolean allIn = true;
|
||||||
Iterator var53 = orderEntry.iterator();
|
Iterator var53 = orderEntry.iterator();
|
||||||
|
|
||||||
while(var53.hasNext()) {
|
while (var53.hasNext()) {
|
||||||
DynamicObject ordE = (DynamicObject)var53.next();
|
DynamicObject ordE = (DynamicObject) var53.next();
|
||||||
BigDecimal inQty = (BigDecimal)inEntriesMap.getOrDefault(ordE.getString("id"), BigDecimal.ZERO);
|
BigDecimal inQty = (BigDecimal) inEntriesMap.getOrDefault(ordE.getString("id"), BigDecimal.ZERO);
|
||||||
BigDecimal surplusQty = inQty.add(ordE.getBigDecimal("surplusqty"));
|
BigDecimal surplusQty = inQty.add(ordE.getBigDecimal("surplusqty"));
|
||||||
ordE.set("surplusqty", surplusQty);
|
ordE.set("surplusqty", surplusQty);
|
||||||
if (surplusQty.compareTo(BigDecimal.ZERO) > 0) {
|
if (surplusQty.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
|
@ -286,7 +291,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveServiceHelper.save(EntityMetadataCache.getDataEntityType("ecma_purchaseorderbill"), orders1.toArray(new DynamicObject[orders1.size()]));
|
SaveServiceHelper.save(EntityMetadataCache.getDataEntityType("ecma_purchaseorderbill"), orders1.toArray(new DynamicObject[orders1.size()]));
|
||||||
e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
|
e.setDataEntities((DynamicObject[]) succObjs.toArray(new DynamicObject[succObjs.size()]));
|
||||||
break;
|
break;
|
||||||
case "submit":
|
case "submit":
|
||||||
succObjs = new ArrayList();
|
succObjs = new ArrayList();
|
||||||
|
|
@ -294,7 +299,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
var34 = dataEntities;
|
var34 = dataEntities;
|
||||||
var35 = dataEntities.length;
|
var35 = dataEntities.length;
|
||||||
|
|
||||||
for(var37 = 0; var37 < var35; ++var37) {
|
for (var37 = 0; var37 < var35; ++var37) {
|
||||||
o = var34[var37];
|
o = var34[var37];
|
||||||
this.doSaveLot(o);
|
this.doSaveLot(o);
|
||||||
String billNumber = o.getString("billno");
|
String billNumber = o.getString("billno");
|
||||||
|
|
@ -316,13 +321,13 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
succObjs.add(o);
|
succObjs.add(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
|
e.setDataEntities((DynamicObject[]) succObjs.toArray(new DynamicObject[succObjs.size()]));
|
||||||
break;
|
break;
|
||||||
case "unsubmit":
|
case "unsubmit":
|
||||||
succObjs = new ArrayList();
|
succObjs = new ArrayList();
|
||||||
this.rewritePoundBills(dataEntities, true);
|
this.rewritePoundBills(dataEntities, true);
|
||||||
|
|
||||||
for(int i = 0; i < dataEntities.length; ++i) {
|
for (int i = 0; i < dataEntities.length; ++i) {
|
||||||
obj1 = dataEntities[i];
|
obj1 = dataEntities[i];
|
||||||
String result = this.updateMatLocked(obj1, false, false);
|
String result = this.updateMatLocked(obj1, false, false);
|
||||||
if (!"success".equals(result)) {
|
if (!"success".equals(result)) {
|
||||||
|
|
@ -333,7 +338,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
succObjs.add(obj1);
|
succObjs.add(obj1);
|
||||||
}
|
}
|
||||||
|
|
||||||
e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
|
e.setDataEntities((DynamicObject[]) succObjs.toArray(new DynamicObject[succObjs.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -346,7 +351,7 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
}).forEach((dataEntity) -> {
|
}).forEach((dataEntity) -> {
|
||||||
DynamicObjectCollection entryEntity = dataEntity.getDynamicObjectCollection("entryentity");
|
DynamicObjectCollection entryEntity = dataEntity.getDynamicObjectCollection("entryentity");
|
||||||
if (!CollectionUtils.isEmpty(entryEntity)) {
|
if (!CollectionUtils.isEmpty(entryEntity)) {
|
||||||
Set<Long> entryPoundIds = (Set)entryEntity.stream().map((dynamicObject) -> {
|
Set<Long> entryPoundIds = (Set) entryEntity.stream().map((dynamicObject) -> {
|
||||||
return dynamicObject.getLong("poundid");
|
return dynamicObject.getLong("poundid");
|
||||||
}).collect(Collectors.toSet());
|
}).collect(Collectors.toSet());
|
||||||
poundIds.addAll(entryPoundIds);
|
poundIds.addAll(entryPoundIds);
|
||||||
|
|
@ -379,8 +384,8 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
ORM orm = ORM.create();
|
ORM orm = ORM.create();
|
||||||
Map<Integer, DynamicObject> rowLotMap = new HashMap();
|
Map<Integer, DynamicObject> rowLotMap = new HashMap();
|
||||||
|
|
||||||
for(int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
obj = (DynamicObject)inEntry.get(i);
|
obj = (DynamicObject) inEntry.get(i);
|
||||||
lotNum = obj.getString("lot");
|
lotNum = obj.getString("lot");
|
||||||
lotObj = obj.getDynamicObject("lotid");
|
lotObj = obj.getDynamicObject("lotid");
|
||||||
material = obj.getDynamicObject("material");
|
material = obj.getDynamicObject("material");
|
||||||
|
|
@ -498,16 +503,16 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
|
|
||||||
Iterator var27 = rowLotMap.entrySet().iterator();
|
Iterator var27 = rowLotMap.entrySet().iterator();
|
||||||
|
|
||||||
while(var27.hasNext()) {
|
while (var27.hasNext()) {
|
||||||
Map.Entry<Integer, DynamicObject> entry = (Map.Entry)var27.next();
|
Map.Entry<Integer, DynamicObject> entry = (Map.Entry) var27.next();
|
||||||
Integer row = (Integer)entry.getKey();
|
Integer row = (Integer) entry.getKey();
|
||||||
DynamicObject lot = (DynamicObject)entry.getValue();
|
DynamicObject lot = (DynamicObject) entry.getValue();
|
||||||
long genLotId = orm.genLongId("ecma_material_lot");
|
long genLotId = orm.genLongId("ecma_material_lot");
|
||||||
lot.set("id", genLotId);
|
lot.set("id", genLotId);
|
||||||
((DynamicObject)inEntry.get(row)).set("lotid", lot);
|
((DynamicObject) inEntry.get(row)).set("lotid", lot);
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveServiceHelper.save((DynamicObject[])addLotList.toArray(new DynamicObject[addLotList.size()]));
|
SaveServiceHelper.save((DynamicObject[]) addLotList.toArray(new DynamicObject[addLotList.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String updateMatLocked(DynamicObject obj, boolean isLock, boolean isSubmit) {
|
private String updateMatLocked(DynamicObject obj, boolean isLock, boolean isSubmit) {
|
||||||
|
|
@ -522,13 +527,15 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
String result = "success";
|
String result = "success";
|
||||||
if ("REDUCE".equals(type)) {
|
if ("REDUCE".equals(type)) {
|
||||||
if (isSubmit) {
|
if (isSubmit) {
|
||||||
String msg1 = MaterialInventoryUtils.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
|
// String msg1 = MaterialInventoryUtils.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));//系统源码
|
||||||
|
String msg1 = MaterialInventoryUtilsExt2.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]));//二开替代
|
||||||
if (!"success".equals(msg1)) {
|
if (!"success".equals(msg1)) {
|
||||||
return msg1;
|
return msg1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = MaterialInventoryUtils.matBalanceLocked(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isLock);
|
// result = MaterialInventoryUtils.matBalanceLocked(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isLock);//系统源码
|
||||||
|
result = MaterialInventoryUtilsExt2.matBalanceLocked(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]), isLock);//二开替代
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -566,17 +573,20 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
String type = transType.getString("type");
|
String type = transType.getString("type");
|
||||||
if ("INCREASE".equals(type)) {
|
if ("INCREASE".equals(type)) {
|
||||||
if (!isAudit) {
|
if (!isAudit) {
|
||||||
String msg1 = MaterialInventoryUtils.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
|
// String msg1 = MaterialInventoryUtils.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));//系统源码
|
||||||
|
String msg1 = MaterialInventoryUtilsExt2.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]));//二开替代
|
||||||
if (!"success".equals(msg1)) {
|
if (!"success".equals(msg1)) {
|
||||||
result = String.format(ResManager.loadKDString("反审核失败。%s", "MaterialInBillOp_7", "ec-ecma-opplugin", new Object[0]), msg1);
|
result = String.format(ResManager.loadKDString("反审核失败。%s", "MaterialInBillOp_7", "ec-ecma-opplugin", new Object[0]), msg1);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isAudit, exchangerate);
|
// MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isAudit, exchangerate);//系统源码
|
||||||
|
MaterialInventoryUtilsExt2.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]), isAudit, exchangerate);//二开替代
|
||||||
} else if ("REDUCE".equals(type)) {
|
} else if ("REDUCE".equals(type)) {
|
||||||
if (isAudit) {
|
if (isAudit) {
|
||||||
String msg1 = MaterialInventoryUtils.checkInventoryQty(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
|
// String msg1 = MaterialInventoryUtils.checkInventoryQty(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));//系统源码
|
||||||
|
String msg1 = MaterialInventoryUtilsExt2.checkInventoryQty(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]));//二开替代
|
||||||
if (!"success".equals(msg1)) {
|
if (!"success".equals(msg1)) {
|
||||||
result = String.format(ResManager.loadKDString("审核失败。%s", "MaterialInBillOp_8", "ec-ecma-opplugin", new Object[0]), msg1);
|
result = String.format(ResManager.loadKDString("审核失败。%s", "MaterialInBillOp_8", "ec-ecma-opplugin", new Object[0]), msg1);
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -584,7 +594,8 @@ public class MaterialInBillOpExt extends AbstractOperationServicePlugIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isAdd = !isAudit;
|
boolean isAdd = !isAudit;
|
||||||
MaterialInventoryUtils.matBalanceLockAndUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isAdd, exchangerate, false);
|
// MaterialInventoryUtils.matBalanceLockAndUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), isAdd, exchangerate, false);//系统源码
|
||||||
|
MaterialInventoryUtilsExt2.matBalanceLockAndUpdate(orgId, projectId, warehouseId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]), isAdd, exchangerate, false);//二开替代
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
|
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
|
||||||
import kd.bos.dataentity.resource.ResManager;
|
import kd.bos.dataentity.resource.ResManager;
|
||||||
|
|
@ -30,6 +31,10 @@ import kd.ec.basedata.common.utils.CurrencyHelper;
|
||||||
import kd.ec.basedata.common.utils.EcNumberHelper;
|
import kd.ec.basedata.common.utils.EcNumberHelper;
|
||||||
import kd.ec.material.common.utils.MaterialInventoryUtils;
|
import kd.ec.material.common.utils.MaterialInventoryUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单MaterialInBillOpExt二开插件的方法类
|
||||||
|
* 说明:1:审核生成即时库存第一单中的单价与后续更新即时库存的单价不一致,修改了第一单单价的逻辑
|
||||||
|
*/
|
||||||
public class MaterialInventoryUtilsExt2 {
|
public class MaterialInventoryUtilsExt2 {
|
||||||
private static final Log log = LogFactory.getLog(MaterialInventoryUtils.class);
|
private static final Log log = LogFactory.getLog(MaterialInventoryUtils.class);
|
||||||
public static final DynamicObjectType matInvDT = EntityMetadataCache.getDataEntityType("ecma_matinventory");
|
public static final DynamicObjectType matInvDT = EntityMetadataCache.getDataEntityType("ecma_matinventory");
|
||||||
|
|
@ -101,7 +106,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
DynamicObject[] var10 = mergedEntrys;
|
DynamicObject[] var10 = mergedEntrys;
|
||||||
int var11 = mergedEntrys.length;
|
int var11 = mergedEntrys.length;
|
||||||
|
|
||||||
for(int var12 = 0; var12 < var11; ++var12) {
|
for (int var12 = 0; var12 < var11; ++var12) {
|
||||||
DynamicObject mergedEntry = var10[var12];
|
DynamicObject mergedEntry = var10[var12];
|
||||||
Long materialId = mergedEntry.getLong("material_id");
|
Long materialId = mergedEntry.getLong("material_id");
|
||||||
if (materialId != null && materialId != 0L) {
|
if (materialId != null && materialId != 0L) {
|
||||||
|
|
@ -123,7 +128,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
String lot;
|
String lot;
|
||||||
String unitId;
|
String unitId;
|
||||||
String key;
|
String key;
|
||||||
for(int var16 = 0; var16 < i; ++var16) {
|
for (int var16 = 0; var16 < i; ++var16) {
|
||||||
DynamicObject ecmaMatinventory = var33[var16];
|
DynamicObject ecmaMatinventory = var33[var16];
|
||||||
matId = ecmaMatinventory.getDynamicObject("material").getString("id");
|
matId = ecmaMatinventory.getDynamicObject("material").getString("id");
|
||||||
modelnum = "".equals(ecmaMatinventory.getString("modelnum")) ? " " : ecmaMatinventory.getString("modelnum");
|
modelnum = "".equals(ecmaMatinventory.getString("modelnum")) ? " " : ecmaMatinventory.getString("modelnum");
|
||||||
|
|
@ -135,7 +140,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
|
|
||||||
List<DynamicObject> matInvList = new ArrayList();
|
List<DynamicObject> matInvList = new ArrayList();
|
||||||
|
|
||||||
for(i = 0; i < mergedEntrys.length; ++i) {
|
for (i = 0; i < mergedEntrys.length; ++i) {
|
||||||
DynamicObject entryInfo = mergedEntrys[i];
|
DynamicObject entryInfo = mergedEntrys[i];
|
||||||
boolean isFirst = false;
|
boolean isFirst = false;
|
||||||
matId = entryInfo.getDynamicObject("material").getString("id");
|
matId = entryInfo.getDynamicObject("material").getString("id");
|
||||||
|
|
@ -143,7 +148,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
lot = "".equals(entryInfo.getString("lot")) ? " " : entryInfo.getString("lot");
|
lot = "".equals(entryInfo.getString("lot")) ? " " : entryInfo.getString("lot");
|
||||||
unitId = entryInfo.getDynamicObject("measureunit") == null ? "" : entryInfo.getDynamicObject("measureunit").getString("id");
|
unitId = entryInfo.getDynamicObject("measureunit") == null ? "" : entryInfo.getDynamicObject("measureunit").getString("id");
|
||||||
key = String.format("%1$s_%2$s_%3$s_%4$s", matId, modelnum, lot, unitId);
|
key = String.format("%1$s_%2$s_%3$s_%4$s", matId, modelnum, lot, unitId);
|
||||||
DynamicObject matInvInfo = (DynamicObject)matInventoryMap.get(key);
|
DynamicObject matInvInfo = (DynamicObject) matInventoryMap.get(key);
|
||||||
BigDecimal qty;
|
BigDecimal qty;
|
||||||
if (matInvInfo == null || BigDecimal.ZERO.compareTo(matInvInfo.getBigDecimal("tempqty")) == 0) {
|
if (matInvInfo == null || BigDecimal.ZERO.compareTo(matInvInfo.getBigDecimal("tempqty")) == 0) {
|
||||||
if (entryInfo.getDataEntityType().getProperties().containsKey("ftransamount")) {
|
if (entryInfo.getDataEntityType().getProperties().containsKey("ftransamount")) {
|
||||||
|
|
@ -184,7 +189,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!matInvList.isEmpty()) {
|
if (!matInvList.isEmpty()) {
|
||||||
SaveServiceHelper.save((DynamicObject[])matInvList.toArray(new DynamicObject[0]));
|
SaveServiceHelper.save((DynamicObject[]) matInvList.toArray(new DynamicObject[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -197,7 +202,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
|
|
||||||
List<DynamicObject> matInvList = new ArrayList();
|
List<DynamicObject> matInvList = new ArrayList();
|
||||||
|
|
||||||
for(int i = 0; i < entrys.length; ++i) {
|
for (int i = 0; i < entrys.length; ++i) {
|
||||||
DynamicObject entryInfo = entrys[i];
|
DynamicObject entryInfo = entrys[i];
|
||||||
DynamicObject material = entryInfo.getDynamicObject("material");
|
DynamicObject material = entryInfo.getDynamicObject("material");
|
||||||
String matId = material.getString("id");
|
String matId = material.getString("id");
|
||||||
|
|
@ -222,7 +227,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!matInvList.isEmpty()) {
|
if (!matInvList.isEmpty()) {
|
||||||
SaveServiceHelper.save(((DynamicObject)matInvList.get(0)).getDataEntityType(), matInvList.toArray(new DynamicObject[0]));
|
SaveServiceHelper.save(((DynamicObject) matInvList.get(0)).getDataEntityType(), matInvList.toArray(new DynamicObject[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
return "success";
|
return "success";
|
||||||
|
|
@ -242,7 +247,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
dimensionList.add("price");
|
dimensionList.add("price");
|
||||||
List<DynamicObject> copiedList = new ArrayList();
|
List<DynamicObject> copiedList = new ArrayList();
|
||||||
|
|
||||||
for(int i = 0; i < entrys.length; ++i) {
|
for (int i = 0; i < entrys.length; ++i) {
|
||||||
DynamicObject entryInfo = entrys[i];
|
DynamicObject entryInfo = entrys[i];
|
||||||
DynamicObject copiedObj = new DynamicObject(entrys[0].getDynamicObjectType());
|
DynamicObject copiedObj = new DynamicObject(entrys[0].getDynamicObjectType());
|
||||||
if (copiedList.isEmpty()) {
|
if (copiedList.isEmpty()) {
|
||||||
|
|
@ -258,7 +263,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
String modelnum = "".equals(entryInfo.getString("modelnum")) ? " " : entryInfo.getString("modelnum");
|
String modelnum = "".equals(entryInfo.getString("modelnum")) ? " " : entryInfo.getString("modelnum");
|
||||||
String lot = entryInfo.getString("lot");
|
String lot = entryInfo.getString("lot");
|
||||||
String unitId = entryInfo.getDynamicObject("measureunit") == null ? "" : entryInfo.getDynamicObject("measureunit").getString("id");
|
String unitId = entryInfo.getDynamicObject("measureunit") == null ? "" : entryInfo.getDynamicObject("measureunit").getString("id");
|
||||||
List<DynamicObject> sameList = (List)copiedList.stream().filter((obj) -> {
|
List<DynamicObject> sameList = (List) copiedList.stream().filter((obj) -> {
|
||||||
return matId.equals(obj.getDynamicObject("material").getString("id")) && modelnum.equals(obj.getString("modelnum") != null && !"".equals(obj.getString("modelnum")) ? obj.getString("modelnum") : " ") && unitId.equals(obj.getDynamicObject("measureunit") == null ? "" : obj.getDynamicObject("measureunit").getString("id")) && lot.equals(obj.getString("lot"));
|
return matId.equals(obj.getDynamicObject("material").getString("id")) && modelnum.equals(obj.getString("modelnum") != null && !"".equals(obj.getString("modelnum")) ? obj.getString("modelnum") : " ") && unitId.equals(obj.getDynamicObject("measureunit") == null ? "" : obj.getDynamicObject("measureunit").getString("id")) && lot.equals(obj.getString("lot"));
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
if (sameList.isEmpty()) {
|
if (sameList.isEmpty()) {
|
||||||
|
|
@ -270,7 +275,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
});
|
});
|
||||||
copiedList.add(copiedObj);
|
copiedList.add(copiedObj);
|
||||||
} else {
|
} else {
|
||||||
DynamicObject mergedMatInfo = (DynamicObject)sameList.get(0);
|
DynamicObject mergedMatInfo = (DynamicObject) sameList.get(0);
|
||||||
mergeFields.forEach((field) -> {
|
mergeFields.forEach((field) -> {
|
||||||
mergedMatInfo.set(field, EcNumberHelper.add(mergedMatInfo.getBigDecimal(field), entryInfo.getBigDecimal(field)));
|
mergedMatInfo.set(field, EcNumberHelper.add(mergedMatInfo.getBigDecimal(field), entryInfo.getBigDecimal(field)));
|
||||||
});
|
});
|
||||||
|
|
@ -281,7 +286,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (DynamicObject[])copiedList.toArray(new DynamicObject[0]);
|
return (DynamicObject[]) copiedList.toArray(new DynamicObject[0]);
|
||||||
} else {
|
} else {
|
||||||
return new DynamicObject[0];
|
return new DynamicObject[0];
|
||||||
}
|
}
|
||||||
|
|
@ -292,7 +297,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
mergedFields.add("qty");
|
mergedFields.add("qty");
|
||||||
DynamicObject[] mergedEntrys = mergeSameMaterial(entrys, mergedFields);
|
DynamicObject[] mergedEntrys = mergeSameMaterial(entrys, mergedFields);
|
||||||
|
|
||||||
for(int i = 0; i < mergedEntrys.length; ++i) {
|
for (int i = 0; i < mergedEntrys.length; ++i) {
|
||||||
DynamicObject entryInfo = mergedEntrys[i];
|
DynamicObject entryInfo = mergedEntrys[i];
|
||||||
DynamicObject material = entryInfo.getDynamicObject("material");
|
DynamicObject material = entryInfo.getDynamicObject("material");
|
||||||
String matId = material.getString("id");
|
String matId = material.getString("id");
|
||||||
|
|
@ -321,7 +326,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
mergedFields.add("qty");
|
mergedFields.add("qty");
|
||||||
DynamicObject[] mergedEntrys = mergeSameMaterial(entrys, mergedFields);
|
DynamicObject[] mergedEntrys = mergeSameMaterial(entrys, mergedFields);
|
||||||
|
|
||||||
for(int i = 0; i < mergedEntrys.length; ++i) {
|
for (int i = 0; i < mergedEntrys.length; ++i) {
|
||||||
DynamicObject entryInfo = mergedEntrys[i];
|
DynamicObject entryInfo = mergedEntrys[i];
|
||||||
DynamicObject material = entryInfo.getDynamicObject("material");
|
DynamicObject material = entryInfo.getDynamicObject("material");
|
||||||
String matId = material.getString("id");
|
String matId = material.getString("id");
|
||||||
|
|
@ -387,7 +392,7 @@ public class MaterialInventoryUtilsExt2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String checkLotPrice(String orgId, String projectId, String warehouseId, DynamicObject[] entrys) {
|
public static String checkLotPrice(String orgId, String projectId, String warehouseId, DynamicObject[] entrys) {
|
||||||
for(int i = 0; i < entrys.length; ++i) {
|
for (int i = 0; i < entrys.length; ++i) {
|
||||||
DynamicObject entryInfo = entrys[i];
|
DynamicObject entryInfo = entrys[i];
|
||||||
String lot = entryInfo.getString("lot");
|
String lot = entryInfo.getString("lot");
|
||||||
if (lot != null && lot != "") {
|
if (lot != null && lot != "") {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue