Merge remote-tracking branch 'origin/main'

This commit is contained in:
zzs 2025-03-17 11:18:35 +08:00
commit 29802b449b
8 changed files with 149 additions and 52 deletions

View File

@ -0,0 +1,21 @@
package com.yem.em.bd.ProductsGroup.op;
import com.yem.em.bd.ProductsGroup.validator.BomChangeSavevalidatorEdit;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
public class ProductsGroupSave extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
}
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.addValidator(new BomChangeSavevalidatorEdit());
}
}

View File

@ -0,0 +1,24 @@
package com.yem.em.bd.ProductsGroup.validator;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
public class BomChangeSavevalidatorEdit extends AbstractValidator {
@Override
public void validate() {
ExtendedDataEntity[] dataEntities = this.getDataEntities();
for (ExtendedDataEntity dataEntitie : dataEntities) {
DynamicObject dataEntity = dataEntitie.getDataEntity();
long aLong = dataEntity.getLong("id");
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(dataEntity.getDataEntityType().getName()
, "id,parent", new QFilter[]{new QFilter("parent.id", QCP.equals, aLong)});
if (dynamicObject != null) {
this.addMessage(dataEntitie, "当前单有下级,不允许删除!!!");
}
}
}
}

View File

@ -283,7 +283,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.countFrontDisAmt(model, rowIndex);//折扣前金额
ClientUtils.addSaAmountTk(model, rowIndex);//销售金额价格条款结算币别
ClientUtils.countAfterFrontPrice(model, rowIndex);//折扣后销售单价
calculateCostSharing(model);
// calculateCostSharing(model);
break;
case "yem_fobprice":
ClientUtils.countFobAmt(model, rowIndex);//fob金额
@ -381,11 +381,11 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo
// calculateCostSharing(model);
ClientUtils.addSaAmountTk(model, rowIndex);//销售金额价格条款结算币别
break;
case "yem_sharethecost":
case "yem_sumedamount":
//
calculateCostSharing(model);
break;
// case "yem_sharethecost":
// case "yem_sumedamount":
////
//// calculateCostSharing(model);
// break;
}
}

View File

@ -371,7 +371,16 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
break;
case"yem_e_landcarrycost":
case"yem_e_airliftcost":
case"yem_portamt":
case"yem_inlandtransportation":
case"yem_e_bankcost":
case"yem_e_elsecost":
case"yem_costsinclude":
case"yem_e_interestrate":
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
break;
case "yem_onecarsum":
ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价
// ClientUtils.totalSaFobAmount(model, "yem_es_materialinfo", "yem_ifgift", "yem_onecarsum", "yem_sumcost");//单车总费用 汇总表头 总费用
@ -525,9 +534,6 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
break;
case "yem_e_interestrate"://利息率%
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
break;
case "yem_e_interestamt"://银行利息费
ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
break;

View File

@ -53,19 +53,21 @@ public class ClientUtils {
if (!yem_linetype.equals("add")) {
boolean tor = true;
DynamicObjectCollection yemMulticonfig = temp.getDynamicObjectCollection("yem_multiconfig");
if (!yemMulticonfig.isEmpty()){
if (!yemMulticonfig.isEmpty()) {
for (DynamicObject dynamicObject : yemMulticonfig) {
String yemLinetypes = dynamicObject.getString("yem_linetypes");
if ("add".equals(yemLinetypes)){
tor= false;
if ("add".equals(yemLinetypes)) {
tor = false;
}
}
}
if (tor){
if (tor) {
rowInfo++;
continue;
}
}
} else {
yem_linetype = "add";
}
//多功能配置分录行获取
DynamicObjectCollection multiconfig = null;
@ -158,19 +160,21 @@ public class ClientUtils {
}
}
}
if ("yem_es_xsalesorder".equals(models.getDataEntityType().getName())){
if ("yem_es_xsalesorder".equals(models.getDataEntityType().getName())) {
int multiconfigIndex = 0;
if (!multiconfig.isEmpty()) {
for (DynamicObject dc : multiconfig) {
if ("add".equals(dc.getString("yem_linetypes"))){
if ("add".equals(dc.getString("yem_linetypes"))) {
long configentryid = dc.getLong("yem_configentryid");
BigDecimal configentry = dataMap.get(configentryid) == null ? BigDecimal.ZERO : dataMap.get(configentryid).setScale(2);
models.setValue("yem_marketraisepribase", configentry, multiconfigIndex, rowInfo);
multiconfigIndex++;
} else {
multiconfigIndex++;
}
}
}
}else {
} else {
setPriceNow(multiconfig, dataMap, rowInfo, models);
}
}
@ -202,7 +206,7 @@ public class ClientUtils {
else if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype)
|| ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype)
|| "yem_es_xsalesorder_zj".equals(yem_billtype) || "yem_es_xsalesorder_nmzj".equals(yem_billtype))
&& "P".equals(businesssort) && !yem_linetype.equals("add")) {
&& "P".equals(businesssort) && yem_linetype.equals("add")) {
// else if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) || ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype)) && "P".equals(businesssort)) {
pjFindPrice(yem_exrate, info, pjDatas, rowInfo, list, materials, models, yemBdProductsid);
}
@ -212,7 +216,7 @@ public class ClientUtils {
else if (("yem_im_clientdema_pj".equals(yem_billtype) || "yem_im_inclientdema_pj".equals(yem_billtype)
|| "yem_es_salesorder_PJ".equals(yem_billtype) || "yem_es_salesorder_nmpj".equals(yem_billtype)
|| "yem_es_xsalesorder_pj".equals(yem_billtype) || "yem_es_xsalesorder_nmpj".equals(yem_billtype))
&& "P".equals(businesssort)&& !yem_linetype.equals("add")) {
&& "P".equals(businesssort) && yem_linetype.equals("add")) {
pjFindPrice(yem_exrate, info, pjDatas, rowInfo, list, materials, models, yemBdProductsid);
}
rowInfo++;
@ -366,7 +370,15 @@ public class ClientUtils {
* 获取标准价中 给当前行标准销售加价赋值
*/
public static void setPriceNow(DynamicObjectCollection multiconfig, Map<Long, BigDecimal> dataMap, int rowInfo, IDataModel models) {
int multiconfigIndex = 0;
if (!multiconfig.isEmpty()) {
for (DynamicObject dc : multiconfig) {
long configentryid = dc.getLong("yem_configentryid");
BigDecimal configentry = dataMap.get(configentryid) == null ? BigDecimal.ZERO : dataMap.get(configentryid).setScale(2);
models.setValue("yem_marketraisepribase", configentry, multiconfigIndex, rowInfo);
multiconfigIndex++;
}
}
}
/**
@ -1489,22 +1501,47 @@ public class ClientUtils {
private static void doCalculateBankInterestCharges(int rowIdx, IDataModel model) {
BigDecimal safobprice = (BigDecimal) model.getValue("yem_safobprice", rowIdx);//销售FOB单价
BigDecimal seafreight = (BigDecimal) model.getValue("yem_e_seafreight", rowIdx);//海运费
BigDecimal yemELandcarrycost = (BigDecimal) model.getValue("yem_e_landcarrycost", rowIdx);//国际陆运费
BigDecimal yemEAirliftcost = (BigDecimal) model.getValue("yem_e_airliftcost", rowIdx);//空运费
BigDecimal yemPortamt = (BigDecimal) model.getValue("yem_portamt", rowIdx);//港杂费
BigDecimal yemInlandtransportation = (BigDecimal) model.getValue("yem_inlandtransportation", rowIdx);//内陆运输费
BigDecimal yemEBankcost = (BigDecimal) model.getValue("yem_e_bankcost", rowIdx);//报关费
BigDecimal yemEElsecost = (BigDecimal) model.getValue("yem_e_elsecost", rowIdx);//其他费用
BigDecimal yemCostsinclude = (BigDecimal) model.getValue("yem_costsinclude", rowIdx);//费用包干
BigDecimal marinsupreamt = (BigDecimal) model.getValue("yem_e_marinsupreamt", rowIdx);//保险费
BigDecimal interestrate = (BigDecimal) model.getValue("yem_e_interestrate", rowIdx);//利息率%
interestrate = BigDecimalUtils.div(interestrate, new BigDecimal("100"), 10);
BigDecimal calculate = BigDecimal.ZERO;
BigDecimal interestdays = BigDecimal.ZERO;
BigDecimal yem_sinosurerate = BigDecimal.ZERO;
int rowCount = model.getEntryRowCount("yem_es_salescontrac_s");
for (int i = 0; i < rowCount; i++) {
String issinosure = (String) model.getValue("yem_issinosure", i);
if ("A".equals(issinosure)) {
BigDecimal raprate = (BigDecimal) model.getValue("yem_raprate", i);//收汇百分比%
BigDecimal interestdays = (BigDecimal) model.getValue("yem_interestdays", i);//利息天数
raprate = BigDecimalUtils.div(raprate, new BigDecimal("100"), 10);
BigDecimal multiply = BigDecimalUtils.div(safobprice.add(seafreight).add(marinsupreamt).multiply(raprate).multiply(interestrate), new BigDecimal("360"), 10).multiply(interestdays);
calculate = calculate.add(multiply);
interestdays = interestdays.add((BigDecimal) model.getValue("yem_interestdays", i));//利息天数
yem_sinosurerate = yem_sinosurerate.add((BigDecimal) model.getValue("yem_sinosurerate", i));//利息天数
// raprate = BigDecimalUtils.div(raprate, new BigDecimal("100"), 10);
// BigDecimal multiply = BigDecimalUtils.div(safobprice.add(seafreight).add(marinsupreamt).multiply(raprate).multiply(interestrate), new BigDecimal("360"), 10).multiply(interestdays);
calculate = calculate.add(raprate);
}
}
model.setValue("yem_e_interestamt", calculate.setScale(0, RoundingMode.UP), rowIdx);
BigDecimal yem_e_interestamt = safobprice.add(seafreight).add(yemELandcarrycost).add(yemEAirliftcost).add(yemPortamt)
.add(yemInlandtransportation).add(yemEBankcost).add(yemEElsecost).add(yemCostsinclude).add(marinsupreamt);
// yem_e_interestamt = yem_e_interestamt.multiply(calculate).multiply(interestdays).multiply(interestrate.divide(new BigDecimal("100"),10).divide(new BigDecimal("360"),10));
BigDecimal multiply = BigDecimalUtils.multiply(yem_e_interestamt, calculate, 10);
multiply = BigDecimalUtils.multiply(multiply, interestdays, 10);
multiply = BigDecimalUtils.multiply(multiply, interestrate, 10);
multiply = BigDecimalUtils.div(multiply, new BigDecimal(100), 10);
multiply = BigDecimalUtils.div(multiply, new BigDecimal(360), 10);
// BigDecimalUtils.div(yem_e_interestamt, new BigDecimal("100"), 10);
BigDecimal setScale = multiply.setScale(0, RoundingMode.UP);
model.setValue("yem_e_interestamt", setScale, rowIdx);
BigDecimal yem_e_creditamt = BigDecimalUtils.multiply(yem_e_interestamt,calculate,10);
yem_e_creditamt= BigDecimalUtils.multiply(yem_e_creditamt,yem_sinosurerate,10);
yem_e_creditamt = BigDecimalUtils.div(yem_e_creditamt, new BigDecimal(100),10);
yem_e_creditamt = BigDecimalUtils.div(yem_e_creditamt, new BigDecimal(100),10);
model.setValue("yem_e_creditamt", yem_e_creditamt, rowIdx);
}
/**
@ -1999,13 +2036,13 @@ public class ClientUtils {
int rowCount = model.getEntryRowCount("yem_es_materialinfo");
for (int i = 0; i < rowCount; i++) {
DynamicObject d = c.get(i);
if (string.equals("yem_es_xsalesorder")){
if (string.equals("yem_es_xsalesorder")) {
String yemLinetype = d.getString("yem_linetype");
if (!"add".equals(yemLinetype)){
if (!"add".equals(yemLinetype)) {
continue;
}
}
if (!"Z".equals(d.getString("yem_businesssort"))){
if (!"Z".equals(d.getString("yem_businesssort"))) {
continue;
}
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_multiconfig");

View File

@ -93,7 +93,7 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
String yemVehicleno = salesorder_z.getString("yem_vehicleno");
if (map.size() > 0) {
if (map.get(yemVehicleno) == null) {
DynamicObject adddevicefiles = adddevicefiles(dataEntitie,materialinfo, salesorder_z);
DynamicObject adddevicefiles = adddevicefiles(dataEntitie, materialinfo, salesorder_z);
OperationResult Operate = OperationServiceHelper.executeOperate("save",
adddevicefiles.getDynamicObjectType().getName(), new DynamicObject[]{adddevicefiles}, OperateOption.create());
if (Operate.isSuccess()) {
@ -101,7 +101,7 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
}
}
} else {
DynamicObject adddevicefiles = adddevicefiles(dataEntitie,materialinfo, salesorder_z);
DynamicObject adddevicefiles = adddevicefiles(dataEntitie, materialinfo, salesorder_z);
OperationResult Operate = OperationServiceHelper.executeOperate("save",
adddevicefiles.getDynamicObjectType().getName(), new DynamicObject[]{adddevicefiles}, OperateOption.create());
if (Operate.isSuccess()) {
@ -113,7 +113,7 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
SaveServiceHelper.save(new DynamicObject[]{dataEntitie});
}
public DynamicObject adddevicefiles(DynamicObject dataEntitie,DynamicObject materialinfo, DynamicObject submaterialinfo) {
public DynamicObject adddevicefiles(DynamicObject dataEntitie, DynamicObject materialinfo, DynamicObject submaterialinfo) {
String yem_vehicleno = submaterialinfo.getString("yem_vehicleno");
String yem_conbillnumber = materialinfo.getString("yem_conbillnumber");//合同编号
BigDecimal yem_qty = materialinfo.getBigDecimal("yem_qty");
@ -233,11 +233,14 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
public Date Getmachinedata(String yem_framenumber, DynamicObject yemResourcescode) {
String Queryfield = AtlasUtils.Queryfield("PLAN_PIN", "INSTRUCTION_CODE", "JOB_TIME", "INSTRUCTION_NAME");
String sql = "select distinct " + Queryfield + " from VIEW_PLAN_JOB_WM where INSTRUCTION_NAME='上线' and PLAN_PIN='" + yem_framenumber + "'";//where TO_CHAR (enable_time, 'yyyy-mm-dd') >= '2023-01-01'
List<Map> fromCmmp = RequestCmmp.getFromCmmp(0L, sql, yemResourcescode.getDynamicObject("yem_productsgroup").getLong("id"));
if (fromCmmp.size() > 0) {
Map map = fromCmmp.get(0);
Date job_time = (Date) map.get("job_time");
return job_time;
DynamicObject yemProductsgroup = yemResourcescode.getDynamicObject("yem_productsgroup");
if (yemProductsgroup != null) {
List<Map> fromCmmp = RequestCmmp.getFromCmmp(0L, sql, yemProductsgroup.getLong("id"));
if (fromCmmp.size() > 0) {
Map map = fromCmmp.get(0);
Date job_time = (Date) map.get("job_time");
return job_time;
}
}
return null;
}
@ -246,11 +249,14 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
public static Date Getanalysistdate(String yem_framenumber, DynamicObject yemResourcescode) {
String Queryfield = AtlasUtils.Queryfield("plmlastupdate");
String sql = "select distinct " + Queryfield + " from VIEW_ANALYZE_TIME_WM where plan_pin='" + yem_framenumber + "'";//where TO_CHAR (enable_time, 'yyyy-mm-dd') >= '2023-01-01'
List<Map> fromCmmp = RequestCmmp.getFromCmmp(0L, sql, yemResourcescode.getDynamicObject("yem_productsgroup").getLong("id"));
if (fromCmmp.size() > 0) {
Map map = fromCmmp.get(0);
Date job_time = (Date) map.get("plmlastupdate");
return job_time;
DynamicObject yemProductsgroup = yemResourcescode.getDynamicObject("yem_productsgroup");
if (yemProductsgroup != null) {
List<Map> fromCmmp = RequestCmmp.getFromCmmp(0L, sql, yemProductsgroup.getLong("id"));
if (fromCmmp.size() > 0) {
Map map = fromCmmp.get(0);
Date job_time = (Date) map.get("plmlastupdate");
return job_time;
}
}
return null;
}

View File

@ -3,6 +3,7 @@ package com.yem.wm.syn.eas;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yem.wm.utils.BigDecimalUtils;
import com.yem.wm.utils.RequestEAS;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
@ -316,11 +317,13 @@ public class YemDelivernoticeService extends AbstractOperationServicePlugIn {
//实际含税单价
json.put("price", materialentry.getBigDecimal("yem_priceandtax"));
//金额
json.put("nonTaxAmount", materialentry.getBigDecimal("yem_amt"));
BigDecimal yemAmt = materialentry.getBigDecimal("yem_amt");
json.put("nonTaxAmount", BigDecimalUtils.div(yemAmt,1,2));
//金额本位币
json.put("localNonTaxAmount", materialentry.getBigDecimal("yem_locamt"));
//税额
json.put("tax", materialentry.getBigDecimal("yem_taxamount"));
BigDecimal yemTaxamount = materialentry.getBigDecimal("yem_taxamount");
json.put("tax", BigDecimalUtils.div(yemTaxamount,1,2));
//税额本位币
json.put("localTax", materialentry.getBigDecimal("yem_curtaxamount"));
//价税合计

View File

@ -17,17 +17,17 @@ public class Application {
cosmic.setWebPath("E:/Cosmic/Comics_YXZG/YXZG-server/webapp");
////152
cosmic.setClusterNumber("yxzg-topview-dev");
cosmic.setTenantNumber("yxzg-topview-dev");
cosmic.setServerIP("10.64.112.152");
cosmic.setFileServerPathIPAndPort("", "");
cosmic.setConfigUrl("10.64.112.152:2181", "zookeeper", "Cosmic@5092");
// cosmic.setClusterNumber("yxzg-topview-dev");
// cosmic.setTenantNumber("yxzg-topview-dev");
// cosmic.setServerIP("10.64.112.152");
// cosmic.setFileServerPathIPAndPort("", "");
// cosmic.setConfigUrl("10.64.112.152:2181", "zookeeper", "Cosmic@5092");
System.setProperty("mq.debug.queue.tag", "wrxtest");
////134
// cosmic.setClusterNumber("yxzg-prod");
// cosmic.setTenantNumber("yxzg-prod");
// cosmic.setServerIP("10.64.111.134");
// cosmic.setConfigUrl("10.64.111.134:2181","zookeeper","d@f*g:SGVsbG8==U4HRwjlqTOp0p9b60T+T8D2fQ8ThQgJLu/qgfLyLgknPa2RwYXNzd29yZA==");
cosmic.setClusterNumber("yxzg-prod");
cosmic.setTenantNumber("yxzg-prod");
cosmic.setServerIP("10.64.111.134");
cosmic.setConfigUrl("10.64.111.134:2181","zookeeper","d@f*g:SGVsbG8==U4HRwjlqTOp0p9b60T+T8D2fQ8ThQgJLu/qgfLyLgknPa2RwYXNzd29yZA==");
cosmic.setStartWithQing(false);
cosmic.start();