Compare commits
22 Commits
main
...
dev-1217-r
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a807a3476d | ||
![]() |
d48973e46f | ||
![]() |
6814db3516 | ||
![]() |
632d9e21c2 | ||
![]() |
4f39e70dbc | ||
![]() |
e3de4132ff | ||
![]() |
89cc1bca4e | ||
![]() |
3432942a58 | ||
![]() |
91bb471d10 | ||
![]() |
9bc2063f98 | ||
![]() |
eae969ce9b | ||
![]() |
a0d082a2cc | ||
![]() |
7a3638ca84 | ||
![]() |
cd747987eb | ||
![]() |
f47b4a70a7 | ||
![]() |
3abdb3bb3f | ||
![]() |
330509aed2 | ||
![]() |
871005c558 | ||
![]() |
e599288765 | ||
![]() |
a996973e01 | ||
![]() |
1f2b2b9799 | ||
![]() |
d255d994a6 |
src/main/java
com/yem
em
ass
Devicefiles/validator
assatlasdet
dynamic
bd/ProductsGroup
dynamic
task
utils
or
rf/salescommission
CompleteShipDetailReportPlugin.javaDepartureDailyReportPlugin.javaExportDeclarationDetailsReportPlugin.javaITCOrderDetailsReportPlugin.javaSalesCommissionReportPlugin.javaSalesOfRoyaltyParts.javaShipmentsChedulePlugin.javaSparepartsPlugin.java
tws/task
wm
bc/bill/op
bd/customer/from/Validator
es
Util
declaredocx
convert
op
validator
encasement
exportinvoice/op
exportpresent
op
task
validator
salesorder
from
op
task
utils
validator
shippingdetails
convert
form
validator
storagetrans
convert
dynamic
form
op
xsalesorder/from
fm/gathering/dynamic
im
clientdemand/utils
csrCreditLine
debcrednotenew
op
utils
validator
delivernotice
placeexamine/op
priceLibrary/form
trackplace/form
tracktaskconsole
syn
cmmp/addnew
eas
sys/formplugin/list
task
ServiceRepairTask.javaStoraGetransToDeviceFilesTask.javaSynWareAreaCMMPTask.javaSynWhLocationCMMPTask.java
utils
kd/cosmic
@ -49,11 +49,8 @@ public class DevicefilesValidator extends AbstractValidator {
|
||||
hashMap.put("salesman", yemOperatorString);
|
||||
}
|
||||
if (org != null) {
|
||||
if (!org.containsProperty("name") || !org.containsProperty("yem_enname")) {
|
||||
org = BusinessDataServiceHelper.loadSingle(org.getPkValue(), org.getDataEntityType().getName());
|
||||
}
|
||||
hashMap.put("seller", org.getString("name"));
|
||||
hashMap.put("seller_enname", org.getString("yem_enname"));
|
||||
String yemOperatorString = org.getString("name");
|
||||
hashMap.put("seller", yemOperatorString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,8 +36,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.yem.em.utils.SubRelationUtils.Getatlasno;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/11/25 15:26
|
||||
@ -238,13 +236,6 @@ public class AssAtlasdetFromEdit extends AbstractBillPlugIn implements UploadLis
|
||||
args.cancel = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ("test_getatlasno".equals(key)) {
|
||||
IDataModel model = this.getModel();
|
||||
String number = (String)model.getValue("number");
|
||||
String atlasno = Getatlasno(number);
|
||||
getView().showMessage(atlasno);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -12,8 +12,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.yem.em.task.GenerateReplaceRelationshipTaskEdit.updateIsCompAndIsUp;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/11/2 18:14
|
||||
@ -40,7 +38,49 @@ public class AssAtlasdetAuditOpEdit extends AbstractOperationServicePlugIn {
|
||||
if (e.getDataEntities() != null && e.getDataEntities().length != 0) {
|
||||
DynamicObject[] bills = e.getDataEntities();
|
||||
for (DynamicObject bill : bills) {
|
||||
updateIsCompAndIsUp(bill);
|
||||
String number = bill.getString("number");
|
||||
QFilter qFilter = new QFilter("enable", QCP.equals, "1");//
|
||||
qFilter.and(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, number));//
|
||||
DynamicObject[] yem_em_assatlasdet = BusinessDataServiceHelper.load("yem_em_assatlasdet", "id"
|
||||
, new QFilter[]{qFilter}, null);
|
||||
if (yem_em_assatlasdet.length > 0) {
|
||||
bill.set("yem_issup", true);
|
||||
for (int i = 0; i < yem_em_assatlasdet.length; i++) {
|
||||
DynamicObject assatlasdet = yem_em_assatlasdet[i];
|
||||
//根据id加载所有数据
|
||||
DynamicObject component = BusinessDataServiceHelper.loadSingle(assatlasdet.getLong("id"), "yem_em_assatlasdet");
|
||||
DynamicObjectCollection yemEntryentity = component.getDynamicObjectCollection("yem_entryentity");
|
||||
for (int j = 0; j < yemEntryentity.size(); j++) {
|
||||
DynamicObject dynamicObject = yemEntryentity.get(j);
|
||||
String yemPartnumber = dynamicObject.getString("yem_partnumber");
|
||||
if (yemPartnumber.equals(number)) {
|
||||
dynamicObject.set("yem_iscomp", true);
|
||||
dynamicObject.set("yem_compid", bill.getString("id"));
|
||||
}
|
||||
}
|
||||
//保存
|
||||
SaveServiceHelper.save(new DynamicObject[]{component});
|
||||
}
|
||||
}
|
||||
DynamicObjectCollection yem_entryentity = bill.getDynamicObjectCollection("yem_entryentity");
|
||||
for (int i = 0; i < yem_entryentity.size(); i++) {
|
||||
DynamicObject object = yem_entryentity.get(i);
|
||||
boolean yem_iscomp = object.getBoolean("yem_iscomp");
|
||||
if (!yem_iscomp) {
|
||||
String yem_partnumber = object.getString("yem_partnumber");
|
||||
QFilter qFilter1 = new QFilter("enable", QCP.equals, "1");//
|
||||
qFilter1.and(new QFilter("number", QCP.equals, yem_partnumber));//
|
||||
DynamicObject assatlasdet = BusinessDataServiceHelper.loadSingle("yem_em_assatlasdet", "id,yem_issup,number,name"
|
||||
, new QFilter[]{qFilter1});
|
||||
if (assatlasdet != null) {
|
||||
assatlasdet.set("yem_issup", true);
|
||||
object.set("yem_iscomp", true);
|
||||
object.set("yem_compid", assatlasdet.getString("id"));
|
||||
SaveServiceHelper.save(new DynamicObject[]{assatlasdet});
|
||||
}
|
||||
}
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{bill});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,6 @@ import java.math.RoundingMode;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
@ -766,10 +765,6 @@ public class AssepcNewDynamicEdut extends AbstractFormPlugin implements BeforeBi
|
||||
getQueryResult().setDataCount(data.size());
|
||||
// 把列数据返回
|
||||
DynamicObjectCollection datas = DealData(data);
|
||||
|
||||
// 按照图册编号进行排序
|
||||
sortDynamicObjectCollection(datas);
|
||||
|
||||
Setistcardviewap(datas);
|
||||
return datas;
|
||||
}
|
||||
@ -777,64 +772,6 @@ public class AssepcNewDynamicEdut extends AbstractFormPlugin implements BeforeBi
|
||||
}
|
||||
}
|
||||
|
||||
public static void sortDynamicObjectCollection(DynamicObjectCollection data) {
|
||||
// 自定义比较器
|
||||
Comparator<DynamicObject> comparator = (obj1, obj2) -> {
|
||||
String atlasNo1 = obj1.getString("yem_atlasno");
|
||||
String atlasNo2 = obj2.getString("yem_atlasno");
|
||||
|
||||
List<Integer> parsed1 = parseAtlasNo(atlasNo1);
|
||||
List<Integer> parsed2 = parseAtlasNo(atlasNo2);
|
||||
|
||||
// 如果两个都是有效编号,逐级比较
|
||||
if (parsed1 != null && parsed2 != null) {
|
||||
int minLength = Math.min(parsed1.size(), parsed2.size());
|
||||
for (int i = 0; i < minLength; i++) {
|
||||
int compare = Integer.compare(parsed1.get(i), parsed2.get(i));
|
||||
if (compare != 0) {
|
||||
return compare;
|
||||
}
|
||||
}
|
||||
// 如果前缀相同,较短的编号排在前面
|
||||
return Integer.compare(parsed1.size(), parsed2.size());
|
||||
}
|
||||
|
||||
// 如果一个是有效编号,另一个无效,有效编号排在前面
|
||||
if (parsed1 == null && parsed2 != null) {
|
||||
return 1; // obj1 无效,排在后面
|
||||
}
|
||||
if (parsed1 != null && parsed2 == null) {
|
||||
return -1; // obj2 无效,排在后面
|
||||
}
|
||||
|
||||
// 如果两个都无效,按字符串字典序排序
|
||||
return atlasNo1.compareTo(atlasNo2);
|
||||
};
|
||||
|
||||
// 对集合进行排序
|
||||
data.sort(comparator);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 yem_atlasno 转换为可比较的 List<Integer>。
|
||||
* 如果格式无效,返回 null。
|
||||
*/
|
||||
private static List<Integer> parseAtlasNo(String atlasNo) {
|
||||
if (atlasNo == null || atlasNo.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 检查是否只包含数字和点
|
||||
if (!atlasNo.matches("^(\\d+\\.)*\\d+$")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 拆分并转换为整数列表
|
||||
return Arrays.stream(atlasNo.split("\\."))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 给图号单据体赋值
|
||||
*
|
||||
|
@ -1,21 +0,0 @@
|
||||
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());
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
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, "当前单有下级,不允许删除!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package com.yem.em.dynamic;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yem.em.utils.SubRelationUtils;
|
||||
import com.yem.wm.utils.StringUtils;
|
||||
import kd.bos.algo.DataSet;
|
||||
@ -34,8 +33,6 @@ import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import static com.yem.em.utils.SubRelationUtils.queryBoughtPartInfo;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/8/31 17:48
|
||||
@ -78,75 +75,47 @@ public class SelectsalenoDynamicoEdit extends AbstractFormPlugin implements RowC
|
||||
}
|
||||
if (customParas.get("Tpye").equals("searchap2")) {//零件
|
||||
if (customParas.containsKey("yem_salesorderno")) {
|
||||
|
||||
String modelnumber = (String) customParas.get("yem_salesorderno");
|
||||
DataSet dataSet = queryBoughtPartInfo(modelnumber, null);
|
||||
|
||||
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet);
|
||||
Map<String, DynamicObject> res = new HashMap<>();
|
||||
for (DynamicObject data : collection) {
|
||||
String salesorderno = (String) data.get("yem_salesorderno");
|
||||
String ass_number = data.getString("ass_number");
|
||||
res.put(salesorderno + "_" + modelnumber + "_" + ass_number, data);
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
String algoKey = this.getClass().getName();
|
||||
//查询零件明细表 根据零件编码过滤
|
||||
// qFilters.add(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, customParas.get("yem_salesorderno")));
|
||||
// DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_em_assatlasdet", "number ljnumber", qFilters.toArray(new QFilter[]{}));
|
||||
// DataSet dataSet2 = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", "yem_entryentity.yem_asscomponent.number yem_ccode,number ", null);
|
||||
// DataSet dataSet3 = dataSet.leftJoin(dataSet2).on("ljnumber", "yem_ccode").select(new String[]{"ljnumber"}, new String[]{"number"}).finish();
|
||||
DynamicObject object1 = SubRelationUtils.getfirstNumber(customParas.get("yem_salesorderno").toString());
|
||||
DynamicObject getfirstid = SubRelationUtils.getfirstid(customParas.get("yem_salesorderno").toString());
|
||||
if (getfirstid != null) {
|
||||
qFilters.add(new QFilter("yem_entryentity.yem_asscomponent.number", QCP.equals, getfirstid.getString("number")));
|
||||
DataSet dataSet3 = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", "number", qFilters.toArray(new QFilter[]{}));
|
||||
//查询设备档案 与 查询零件明细表DataSet通过资源号编码进行左关联
|
||||
String selectField1 = "yem_model.number yem_modelno,yem_model.yem_products.number yem_products" +
|
||||
",yem_model.yem_productsgroup.name yem_productsgroup,yem_dateofpurchase,yem_salesorderno";
|
||||
DataSet dataSet1 = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", selectField1, null);
|
||||
DataSet dataSetdi11 = dataSet3.leftJoin(dataSet1).on("number", "yem_modelno")
|
||||
.select(new String[]{"number"},
|
||||
new String[]{"yem_modelno", "yem_products", "yem_productsgroup", "yem_dateofpurchase", "yem_salesorderno"})
|
||||
.finish().where("yem_salesorderno is not null");
|
||||
DataSet dataSetdis = dataSetdi11.distinct();
|
||||
if (dataSetdis != null) {
|
||||
for (Row data : dataSetdis) {
|
||||
if (data.get("yem_salesorderno") != null) {
|
||||
DynamicObject entryentity = yem_entryentity.addNew();
|
||||
entryentity.set("yem_salesorderno", data.get("yem_salesorderno"));
|
||||
entryentity.set("yem_resourceno", data.getString("yem_modelno"));
|
||||
entryentity.set("yem_products", data.getString("yem_products"));
|
||||
entryentity.set("yem_productsgroup", data.getString("yem_productsgroup"));
|
||||
if (object1 != null) {
|
||||
entryentity.set("yem_parentpartcode", object1.getString("number"));
|
||||
}
|
||||
entryentity.set("yem_partcode", customParas.get("yem_salesorderno"));
|
||||
if (data.getString("yem_dateofpurchase") != null) {
|
||||
Date yem_dateofpurchase = formatDate(data.getString("yem_dateofpurchase"), "yyyy-MM-dd");
|
||||
entryentity.set("yem_dateofpurchase", yem_dateofpurchase);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (DynamicObject data : res.values()) {
|
||||
DynamicObject obj = yem_entryentity.addNew();
|
||||
obj.set("yem_salesorderno", data.getString("yem_salesorderno"));
|
||||
obj.set("yem_dateofpurchase", data.getDate("yem_dateofpurchase"));
|
||||
obj.set("yem_resourceno", data.getString("resource_no"));
|
||||
obj.set("yem_products", data.getString("yem_products"));
|
||||
obj.set("yem_productsgroup", data.getString("yem_productsgroup"));
|
||||
obj.set("yem_partcode", modelnumber);
|
||||
obj.set("yem_parentpartcode", data.getString("ass_number"));
|
||||
}
|
||||
|
||||
// List<QFilter> qFilters = new ArrayList<>();
|
||||
// String algoKey = this.getClass().getName();
|
||||
// //查询零件明细表 根据零件编码过滤
|
||||
//// qFilters.add(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, customParas.get("yem_salesorderno")));
|
||||
//// DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_em_assatlasdet", "number ljnumber", qFilters.toArray(new QFilter[]{}));
|
||||
//// DataSet dataSet2 = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", "yem_entryentity.yem_asscomponent.number yem_ccode,number ", null);
|
||||
//// DataSet dataSet3 = dataSet.leftJoin(dataSet2).on("ljnumber", "yem_ccode").select(new String[]{"ljnumber"}, new String[]{"number"}).finish();
|
||||
// DynamicObject[] object1 = SubRelationUtils.getfirstNumber(customParas.get("yem_salesorderno").toString());
|
||||
// Set<DynamicObject> resultList = new HashSet<>();
|
||||
//// SubRelationUtils.getfirstid(customParas.get("yem_salesorderno").toString(), resultList);
|
||||
// Set<String> queryNum = new HashSet<>();
|
||||
// for (DynamicObject object : resultList) {
|
||||
// queryNum.add(object.getString("number"));
|
||||
// }
|
||||
// if (!resultList.isEmpty()) {
|
||||
// qFilters.add(new QFilter("yem_entryentity.yem_asscomponent.number", QCP.in, queryNum));
|
||||
// DataSet dataSet3 = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", "number", qFilters.toArray(new QFilter[]{}));
|
||||
// //查询设备档案 与 查询零件明细表DataSet通过资源号编码进行左关联
|
||||
// String selectField1 = "yem_model.number yem_modelno,yem_model.yem_products.number yem_products" +
|
||||
// ",yem_model.yem_productsgroup.name yem_productsgroup,yem_dateofpurchase,yem_salesorderno";
|
||||
// DataSet dataSet1 = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", selectField1, null);
|
||||
// DataSet dataSetdi11 = dataSet3.leftJoin(dataSet1).on("number", "yem_modelno")
|
||||
// .select(new String[]{"number"},
|
||||
// new String[]{"yem_modelno", "yem_products", "yem_productsgroup", "yem_dateofpurchase", "yem_salesorderno"})
|
||||
// .finish().where("yem_salesorderno is not null");
|
||||
// DataSet dataSetdis = dataSetdi11.distinct();
|
||||
// if (dataSetdis != null) {
|
||||
// for (Row data : dataSetdis) {
|
||||
// if (data.get("yem_salesorderno") != null) {
|
||||
// DynamicObject entryentity = yem_entryentity.addNew();
|
||||
// entryentity.set("yem_salesorderno", data.get("yem_salesorderno"));
|
||||
// entryentity.set("yem_resourceno", data.getString("yem_modelno"));
|
||||
// entryentity.set("yem_products", data.getString("yem_products"));
|
||||
// entryentity.set("yem_productsgroup", data.getString("yem_productsgroup"));
|
||||
// if (object1.length > 0) {
|
||||
// entryentity.set("yem_parentpartcode", object1[0].getString("number"));
|
||||
// }
|
||||
// entryentity.set("yem_partcode", customParas.get("yem_salesorderno"));
|
||||
// if (data.getString("yem_dateofpurchase") != null) {
|
||||
// Date yem_dateofpurchase = formatDate(data.getString("yem_dateofpurchase"), "yyyy-MM-dd");
|
||||
// entryentity.set("yem_dateofpurchase", yem_dateofpurchase);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ public class BomChangeTaskEdit extends AbstractTask {
|
||||
QFilter qFilter = new QFilter("number", QCP.equals, "110");
|
||||
DynamicObject bos_org = BusinessDataServiceHelper.loadSingle("bos_org", "id", qFilter.toArray());
|
||||
String Queryfield = AtlasUtils.Queryfield("changebill_code", "pcode", "ccode", "qty", "break_flag", "complete_time",
|
||||
"disable_time", "state", "complete_time", "complete_user", "MATER_NAME", "CMATER_NAME", "COMPLETE_TIME", "enable_time");
|
||||
"disable_time", "state", "complete_time", "complete_user", "MATER_NAME", "CMATER_NAME", "COMPLETE_TIME");
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
|
||||
// 昨天
|
||||
@ -71,8 +71,8 @@ public class BomChangeTaskEdit extends AbstractTask {
|
||||
calendar.set(Calendar.MILLISECOND, 999);
|
||||
String end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
|
||||
|
||||
// start = "2024-12-25 00:00:00";
|
||||
// end = "2024-12-25 23:59:59";
|
||||
// start = "2024-12-04 00:00:00";
|
||||
// end = "2024-12-10 23:59:59";
|
||||
|
||||
for (String key : productmap.keySet()) {
|
||||
String value = productmap.get(key);
|
||||
|
@ -2,14 +2,12 @@ package com.yem.em.task;
|
||||
|
||||
import com.yem.em.utils.AtlasUtils;
|
||||
import com.yem.wm.utils.AttachmentUtil;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.fileservice.FileServiceFactory;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.AttachmentServiceHelper;
|
||||
@ -24,7 +22,6 @@ import java.util.*;
|
||||
|
||||
import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.*;
|
||||
import static com.yem.em.utils.AtlasUtils.seelctDyn;
|
||||
import static com.yem.rf.utils.RFUtils.getBaseQFilter;
|
||||
|
||||
/**
|
||||
* @Description: 1、如《PLM变更单》分录【替换关系】=【相互替换】【新替换旧】【互不替换】,分录【启用停用状态】=‘停用’,并且【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id
|
||||
@ -90,6 +87,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
*/
|
||||
private void generateReplaceRelation(DynamicObject plmObj, DynamicObjectCollection enabled) {
|
||||
DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail");
|
||||
ArrayList<DynamicObject> remove = Lists.newArrayList();
|
||||
// 更新是否资源、是否总成
|
||||
for (DynamicObject plm : enabled) {
|
||||
|
||||
@ -112,18 +110,48 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
plm.set("yem_isresource", true);
|
||||
}
|
||||
logger.info("是否资源:{},{}", parentno, basemodelib != null);
|
||||
|
||||
if (!plm.getBoolean("yem_isassy") && !plm.getBoolean("yem_isresource")) {
|
||||
remove.add(plm);
|
||||
}
|
||||
}
|
||||
collection.removeAll(remove);
|
||||
// 替换关系生成成功之后更新完成时间、状态
|
||||
Map<Long, DynamicObject> successMap = new HashMap<>();
|
||||
DynamicObject bomChange = createBOMChange(plmObj, enabled);
|
||||
DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity");
|
||||
|
||||
for (DynamicObject entryObject : entry) {
|
||||
useExistReplace(bomChange, entryObject, successMap);
|
||||
if (!entry.isEmpty()) {
|
||||
DynamicObject replace = null;
|
||||
String billno = plmObj.getString("billno");
|
||||
String gybg_no = plmObj.getString("yem_gybg_no");
|
||||
if (entry.size() == 1) {
|
||||
logger.info("生成替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, enabled.get(0).getString("yem_textfield"));
|
||||
logger.info("生成_当前替换关系:{}", entry.get(0).getString("yem_replace"));
|
||||
replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM");
|
||||
successMap.put(entry.get(0).getLong("id"), bomChange);
|
||||
}
|
||||
for (DynamicObject entryObject : entry) {
|
||||
int idx = entry.indexOf(entryObject);
|
||||
if (idx == 0) continue;
|
||||
logger.info("更新替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, entryObject.getString("yem_textfield"));
|
||||
logger.info("更新_替换关系:{}", entryObject.getString("yem_replace"));
|
||||
replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM");
|
||||
successMap.put(entryObject.getLong("id"), bomChange);
|
||||
}
|
||||
}
|
||||
List<Long> list = new ArrayList<>();
|
||||
for (Map.Entry<Long, DynamicObject> mapEntry : successMap.entrySet()) {
|
||||
Long bomChangeEntryId = mapEntry.getKey();
|
||||
// DynamicObject bomChangeObj = mapEntry.getValue();
|
||||
// DynamicObjectCollection bomChangeEntry = bomChangeObj.getDynamicObjectCollection("yem_entryentity");
|
||||
// int idx = 0;
|
||||
// for (DynamicObject bom : bomChangeEntry) {
|
||||
// if (bomChangeEntryId == bom.getLong("id")) {
|
||||
// idx = bomChangeEntry.indexOf(bom);
|
||||
// }
|
||||
// }
|
||||
// DynamicObject currentEntry = bomChangeEntry.get(idx);
|
||||
// Date completetime = currentEntry.getDate("yem_completetime");//完成时间
|
||||
for (DynamicObject d : collection) {
|
||||
long id = d.getLong("id");
|
||||
if (bomChangeEntryId == id) {
|
||||
@ -144,31 +172,6 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
syncImage(plmObj, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已存在的替换关系
|
||||
*
|
||||
* @param bomChange
|
||||
* @param bomChangeEntry
|
||||
* @param successMap
|
||||
* @return
|
||||
*/
|
||||
private void useExistReplace(DynamicObject bomChange, DynamicObject bomChangeEntry, Map<Long, DynamicObject> successMap) {
|
||||
QFilter qFilter = new QFilter("status", "=", "C");
|
||||
qFilter.and("number", "=", bomChangeEntry.getString("yem_parentno"));
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_em_replace", "id, billno", qFilter.toArray());
|
||||
if (load.length > 0) {
|
||||
DynamicObject replace = load[0];
|
||||
replace = BusinessDataServiceHelper.loadSingle(replace.getPkValue(), replace.getDataEntityType().getName());
|
||||
logger.info("使用已有替换关系:{}", replace.getString("number"));
|
||||
AtlasUtils.Addreplace(bomChange, bomChangeEntry, replace, "yem_em_replace", "update", "PLM");
|
||||
successMap.put(bomChangeEntry.getLong("id"), bomChange);
|
||||
} else {
|
||||
logger.info("创建新的替换关系:{}", bomChangeEntry.getString("yem_parentno"));
|
||||
AtlasUtils.Addreplace(bomChange, bomChangeEntry, null, "yem_em_replace", "add", "PLM");
|
||||
successMap.put(bomChangeEntry.getLong("id"), bomChange);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据PLM创建BOM,用于生成替换关系
|
||||
*
|
||||
@ -315,7 +318,6 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
* 查询匹配的 总成图册明细
|
||||
* PLM:变更后父项编码 - 总成图册明细.编码
|
||||
* PLM:变更后子项编码 - 替换关系:ABC 替换编码,E(删除):不匹配,D(新增)替换前编码
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private DynamicObject queryMatchAssemblyAtlasDetails(DynamicObject plmObj, DynamicObject d) {
|
||||
@ -358,10 +360,6 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
detailPartNo = d.getString("yem_textfield");
|
||||
}
|
||||
|
||||
if (!"B".equals(d.get("yem_invokstatus"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (partno.lastIndexOf("-") != -1) {
|
||||
partno = partno.substring(0, partno.lastIndexOf("-")).trim();
|
||||
}
|
||||
@ -378,54 +376,4 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新总成图册明细中的 是否部件 、 是否有上级
|
||||
* @param bill 总成图册明细
|
||||
*/
|
||||
public static void updateIsCompAndIsUp(DynamicObject bill) {
|
||||
String number = bill.getString("number");
|
||||
QFilter qFilter = new QFilter("enable", QCP.equals, "1");//
|
||||
qFilter.and(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, number));//
|
||||
DynamicObject[] yem_em_assatlasdet = BusinessDataServiceHelper.load("yem_em_assatlasdet", "id"
|
||||
, new QFilter[]{qFilter}, null);
|
||||
if (yem_em_assatlasdet.length > 0) {
|
||||
bill.set("yem_issup", true);
|
||||
for (int i = 0; i < yem_em_assatlasdet.length; i++) {
|
||||
DynamicObject assatlasdet = yem_em_assatlasdet[i];
|
||||
//根据id加载所有数据
|
||||
DynamicObject component = BusinessDataServiceHelper.loadSingle(assatlasdet.getLong("id"), "yem_em_assatlasdet");
|
||||
DynamicObjectCollection yemEntryentity = component.getDynamicObjectCollection("yem_entryentity");
|
||||
for (int j = 0; j < yemEntryentity.size(); j++) {
|
||||
DynamicObject dynamicObject = yemEntryentity.get(j);
|
||||
String yemPartnumber = dynamicObject.getString("yem_partnumber");
|
||||
if (yemPartnumber.equals(number)) {
|
||||
dynamicObject.set("yem_iscomp", true);
|
||||
dynamicObject.set("yem_compid", bill.getString("id"));
|
||||
}
|
||||
}
|
||||
//保存
|
||||
SaveServiceHelper.save(new DynamicObject[]{component});
|
||||
}
|
||||
}
|
||||
DynamicObjectCollection yem_entryentity = bill.getDynamicObjectCollection("yem_entryentity");
|
||||
for (int i = 0; i < yem_entryentity.size(); i++) {
|
||||
DynamicObject object = yem_entryentity.get(i);
|
||||
boolean yem_iscomp = object.getBoolean("yem_iscomp");
|
||||
if (!yem_iscomp) {
|
||||
String yem_partnumber = object.getString("yem_partnumber");
|
||||
QFilter qFilter1 = new QFilter("enable", QCP.equals, "1");//
|
||||
qFilter1.and(new QFilter("number", QCP.equals, yem_partnumber));//
|
||||
DynamicObject assatlasdet = BusinessDataServiceHelper.loadSingle("yem_em_assatlasdet", "id,yem_issup,number,name"
|
||||
, new QFilter[]{qFilter1});
|
||||
if (assatlasdet != null) {
|
||||
assatlasdet.set("yem_issup", true);
|
||||
object.set("yem_iscomp", true);
|
||||
object.set("yem_compid", assatlasdet.getString("id"));
|
||||
SaveServiceHelper.save(new DynamicObject[]{assatlasdet});
|
||||
}
|
||||
}
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{bill});
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 1.根据《PLM变更单》中的
|
||||
@ -33,18 +34,14 @@ import java.util.*;
|
||||
|
||||
public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class);
|
||||
private static Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
DynamicObject[] plms = queryPLMChange();
|
||||
DynamicObject[] boms = queryBOMChange();
|
||||
|
||||
List<MatchResult> matchList = new ArrayList<>();
|
||||
|
||||
StringBuilder bomBillno = new StringBuilder();
|
||||
for (DynamicObject bomObj : boms) {
|
||||
bomBillno.append(bomObj.getString("number")).append("\n");
|
||||
DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity");
|
||||
for (DynamicObject bom : bom_entry) {
|
||||
for (DynamicObject plmObj : plms) {
|
||||
@ -56,105 +53,93 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask {
|
||||
Date bom_completetime = bom.getDate("yem_completetime");
|
||||
String exestate = bom.getString("yem_exestate");
|
||||
Date invoktime = plm.getDate("yem_invoktime");//执行时间
|
||||
String invokstatus = plm.getString("yem_invokstatus");//执行状态
|
||||
String exchangetype = plm.getString("yem_exchangetype");//替换标志
|
||||
if (YEM.isNotEmpty(invoktime) && "B".equals(invokstatus)) {
|
||||
//已完成跳过
|
||||
continue;
|
||||
}
|
||||
// 没有替换关系不匹配
|
||||
if (YEM.isEmpty(exchangetype)) {
|
||||
continue;
|
||||
}
|
||||
MatchResult result = isPlmMatchBom(plmObj, bom, plm);
|
||||
Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm);
|
||||
exestate = "30".equals(exestate) ? "B" : "A";
|
||||
if (result.isMatched() && result.getDisable()) {
|
||||
if (plmMatchBom != null && !plmMatchBom) {
|
||||
// Date stoptime = plm.getDate("yem_stoptime");
|
||||
Date downdate = bom.getDate("yem_downdate");
|
||||
if (YEM.isNotEmpty(downdate)) {
|
||||
plm.set("yem_enablestatus_before", bom_enablesta);
|
||||
plm.set("yem_stoptime", downdate);
|
||||
// plm.set("yem_invoktime", bom_completetime);
|
||||
// plm.set("yem_invokstatus", exestate);
|
||||
} else {
|
||||
logger.info("停用_无时间,不更新,{},{}", plm_billno, plm_parent);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.isMatched() && result.getEnable()) {
|
||||
if (plmMatchBom != null && plmMatchBom) {
|
||||
// Date starttime = plm.getDate("yem_starttime");
|
||||
Date enableddate = bom.getDate("yem_enableddate");
|
||||
if (YEM.isNotEmpty(enableddate)) {
|
||||
plm.set("yem_enablesta", bom_enablesta);
|
||||
plm.set("yem_starttime", enableddate);
|
||||
// plm.set("yem_invoktime", bom_completetime);
|
||||
// plm.set("yem_invokstatus", exestate);
|
||||
|
||||
if (YEM.isNotEmpty(bom_completetime)) {
|
||||
plm.set("yem_invoktime", bom_completetime);
|
||||
plm.set("yem_invokstatus", exestate);
|
||||
}
|
||||
} else {
|
||||
logger.info("启用_无时间,不更新,{},{}", plm_billno, plm_parent);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.isMatched() && YEM.isNotEmpty(bom_completetime)) {
|
||||
boolean exist = false;
|
||||
for (MatchResult res : matchList) {
|
||||
Long id = res.getInfo().getId();
|
||||
if (id == plm.getLong("id")) {
|
||||
exist = true;
|
||||
if (result.getEnable()) {
|
||||
res.setEnable(true);
|
||||
}
|
||||
if (result.getDisable()) {
|
||||
res.setDisable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!exist) {
|
||||
MatchInfo info = new MatchInfo(plm.getLong("id"), bom_completetime, exestate, exchangetype);
|
||||
result.setInfo(info);
|
||||
|
||||
matchList.add(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 更新执行状态、执行时间
|
||||
for (MatchResult result : matchList) {
|
||||
for (DynamicObject plmObj : plms) {
|
||||
DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail");
|
||||
for (DynamicObject plm : plm_entry) {
|
||||
MatchInfo info = result.getInfo();
|
||||
if (plm.getLong("id") == info.getId()) {
|
||||
|
||||
// 后替代前、通用、不通用,必须停用启用都匹配到才更新完成状态
|
||||
if (YEM.isNotEmpty(info.getReplace()) && "A-B-C".contains(info.getReplace()) && result.getDisable() && result.getEnable()) {
|
||||
if (!"B".equals(plm.getString("yem_invokstatus"))) {
|
||||
plm.set("yem_invoktime", info.getComplateDate());
|
||||
plm.set("yem_invokstatus", info.getStatus());
|
||||
}
|
||||
}
|
||||
|
||||
// 启用或停用的,停用的匹配到一个就更新完成状态
|
||||
if (YEM.isNotEmpty(info.getReplace()) && "D-E".contains(info.getReplace()) && result.isMatched()) {
|
||||
if (!"B".equals(plm.getString("yem_invokstatus"))) {
|
||||
plm.set("yem_invoktime", info.getComplateDate());
|
||||
plm.set("yem_invokstatus", info.getStatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// for (DynamicObject plmObj : plms) {
|
||||
// DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail");
|
||||
// String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号
|
||||
// for (DynamicObject plm : plm_entry) {
|
||||
// String plm_parent = plm.getString("yem_textfield");//总成编码
|
||||
// for (DynamicObject bomObj : boms) {
|
||||
// DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity");
|
||||
// for (DynamicObject bom : bom_entry) {
|
||||
// String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态
|
||||
// Date bom_completetime = bom.getDate("yem_completetime");
|
||||
// Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm);
|
||||
// if (plmMatchBom != null && !plmMatchBom) {
|
||||
// Date stoptime = plm.getDate("yem_stoptime");
|
||||
// if (YEM.isEmpty(stoptime)) {
|
||||
// plm.set("yem_enablestatus_before", bom_enablesta);
|
||||
// Date downdate = bom.getDate("yem_downdate");
|
||||
// plm.set("yem_stoptime", downdate);
|
||||
// plm.set("yem_completetime", bom_completetime);
|
||||
// } else {
|
||||
// logger.info("停用_已有时间,不更新,{},{}", plm_billno, plm_parent);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (plmMatchBom != null && plmMatchBom) {
|
||||
// Date starttime = plm.getDate("yem_starttime");
|
||||
// if (YEM.isEmpty(starttime)) {
|
||||
// Date enableddate = bom.getDate("yem_enableddate");
|
||||
// plm.set("yem_enablesta", bom_enablesta);
|
||||
// plm.set("yem_starttime", enableddate);
|
||||
// plm.set("yem_completetime", bom_completetime);
|
||||
// } else {
|
||||
// logger.info("启用_已有时间,不更新,{},{}", plm_billno, plm_parent);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
SaveServiceHelper.save(plms);
|
||||
}
|
||||
|
||||
/**
|
||||
* PLM匹配BOM,
|
||||
*
|
||||
* @param plmObj
|
||||
* @param bom
|
||||
* @param plm
|
||||
* @return 匹配到停用返回false,启用返回true,未匹配到返回null
|
||||
*/
|
||||
public static MatchResult isPlmMatchBom(DynamicObject plmObj, DynamicObject bom, DynamicObject plm) {
|
||||
public static Boolean isPlmMatchBom(DynamicObject plmObj, DynamicObject bom, DynamicObject plm) {
|
||||
String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号
|
||||
String bom_billno = bom.getString("yem_changeno");//更改单号
|
||||
String bom_parent = bom.getString("yem_parentno");//父件编码
|
||||
@ -166,36 +151,28 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask {
|
||||
// BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量
|
||||
String plm_after_parent_now = plm.getString("yem_parent_now");//父项编码
|
||||
String plm_after_child_now = plm.getString("yem_child_now");//子项编码
|
||||
// BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new");
|
||||
BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new");
|
||||
|
||||
String bom_before_parent_no = bom.getString("yem_parentno");//总成编码
|
||||
String bom_before_child_no = bom.getString("yem_subno");//子件编码
|
||||
// BigDecimal bom_before_qty = bom.getBigDecimal("yem_qty");
|
||||
// logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, bom_child, bom_enablesta);
|
||||
|
||||
MatchResult result = new MatchResult();
|
||||
String bom_before_child_no = bom.getString("yem_subno");//数量
|
||||
BigDecimal bom_before_qty = bom.getBigDecimal("yem_qty");
|
||||
logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, bom_child, bom_enablesta);
|
||||
if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && "B".equals(bom_enablesta)) {
|
||||
logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child);
|
||||
result.setDisable(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// logger.info("启用_compare:{} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no, bom_enablesta);
|
||||
if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_before_parent_no) && eq(plm_after_child_now, bom_before_child_no) && "A".equals(bom_enablesta)) {
|
||||
logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no);
|
||||
result.setEnable(true);
|
||||
logger.info("启用_compare:{} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no, plm_after_qty, bom_before_qty, bom_enablesta);
|
||||
if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_before_parent_no) && eq(plm_after_child_now, bom_before_child_no) && eq(plm_after_qty, bom_before_qty) && "A".equals(bom_enablesta)) {
|
||||
logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno,plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no, plm_after_qty, bom_before_qty);
|
||||
return true;
|
||||
}
|
||||
|
||||
return result;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean eq(Object str1, Object str2) {
|
||||
if (str1 instanceof String && str2 instanceof String) {
|
||||
if (YEM.isNotEmpty(str1)) {
|
||||
str1 = ((String) str1).trim();
|
||||
}
|
||||
if (YEM.isNotEmpty(str2)) {
|
||||
str2 = ((String) str2).trim();
|
||||
}
|
||||
return str1.equals(str2);
|
||||
}
|
||||
if (str1 instanceof BigDecimal && str2 instanceof BigDecimal) {
|
||||
@ -222,109 +199,3 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask {
|
||||
return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class MatchResult {
|
||||
// 是否启用匹配到
|
||||
private Boolean enable;
|
||||
|
||||
// 是否停用匹配到
|
||||
private Boolean disable;
|
||||
|
||||
// 匹配信息
|
||||
private MatchInfo info;
|
||||
|
||||
public MatchResult() {
|
||||
this.disable = false;
|
||||
this.enable = false;
|
||||
}
|
||||
|
||||
public MatchResult(Boolean disable, Boolean enable) {
|
||||
this.disable = disable;
|
||||
this.enable = enable;
|
||||
}
|
||||
|
||||
public Boolean getEnable() {
|
||||
return enable;
|
||||
}
|
||||
|
||||
public void setEnable(Boolean enable) {
|
||||
this.enable = enable;
|
||||
}
|
||||
|
||||
public Boolean getDisable() {
|
||||
return disable;
|
||||
}
|
||||
|
||||
public void setDisable(Boolean disable) {
|
||||
this.disable = disable;
|
||||
}
|
||||
|
||||
public MatchInfo getInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
public void setInfo(MatchInfo info) {
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public boolean isMatched() {
|
||||
return this.disable || this.enable;
|
||||
}
|
||||
}
|
||||
|
||||
class MatchInfo {
|
||||
// PLM分录ID
|
||||
private Long id;
|
||||
|
||||
// 完成时间
|
||||
private Date complateDate;
|
||||
|
||||
// 启用停用状态
|
||||
private String status;
|
||||
|
||||
// 替换关系
|
||||
private String replace;
|
||||
|
||||
public MatchInfo() {
|
||||
}
|
||||
|
||||
public MatchInfo(Long id, Date complateDate, String status, String replace) {
|
||||
this.id = id;
|
||||
this.complateDate = complateDate;
|
||||
this.status = status;
|
||||
this.replace = replace;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getComplateDate() {
|
||||
return complateDate;
|
||||
}
|
||||
|
||||
public void setComplateDate(Date complateDate) {
|
||||
this.complateDate = complateDate;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getReplace() {
|
||||
return replace;
|
||||
}
|
||||
|
||||
public void setReplace(String replace) {
|
||||
this.replace = replace;
|
||||
}
|
||||
}
|
@ -18,8 +18,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
import static com.yem.em.task.GenerateReplaceRelationshipTaskEdit.updateIsCompAndIsUp;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/10/24 11:33
|
||||
@ -329,8 +327,8 @@ public class AtlasUtils {
|
||||
subentryentity.set("yem_completetime", entryentity.getDate("yem_completetime"));
|
||||
subentryentity.set("yem_replace", entryentity.getString("yem_replace"));
|
||||
subentryentity.set("yem_creationtime", new Date());
|
||||
subentryentity.set("yem_disablestat", "A");
|
||||
subentryentity.set("yem_atlasno", SubRelationUtils.Getatlasno(entryentity.getString("yem_enableparno")));
|
||||
int yem_enableparno = SubRelationUtils.Getatlasno(entryentity.getString("yem_enableparno"));
|
||||
subentryentity.set("yem_atlasno", yem_enableparno + 1);
|
||||
//zzs add https://docs.qq.com/sheet/DQkFUcGxLTnRTaWl4?tab=BB08J2 问题974
|
||||
if (entryentity.containsProperty("yem_remark") && subentryentity.containsProperty("yem_partremark")) {
|
||||
subentryentity.set("yem_partremark", entryentity.getString("yem_remark"));
|
||||
@ -426,7 +424,7 @@ public class AtlasUtils {
|
||||
OperationResult Operate = OperationServiceHelper.executeOperate("save", yem_em_assatlasdet.getDynamicObjectType().getName(),
|
||||
new DynamicObject[]{yem_em_assatlasdet}, OperateOption.create());
|
||||
if (Operate.isSuccess()) {
|
||||
updateIsCompAndIsUp(yem_em_assatlasdet);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -470,8 +468,8 @@ public class AtlasUtils {
|
||||
subentryentity.set("yem_completetime", entryentity.getDate("yem_completetime"));
|
||||
subentryentity.set("yem_replace", entryentity.getString("yem_replace"));
|
||||
subentryentity.set("yem_creationtime", new Date());
|
||||
subentryentity.set("yem_disablestat", "A");
|
||||
subentryentity.set("yem_atlasno", SubRelationUtils.Getatlasno(entryentity.getString("yem_repno")));
|
||||
int yem_enableparno = SubRelationUtils.Getatlasno(entryentity.getString("yem_repno"));
|
||||
subentryentity.set("yem_atlasno", yem_enableparno + 1);
|
||||
//zzs add https://docs.qq.com/sheet/DQkFUcGxLTnRTaWl4?tab=BB08J2 问题974
|
||||
if (entryentity.containsProperty("yem_remark") && subentryentity.containsProperty("yem_partremark")) {
|
||||
subentryentity.set("yem_partremark", entryentity.getString("yem_remark"));
|
||||
@ -573,7 +571,7 @@ public class AtlasUtils {
|
||||
OperationResult Operate = OperationServiceHelper.executeOperate("save", yem_em_assatlasdet.getDynamicObjectType().getName(),
|
||||
new DynamicObject[]{yem_em_assatlasdet}, OperateOption.create());
|
||||
if (Operate.isSuccess()) {
|
||||
updateIsCompAndIsUp(yem_em_assatlasdet);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -925,20 +923,10 @@ public class AtlasUtils {
|
||||
DynamicObject yem_em_bomchange = BusinessDataServiceHelper.loadSingle("yem_em_bomchange", "id", qFilter1.toArray());
|
||||
if (yem_em_bomchange != null) {
|
||||
DynamicObject bomchange = BusinessDataServiceHelper.loadSingle(yem_em_bomchange.getLong("id"), "yem_em_bomchange");
|
||||
DynamicObjectCollection yem_entryentity = bomchange.getDynamicObjectCollection("yem_entryentity");
|
||||
String code = map.get("pcode").toString() + "_" + map.get("ccode").toString() + "_" + map.get("break_flag").toString();
|
||||
boolean exist = false;
|
||||
for (DynamicObject dynamicObject : yem_entryentity) {
|
||||
String break_flag = "";
|
||||
if ("A".equals(dynamicObject.getString("yem_enablesta"))) {
|
||||
break_flag = "启用";
|
||||
}
|
||||
if ("B".equals(dynamicObject.getString("yem_enablesta"))) {
|
||||
break_flag = "停用";
|
||||
}
|
||||
String key = dynamicObject.getString("yem_parentno") + "_" + dynamicObject.getString("yem_subno") + "_" + break_flag;
|
||||
if (code.equals(key)) {
|
||||
exist = true;
|
||||
if (bomchange != null) {
|
||||
DynamicObjectCollection yem_entryentity = bomchange.getDynamicObjectCollection("yem_entryentity");
|
||||
if (yem_entryentity.size() == 0) {
|
||||
DynamicObject dynamicObject = yem_entryentity.addNew();
|
||||
dynamicObject.set("yem_changeno", changebill_code);//更改单号
|
||||
dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码
|
||||
dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称
|
||||
@ -968,45 +956,54 @@ public class AtlasUtils {
|
||||
}
|
||||
|
||||
dynamicObject.set("yem_completetime", map.get("complete_time"));
|
||||
} else {
|
||||
Boolean fag = true;
|
||||
String code = map.get("pcode").toString() + "_" + map.get("ccode").toString();
|
||||
for (int j = 0; j < yem_entryentity.size(); j++) {
|
||||
DynamicObject dynamicObject = yem_entryentity.get(j);
|
||||
String key = dynamicObject.getString("yem_parentno") + "_" + dynamicObject.getString("yem_subno");
|
||||
if (key.equals(code)) {
|
||||
fag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (fag) {
|
||||
DynamicObject dynamicObject = yem_entryentity.addNew();
|
||||
dynamicObject.set("yem_changeno", changebill_code);//更改单号
|
||||
dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码
|
||||
dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称
|
||||
dynamicObject.set("yem_subno", map.get("ccode"));//父件编码
|
||||
dynamicObject.set("yem_subname", map.get("cmater_name"));//子件名称
|
||||
dynamicObject.set("yem_qty", map.get("qty"));//数量
|
||||
if (map.get("break_flag").toString().equals("启用")) {
|
||||
dynamicObject.set("yem_enablesta", "A");//启用停用状态
|
||||
}
|
||||
if (map.get("break_flag").toString().equals("停用")) {
|
||||
dynamicObject.set("yem_enablesta", "B");//启用停用状态
|
||||
}
|
||||
dynamicObject.set("yem_enableparno", map.get("pcode"));//替换父件名称
|
||||
dynamicObject.set("yem_enableparname", map.get("mater_name"));//替换父件名称
|
||||
dynamicObject.set("yem_enableddate", map.get("enable_time"));//启用时间
|
||||
dynamicObject.set("yem_downdate", map.get("disable_time"));//停用时间
|
||||
dynamicObject.set("yem_exestate", map.get("state"));//执行状态
|
||||
DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", map.get("pcode").toString());
|
||||
if (assatlasdet != null) {
|
||||
//是否总成 yem_isass
|
||||
dynamicObject.set("yem_isass", true);
|
||||
}
|
||||
DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", map.get("pcode").toString());
|
||||
if (basemodelib != null) {
|
||||
//是否资源 yem_isass
|
||||
dynamicObject.set("yem_isresource", true);
|
||||
}
|
||||
dynamicObject.set("yem_completetime", map.get("complete_time"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!exist) {
|
||||
DynamicObject dynamicObject = yem_entryentity.addNew();
|
||||
dynamicObject.set("yem_changeno", changebill_code);//更改单号
|
||||
dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码
|
||||
dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称
|
||||
dynamicObject.set("yem_subno", map.get("ccode"));//父件编码
|
||||
dynamicObject.set("yem_subname", map.get("cmater_name"));//子件名称
|
||||
dynamicObject.set("yem_qty", map.get("qty"));//数量
|
||||
if (map.get("break_flag").toString().equals("启用")) {
|
||||
dynamicObject.set("yem_enablesta", "A");//启用停用状态
|
||||
}
|
||||
if (map.get("break_flag").toString().equals("停用")) {
|
||||
dynamicObject.set("yem_enablesta", "B");//启用停用状态
|
||||
}
|
||||
dynamicObject.set("yem_enableparno", map.get("pcode"));//替换父件名称
|
||||
dynamicObject.set("yem_enableparname", map.get("mater_name"));//替换父件名称
|
||||
dynamicObject.set("yem_enableddate", map.get("enable_time"));//启用时间
|
||||
dynamicObject.set("yem_downdate", map.get("disable_time"));//停用时间
|
||||
dynamicObject.set("yem_exestate", map.get("state"));//执行状态
|
||||
DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", map.get("pcode").toString());
|
||||
if (assatlasdet != null) {
|
||||
//是否总成 yem_isass
|
||||
dynamicObject.set("yem_isass", true);
|
||||
}
|
||||
DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", map.get("pcode").toString());
|
||||
if (basemodelib != null) {
|
||||
//是否资源 yem_isass
|
||||
dynamicObject.set("yem_isresource", true);
|
||||
}
|
||||
|
||||
dynamicObject.set("yem_completetime", map.get("complete_time"));
|
||||
}
|
||||
OperationResult save = OperationServiceHelper.executeOperate("save",
|
||||
OperationResult Operate = OperationServiceHelper.executeOperate("save",
|
||||
bomchange.getDynamicObjectType().getName(), new DynamicObject[]{bomchange}, OperateOption.create());
|
||||
if (!save.isSuccess()) {
|
||||
throw new KDBizException("保存失败!" + save.getMessage());
|
||||
if (Operate.isSuccess()) {
|
||||
|
||||
}
|
||||
} else {
|
||||
DynamicObject cmmptable = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange");
|
||||
|
@ -1,31 +1,22 @@
|
||||
package com.yem.em.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.RptUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.openapi.common.custom.annotation.ApiParam;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@ -36,8 +27,6 @@ import java.util.stream.Stream;
|
||||
*/
|
||||
public class SubRelationUtils {
|
||||
|
||||
public final static Log log = LogFactory.getLog(SubRelationUtils.class);
|
||||
|
||||
/**
|
||||
* 查询替换关系
|
||||
*
|
||||
@ -120,7 +109,7 @@ public class SubRelationUtils {
|
||||
qFilter.and(new QFilter("yem_entryentity.yem_completetime", QCP.less_equals, new Date()));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_em_replace", false);
|
||||
String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_em_replace", "yem_entryentity", false);
|
||||
object = QueryServiceHelper.query("yem_em_replace", "yem_entryentity.id," + selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC");
|
||||
object = QueryServiceHelper.query("yem_em_replace", selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC");
|
||||
if (object.size() > 0) {
|
||||
object = queryAssemblyreplevel(object, replacement, isComplete, yem_completetime);
|
||||
}
|
||||
@ -158,22 +147,12 @@ public class SubRelationUtils {
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_em_replace", false);
|
||||
String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_em_replace", "yem_entryentity", false);
|
||||
DynamicObjectCollection yem_em_replace = QueryServiceHelper.query("yem_em_replace",
|
||||
"yem_entryentity.id," + selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC");
|
||||
if (!yem_em_replace.isEmpty()) {
|
||||
int count = 0;
|
||||
Set<Long> ids = new HashSet<>();
|
||||
for (DynamicObject dynamicObject : object) {
|
||||
ids.add(dynamicObject.getLong("yem_entryentity.id"));
|
||||
}
|
||||
for (DynamicObject dynamicObject : yem_em_replace) {
|
||||
if (!ids.contains(dynamicObject.getLong("yem_entryentity.id"))) {
|
||||
object.add(dynamicObject);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count > 0) {
|
||||
queryAssemblyreplevel(yem_em_replace, replacement, isComplete, yem_completetime);
|
||||
selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC");
|
||||
if (yem_em_replace.size() > 0) {
|
||||
for (int j = 0; j < yem_em_replace.size(); j++) {
|
||||
object.add(yem_em_replace.get(j));
|
||||
}
|
||||
queryAssemblyreplevel(yem_em_replace, replacement, isComplete, yem_completetime);
|
||||
}
|
||||
}
|
||||
return object;
|
||||
@ -643,115 +622,20 @@ public class SubRelationUtils {
|
||||
|
||||
/**
|
||||
* 根据替换编码获取最大图册号
|
||||
* 查找下一个图册编号
|
||||
* 同一个图册中,编号层级一致,不一致不处理
|
||||
* 例如层级为0:编号为1,2,4,5,6
|
||||
* 层级为1:编号为1.1,1.2,1.3
|
||||
* 层级为2:编号为1.1.1,1.1.2,1.1.3
|
||||
* 对图册中编号按照层级进行排序,之后取最大的编号,给最后一位数加一,返回加一后的时
|
||||
* 如果按照以上规则无法获取到正确的编号,返回空字符串,后续手动维护编号
|
||||
*
|
||||
* @param repno
|
||||
* @return
|
||||
*/
|
||||
public static String Getatlasno(String repno) {
|
||||
public static int Getatlasno(String repno) {
|
||||
int result = 0;
|
||||
QFilter qFilter = new QFilter("number", QCP.in, repno);
|
||||
DynamicObjectCollection data = QueryServiceHelper.query("yem_em_assatlasdet",
|
||||
"id,number,name,yem_entryentity.yem_atlasno atlasno", new QFilter[]{qFilter});
|
||||
Set<Integer> bits = new HashSet<>();
|
||||
Set<String> existNo = new LinkedHashSet<>();
|
||||
for (DynamicObject datum : data) {
|
||||
String atlasno = datum.getString("atlasno");
|
||||
if (!isValid(atlasno)) {
|
||||
log.error("无法验证的图册编号:" + atlasno);
|
||||
return "";
|
||||
}
|
||||
int matches = StringUtils.countMatches(atlasno, ".");
|
||||
bits.add(matches);
|
||||
existNo.add(atlasno);
|
||||
"id,number,name,yem_entryentity.yem_atlasno", new QFilter[]{qFilter},
|
||||
"length(yem_entryentity.yem_atlasno),yem_entryentity.yem_atlasno DESC");
|
||||
if (data.size() > 0) {
|
||||
result = data.get(0).getInt("yem_entryentity.yem_atlasno");
|
||||
}
|
||||
if (bits.size() == 1) {
|
||||
Integer bit = bits.iterator().next();
|
||||
return findNextMax(existNo, bit);
|
||||
} else {
|
||||
log.error("存在不同层级,无法处理:" + bits);
|
||||
log.error(existNo.toString());
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 对图册中编号按照层级进行排序,之后取最大的编号,给最后一位数加一,返回加一后的时
|
||||
*
|
||||
* @param hierarchicalStrings 已有编号
|
||||
* @param levels 层级
|
||||
* @return 下一个编号
|
||||
*/
|
||||
public static String findNextMax(Set<String> hierarchicalStrings, int levels) {
|
||||
String maxString = null;
|
||||
|
||||
for (String str : hierarchicalStrings) {
|
||||
if (str.split("\\.").length == levels + 1) {
|
||||
if (maxString == null || compareHierarchicalStrings(str, maxString) > 0) {
|
||||
maxString = str;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (maxString != null) {
|
||||
return getNextValue(maxString);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个编号大小
|
||||
*/
|
||||
private static int compareHierarchicalStrings(String str1, String str2) {
|
||||
String[] parts1 = str1.split("\\.");
|
||||
String[] parts2 = str2.split("\\.");
|
||||
|
||||
int length = Math.min(parts1.length, parts2.length);
|
||||
for (int i = 0; i < length; i++) {
|
||||
int num1 = Integer.parseInt(parts1[i]);
|
||||
int num2 = Integer.parseInt(parts2[i]);
|
||||
if (num1 != num2) {
|
||||
return Integer.compare(num1, num2);
|
||||
}
|
||||
}
|
||||
return Integer.compare(parts1.length, parts2.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* 最后一位编号加一
|
||||
*
|
||||
* @param maxString 当前最大编号
|
||||
*/
|
||||
private static String getNextValue(String maxString) {
|
||||
String[] parts = maxString.split("\\.");
|
||||
int lastIndex = parts.length - 1;
|
||||
parts[lastIndex] = String.valueOf(Integer.parseInt(parts[lastIndex]) + 1);
|
||||
|
||||
return String.join(".", parts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断编号是否是一个可识别的编号
|
||||
* 编号为正整数
|
||||
* 为多个小数点分割的数字,前后不能时数字,两个点之间不能为空
|
||||
* 例如:
|
||||
* {true} 45,1.1.3,1.4
|
||||
* {false} .123,2..3,23.,--
|
||||
*/
|
||||
public static boolean isValid(String str) {
|
||||
if (str.matches("\\d+")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Pattern pattern = Pattern.compile("^\\d+(\\.\\d+)+$");
|
||||
Matcher matcher = pattern.matcher(str);
|
||||
return matcher.matches();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -782,17 +666,19 @@ public class SubRelationUtils {
|
||||
* @param yem_partnumber 零件编码
|
||||
* @return
|
||||
*/
|
||||
public static DynamicObject[] getfirstNumber(String yem_partnumber) {
|
||||
public static DynamicObject getfirstNumber(String yem_partnumber) {
|
||||
QFilter qFilter = new QFilter("yem_entryentity.yem_partnumber", QCP.equals, yem_partnumber);//
|
||||
qFilter.and(new QFilter("status", QCP.equals, "C"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_em_assatlasdet", false);
|
||||
String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_em_assatlasdet", "yem_entryentity", false);
|
||||
return BusinessDataServiceHelper.load("yem_em_assatlasdet", selectfields, qFilter.toArray());
|
||||
DynamicObject Object = BusinessDataServiceHelper.loadSingle("yem_em_assatlasdet", selectfields, qFilter.toArray());
|
||||
return Object;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取零件一级部件
|
||||
*
|
||||
* @param yem_partnumber 零件编码
|
||||
* @return
|
||||
*/
|
||||
public static DynamicObject getfirstid(String yem_partnumber) {
|
||||
@ -812,33 +698,6 @@ public class SubRelationUtils {
|
||||
return Object;
|
||||
}
|
||||
|
||||
public static List<DynamicObject> getTopLevelPart(String yem_partnumber) {
|
||||
List<DynamicObject> topLevelObjects = new ArrayList<>();
|
||||
findTopLevelRecursively(yem_partnumber, topLevelObjects);
|
||||
return topLevelObjects;
|
||||
}
|
||||
|
||||
private static void findTopLevelRecursively(String currentPartNumber, List<DynamicObject> topLevelObjects) {
|
||||
QFilter qFilter = new QFilter("yem_entryentity.yem_partnumber", QCP.equals, currentPartNumber);
|
||||
qFilter.and(new QFilter("status", QCP.equals, "C"));
|
||||
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load("yem_em_assatlasdet", "id, number, yem_issup", qFilter.toArray());
|
||||
|
||||
if (objects == null || objects.length == 0) {
|
||||
return; // 没有找到关联数据,直接返回
|
||||
}
|
||||
|
||||
for (DynamicObject object : objects) {
|
||||
boolean yem_issup = object.getBoolean("yem_issup");
|
||||
if (yem_issup) {
|
||||
String number = object.getString("number");
|
||||
findTopLevelRecursively(number, topLevelObjects);
|
||||
} else {
|
||||
topLevelObjects.add(object); // 将最上级对象添加到列表
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取零件一级部件
|
||||
*
|
||||
@ -881,68 +740,4 @@ public class SubRelationUtils {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据零件编码查询订单信息
|
||||
* @param modelnumber 零件面板
|
||||
* @param clientnumber 客户
|
||||
* @return mix dataset
|
||||
*/
|
||||
public static DataSet queryBoughtPartInfo(String modelnumber, @Nullable String clientnumber) {
|
||||
|
||||
String algoKey = SubRelationUtils.class.getName();
|
||||
Map<String, JSONObject> res = new HashMap<>();
|
||||
QFilter qFilter = new QFilter("status", "=", "C");
|
||||
List<String> dfFields = new ArrayList<>();
|
||||
dfFields.add("number df_number");
|
||||
dfFields.add("yem_model.number resource_no");
|
||||
dfFields.add("yem_salesorderno");
|
||||
dfFields.add("group");//产品类型
|
||||
dfFields.add("yem_dateofpurchase");
|
||||
dfFields.add("yem_groupcustomer.number cus_no");//业务主体
|
||||
dfFields.add("yem_model.yem_products.number yem_products");
|
||||
dfFields.add("yem_model.yem_productsgroup.name yem_productsgroup");
|
||||
DataSet df = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", String.join(",", dfFields), qFilter.toArray());
|
||||
|
||||
List<String> cpField = new ArrayList<>();
|
||||
cpField.add("number cp_number");
|
||||
cpField.add("yem_entryentity.yem_assatlasdet.id assatlasdet_id");
|
||||
|
||||
DataSet cp = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", String.join(",", cpField), qFilter.toArray());
|
||||
|
||||
List<String> assField = new ArrayList<>();
|
||||
assField.add("number ass_number");
|
||||
assField.add("id ass_id");
|
||||
assField.add("yem_entryentity.yem_partnumber part_no");
|
||||
|
||||
DataSet ass = ORM.create().queryDataSet(algoKey, "yem_em_assatlasdet", String.join(",", assField), qFilter.toArray());
|
||||
|
||||
List<String> egField = new ArrayList<>();
|
||||
egField.add("id eg_id");
|
||||
egField.add("yem_model");
|
||||
egField.add("yem_modelname");
|
||||
egField.add("yem_modelenname");
|
||||
DataSet eg = ORM.create().queryDataSet(algoKey, "yem_em_electronicgroup", String.join(",", egField), new QFilter[]{new QFilter("status", "=", "C")});
|
||||
|
||||
DataSet dataSet = df.leftJoin(cp)
|
||||
.select(RptUtil.getDataSetFiledAlias(df), RptUtil.getDataSetFiledAlias(cp))
|
||||
.on("resource_no", "cp_number")
|
||||
.finish();
|
||||
dataSet = dataSet.leftJoin(ass.copy())
|
||||
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(ass.copy()))
|
||||
.on("assatlasdet_id", "ass_id")
|
||||
.finish();
|
||||
dataSet = dataSet.leftJoin(eg)
|
||||
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(eg))
|
||||
.on("group", "eg_id")
|
||||
.finish();
|
||||
|
||||
if (YEM.isNotEmpty(clientnumber) && !"admin".equals(clientnumber)) {
|
||||
dataSet = dataSet.where(String.format("part_no = '%s' AND cus_no = '%s'", modelnumber, clientnumber)).orderBy(new String[]{"yem_salesorderno"});
|
||||
} else {
|
||||
dataSet = dataSet.where(String.format("part_no = '%s'", modelnumber)).orderBy(new String[]{"yem_salesorderno"});
|
||||
}
|
||||
dataSet = dataSet.distinct();
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import com.yem.wm.utils.YEM;
|
||||
import com.yem.wm.utils.groupfunc.GroupTopOneFunction;
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.algo.Row;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.openapi.common.custom.annotation.ApiController;
|
||||
@ -35,6 +36,10 @@ import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
@ -107,14 +112,14 @@ public class AssepcDynamic {
|
||||
* @throws IOException
|
||||
*/
|
||||
@ApiPostMapping("/assepcdynamic/qurtbillno")
|
||||
public CustomApiResult<Object> qurtbillno(@NotNull @ApiParam("客户.业务主体.下单平台ID") String number) throws IOException {
|
||||
public CustomApiResult<Object> qurtbillno(@NotNull @ApiParam("客户编码") String number) throws IOException {
|
||||
JSONObject object = new JSONObject();
|
||||
try {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
QFilter qFilter = new QFilter("createorg.number", QCP.equals, "110");
|
||||
qFilter.and("status", QCP.equals, "C");
|
||||
if (!StringUtils.containsIgnoreCase(number, "admin")) {
|
||||
qFilter.and("yem_customer.yem_groupcustomers.number", QCP.equals, number);
|
||||
qFilter.and("yem_customer.number", QCP.equals, number);
|
||||
}
|
||||
// qFilter.and("yem_billtype.number", QCP.equals, "yem_es_salesorder_ZJ");
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_em_devicefiles", false);
|
||||
@ -165,7 +170,7 @@ public class AssepcDynamic {
|
||||
public CustomApiResult<Object> modelquery(
|
||||
@NotNull @ApiParam("订单号(number)、产品机型(number)") String number,
|
||||
@NotNull @ApiParam("searchap3(订单号),searchap4(产品机型)") String searchap,
|
||||
@ApiParam("客户.业务主体.下单平台ID,查询产品机型必传") String custom) throws IOException {
|
||||
@ApiParam("客户编码,查询产品机型必传") String custom) throws IOException {
|
||||
JSONObject object = new JSONObject();
|
||||
try {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
@ -180,11 +185,9 @@ public class AssepcDynamic {
|
||||
//查询零件明细表 根据零件编码过滤n
|
||||
qFilters.add(new QFilter("yem_model.yem_products.number", QCP.equals, number));
|
||||
if (YEM.isNotEmpty(custom)) {
|
||||
if ((!StringUtils.containsIgnoreCase(custom, "admin"))) {
|
||||
qFilters.add(new QFilter("yem_customer.yem_groupcustomers.number", QCP.equals, custom));
|
||||
}
|
||||
qFilters.add(new QFilter("yem_customer.number", QCP.equals, custom));
|
||||
} else {
|
||||
return CustomApiResult.fail("501", "客户编码为空!");
|
||||
return CustomApiResult.fail("501", "客户编码必传");
|
||||
}
|
||||
extracted(algoKey, qFilters, jsonArray);
|
||||
// fillMissInfo(algoKey, number, jsonArray);
|
||||
@ -308,36 +311,69 @@ public class AssepcDynamic {
|
||||
*/
|
||||
@ApiPostMapping("/assepcdynamic/queryassemblies")
|
||||
public CustomApiResult<Object> queryassemblies(@NotNull @ApiParam("部件编码") String modelnumber, @NotNull @ApiParam("客户编码") String clientnumber) throws IOException {
|
||||
JSONObject object = new JSONObject();
|
||||
try {
|
||||
DataSet dataSet = SubRelationUtils.queryBoughtPartInfo(modelnumber, clientnumber);
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
String algoKey = this.getClass().getName();
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
DynamicObject object1 = SubRelationUtils.getfirstNumber(modelnumber);
|
||||
DynamicObject getfirstid = SubRelationUtils.getfirstid(modelnumber);
|
||||
if (getfirstid != null) {
|
||||
qFilters.add(new QFilter("yem_entryentity.yem_asscomponent.number", QCP.equals, getfirstid.getString("number")));
|
||||
DataSet dataSet3 = ORM.create().queryDataSet(algoKey, "yem_em_cmmptable", "number", qFilters.toArray(new QFilter[]{}));
|
||||
|
||||
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet);
|
||||
Map<String, JSONObject> res = new HashMap<>();
|
||||
for (DynamicObject d : collection) {
|
||||
JSONObject obj = new JSONObject();
|
||||
//查询设备档案 与 查询零件明细表DataSet通过资源号编码进行左关联
|
||||
String selectField1 = "yem_model.number yem_modelno,yem_model.yem_products.number yem_products" +
|
||||
",yem_model.yem_productsgroup.name yem_productsgroup,yem_dateofpurchase,yem_salesorderno,group";
|
||||
// DataSet dataSet1 = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", selectField1, null);
|
||||
DataSet dataSet1 = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", selectField1, new QFilter[]{new QFilter("yem_customer.number", QCP.equals, clientnumber)});
|
||||
DataSet dataSetdi11 = dataSet3.leftJoin(dataSet1).on("number", "yem_modelno")
|
||||
.select(new String[]{"number"},
|
||||
new String[]{"yem_modelno", "yem_products", "yem_productsgroup", "yem_dateofpurchase", "yem_salesorderno", "group"})
|
||||
.finish().where("yem_salesorderno is not null");
|
||||
DataSet dataSetdis = dataSetdi11.distinct();
|
||||
|
||||
String salesorderno = (String) d.get("yem_salesorderno");
|
||||
String ass_number = d.getString("ass_number");
|
||||
obj.put("yem_salesorderno", d.get("yem_salesorderno"));
|
||||
obj.put("yem_resourceno", d.getString("resource_no"));
|
||||
obj.put("yem_products", d.getString("yem_products"));
|
||||
obj.put("yem_productsgroup", d.getString("yem_productsgroup"));
|
||||
obj.put("yem_parentpartcode", d.getString("ass_number"));
|
||||
obj.put("yem_partcode", modelnumber);
|
||||
obj.put("producttypeno", d.getString("yem_model"));
|
||||
obj.put("producttypename", d.getString("yem_modelname"));
|
||||
obj.put("producttypeenname", d.getString("yem_modelenname"));
|
||||
obj.put("yem_dateofpurchase", d.getDate("yem_dateofpurchase"));
|
||||
res.put(salesorderno + "_" + modelnumber + "_" + ass_number, obj);
|
||||
if (dataSetdis != null) {
|
||||
for (Row data : dataSetdis) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_em_electronicgroup", "id,number,yem_model,yem_modelname,yem_modelenname"
|
||||
, new QFilter[]{new QFilter("id", QCP.equals, data.getLong("group"))});
|
||||
if (data.get("yem_salesorderno") != null) {
|
||||
jsonObject.put("yem_salesorderno", data.get("yem_salesorderno"));
|
||||
jsonObject.put("yem_resourceno", data.getString("yem_modelno"));
|
||||
jsonObject.put("yem_products", data.getString("yem_products"));
|
||||
jsonObject.put("yem_productsgroup", data.getString("yem_productsgroup"));
|
||||
if (object1 != null) {
|
||||
jsonObject.put("yem_parentpartcode", object1.getString("number"));
|
||||
} else {
|
||||
jsonObject.put("yem_parentpartcode", "");
|
||||
}
|
||||
jsonObject.put("yem_firstNumber", getfirstid.getString("number"));
|
||||
jsonObject.put("yem_partcode", modelnumber);
|
||||
jsonObject.put("producttypeno", dynamicObject.getString("yem_model"));
|
||||
jsonObject.put("producttypename", dynamicObject.getString("yem_modelname"));
|
||||
jsonObject.put("producttypeenname", dynamicObject.getString("yem_modelenname"));
|
||||
if (data.getString("yem_dateofpurchase") != null) {
|
||||
Date yem_dateofpurchase = formatDate(data.getString("yem_dateofpurchase"), "yyyy-MM-dd");
|
||||
jsonObject.put("yem_dateofpurchase", yem_dateofpurchase);
|
||||
}
|
||||
jsonArray.add(jsonObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return CustomApiResult.success(res.values());
|
||||
object.put("status", "success");
|
||||
object.put("mag", "");
|
||||
object.put("list", jsonArray);
|
||||
} catch (
|
||||
Exception e) {
|
||||
e.printStackTrace();
|
||||
return CustomApiResult.
|
||||
|
||||
fail("501", e.getMessage());
|
||||
}
|
||||
return CustomApiResult.
|
||||
|
||||
success(object);
|
||||
}
|
||||
|
||||
public Date formatDate(String date, String format) {
|
||||
@ -409,14 +445,14 @@ public class AssepcDynamic {
|
||||
}
|
||||
|
||||
@ApiPostMapping("/assepcdynamic/electronic_group")
|
||||
public CustomApiResult<Object> queryElectronicGroup(@NotNull @ApiParam("客户.业务主体.下单平台ID") String number) {
|
||||
public CustomApiResult<Object> queryElectronicGroup(@NotNull @ApiParam("客户.编码(116021200012)") String number) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
QFilter qFilter = new QFilter("status", QCP.equals, "C");
|
||||
if (!StringUtils.containsIgnoreCase(number, "admin")) {
|
||||
qFilter.and(new QFilter("yem_customer.yem_groupcustomers.number", QCP.equals, number));
|
||||
qFilter.and(new QFilter("yem_customer.number", QCP.equals, number));
|
||||
}
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_em_devicefiles");
|
||||
DynamicObjectCollection load = ORM.create().query("yem_em_devicefiles", selectfields + ",id,yem_ordercustomer.name yem_ordercustomer_name, yem_ordercustomer.number yem_ordercustomer_number", qFilter.toArray());
|
||||
DynamicObjectCollection load = ORM.create().query("yem_em_devicefiles", selectfields + ",id", qFilter.toArray());
|
||||
for (DynamicObject dynamicObject : load) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("id", dynamicObject.getPkValue());
|
||||
@ -479,9 +515,6 @@ public class AssepcDynamic {
|
||||
map.put("warrantyenddate", "");
|
||||
}
|
||||
|
||||
map.put("yem_saledate", dynamicObject.getString("yem_saledate"));
|
||||
map.put("yem_ordercustomer_name", dynamicObject.getString("yem_ordercustomer_name"));
|
||||
map.put("yem_ordercustomer_number", dynamicObject.getString("yem_ordercustomer_number"));
|
||||
result.add(map);
|
||||
}
|
||||
|
||||
@ -633,11 +666,11 @@ public class AssepcDynamic {
|
||||
* @return
|
||||
*/
|
||||
@ApiPostMapping("/assepcdynamic/queassequipment")
|
||||
public CustomApiResult<Object> queryBayedResourceNo(@NotBlank @ApiParam(value = "客户.业务主体.下单平台ID") String customerNo) {
|
||||
public CustomApiResult<Object> queryBayedResourceNo(@NotBlank @ApiParam(value = "客户编码", example = "116021200012") String customerNo) {
|
||||
String algoKey = this.getClass().getName();
|
||||
QFilter qFilter = new QFilter("status", "=", "C");
|
||||
if (!StringUtils.containsIgnoreCase(customerNo, "admin")) {
|
||||
qFilter.and("yem_customer.yem_groupcustomers.number", "=", customerNo);
|
||||
qFilter.and("yem_customer.number", "=", customerNo);
|
||||
}
|
||||
qFilter.and("yem_model", "is not null", null);
|
||||
ArrayList<String> list = Lists.newArrayList();
|
||||
@ -645,7 +678,6 @@ public class AssepcDynamic {
|
||||
list.add("yem_customer");
|
||||
list.add("number");
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", String.join(",", list), qFilter.toArray());
|
||||
|
||||
HashSet<String> set = Sets.newHashSet();
|
||||
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet);
|
||||
Set<Long> ids = new HashSet<>();
|
||||
@ -768,11 +800,11 @@ public class AssepcDynamic {
|
||||
}
|
||||
|
||||
@ApiPostMapping("bayed_product_model")
|
||||
public CustomApiResult<Object> queryProductModel(@NotBlank @ApiParam(value = "客户.业务主体.下单平台ID") String customerNo) {
|
||||
public CustomApiResult<Object> queryProductModel(@NotBlank @ApiParam(value = "客户编码", example = "116021200012") String customerNo) {
|
||||
String algoKey = this.getClass().getName();
|
||||
QFilter qFilter = new QFilter("status", "=", "C");
|
||||
if (!StringUtils.containsIgnoreCase(customerNo, "admin")) {
|
||||
qFilter.and("yem_customer.yem_groupcustomers.number", "=", customerNo);
|
||||
qFilter.and("yem_customer.number", "=", customerNo);
|
||||
}
|
||||
qFilter.and("group", "is not null", null);
|
||||
ArrayList<String> list = Lists.newArrayList();
|
||||
|
@ -1,11 +1,10 @@
|
||||
package com.yem.or.task;
|
||||
|
||||
import com.yem.or.utils.OrderApiUtils;
|
||||
import com.yem.wm.bd.customer.from.Validator.CustomerValidator;
|
||||
import com.yem.wm.task.YunZhiJaGetOpenidTask;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
@ -15,101 +14,46 @@ import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.yem.or.utils.OrderApiUtils.getToken;
|
||||
|
||||
/**
|
||||
* ljw
|
||||
* 同步数据至下单平台
|
||||
*/
|
||||
public class CustomerTask extends AbstractTask {
|
||||
|
||||
private static final Log log = LogFactory.getLog(CustomerTask.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
|
||||
String accessToken = "";
|
||||
|
||||
try {
|
||||
Map<String, String> token = getToken();
|
||||
accessToken = token.get("token");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
if (YEM.isEmpty(accessToken)) {
|
||||
throw new KDBizException("获取AccessToken失败");
|
||||
}
|
||||
|
||||
QFilter qFilter = new QFilter("status", QCP.equals, "C");
|
||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customer", "id,number,name,yem_checkboxfield,yem_torderid,group,yem_groupcustomers"
|
||||
Log log = LogFactory.getLog(YunZhiJaGetOpenidTask.class);
|
||||
QFilter qFilter = new QFilter("yem_checkboxfield", QCP.equals, false);
|
||||
qFilter.and("status", QCP.equals, "C");
|
||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customer", "id,number,name,yem_checkboxfield,yem_torderid,group"
|
||||
, new QFilter[]{qFilter});
|
||||
for (DynamicObject customer : dynamicObjects) {
|
||||
|
||||
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
|
||||
if (YEM.isEmpty(groupcustomers)) {
|
||||
log.error(" [SKIP] 业务主体为空 ");
|
||||
continue;
|
||||
}
|
||||
|
||||
Map<String, String> demands;
|
||||
|
||||
// 同步业务主体
|
||||
if (!groupcustomers.containsProperty("yem_torderid")) {
|
||||
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
|
||||
boolean isGroupSynced = groupcustomers.getBoolean("yem_checkboxfield");
|
||||
String number = groupcustomers.getString("number");
|
||||
String name = groupcustomers.getString("name");
|
||||
if (isGroupSynced) {
|
||||
log.info("业务主体已同步,进行更新");
|
||||
String torderid = groupcustomers.getString("yem_torderid");
|
||||
Long existId = Long.valueOf(torderid);
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
|
||||
} else {
|
||||
log.info("业务主体未同步,进行同步");
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
|
||||
for (DynamicObject dynamicObject : dynamicObjects) {
|
||||
DynamicObject group = dynamicObject.getDynamicObject("group");
|
||||
if (group != null) {
|
||||
long groupid = group.getLong("id");
|
||||
DynamicObject[] bd_customergroup = BusinessDataServiceHelper.load("bd_customergroup", "id,number,parent"
|
||||
, new QFilter[]{new QFilter("parent.number", QCP.equals, "11602"), new QFilter("id", QCP.equals, groupid)});
|
||||
if (bd_customergroup.length > 0) {
|
||||
for (int i = 0; i < bd_customergroup.length; i++) {
|
||||
String number = dynamicObject.getString("number");
|
||||
String replace = number.replace("-", "");
|
||||
String name = dynamicObject.getString("name");
|
||||
Map<String, String> demands = OrderApiUtils.demands(name, replace);
|
||||
String msg = demands.get("msg");
|
||||
if (msg == null) {
|
||||
String id = demands.get("id");
|
||||
if (!"".equals(id)) {
|
||||
dynamicObject.set("yem_torderid", id);
|
||||
dynamicObject.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.update(dynamicObject);
|
||||
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (demands.containsKey("id")) {
|
||||
String id = demands.get("id");
|
||||
groupcustomers.set("yem_torderid", id);
|
||||
groupcustomers.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.save(new DynamicObject[]{groupcustomers});
|
||||
log.info("业务主体已同步");
|
||||
} else if (demands.containsKey("msg")) {
|
||||
throw new KDBizException("同步当前客户业务主体异常: " + demands.get("msg"));
|
||||
}
|
||||
}
|
||||
// 业务主体和客户相同,跳过
|
||||
if (customer.getLong("id") == groupcustomers.getLong("id")) {
|
||||
log.info("业务主体和客户相同,跳过");
|
||||
continue;
|
||||
}
|
||||
|
||||
String number = customer.getString("number");
|
||||
String name = customer.getString("name");
|
||||
if (customer.getBoolean("yem_checkboxfield")) {
|
||||
String torderid = customer.getString("yem_torderid");
|
||||
if (YEM.isEmpty(torderid)) {
|
||||
log.error(" [SKIP] 已同步但ID为空 ");
|
||||
continue;
|
||||
}
|
||||
Long id = Long.valueOf(torderid);
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, id);
|
||||
} else {
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
|
||||
}
|
||||
log.info(demands.toString());
|
||||
if (demands.containsKey("id")) {
|
||||
String id = demands.get("id");
|
||||
customer.set("yem_torderid", id);
|
||||
customer.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.save(new DynamicObject[]{customer});
|
||||
} else if (demands.containsKey("msg")) {
|
||||
log.error(demands.get("msg"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -63,11 +63,8 @@ public class DevicefilesTask extends AbstractTask {
|
||||
hashMap.put("salesman", yemOperatorString);
|
||||
}
|
||||
if (org != null) {
|
||||
if (!org.containsProperty("name") || !org.containsProperty("yem_enname")) {
|
||||
org = BusinessDataServiceHelper.loadSingle(org.getPkValue(), org.getDataEntityType().getName());
|
||||
}
|
||||
hashMap.put("seller", org.getString("name"));
|
||||
hashMap.put("seller_enname", org.getString("yem_enname"));
|
||||
String yemOperatorString = org.getString("name");
|
||||
hashMap.put("seller", yemOperatorString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.data.BusinessDataReader;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
@ -14,14 +15,18 @@ import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.runtime.ConvertOperationResult;
|
||||
import kd.bos.entity.botp.runtime.PushArgs;
|
||||
import kd.bos.entity.botp.runtime.SourceBillReport;
|
||||
import kd.bos.entity.datamodel.IBillModel;
|
||||
import kd.bos.entity.datamodel.IRefrencedataProvider;
|
||||
import kd.bos.entity.datamodel.ListSelectedRow;
|
||||
import kd.bos.entity.operate.OperateOptionConst;
|
||||
import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.mvc.FormConfigFactory;
|
||||
import kd.bos.mvc.SessionManager;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
@ -49,9 +54,7 @@ public class OrderApiUtils {
|
||||
public static Log log = LogFactory.getLog(OrderApiUtils.class);
|
||||
public static String ENDPOINTS = "http://10.64.113.156";
|
||||
// public static String ENDPOINT = "http://122.4.221.133:30080";
|
||||
|
||||
// 本地测试环境
|
||||
// public static final String ENDPOINTS = "http://127.0.0.1:48080";
|
||||
// public static final String LOCAL_DEBUG_ENDPOINT = "http://127.0.0.1:48080";
|
||||
|
||||
/**
|
||||
* 获取token
|
||||
@ -138,7 +141,7 @@ public class OrderApiUtils {
|
||||
resStatus.put("msg", "未知客户");
|
||||
return resStatus;
|
||||
}
|
||||
customer = BusinessDataServiceHelper.loadSingle(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
customer = BusinessDataServiceHelper.loadSingle(customer.getPkValue(),customer.getDynamicObjectType().getName());
|
||||
|
||||
dynamicObject.set("yem_customer", customer);//客户\
|
||||
dynamicObject.set("yem_customername", customer.getString("name"));
|
||||
@ -421,65 +424,56 @@ public class OrderApiUtils {
|
||||
/**
|
||||
* 新增用户
|
||||
*/
|
||||
public static Map<String, String> demands(String accessToken, String username, String userNumber, DynamicObject groupcustomers, boolean isCreate, Long existId) {
|
||||
String requestUrl;
|
||||
if (isCreate) {
|
||||
requestUrl = ENDPOINTS + "/admin-api/system/user/create";
|
||||
} else {
|
||||
requestUrl = ENDPOINTS + "/admin-api/system/user/update";
|
||||
}
|
||||
|
||||
|
||||
Map<String, String> resStatus = new HashMap<>();
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("Authorization", "Bearer " + (accessToken));
|
||||
Map<String, Object> requestBody = new HashMap<>();
|
||||
if (!groupcustomers.containsProperty("yem_torderid") || !groupcustomers.containsProperty("number") || !groupcustomers.containsProperty("name")) {
|
||||
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
|
||||
}
|
||||
String groupUserId = groupcustomers.getString("yem_torderid");
|
||||
String groupName = groupcustomers.getString("number");
|
||||
String name = groupcustomers.getString("name");
|
||||
requestBody.put("nickname", username);
|
||||
requestBody.put("password", "ensign@123");
|
||||
requestBody.put("username", userNumber);
|
||||
requestBody.put("deptId", "100");
|
||||
requestBody.put("groupCustomerId", groupUserId);
|
||||
requestBody.put("groupCustomerNumber", groupName);
|
||||
requestBody.put("groupCustomerName", name);
|
||||
if (!isCreate) {
|
||||
requestBody.put("id", existId);
|
||||
}
|
||||
String res = "";
|
||||
|
||||
public static Map<String, String> demands(String data, String string) {
|
||||
final String requestUrl = ENDPOINTS + "/admin-api/system/user/create";
|
||||
|
||||
Map<String, String> headers = null;
|
||||
try {
|
||||
log.info("start request {}", requestUrl);
|
||||
res = HttpClientUtils.postAppJson(requestUrl, headers, requestBody, 3000, 3000);
|
||||
headers = getToken();
|
||||
} catch (IOException e) {
|
||||
log.error("request token error", e);
|
||||
resStatus.put("status", "error");
|
||||
resStatus.put("msg", String.format("获取token请求异常:%s", e.getMessage()));
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
log.info("request {}", requestBody);
|
||||
JSONObject jsonObject = JSONObject.parseObject(res);
|
||||
log.info("response {}", jsonObject);
|
||||
int code = jsonObject.getIntValue("code");
|
||||
if (code == 0) {
|
||||
Object data = jsonObject.get("data");
|
||||
if (!(data instanceof Boolean)) {
|
||||
resStatus.put("id", String.valueOf(data));
|
||||
Map<String, String> resStatus = new HashMap<>();
|
||||
// 租户ID
|
||||
if ("success".equals(headers.get("status"))) {
|
||||
String accessToken = headers.get("token");
|
||||
headers.put("Authorization", "Bearer " + (accessToken));
|
||||
Map<String, Object> requestBody = new HashMap<>();
|
||||
requestBody.put("nickname", data);
|
||||
requestBody.put("password", "ensign@123");
|
||||
requestBody.put("username", string);
|
||||
requestBody.put("deptId", "100");
|
||||
String res = "";
|
||||
|
||||
|
||||
try {
|
||||
log.info("start request {}", requestUrl);
|
||||
res = HttpClientUtils.postAppJson(requestUrl, headers, requestBody, 3000, 3000);
|
||||
} catch (IOException e) {
|
||||
log.error("request token error", e);
|
||||
resStatus.put("status", "error");
|
||||
resStatus.put("msg", String.format("获取token请求异常:%s", e.getMessage()));
|
||||
// throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
JSONObject jsonObject = JSONObject.parseObject(res);
|
||||
Long id = 0L;
|
||||
int code = jsonObject.getIntValue("code");
|
||||
if (code == 0) {
|
||||
id = jsonObject.getLong("data");
|
||||
String ids = id.toString();
|
||||
resStatus.put("id", ids);
|
||||
}
|
||||
return resStatus;
|
||||
} else {
|
||||
resStatus.put("msg", JSON.toJSONString(jsonObject));
|
||||
log.error(headers.get("msg"));
|
||||
}
|
||||
return resStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户
|
||||
*/
|
||||
public static Map<String, String> Modifyuser(String big, String string) {
|
||||
public static Map<String, String> Modifyuser(String big,String string) {
|
||||
|
||||
final String requestUrl = ENDPOINTS + "/admin-api/system/user/update-status";
|
||||
|
||||
@ -500,7 +494,7 @@ public class OrderApiUtils {
|
||||
String res = "";
|
||||
try {
|
||||
log.info("start request {}", requestUrl);
|
||||
res = HttpUtils.doPut(requestUrl, JSON.toJSONString(requestBody), "json", headers);
|
||||
res = HttpUtils.doPut(requestUrl, JSON.toJSONString(requestBody),"json", headers);
|
||||
// HttpUtils.doPut(requestUrl, JSON.toJSONString(objectArrayList), "json", headers);
|
||||
} catch (IOException e) {
|
||||
log.error("request token error", e);
|
||||
@ -510,7 +504,6 @@ public class OrderApiUtils {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步订单
|
||||
*
|
||||
@ -545,9 +538,9 @@ public class OrderApiUtils {
|
||||
requestBody.put("model", Bearer.get("model"));
|
||||
requestBody.put("salesman", Bearer.get("salesman"));
|
||||
requestBody.put("seller", Bearer.get("seller"));
|
||||
requestBody.put("productenname", Bearer.get("productenname"));
|
||||
requestBody.put("productname", Bearer.get("productname"));
|
||||
requestBody.put("product", Bearer.get("productnumber"));
|
||||
requestBody.put("productenname",Bearer.get("productenname"));
|
||||
requestBody.put("productname",Bearer.get("productname"));
|
||||
requestBody.put("product",Bearer.get("productnumber"));
|
||||
Map<String, Object> objectMap = new HashMap<>();
|
||||
objectMap.put("salesorderno", Bearer.get("salesordernos"));
|
||||
objectMap.put("framenumber", Bearer.get("framenumber"));
|
||||
@ -585,22 +578,15 @@ public class OrderApiUtils {
|
||||
JSONObject objects = (JSONObject) object;
|
||||
String salesorderno = objects.getString("salesorderno");
|
||||
Long objectsId = objects.getLong("id");
|
||||
Set<String> compNo = new HashSet<>();
|
||||
for (Map<String, Object> map : list) {
|
||||
if (map.containsKey("framenumber")) {
|
||||
compNo.add((String) map.get("framenumber"));
|
||||
}
|
||||
}
|
||||
DynamicObject[] mechanical = BusinessDataServiceHelper.load("yem_em_devicefiles"
|
||||
DynamicObject mechanical = BusinessDataServiceHelper.loadSingle("yem_em_devicefiles"
|
||||
, "id,number,yem_ordeid,yem_issynorde"
|
||||
, new QFilter[]{new QFilter("yem_salesorderno", QCP.equals, salesorderno),
|
||||
new QFilter("number", QCP.in, compNo)
|
||||
});
|
||||
for (DynamicObject d : mechanical) {
|
||||
d.set("yem_ordeid", objectsId);
|
||||
d.set("yem_issynorde", true);
|
||||
, new QFilter[]{new QFilter("yem_salesorderno", QCP.equals, salesorderno)});
|
||||
if (mechanical != null) {
|
||||
mechanical.set("yem_ordeid", objectsId);
|
||||
mechanical.set("yem_issynorde", true);
|
||||
SaveServiceHelper.update(mechanical);
|
||||
SaveServiceHelper.save(new DynamicObject[]{mechanical});
|
||||
}
|
||||
SaveServiceHelper.save(mechanical);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -613,7 +599,6 @@ public class OrderApiUtils {
|
||||
|
||||
/**
|
||||
* 同步产品机型到下单平台权限项
|
||||
*
|
||||
* @param parentObject 父级
|
||||
*/
|
||||
public static void syncProductModuleToPermissions(DynamicObject parentObject, ORM orm) throws IOException {
|
||||
@ -641,7 +626,6 @@ public class OrderApiUtils {
|
||||
|
||||
/**
|
||||
* 查询子级所有的产品机型,为空则查询一级
|
||||
*
|
||||
* @param parent
|
||||
* @return
|
||||
*/
|
||||
@ -679,7 +663,7 @@ public class OrderApiUtils {
|
||||
Long itemId = requestAddPermissionItem(object, returnId, token, subIdx);
|
||||
object.set("yem_orderperid", itemId);
|
||||
|
||||
log.info("AddPermissionItem__parent: " + dynamicObject.getString("number") + "_" + dynamicObject.getString("name") + "_item: " + object.getPkValue() + "_" + object.getString("number") + "_" + object.getString("name"));
|
||||
log.info("AddPermissionItem__parent: " + dynamicObject.getString("number") + "_" + dynamicObject.getString("name") +"_item: " + object.getPkValue() + "_" + object.getString("number") + "_" + object.getString("name"));
|
||||
}
|
||||
|
||||
SaveServiceHelper.update(collection.toArray(new DynamicObject[0]));
|
||||
@ -691,7 +675,7 @@ public class OrderApiUtils {
|
||||
if ("success".equals(resMap.get("status"))) {
|
||||
return "Bearer " + resMap.get("token");
|
||||
} else {
|
||||
throw new IOException("获取token失败");
|
||||
throw new IOException("获取token失败");
|
||||
}
|
||||
}
|
||||
|
||||
@ -749,7 +733,7 @@ public class OrderApiUtils {
|
||||
*
|
||||
* @param object 产品机型
|
||||
* @param parentId 该机型对应类型ID
|
||||
* @param subIdx 排序
|
||||
* @param subIdx 排序
|
||||
* @return
|
||||
*/
|
||||
private static Long requestAddPermissionItem(DynamicObject object, Long parentId, String token, int subIdx) throws IOException {
|
||||
@ -807,10 +791,10 @@ public class OrderApiUtils {
|
||||
headers.put("Authorization", "Bearer " + (accessToken));
|
||||
for (Map<String, Object> Bearer : list) {
|
||||
Map<String, Object> requestBody = new HashMap<>();
|
||||
requestBody.put("id", Bearer.get("id"));
|
||||
requestBody.put("status", Bearer.get("status"));
|
||||
requestBody.put("logisticsNo", Bearer.get("logisticsNo"));
|
||||
requestBody.put("ladingDate", Bearer.get("ladingDate"));
|
||||
requestBody.put("id",Bearer.get("id"));
|
||||
requestBody.put("status",Bearer.get("status"));
|
||||
requestBody.put("logisticsNo",Bearer.get("logisticsNo"));
|
||||
requestBody.put("ladingDate",Bearer.get("ladingDate"));
|
||||
objectArrayList.add(requestBody);
|
||||
}
|
||||
try {
|
||||
|
@ -58,48 +58,19 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
.finish();
|
||||
|
||||
FilterInfo filter = param.getFilter();
|
||||
Date fshipdataStart = filter.getDate("yem_fshipdate_start");
|
||||
Date fshipdataEnd = filter.getDate("yem_fshipdate_end");
|
||||
|
||||
Date finvoicedateStart = filter.getDate("yem_finvoicedate_start");
|
||||
Date finvoicedateEnd = filter.getDate("yem_finvoicedate_end");
|
||||
|
||||
Date fladingdateStart = filter.getDate("yem_fladingdate_start");
|
||||
Date fladingdateEnd = filter.getDate("yem_fladingdate_end");
|
||||
|
||||
String compno = filter.getString("yem_compno");
|
||||
|
||||
long fcountry = filter.getLong("yem_fcountry");
|
||||
Date start = filter.getDate("yem_fshipdate_start");
|
||||
Date end = filter.getDate("yem_fshipdate_end");
|
||||
|
||||
String fisshiped = filter.getString("yem_fisshiped");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("1=1");
|
||||
if (YEM.isNotEmpty(fshipdataStart)) {
|
||||
sb.append(" AND TO_DATE(yem_shipdate, 'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fshipdataStart)));
|
||||
if (YEM.isNotEmpty(start)) {
|
||||
sb.append(" AND TO_DATE(yem_shipdate, 'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(start)));
|
||||
}
|
||||
if (YEM.isNotEmpty(fshipdataEnd)) {
|
||||
sb.append(" AND TO_DATE(yem_shipdate, 'yyyy-MM-dd') <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fshipdataEnd)));
|
||||
if (YEM.isNotEmpty(end)) {
|
||||
sb.append(" AND TO_DATE(yem_shipdate, 'yyyy-MM-dd') <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(end)));
|
||||
}
|
||||
|
||||
if (YEM.isNotEmpty(finvoicedateStart)) {
|
||||
sb.append(" AND TO_DATE(yem_invoicedate, 'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(finvoicedateStart)));
|
||||
}
|
||||
if (YEM.isNotEmpty(finvoicedateEnd)) {
|
||||
sb.append(" AND TO_DATE(yem_invoicedate, 'yyyy-MM-dd') <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(finvoicedateEnd)));
|
||||
}
|
||||
|
||||
if (YEM.isNotEmpty(fladingdateStart)) {
|
||||
sb.append(" AND TO_DATE(yem_ladingdate, 'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fladingdateStart)));
|
||||
}
|
||||
if (YEM.isNotEmpty(fladingdateEnd)) {
|
||||
sb.append(" AND TO_DATE(yem_ladingdate, 'yyyy-MM-dd') <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fladingdateEnd)));
|
||||
}
|
||||
|
||||
if (YEM.isNotEmpty(compno)) {
|
||||
sb.append(" AND yem_vehicleno LIKE '%").append(compno).append("%'");
|
||||
}
|
||||
|
||||
if (YEM.isNotEmpty(fisshiped)) {
|
||||
if ("A".equals(fisshiped)) {//已发货
|
||||
sb.append(" AND yem_dnbillno IS NOT NULL AND yem_dnbillno != '' ");
|
||||
@ -108,16 +79,12 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
sb.append(" AND yem_dnbillno IS NULL OR yem_dnbillno = ''");
|
||||
}
|
||||
}
|
||||
if (YEM.isNotEmpty(fcountry)) {
|
||||
sb.append(" AND yem_clientcountry = ").append(fcountry);
|
||||
}
|
||||
|
||||
dataSet = dataSet.where(sb.toString());
|
||||
|
||||
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
|
||||
"CASE WHEN yem_dnbillno IS NOT NULL AND yem_dnbillno != '' THEN '是' ELSE '否' END yem_isshiped," +
|
||||
"CASE WHEN yem_qty_dx IS NOT NULL AND yem_qty_dx >= 0 THEN yem_qty_dx ELSE yem_qty_or END yem_qty");
|
||||
dataSet = dataSet.distinct();
|
||||
"CASE WHEN yem_dnbillno IS NOT NULL AND yem_dnbillno != '' THEN '是' ELSE '否' END yem_isshiped");
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
@ -168,7 +135,7 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
selectfields.add("yem_bd_products yem_products");//产品分类
|
||||
selectfields.add("yem_priceitem yem_priceitem");//价格条款-交货方式
|
||||
selectfields.add("yem_es_materialinfo.yem_sapricepriceclause yem_price");//销售单价(价格条款)-单价
|
||||
selectfields.add("yem_es_materialinfo.yem_qty yem_qty_or");//数量-台数
|
||||
selectfields.add("yem_es_materialinfo.yem_qty yem_qty");//数量-台数
|
||||
selectfields.add("yem_es_materialinfo.yem_resourcenog yem_resourceno");//资源号-订货号
|
||||
selectfields.add("yem_es_materialinfo.yem_sastandardprice yem_fobpriceqd");//销售FOB标配青岛价-标准结算价格
|
||||
selectfields.add("yem_es_materialinfo.yem_singlepartgiftmat yem_singlegiftpartamt");//单台配件赠送金额-折扣、赠配件费用
|
||||
@ -505,41 +472,10 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
|
||||
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray());
|
||||
DataSet transformDataSet = queryTransformDate();
|
||||
|
||||
transformDataSet = transformDataSet.leftJoin(dataSet)
|
||||
.on("tr_fk_vehicleno", "yem_vehicleno")
|
||||
.select(RptUtil.getDataSetFiledAlias(transformDataSet) ,RptUtil.getDataSetFiledAlias(dataSet))
|
||||
.finish();
|
||||
transformDataSet = transformDataSet.select("yem_transformdate, main_detail_id_vno_fk main_detail_id_vno_fk_tr");
|
||||
|
||||
dataSet = dataSet.groupBy(new String[]{"main_detail_id_vno_fk"})
|
||||
.agg(new GroupConcatFunctionByComma(), "yem_vehicleno", "yem_vehicleno")
|
||||
.finish();
|
||||
|
||||
dataSet = dataSet.leftJoin(transformDataSet)
|
||||
.select(RptUtil.getDataSetFiledAlias(transformDataSet) ,RptUtil.getDataSetFiledAlias(dataSet))
|
||||
.on("main_detail_id_vno_fk", "main_detail_id_vno_fk_tr")
|
||||
.finish();
|
||||
|
||||
dataSet = dataSet.select("main_detail_id_vno_fk", "yem_vehicleno", "yem_transformdate");
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询调拨订单申请单,调拨业务日期
|
||||
* @return
|
||||
*/
|
||||
private DataSet queryTransformDate() {
|
||||
QFilter qFilter = getBaseQFilter();
|
||||
qFilter.and(new QFilter("yem_es_materialinfo.yem_remark", "!=",""));
|
||||
ArrayList<String> selectfields = Lists.newArrayList();
|
||||
selectfields.add("yem_es_materialinfo.yem_remark tr_fk_vehicleno");//整机编号
|
||||
selectfields.add("yem_bizdate yem_transformdate");//业务日期
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_transferorder", String.join(",", selectfields), qFilter.toArray()).orderBy(new String[]{"yem_transformdate DESC"});
|
||||
|
||||
dataSet = dataSet.select("TO_CHAR(yem_transformdate, 'yyyy-MM-dd') yem_transformdate, tr_fk_vehicleno");
|
||||
dataSet = dataSet.select("main_detail_id_vno_fk", "yem_vehicleno");
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
@ -626,11 +562,11 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
selectfields.add("yem_es_materialinfo.id dn_detail_id");
|
||||
selectfields.add("yem_es_materialinfo.yem_sourceentryid ship_detail_id_dn_fk");
|
||||
selectfields.add("yem_es_materialinfo.yem_coreentryid main_detail_id_dn_fk");
|
||||
selectfields.add("auditdate");//发货日期
|
||||
selectfields.add("yem_bizdate");//发货日期
|
||||
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_es_delivernotice", String.join(",", selectfields), qFilter.toArray());
|
||||
|
||||
return dataSet.select("TO_CHAR(auditdate, 'yyyy-MM-dd') yem_shipdate, dn_detail_id, ship_detail_id_dn_fk, main_detail_id_dn_fk, yem_dnbillno");
|
||||
return dataSet.select("TO_CHAR(yem_bizdate, 'yyyy-MM-dd') yem_shipdate, dn_detail_id, ship_detail_id_dn_fk, main_detail_id_dn_fk, yem_dnbillno");
|
||||
}
|
||||
|
||||
|
||||
@ -646,7 +582,6 @@ public class CompleteShipDetailReportPlugin extends AbstractReportListDataPlugin
|
||||
// selectfields.add("yem_es_materialinfo.yem_coreentryid main_detail_id_declaredocx_fk");
|
||||
selectfields.add("yem_es_materialinfo.yem_sgnenumber main_detail_id_declaredocx_fk");
|
||||
selectfields.add("TO_CHAR(yem_invoicedate, 'yyyy-MM-dd') yem_invoicedate");//开票日期
|
||||
selectfields.add("yem_es_materialinfo.yem_qty yem_qty_dx");//数量-台数
|
||||
|
||||
DataSet yemEsDeclaredocx = ORM.create().queryDataSet(algoKey, "yem_es_declaredocx", String.join(",", selectfields), qFilter.toArray());
|
||||
yemEsDeclaredocx = yemEsDeclaredocx.distinct();
|
||||
|
@ -20,6 +20,10 @@ import org.apache.commons.compress.utils.Lists;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.*;
|
||||
|
||||
import static com.yem.rf.salescommission.CompleteShipDetailReportPlugin.*;
|
||||
@ -219,21 +223,11 @@ public class DepartureDailyReportPlugin extends AbstractReportListDataPlugin {
|
||||
QFilter qFilter = getBaseQFilter(new String[]{"B", "C"});
|
||||
|
||||
List<String> selectfields = new ArrayList<>();
|
||||
selectfields.add("yem_es_materialinfo.yem_sourceentryid source_order_id_placeexamine_fk");
|
||||
selectfields.add("yem_es_materialinfo.yem_qty yem_qty");
|
||||
selectfields.add("yem_sourcebillid source_order_id_placeexamine_fk");
|
||||
|
||||
return ORM.create().queryDataSet(algoKey, "yem_placeexamine", String.join(",", selectfields), qFilter.toArray());
|
||||
}
|
||||
|
||||
private Set<Long> sumIds(DataSet dataSet) {
|
||||
DynamicObjectCollection c = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
|
||||
Set<Long> orderIds = new HashSet<>();
|
||||
for (DynamicObject d : c) {
|
||||
long orderIdPlaceexamineFk = d.getLong("source_order_id_placeexamine_fk");
|
||||
orderIds.add(orderIdPlaceexamineFk);
|
||||
}
|
||||
return orderIds;
|
||||
}
|
||||
|
||||
/**
|
||||
* 合同已下单(下单审批提交或者审核),但是合同款项未认领
|
||||
@ -247,11 +241,10 @@ public class DepartureDailyReportPlugin extends AbstractReportListDataPlugin {
|
||||
|
||||
DataSet dataSet;
|
||||
DataSet placeexamine = queryPlaceExamine(param);//BC下单审批
|
||||
Set<Long> orderIds = sumIds(placeexamine);
|
||||
DataSet salesorder = querySalesOrder(param, orderIds);
|
||||
DataSet trackTaskConsole = queryTrackTaskConsole(param);
|
||||
DataSet salesorder = querySalesOrder(param);
|
||||
|
||||
dataSet = placeexamine.leftJoin(salesorder)
|
||||
.on("source_order_id_placeexamine_fk", "order_entry_id")
|
||||
.on("source_order_id_placeexamine_fk", "order_id")
|
||||
.select(RptUtil.getDataSetFiledAlias(placeexamine), RptUtil.getDataSetFiledAlias(salesorder))
|
||||
.finish();
|
||||
dataSet = dataSet.leftJoin(claimedAmt)
|
||||
@ -266,33 +259,9 @@ public class DepartureDailyReportPlugin extends AbstractReportListDataPlugin {
|
||||
.groupBy(new String[]{"order_product_id_main_fk"})
|
||||
.sum("yem_qty")
|
||||
.finish();
|
||||
dataSet = dataSet.leftJoin(trackTaskConsole)
|
||||
.on("order_product_id_main_fk", "tkconsole_product_id_main_fk")
|
||||
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(trackTaskConsole))
|
||||
.finish();
|
||||
dataSet = RptUtil.zeroNullNums(dataSet);
|
||||
dataSet = dataSet.select("order_product_id_main_fk, yem_qty - yem_cancel_num yem_nooay");
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询跟单任务控制台,取消数量
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
private DataSet queryTrackTaskConsole(ReportQueryParam param) {
|
||||
dataSet = dataSet.select("order_product_id_main_fk, yem_qty yem_nooay");
|
||||
|
||||
List<String> selectfields = new ArrayList<>();
|
||||
selectfields.add("id tkconsole_id");
|
||||
selectfields.add("billno tkconsole_no");
|
||||
selectfields.add("yem_es_materialinfo.yem_resourcenog.yem_products.group.id tkconsole_product_id_main_fk");
|
||||
selectfields.add("yem_es_materialinfo.yem_cancel_num yem_cancel_num");
|
||||
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_tracktaskconsole", String.join(",", selectfields), null);
|
||||
dataSet = dataSet
|
||||
.groupBy(new String[]{"tkconsole_product_id_main_fk"})
|
||||
.sum("yem_cancel_num")
|
||||
.finish();
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
@ -306,11 +275,10 @@ public class DepartureDailyReportPlugin extends AbstractReportListDataPlugin {
|
||||
|
||||
DataSet dataSet;
|
||||
DataSet placeexamine = queryPlaceExamine(param);//BC下单审批
|
||||
Set<Long> orderIds = sumIds(placeexamine);
|
||||
DataSet salesorder = querySalesOrder(param, orderIds);
|
||||
DataSet salesorder = querySalesOrder(param);
|
||||
|
||||
dataSet = placeexamine.leftJoin(salesorder)
|
||||
.on("source_order_id_placeexamine_fk", "order_entry_id")
|
||||
.on("source_order_id_placeexamine_fk", "order_id")
|
||||
.select(RptUtil.getDataSetFiledAlias(placeexamine), RptUtil.getDataSetFiledAlias(salesorder))
|
||||
.finish();
|
||||
dataSet = dataSet.select("order_id received_order_id, order_product_id_main_fk received_order_product_id_main_fk, yem_qty");
|
||||
@ -342,17 +310,16 @@ public class DepartureDailyReportPlugin extends AbstractReportListDataPlugin {
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
private DataSet querySalesOrder(ReportQueryParam param, Set<Long> orderIds) {
|
||||
private DataSet querySalesOrder(ReportQueryParam param) {
|
||||
|
||||
QFilter qFilter = getBaseQFilter();
|
||||
qFilter.and("yem_es_materialinfo.yem_businesssort", "=", "Z");
|
||||
qFilter.and("yem_es_materialinfo.id", "in", orderIds);
|
||||
List<String> selectfields = new ArrayList<>();
|
||||
|
||||
selectfields.add("id order_id");
|
||||
selectfields.add("yem_es_materialinfo.id order_entry_id");
|
||||
selectfields.add("billno salesorder_no");
|
||||
selectfields.add("yem_es_materialinfo.yem_resourcenog.yem_products.group.id order_product_id_main_fk");
|
||||
selectfields.add("yem_es_materialinfo.yem_qty yem_qty");
|
||||
|
||||
return ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray());
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.yem.rf.salescommission;
|
||||
import com.yem.tws.common1.BigDecimalUtils;
|
||||
import com.yem.wm.utils.RptUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import com.yem.wm.utils.groupfunc.GroupConcatFunction;
|
||||
import com.yem.wm.utils.groupfunc.GroupConcatFunctionByComma;
|
||||
import com.yem.wm.utils.groupfunc.GroupTopOneFunction;
|
||||
import kd.bos.algo.DataSet;
|
||||
@ -97,7 +98,7 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
|
||||
String fladingno = filter.getString("yem_fladingno");//提单号
|
||||
|
||||
|
||||
sb.append("1=1 AND yem_declarationstatus = '结关'");
|
||||
sb.append("1=1");
|
||||
if (YEM.isNotEmpty(fexportdate_start)) {
|
||||
sb.append(" AND TO_DATE(yem_exportdate, 'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fexportdate_start)));
|
||||
}
|
||||
@ -155,7 +156,7 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
|
||||
selectfields.add("yem_premiumamtcy yem_premiumamt");//保费(原币)-保险费 //2024-11-25改为取结算币别,注释未修改
|
||||
selectfields.add("yem_usbexrate yem_usdrate");//美元汇率
|
||||
selectfields.add("yem_es_declare_ec.yem_taxrefundrates yem_degrate");//退税率
|
||||
selectfields.add("yem_customsnumber yem_declarationno");//报关单号
|
||||
selectfields.add("yem_declarenumber yem_declarationno");//报关单号
|
||||
selectfields.add("yem_es_declare_ec.yem_declarationelee yem_declarationeletxt");//实际申报要素-规格型号
|
||||
|
||||
selectfields.add("yem_reightamtbase yem_reightamtbase");//海运费(本位币)
|
||||
@ -164,7 +165,6 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
|
||||
selectfields.add("yem_reightamtend yem_reightamtend");//海运费(结算币别)
|
||||
selectfields.add("yem_premiumamtcy yem_premiumamtcy");//保费(结算币别)
|
||||
|
||||
selectfields.add("yem_declarationstatus yem_declarationstatus");//申报状态
|
||||
|
||||
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_es_declaredocx", String.join(",", selectfields), qFilter.toArray());
|
||||
|
||||
|
@ -74,10 +74,6 @@ public class ITCOrderDetailsReportPlugin extends AbstractReportListDataPlugin {
|
||||
long fcustomer = filter.getLong("yem_fcustomer");//客户
|
||||
Date forderdateStart = filter.getDate("yem_forderdate_start");
|
||||
Date forderdateEnd = filter.getDate("yem_forderdate_end");
|
||||
|
||||
Date fstockdateStart = filter.getDate("yem_fstockdate_start");
|
||||
Date fstockdateEnd = filter.getDate("yem_fstockdate_end");
|
||||
|
||||
long producttype = filter.getLong("yem_bd_producttype");//产品分类
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
@ -100,12 +96,6 @@ public class ITCOrderDetailsReportPlugin extends AbstractReportListDataPlugin {
|
||||
if (YEM.isNotEmpty(forderdateEnd)) {
|
||||
sb.append(" AND forderdate <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(forderdateEnd)));
|
||||
}
|
||||
if (YEM.isNotEmpty(fstockdateStart)) {
|
||||
sb.append(" AND TO_DATE(yem_accinventorydate,'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fstockdateStart)));
|
||||
}
|
||||
if (YEM.isNotEmpty(fstockdateEnd)) {
|
||||
sb.append(" AND TO_DATE(yem_accinventorydate,'yyyy-MM-dd') <= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(fstockdateEnd)));
|
||||
}
|
||||
|
||||
if (producttype > 0) {
|
||||
sb.append(" AND yem_products = ").append(producttype);
|
||||
@ -118,12 +108,11 @@ public class ITCOrderDetailsReportPlugin extends AbstractReportListDataPlugin {
|
||||
resDataSet = resDataSet.addField("0.0", "yem_inventoryqty");
|
||||
|
||||
DataSet where = resDataSet.where(sb.toString());
|
||||
DataSet select = where.select(String.join(",", RptUtil.getDataSetFiledAlias(where)) +
|
||||
", TO_CHAR(forderdate, 'yyyy-MM-dd') yem_orderdate");
|
||||
resDataSet = fillWithCMMPQty(select);
|
||||
|
||||
resDataSet = fillWithCMMPQty(where);
|
||||
DataSet select = resDataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(where)) +
|
||||
", TO_CHAR(forderdate, 'yyyy-MM-dd') yem_orderdate, yem_reqqty - yem_cancel_num yem_effective_num");
|
||||
|
||||
return select.distinct();
|
||||
return resDataSet.distinct();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -235,7 +224,6 @@ public class ITCOrderDetailsReportPlugin extends AbstractReportListDataPlugin {
|
||||
detail.add("yem_es_materialinfo.yem_sourceentryid plan_detail_source_id");
|
||||
// detail.add("yem_es_materialinfo.yem_ifreformg yem_ifreform");//是否改制
|
||||
detail.add("yem_es_materialinfo.yem_remarks yem_remark");//备注
|
||||
detail.add("yem_es_materialinfo.yem_cancel_num yem_cancel_num");//取消数量
|
||||
detail.add("yem_nameplatelogo.id yem_nameplatelogo");//铭牌标识
|
||||
detail.add("yem_nameplatetype yem_nameplatetype");//铭牌类型
|
||||
|
||||
|
@ -21,7 +21,7 @@ import static com.yem.rf.salescommission.CompleteShipDetailReportPlugin.querySal
|
||||
import static com.yem.rf.utils.RFUtils.*;
|
||||
|
||||
/**
|
||||
* @Description: 销售提成-整机
|
||||
* @Description: TODO
|
||||
* @Date: 2024/7/8 10:24
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
@ -44,7 +44,6 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin {
|
||||
.on("delivernoticeid", "storagetransid")
|
||||
.select(RptUtil.getDataSetFiledAlias(delivernotice), RptUtil.getDataSetFiledAlias(storagetrans))
|
||||
.finish();
|
||||
resDataSet = resDataSet.distinct();
|
||||
resDataSet = resDataSet.leftJoin(salesorder)
|
||||
.on("coreentryid", "salesorderenid")
|
||||
.select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(salesorder))
|
||||
|
@ -60,7 +60,6 @@ public class SalesOfRoyaltyParts extends AbstractReportListDataPlugin {
|
||||
",yem_actualsalesamount * yem_exchangerate yem_outboundamount" +
|
||||
",CASE WHEN yem_salcontractclaamt >= yem_offeramount THEN claimstate ELSE '' END yem_payments" +
|
||||
",CASE WHEN yem_sourcebillid = sourcebillid THEN ladingdatetext ELSE '' END yem_ladingdatetext");
|
||||
select = select.where("billbusstypenumber != 'BBT-6' AND billbusstypenumber != 'BBT-4'");
|
||||
if (YEM.isNotEmpty(start)||YEM.isNotEmpty(end)){
|
||||
return select.where("ladingdatetext is not null");
|
||||
}
|
||||
@ -152,7 +151,6 @@ public class SalesOfRoyaltyParts extends AbstractReportListDataPlugin {
|
||||
selectfields.add("yem_es_materialinfo.yem_fobprice yem_fobprice");
|
||||
selectfields.add("yem_es_materialinfo.yem_afterfrontdisprice yem_afterfrontdisprice");
|
||||
selectfields.add("yem_offeramount");
|
||||
selectfields.add("yem_billbusstype.number billbusstypenumber");
|
||||
return ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray());
|
||||
}
|
||||
|
||||
|
@ -83,8 +83,6 @@ public class ShipmentsChedulePlugin extends AbstractReportListDataPlugin {
|
||||
sb.append(" AND yem_shipment like '").append("%").append(yemShipping).append("%").append("'");
|
||||
}
|
||||
DataSet where = selected.where(sb.toString());
|
||||
where = where.removeFields("delivernoticeid");
|
||||
where = where.distinct();
|
||||
return where;
|
||||
}
|
||||
|
||||
@ -261,7 +259,7 @@ public class ShipmentsChedulePlugin extends AbstractReportListDataPlugin {
|
||||
QFilter qFilter = getBaseQFilter();
|
||||
List<String> selectfields = new ArrayList<>();
|
||||
selectfields.add("id delivernoticeid");
|
||||
selectfields.add("YEAR(yem_bizdate) yem_annuals");//发货日期
|
||||
selectfields.add("yem_bizdate yem_annual");//发货日期
|
||||
selectfields.add("yem_sourcebillid delivernoticeyem_sourcebillid");
|
||||
DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_es_delivernotice", String.join(",", selectfields), qFilter.toArray());
|
||||
return yemShippingdetails;
|
||||
|
@ -13,7 +13,6 @@ import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
@ -65,7 +64,7 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin {
|
||||
.finish();
|
||||
//订舱通知关联出口报关
|
||||
resDataSet = resDataSet.leftJoin(yemEsDeclaredocx)
|
||||
.on("yemContainernumberyem_sourcebillid", "yem_corebilliddx")
|
||||
.on("yemContainernumberid", "yemEsDeclaredocxyem_sourcebillid")
|
||||
.select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemEsDeclaredocx))
|
||||
.finish();
|
||||
resDataSet = resDataSet.leftJoin(yemGathering)
|
||||
@ -113,26 +112,15 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin {
|
||||
sb.append(" AND yem_shipdate <= '").append("%").append(yem_shipdatesdis).append("%").append("'");
|
||||
}
|
||||
if (YEM.isNotEmpty(yem_bd_producttype)) {
|
||||
// List<String> names = new ArrayList<>();
|
||||
int i = 0;
|
||||
List<String> names = new ArrayList<>();
|
||||
for (DynamicObject dynamicObject : yem_bd_producttype) {
|
||||
String name = dynamicObject.getString("name");
|
||||
if (yem_bd_producttype.size() - 1 == 0) {
|
||||
sb.append(" AND yem_fittingtype = ").append("'" + name + "'");
|
||||
} else if (i == 0) {
|
||||
sb.append(" AND( yem_fittingtype = ").append("'" + name + "'");
|
||||
} else if (i == yem_bd_producttype.size() - 1) {
|
||||
sb.append(" OR yem_fittingtype = ").append("'" + name + "')");
|
||||
} else {
|
||||
sb.append(" OR yem_fittingtype = ").append("'" + name + "'");
|
||||
}
|
||||
// names.add(name);
|
||||
|
||||
i++;
|
||||
names.add(name);
|
||||
// sb.append(" AND yem_bd_products = ").append("'" +name + "'");
|
||||
}
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// map.put("var", names);
|
||||
// result = result.filter("yem_fittingtype in var", map);
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("var", names);
|
||||
result = result.filter("yem_bd_products in var", map);
|
||||
|
||||
}
|
||||
DataSet where = result.where(sb.toString());
|
||||
@ -355,30 +343,10 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin {
|
||||
*/
|
||||
private DataSet yemEsDeclaredocx() {
|
||||
QFilter qFilter = getBaseQFilter();
|
||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("yem_es_declaredocx", "id,billno,yem_invoicedate,yem_corebillid"
|
||||
, new QFilter[]{new QFilter("yem_invoicedate", QCP.not_equals, null)});
|
||||
Map<Long,Date> map = new HashMap();
|
||||
List<Long> id = new ArrayList<>();
|
||||
for (DynamicObject dynamicObject : dynamicObjects) {
|
||||
long yemSourcebillid = dynamicObject.getLong("yem_corebillid");
|
||||
Date yemInvoicedate = dynamicObject.getDate("yem_invoicedate");
|
||||
if (map.get(yemSourcebillid)==null) {
|
||||
map.put(yemSourcebillid, yemInvoicedate);
|
||||
}else {
|
||||
if (!map.get(yemSourcebillid).before(yemInvoicedate)) {
|
||||
map.put(yemSourcebillid, yemInvoicedate);
|
||||
}
|
||||
}
|
||||
}
|
||||
Set<Long> longs = map.keySet();
|
||||
qFilter.and("yem_corebillid",QCP.in,longs);
|
||||
List<String> selectfields = new ArrayList<>();
|
||||
selectfields.add("yem_corebillid yem_corebilliddx");
|
||||
selectfields.add("TO_CHAR(yem_invoicedate, 'yyyy-MM-dd') yem_invoicingdate");//开票日期
|
||||
// selectfields.add("yem_sourcebillid yemEsDeclaredocxyem_sourcebillid");
|
||||
selectfields.add("yem_sourcebillid yemEsDeclaredocxyem_sourcebillid");
|
||||
DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_es_declaredocx", String.join(",", selectfields), qFilter.toArray());
|
||||
// yemShippingdetails = yemShippingdetails.groupBy(new String[]{"yemEsDeclaredocxyem_sourcebillid"}).finish();
|
||||
// yemShippingdetails = yemShippingdetails.removeFields("yem_corebillid");
|
||||
return yemShippingdetails;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.yem.tws.task;
|
||||
|
||||
import com.yem.ensign.common.CommonUtils;
|
||||
import com.yem.wm.task.YunZhiJaGetOpenidTask;
|
||||
import com.yem.wm.utils.BigDecimalUtils;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.coderule.api.CodeRuleInfo;
|
||||
@ -27,8 +27,11 @@ import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
|
||||
import kd.bos.servicehelper.botp.ConvertServiceHelper;
|
||||
import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
|
||||
import kd.bos.servicehelper.operation.DeleteServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
@ -91,7 +94,7 @@ public class CusdecToDeclaredocxTask extends AbstractTask {
|
||||
String string = yemCodets + "-" + yemGname + "-" + yemGqty + "-" + yemDeclprice + "-" + yemDecltotal + "-" + number;
|
||||
maps.put(string, dynamicObject);
|
||||
}
|
||||
//出口报关单//海运费(原币)、保费(原表)取单一窗口的的海运费、保费
|
||||
//出口报关单
|
||||
QFilter yemRealbringbillno = new QFilter("yem_realbringbillno", QCP.equals, yemBillno);
|
||||
yemRealbringbillno.or(new QFilter("yem_bringbillno", QCP.equals, yemBillno));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_es_declaredocx", false);
|
||||
@ -111,40 +114,10 @@ public class CusdecToDeclaredocxTask extends AbstractTask {
|
||||
, new QFilter[]{new QFilter("id", QCP.equals, yemCustomsdocumentid)});
|
||||
String yemCusdecstatusname = "";
|
||||
if (dynamicObject != null) {
|
||||
Date yemFiedatets = user.getDate("yem_fiedatets");//出口日期
|
||||
yemCusdecstatusname = dynamicObject.getString("yem_cusdecstatusname");//申报状态
|
||||
declaredocx.set("yem_declarationstatus", yemCusdecstatusname);
|
||||
declaredocx.set("yem_customsnumber", yemEntryid);
|
||||
declaredocx.set("yem_exportdate", yemFiedatets);
|
||||
declaredocx.set("yem_reightamt", user.getBigDecimal("yem_feerate"));
|
||||
declaredocx.set("yem_premiumamt", user.getBigDecimal("yem_insurrate"));
|
||||
declaredocx.set("yem_reightamtbase", user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")));
|
||||
declaredocx.set("yem_premiumamtbase", user.getBigDecimal("yem_insurrate").multiply(declaredocx.getBigDecimal("yem_pmamtrate")));
|
||||
declaredocx.set("yem_reightamtend"
|
||||
, BigDecimalUtils.div((user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")))
|
||||
, declaredocx.getBigDecimal("yem_exrate"), 2));
|
||||
|
||||
BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable")
|
||||
, declaredocx.getDynamicObject("yem_usdcurrency")
|
||||
, declaredocx.getDynamicObject("yem_currencybase")
|
||||
, yemFiedatets);
|
||||
declaredocx.set("yem_usbexrate", exchangeRate);
|
||||
declaredocx.set("yem_despportcodebase", user.getDynamicObject("yem_despportcodebase"));
|
||||
declaredocx.set("yem_distinateportbase", user.getDynamicObject("yem_distinateportbase"));
|
||||
declaredocx.set("yem_transmodbase", user.getDynamicObject("yem_transmodbase"));
|
||||
} else {
|
||||
declaredocx.set("yem_declarationstatus", "");
|
||||
declaredocx.set("yem_customsnumber", 0);
|
||||
declaredocx.set("yem_exportdate", null);
|
||||
declaredocx.set("yem_reightamt", null);
|
||||
declaredocx.set("yem_premiumamt", null);
|
||||
declaredocx.set("yem_reightamtbase", 0);
|
||||
declaredocx.set("yem_premiumamtbase", 0);
|
||||
declaredocx.set("yem_reightamtend", 0);
|
||||
declaredocx.set("yem_usbexrate", 0);
|
||||
declaredocx.set("yem_despportcodebase", null);
|
||||
declaredocx.set("yem_distinateportbase", null);
|
||||
declaredocx.set("yem_transmodbase", null);
|
||||
declaredocx.set("yem_customsdocumentid", 0);
|
||||
}
|
||||
|
||||
@ -185,7 +158,6 @@ public class CusdecToDeclaredocxTask extends AbstractTask {
|
||||
String yemErroriskey = billno + "-" + yemDecmatericalname + "-" + yemCusqty + "-" + yemCusconsalesprice + "-" + yemCusamount + "-" + aLong;
|
||||
DynamicObject dynamicObject = maps.get(yemErroriskey);
|
||||
if (dynamicObject != null) {
|
||||
object.set("yem_gmodel", dynamicObject.getString("yem_gmodel"));
|
||||
i = i - 1;
|
||||
} else {
|
||||
seq = seq + object.getString("seq") + ",";
|
||||
@ -201,22 +173,12 @@ public class CusdecToDeclaredocxTask extends AbstractTask {
|
||||
declaredocx.set("yem_customsnumber", yemEntryid);
|
||||
declaredocx.set("yem_exportdate", yemFiedatets);
|
||||
declaredocx.set("yem_customsdocumentid", id);
|
||||
declaredocx.set("yem_reightamt", user.getBigDecimal("yem_feerate"));
|
||||
declaredocx.set("yem_premiumamt", user.getBigDecimal("yem_insurrate"));
|
||||
declaredocx.set("yem_reightamtbase", user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")));
|
||||
declaredocx.set("yem_premiumamtbase", user.getBigDecimal("yem_insurrate").multiply(declaredocx.getBigDecimal("yem_pmamtrate")));
|
||||
declaredocx.set("yem_reightamtend"
|
||||
, BigDecimalUtils.div((user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")))
|
||||
, declaredocx.getBigDecimal("yem_exrate"), 2));
|
||||
|
||||
BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable")
|
||||
, declaredocx.getDynamicObject("yem_usdcurrency")
|
||||
, declaredocx.getDynamicObject("yem_currencybase")
|
||||
, declaredocx.getDynamicObject("yem_usdcurrency")
|
||||
, yemFiedatets);
|
||||
declaredocx.set("yem_usbexrate", exchangeRate);
|
||||
declaredocx.set("yem_despportcodebase", user.getDynamicObject("yem_despportcodebase"));
|
||||
declaredocx.set("yem_distinateportbase", user.getDynamicObject("yem_distinateportbase"));
|
||||
declaredocx.set("yem_transmodbase", user.getDynamicObject("yem_transmodbase"));
|
||||
|
||||
SaveServiceHelper.update(declaredocx);
|
||||
SaveServiceHelper.save(new DynamicObject[]{declaredocx});
|
||||
if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) {
|
||||
|
@ -1,58 +0,0 @@
|
||||
package com.yem.wm.bc.bill.op;
|
||||
|
||||
import com.yem.wm.utils.YunzhijiaUtils;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 合同提交云之家特殊处理,事务结束之后在进行同步操作
|
||||
* @Date: 2024/12/25 17:34
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
|
||||
public class YemBillSubmitToYZJEndTransactionOp extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
super.endOperationTransaction(e);
|
||||
DynamicObject[] entities = e.getDataEntities();
|
||||
List<DynamicObject> passDataEntity = new ArrayList<>();
|
||||
OperationResult result = this.operationResult;
|
||||
if (!result.isSuccess()) {
|
||||
return;
|
||||
}
|
||||
StringBuilder errMsg = new StringBuilder();
|
||||
for (DynamicObject entity : entities) {
|
||||
String billType = entity.getDataEntityType().getName();
|
||||
if (!"yem_es_salesorder".equals(billType)) {
|
||||
return;
|
||||
}
|
||||
|
||||
YunzhijiaUtils.submit2YZJ(result, passDataEntity, entity);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
passDataEntity.add(entity);
|
||||
} else {
|
||||
String message = result.getMessage();
|
||||
errMsg.append(message).append("\n ");
|
||||
}
|
||||
}
|
||||
|
||||
if (errMsg.length() > 0) {
|
||||
throw new KDBizException("提交云之家失败!错误信息:" + errMsg);
|
||||
}
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@ public class YemBillSubmitToYZJOp extends AbstractOperationServicePlugIn {
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
|
||||
e.getFieldKeys().add("billno");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -39,12 +39,6 @@ public class YemBillSubmitToYZJOp extends AbstractOperationServicePlugIn {
|
||||
List<DynamicObject> passDataEntitys = new ArrayList<>();
|
||||
for (DynamicObject dynamicObject : dataEntities1) {
|
||||
String name = dynamicObject.getDynamicObjectType().getName();
|
||||
if ("yem_es_salesorder".equals(name)) {
|
||||
// 合同提交云之家特殊处理。
|
||||
// 已经移动到插件 com.yem.wm.bc.bill.op.YemBillSubmitToYZJEndTransactionOp
|
||||
passDataEntitys.add(dynamicObject);
|
||||
continue;
|
||||
}
|
||||
dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), name);
|
||||
|
||||
if ("yem_es_specialapplica".equals(name)) {
|
||||
|
@ -1,20 +1,17 @@
|
||||
package com.yem.wm.bd.customer.from.Validator;
|
||||
|
||||
import com.yem.or.utils.OrderApiUtils;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.yem.or.utils.OrderApiUtils.getToken;
|
||||
|
||||
/**
|
||||
* ljw
|
||||
* 同步数据至下单平台
|
||||
@ -24,85 +21,45 @@ public class CustomerValidator extends AbstractValidator {
|
||||
@Override
|
||||
public void validate() {
|
||||
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||
|
||||
String accessToken = "";
|
||||
|
||||
try {
|
||||
Map<String, String> token = getToken();
|
||||
accessToken = token.get("token");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
if (YEM.isEmpty(accessToken)) {
|
||||
throw new KDBizException("获取AccessToken失败");
|
||||
}
|
||||
|
||||
for (ExtendedDataEntity dataEntitie : dataEntities) {
|
||||
DynamicObject customer = dataEntitie.getDataEntity();
|
||||
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
|
||||
String name = customer.getString("name");
|
||||
if (YEM.isEmpty(groupcustomers)) {
|
||||
this.addErrorMessage(dataEntitie, String.format("请维护客户 [%s] 的业务主体", name));
|
||||
continue;
|
||||
}
|
||||
doSyncCustomer(customer, accessToken);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步客户至下单平台,如果业务主体为同步,先同步业务主体
|
||||
* @param customer 当前客户
|
||||
* @param accessToken 访问Token
|
||||
*/
|
||||
public static void doSyncCustomer(DynamicObject customer, String accessToken) {
|
||||
boolean isSynced = customer.getBoolean("yem_checkboxfield");
|
||||
|
||||
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
|
||||
Map<String, String> demands;
|
||||
|
||||
if (!groupcustomers.containsProperty("yem_torderid")) {
|
||||
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
|
||||
boolean isGroupSynced = groupcustomers.getBoolean("yem_checkboxfield");
|
||||
String number = groupcustomers.getString("number");
|
||||
String name = groupcustomers.getString("name");
|
||||
if (isGroupSynced) {
|
||||
String torderid = groupcustomers.getString("yem_torderid");
|
||||
Long existId = Long.valueOf(torderid);
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
|
||||
DynamicObject mechanical = dataEntitie.getDataEntity();
|
||||
boolean yemCheckboxfield = mechanical.getBoolean("yem_checkboxfield");
|
||||
DynamicObject group = mechanical.getDynamicObject("group");
|
||||
if (!yemCheckboxfield && group != null) {
|
||||
long groupid = group.getLong("id");
|
||||
QFilter qFilter = new QFilter("parent.number", QCP.equals, "11602");
|
||||
QFilter qFilter1 = new QFilter("id", QCP.equals, groupid);
|
||||
qFilter1.and(new QFilter("enable", QCP.equals, "1"));
|
||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customergroup", "id,number,parent"
|
||||
, new QFilter[]{qFilter, qFilter1});
|
||||
if (dynamicObjects.length > 0) {
|
||||
String number = mechanical.getString("number");
|
||||
String replace = number.replace("-", "");
|
||||
String name = mechanical.getString("name");
|
||||
Map<String, String> demands = OrderApiUtils.demands(name, replace);
|
||||
String msg = demands.get("msg");
|
||||
if (msg == null) {
|
||||
String id = demands.get("id");
|
||||
if (!"".equals(id)) {
|
||||
mechanical.set("yem_torderid", id);
|
||||
mechanical.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.update(mechanical);
|
||||
SaveServiceHelper.save(new DynamicObject[]{mechanical});
|
||||
}
|
||||
} else {
|
||||
this.addErrorMessage(dataEntitie, msg);
|
||||
}
|
||||
} else {
|
||||
this.addErrorMessage(dataEntitie, "当前客户不满足同步条件,禁止同步至下单平台!!!");
|
||||
}
|
||||
} else {
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
|
||||
}
|
||||
if (demands.containsKey("id")) {
|
||||
String id = demands.get("id");
|
||||
groupcustomers.set("yem_torderid", id);
|
||||
groupcustomers.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.save(new DynamicObject[]{groupcustomers});
|
||||
} else if (demands.containsKey("msg")) {
|
||||
throw new KDBizException("同步当前客户业务主体异常: " + demands.get("msg"));
|
||||
}
|
||||
}
|
||||
if (yemCheckboxfield) {
|
||||
this.addErrorMessage(dataEntitie, "当前客户已同步下单平台!!");
|
||||
} else if (group == null) {
|
||||
this.addErrorMessage(dataEntitie, "当前客户分组为空!!");
|
||||
}
|
||||
|
||||
// 业务主体和客户相同,跳过
|
||||
if (customer.getLong("id") == groupcustomers.getLong("id")) {
|
||||
return;
|
||||
}
|
||||
String number = customer.getString("number");
|
||||
String name = customer.getString("name");
|
||||
if (isSynced) {
|
||||
String torderid = customer.getString("yem_torderid");
|
||||
Long existId = Long.valueOf(torderid);
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
|
||||
} else {
|
||||
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
|
||||
}
|
||||
if (demands.containsKey("id")) {
|
||||
String id = demands.get("id");
|
||||
customer.set("yem_torderid", id);
|
||||
customer.set("yem_checkboxfield", true);
|
||||
SaveServiceHelper.save(new DynamicObject[]{customer});
|
||||
} else if (demands.containsKey("msg")) {
|
||||
throw new KDBizException("同步当前客户异常: " + demands.get("msg"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.*;
|
||||
import kd.bos.form.events.MessageBoxClosedEvent;
|
||||
import kd.bos.orm.query.QCP;
|
||||
@ -19,7 +18,6 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -307,18 +305,7 @@ public class TotalUtil {
|
||||
qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftCode));
|
||||
}
|
||||
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray());
|
||||
if (load.length == 1) {
|
||||
return load[0];
|
||||
}
|
||||
if (load.length > 1) {
|
||||
Set<String> set = new HashSet<>();
|
||||
for (DynamicObject d : load) {
|
||||
set.add(d.getString("billno"));
|
||||
}
|
||||
throw new KDBizException("该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set);
|
||||
}
|
||||
return null;
|
||||
return BusinessDataServiceHelper.loadSingle("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.BillEntityType;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
|
||||
import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs;
|
||||
@ -29,37 +28,14 @@ public class DeclareDocxToExportinvoiceConvert extends AbstractConvertPlugIn {
|
||||
public void afterConvert(AfterConvertEventArgs e) {
|
||||
super.afterConvert(e);
|
||||
String targetName = this.getTgtMainType().getName();
|
||||
BillEntityType srcMainType = this.getSrcMainType();
|
||||
//上游
|
||||
String name = this.getSrcMainType().getName();
|
||||
ExtendedDataEntity[] findByEntityKeys = e.getTargetExtDataEntitySet().FindByEntityKey(targetName);
|
||||
for (ExtendedDataEntity findByEntityKey : findByEntityKeys) {
|
||||
// List<DynamicObject> shippingDetails = (List<DynamicObject>) findByEntityKey.getValue("ConvertSource");
|
||||
DynamicObject dataEntity = findByEntityKey.getDataEntity();//单据主实体
|
||||
|
||||
// for (DynamicObject shippingDetail : shippingDetails) {
|
||||
////
|
||||
//// Long value = shippingDetail.getLong("id");
|
||||
//// DynamicObject findBynames = BusinessDataServiceHelper.loadSingle(value, name);
|
||||
//// MulBasedataDynamicObjectCollection yemDestport = (MulBasedataDynamicObjectCollection ) findByEntityKey.getValue("yem_shipports");
|
||||
//// DynamicObjectCollection fourBookColls = new DynamicObjectCollection();
|
||||
//// DynamicObject tempDyObjs = new DynamicObject(yemDestport.getDynamicObjectType());
|
||||
//// tempDyObjs.set("fbasedataid",findBynames.getDynamicObject("yem_despportcodebase"));
|
||||
//// fourBookColls.add(tempDyObjs);
|
||||
//// dataEntity.set("yem_shipports", fourBookColls);
|
||||
////
|
||||
////
|
||||
//// MulBasedataDynamicObjectCollection yemDestports = (MulBasedataDynamicObjectCollection ) findByEntityKey.getValue("yem_destports");
|
||||
//// DynamicObjectCollection fourBookColl = new DynamicObjectCollection();
|
||||
//// DynamicObject tempDyObj = new DynamicObject(yemDestports.getDynamicObjectType());
|
||||
//// tempDyObj.set("fbasedataid",findBynames.getDynamicObject("yem_distinateportbase"));
|
||||
//// fourBookColl.add(tempDyObj);
|
||||
//// dataEntity.set("yem_destports", fourBookColl);
|
||||
//
|
||||
//
|
||||
// }//携带合同中的佣金率
|
||||
//携带合同中的佣金率
|
||||
setRate(findByEntityKey);
|
||||
|
||||
DynamicObject dataEntity = findByEntityKey.getDataEntity();//单据主实体
|
||||
bringLatestExRate(dataEntity);
|
||||
DynamicObjectCollection yemExportinvoiceC = dataEntity.getDynamicObjectCollection("yem_exportinvoice_c");//报关商品
|
||||
DynamicObjectCollection yemExportinvoiceCd = dataEntity.getDynamicObjectCollection("yem_exportinvoice_cd");//报关商品对照表
|
||||
@ -83,7 +59,7 @@ public class DeclareDocxToExportinvoiceConvert extends AbstractConvertPlugIn {
|
||||
BigDecimal yem_locamt = dynamicObject.getBigDecimal("yem_locamt");
|
||||
dynamicObject2.set("yem_cusqty", yemCusqty.add(yemQty));
|
||||
dynamicObject2.set("yem_cusamount", yem_sellamt.add(yem_cusamount));
|
||||
dynamicObject2.set("yem_cusconsalesprice", BigDecimalUtils.div(yem_sellamt.add(yem_cusamount), yemCusqty.add(yemQty), 4));
|
||||
dynamicObject2.set("yem_cusconsalesprice", BigDecimalUtils.div(yem_sellamt.add(yem_cusamount),yemCusqty.add(yemQty),4));
|
||||
dynamicObject2.set("yem_localamount", yem_locamt.add(yem_localamount));
|
||||
// dynamicObject2.set("yem_localamount", yem_locamt.add(yem_localamount));
|
||||
}
|
||||
@ -122,11 +98,9 @@ public class DeclareDocxToExportinvoiceConvert extends AbstractConvertPlugIn {
|
||||
|
||||
calculatePremium(dataEntity);
|
||||
|
||||
|
||||
}
|
||||
ExtendedDataEntity[] findByname = e.getTargetExtDataEntitySet().FindByEntityKey(targetName);
|
||||
yemCushscode(findByname);
|
||||
|
||||
}
|
||||
|
||||
private void yemCushscode(ExtendedDataEntity[] findByname) {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.yem.wm.es.declaredocx.op;
|
||||
|
||||
import com.yem.wm.utils.BigDecimalUtils;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.coderule.api.CodeRuleInfo;
|
||||
@ -172,41 +171,16 @@ public class DeclaredocxComparisonOp extends AbstractOperationServicePlugIn {
|
||||
} else {
|
||||
String yemCusdecstatusname = user.getString("yem_cusdecstatusname");//申报状态
|
||||
extracted(data, "出口报关报关单号【" + declaredocxbillno + "】成功匹配单一窗口报关单;\n", id, declaredocxbillno, yemBillno);
|
||||
// declaredocx.set("yem_declarationstatus", yemCusdecstatusname);
|
||||
// declaredocx.set("yem_customsnumber", yemEntryid);
|
||||
// declaredocx.set("yem_exportdate", yemFiedatets);
|
||||
// declaredocx.set("yem_customsdocumentid", id);
|
||||
// BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable")
|
||||
// , declaredocx.getDynamicObject("yem_currencybase")
|
||||
// , declaredocx.getDynamicObject("yem_usdcurrency")
|
||||
// , yemFiedatets);
|
||||
// declaredocx.set("yem_usbexrate", exchangeRate);
|
||||
// declaredocx.set("yem_usbexrate", exchangeRate);
|
||||
// declaredocx.set("yem_despportcodebase",user.getDynamicObject("yem_despportcodebase") );
|
||||
// declaredocx.set("yem_distinateportbase", user.getDynamicObject("yem_distinateportbase"));
|
||||
// declaredocx.set("yem_transmodbase", user.getDynamicObject("yem_transmodbase"));
|
||||
declaredocx.set("yem_declarationstatus", yemCusdecstatusname);
|
||||
declaredocx.set("yem_customsnumber", yemEntryid);
|
||||
declaredocx.set("yem_exportdate", yemFiedatets);
|
||||
declaredocx.set("yem_customsdocumentid", id);
|
||||
declaredocx.set("yem_reightamt", user.getBigDecimal("yem_feerate"));
|
||||
declaredocx.set("yem_premiumamt", user.getBigDecimal("yem_insurrate"));
|
||||
declaredocx.set("yem_reightamtbase", user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")));
|
||||
declaredocx.set("yem_premiumamtbase", user.getBigDecimal("yem_insurrate").multiply(declaredocx.getBigDecimal("yem_pmamtrate")));
|
||||
declaredocx.set("yem_reightamtend"
|
||||
, BigDecimalUtils.div((user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate")))
|
||||
,declaredocx.getBigDecimal("yem_exrate"),2));
|
||||
|
||||
BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable")
|
||||
, declaredocx.getDynamicObject("yem_currencybase")
|
||||
, declaredocx.getDynamicObject("yem_usdcurrency")
|
||||
, yemFiedatets);
|
||||
declaredocx.set("yem_usbexrate", exchangeRate);
|
||||
|
||||
declaredocx.set("yem_cyreightamt", user.getDynamicObject("yem_feecurrbase"));//海运费币别
|
||||
declaredocx.set("yem_despportcodebase",user.getDynamicObject("yem_despportcodebase") );
|
||||
declaredocx.set("yem_distinateportbase", user.getDynamicObject("yem_distinateportbase"));
|
||||
declaredocx.set("yem_transmodbase", user.getDynamicObject("yem_transmodbase"));
|
||||
SaveServiceHelper.update(declaredocx);
|
||||
SaveServiceHelper.save(new DynamicObject[]{declaredocx});
|
||||
if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) {
|
||||
|
@ -34,15 +34,14 @@ public class DeclareDocxSubmitValidator extends AbstractValidator {
|
||||
map.put(index, exportmat);
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
BigDecimal amt = BigDecimal.ZERO;
|
||||
for (Map.Entry<Integer, BigDecimal> entry : map.entrySet()) {
|
||||
Integer idx = entry.getKey();
|
||||
amt = entry.getValue();
|
||||
BigDecimal amt = entry.getValue();
|
||||
if (amt.compareTo(BigDecimal.ZERO) != 0) {
|
||||
sb.append(String.format("商品明细第 [ %s ] 行,出库金额跟报关金额差值 [ %s ]不允许提交,请修改后重试。", idx + 1, amt.setScale(2, RoundingMode.HALF_UP)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (amt.compareTo(BigDecimal.ZERO) != 0) {
|
||||
sb.append(String.format("商品明细,出库金额跟报关金额差值 [ %s ]不允许提交,请修改后重试。", amt.setScale(2, RoundingMode.HALF_UP)));
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
this.addErrorMessage(extendedDataEntity, sb.toString());
|
||||
}
|
||||
|
@ -1,15 +1,17 @@
|
||||
package com.yem.wm.es.encasement.dynamic;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.control.events.RowClickEventListener;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
@ -41,6 +43,10 @@ public class StuffingMessageFromPlugin extends AbstractBillPlugIn implements Row
|
||||
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||
DynamicObjectCollection dataEntitys=new DynamicObjectCollection();
|
||||
DynamicObjectCollection dataEntityss=new DynamicObjectCollection();
|
||||
EntryGrid entryGrid = this.getView().getControl("yem_backentry");
|
||||
EntryGrid entryGridb = this.getView().getControl("yem_sumpartspack");
|
||||
// int[] selectRows = entryGrid.getSelectRows();
|
||||
// int[] selectRow = entryGridb.getSelectRows();
|
||||
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
|
||||
Map<Integer, Integer> maps = new HashMap<Integer, Integer>();
|
||||
DynamicObjectCollection yem_backentrys=dataEntity.getDynamicObjectCollection("yem_backentry");
|
||||
@ -57,6 +63,10 @@ public class StuffingMessageFromPlugin extends AbstractBillPlugIn implements Row
|
||||
DynamicObject backentry = this.getModel().getEntryRowEntity("yem_backentry",maps.get(i)-1);
|
||||
dataEntitys.add(i,backentry);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// int rowIndex = this.getModel().getEntryCurrentRowIndex("yem_backentry");
|
||||
DynamicObjectCollection yem_sumpartspacks=dataEntity.getDynamicObjectCollection("yem_sumpartspack");
|
||||
int j=0;
|
||||
for (DynamicObject yem_sumpartspack : yem_sumpartspacks) {
|
||||
@ -67,10 +77,22 @@ public class StuffingMessageFromPlugin extends AbstractBillPlugIn implements Row
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
// for (int i=0; i < selectRows.length; i++) {
|
||||
// DynamicObject backentry = this.getModel().getEntryRowEntity("yem_backentry",selectRows[i]);
|
||||
// dataEntitys.add(i,backentry);
|
||||
// }
|
||||
// for (int i=0; i < selectRow.length; i++) {
|
||||
// DynamicObject sumpartspack = this.getModel().getEntryRowEntity("yem_sumpartspack",selectRow[i]);
|
||||
// dataEntityss.add(i,sumpartspack);
|
||||
// }
|
||||
|
||||
for (int i = 0; i < map.size(); i++) {
|
||||
DynamicObject sumpartspack = this.getModel().getEntryRowEntity("yem_sumpartspack",map.get(i)-1);
|
||||
dataEntityss.add(i,sumpartspack);
|
||||
}
|
||||
|
||||
|
||||
DynamicObjectCollection[] dataEntit= new DynamicObjectCollection[]{dataEntitys, dataEntityss};
|
||||
|
||||
this.getView().returnDataToParent(dataEntit);
|
||||
|
@ -225,31 +225,6 @@ public class EncaseMentEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
sbStr.append("明细信息总净重合计值不允许超过整机总重量,请检查!!");
|
||||
// throw new KDBizException("明细信息总净重合计值不允许超过整机总重量,请检查!!");
|
||||
}
|
||||
String yemPackingmethod = (String) this.getModel().getValue("yem_packingmethod");
|
||||
if ("B".equals(yemPackingmethod)) {
|
||||
//yem_businesssort = 'Z' AND (yem_long = null OR yem_wide = null OR yem_high = null OR yem_vol = null OR yem_volm3 = null OR yem_volm3sum = null)
|
||||
DynamicObjectCollection yemImMaterialinfoMi = this.getModel().getEntryEntity("yem_im_materialinfo_mi");
|
||||
if (yemImMaterialinfoMi.size() > 0) {
|
||||
for (DynamicObject dynamicObject : yemImMaterialinfoMi) {
|
||||
String yemBusinesssort = dynamicObject.getString("yem_businesssort");
|
||||
if ("Z".equals(yemBusinesssort)) {
|
||||
BigDecimal yemLong = dynamicObject.getBigDecimal("yem_long");
|
||||
BigDecimal yemWide = dynamicObject.getBigDecimal("yem_wide");
|
||||
BigDecimal yemHigh = dynamicObject.getBigDecimal("yem_high");
|
||||
BigDecimal yemVol = dynamicObject.getBigDecimal("yem_vol");
|
||||
BigDecimal yemVolm3 = dynamicObject.getBigDecimal("yem_volm3");
|
||||
BigDecimal yemVolm3sum = dynamicObject.getBigDecimal("yem_volm3sum");
|
||||
String seq = dynamicObject.getString("seq");
|
||||
if (yemLong.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "长为空,请填写!\n");
|
||||
if (yemWide.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "宽为空,请填写!\n");
|
||||
if (yemHigh.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "高为空,请填写!\n");
|
||||
if (yemVol.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "单台体积为空,请填写!\n");
|
||||
if (yemVolm3.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "单台体积m³为空,请填写!\n");
|
||||
if (yemVolm3sum.compareTo(BigDecimal.ZERO) == 0) sbStr.append("第"+seq+"行,"+ "总体积(CBM)为空,请填写!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sbStr.length() > 0) {
|
||||
throw new KDBizException(sbStr.toString());
|
||||
@ -384,7 +359,7 @@ public class EncaseMentEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
dataEntity.set("yem_affirmmanpj", user);
|
||||
dataEntity.set("yem_affirmdatepj", new Date());
|
||||
}
|
||||
if ("statusconvertqrzj".equals(operateKey)) {
|
||||
if ("statusconvertqrzj".equals(operateKey)){
|
||||
if (!yemWeightconfirmed.isEmpty()) {
|
||||
dataEntity.set("yem_completionstatuszj", "B");
|
||||
dataEntity.set("yem_affirmmanzj", user);
|
||||
|
@ -31,9 +31,11 @@ import java.util.EventObject;
|
||||
* @description: 回填装柜信息 装箱单
|
||||
* @date 2023/8/29
|
||||
*/
|
||||
public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
public class EncaseMentStuffingEdit extends AbstractBillPlugIn
|
||||
{
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
public void registerListener(EventObject e)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
//监听点击的行数
|
||||
super.registerListener(e);
|
||||
@ -42,12 +44,14 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
|
||||
|
||||
@Override
|
||||
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
||||
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs)
|
||||
{
|
||||
super.afterDoOperation(afterDoOperationEventArgs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
public void itemClick(ItemClickEvent evt)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
String key = evt.getItemKey();
|
||||
// 判断是否为回填按钮
|
||||
@ -66,12 +70,14 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void customEvent(CustomEventArgs e) {
|
||||
public void customEvent(CustomEventArgs e)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
super.customEvent(e);
|
||||
}
|
||||
|
||||
private void showInfoForm(IFormView view, String classname) {
|
||||
private void showInfoForm(IFormView view, String classname)
|
||||
{
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setStatus(OperationStatus.ADDNEW);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
@ -91,7 +97,8 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
/**
|
||||
* 动态表单回填单据字段
|
||||
*/
|
||||
private void setInwardInfo(DynamicObjectCollection[] values) {
|
||||
private void setInwardInfo(DynamicObjectCollection[] values)
|
||||
{
|
||||
DynamicObjectCollection yem_backentrys = values[0];
|
||||
DynamicObjectCollection yem_sumpartspack = values[1];
|
||||
|
||||
@ -125,8 +132,6 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
}
|
||||
}
|
||||
// DynamicObjectCollection yem_sumpartspackss = yem_sumpartspack.getDynamicObjectCollection("yem_sumpartspack");
|
||||
// int[] indexs = this.getModel().batchCreateNewEntryRow("yem_im_detaweight_dw", yem_sumpartspack.size());
|
||||
|
||||
for (DynamicObject yem_sumpartspacks : yem_sumpartspack) {
|
||||
int index = this.getModel().createNewEntryRow("yem_im_detaweight_dw");
|
||||
if (index != -1) {
|
||||
@ -134,10 +139,7 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
this.getModel().setValue("yem_picnoz_det", yem_sumpartspacks.getString("yem_packname"), index);
|
||||
this.getModel().setValue("yem_traynumber_det", yem_sumpartspacks.getString("yem_trayno"), index);
|
||||
this.getModel().setValue("yem_boxnumber_det", yem_sumpartspacks.getString("yem_boxno"), index);
|
||||
DynamicObject yemPacktype = yem_sumpartspacks.getDynamicObject("yem_packtype");
|
||||
if (yemPacktype != null) {
|
||||
this.getModel().setValue("yem_packstyle_det", yemPacktype.getLong("id"), index);
|
||||
}
|
||||
this.getModel().setValue("yem_packstyle_det", yem_sumpartspacks.getDynamicObject("yem_packtype"), index);
|
||||
this.getModel().setValue("yem_pieces_det", yem_sumpartspacks.getBigDecimal("yem_piecenum"), index);
|
||||
this.getModel().setValue("yem_grossweightsumd", yem_sumpartspacks.getBigDecimal("yem_sumroughweight"), index);
|
||||
this.getModel().setValue("yem_volsum_det", yem_sumpartspacks.getBigDecimal("yem_sumvolume"), index);
|
||||
@ -158,44 +160,11 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
this.getView().showMessage("请先录入装柜信息");
|
||||
}
|
||||
}
|
||||
// if (indexs.length > 0) {
|
||||
// for (int index : indexs) {
|
||||
// if (index==0){
|
||||
//
|
||||
// }
|
||||
// DynamicObject yem_sumpartspacks = yem_sumpartspack.get(index);
|
||||
// this.getModel().setValue("yem_businesssort_dw", "P", index);
|
||||
// this.getModel().setValue("yem_picnoz_det", yem_sumpartspacks.getString("yem_packname"), index);
|
||||
// this.getModel().setValue("yem_traynumber_det", yem_sumpartspacks.getString("yem_trayno"), index);
|
||||
// this.getModel().setValue("yem_boxnumber_det", yem_sumpartspacks.getString("yem_boxno"), index);
|
||||
// DynamicObject yemPacktype = yem_sumpartspacks.getDynamicObject("yem_packtype");
|
||||
// if (yemPacktype!=null){
|
||||
// this.getModel().setValue("yem_packstyle_det", yemPacktype.getLong("id"), index);
|
||||
// }
|
||||
// this.getModel().setValue("yem_pieces_det", yem_sumpartspacks.getBigDecimal("yem_piecenum"), index);
|
||||
// this.getModel().setValue("yem_grossweightsumd", yem_sumpartspacks.getBigDecimal("yem_sumroughweight"), index);
|
||||
// this.getModel().setValue("yem_volsum_det", yem_sumpartspacks.getBigDecimal("yem_sumvolume"), index);
|
||||
// this.getModel().setValue("yem_partsid", yem_sumpartspacks.getString("yem_partsid"), index);
|
||||
// this.getModel().setValue("yem_grossweightsumd", yem_sumpartspacks.getBigDecimal("yem_sumroughweight"), index);
|
||||
// this.getModel().setValue("yem_volsum_det", yem_sumpartspacks.getString("yem_sumvolume"), index);
|
||||
//
|
||||
// BigDecimal stuffingpiece = (BigDecimal) this.getModel().getValue("yem_stuffingpiece", yem_sumpartspacks.getInt("seq") - 1);
|
||||
// this.getModel().setValue("yem_stuffingpiece", stuffingpiece.add(yem_sumpartspacks.getBigDecimal("yem_piecenum"))
|
||||
// , yem_sumpartspacks.getInt("seq") - 1);
|
||||
//
|
||||
// BigDecimal quantity = (BigDecimal) this.getModel().getValue("yem_piecenum", yem_sumpartspacks.getInt("seq") - 1);
|
||||
// this.getModel().setValue("yem_residuepiece",
|
||||
// quantity.subtract(stuffingpiece.add(yem_sumpartspacks.getBigDecimal("yem_piecenum")))
|
||||
// , yem_sumpartspacks.getInt("seq") - 1);
|
||||
// if (index == -1) {
|
||||
// this.getView().showMessage("请先录入装柜信息");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
|
||||
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent)
|
||||
{
|
||||
Object returnData = closedCallBackEvent.getReturnData();
|
||||
//判断标识是否匹配,并验证返回值不为空,不验证返回值可能会报空指针
|
||||
if (StringUtils.equals(closedCallBackEvent.getActionId(), "yem_im_encasement") && null != closedCallBackEvent.getReturnData()) {
|
||||
@ -207,7 +176,8 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeDeleteRow(BeforeDeleteRowEventArgs e) {
|
||||
public void beforeDeleteRow(BeforeDeleteRowEventArgs e)
|
||||
{
|
||||
super.beforeDeleteRow(e);
|
||||
int[] index = e.getRowIndexs();
|
||||
EntryProp entryProp = e.getEntryProp();
|
||||
@ -220,7 +190,7 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
DynamicObject encasement = BusinessDataServiceHelper.loadSingle("yem_im_encasement",
|
||||
"yem_backentry.seq",
|
||||
new QFilter[]{new QFilter("yem_backentry.id", QCP.equals, pillarsid),});
|
||||
if (encasement != null) {
|
||||
if(encasement != null){
|
||||
DynamicObjectCollection encasements = encasement.getDynamicObjectCollection("yem_backentry");
|
||||
DynamicObjectCollection backentrys = this.getView().getModel().getEntryEntity("yem_backentry");
|
||||
for (DynamicObject encasementss : encasements) {
|
||||
@ -242,14 +212,14 @@ public class EncaseMentStuffingEdit extends AbstractBillPlugIn {
|
||||
if ("P".equals(businesssort_dw)) {
|
||||
BigDecimal pieces_det = (BigDecimal) this.getModel().getValue("yem_pieces_det", row);
|
||||
String yemPartsid = (String) this.getModel().getValue("yem_partsid", row);
|
||||
if ("".equals(yemPartsid)) {
|
||||
if ("".equals(yemPartsid)){
|
||||
continue;
|
||||
}
|
||||
Long partsid = Long.valueOf(yemPartsid);
|
||||
DynamicObject encasement = BusinessDataServiceHelper.loadSingle("yem_im_encasement",
|
||||
"yem_sumpartspack.seq",
|
||||
new QFilter[]{new QFilter("yem_sumpartspack.id", QCP.equals, partsid)});
|
||||
if (encasement != null) {
|
||||
if (encasement!=null){
|
||||
DynamicObjectCollection encasements = encasement.getDynamicObjectCollection("yem_sumpartspack");
|
||||
DynamicObjectCollection sumpartspacks = this.getView().getModel().getEntryEntity("yem_sumpartspack");
|
||||
for (DynamicObject encasementss : encasements) {
|
||||
|
@ -81,29 +81,25 @@ public class ExportInvoiceSaveOP extends AbstractOperationServicePlugIn {
|
||||
String yemLadbillnum = dataEntitie.getString("yem_ladbillnum");//提单号
|
||||
// queryString//合同号
|
||||
DynamicObjectCollection yem_shipports = dataEntitie.getDynamicObjectCollection("yem_shipports");//起运港
|
||||
if (!YEM.isEmpty(yem_shipports) && !yem_shipports.isEmpty()) {
|
||||
if (yem_shipports != null) {
|
||||
for (DynamicObject yemShipport : yem_shipports) {
|
||||
if (yemShipport != null) {
|
||||
String ssa = yemShipport.getDynamicObject("fbasedataid").getString("name");//起运港
|
||||
yemShipports.append(ssa);
|
||||
}
|
||||
String ssa = yemShipport.getDynamicObject("fbasedataid").getString("name");//起运港
|
||||
yemShipports.append(ssa);
|
||||
}
|
||||
}
|
||||
DynamicObjectCollection yem_Destports = dataEntitie.getDynamicObjectCollection("yem_destports");//目的港
|
||||
if (!YEM.isEmpty(yem_Destports) && !yem_Destports.isEmpty()) {
|
||||
if (yem_Destports != null) {
|
||||
for (DynamicObject yemShipport : yem_Destports) {
|
||||
if (yemShipport != null) {
|
||||
String string = yemShipport.getDynamicObject("fbasedataid").getString("name");
|
||||
yemDestports.append(string);//目的港
|
||||
}
|
||||
String string = yemShipport.getDynamicObject("fbasedataid").getString("name");
|
||||
yemDestports.append(string);//目的港
|
||||
}
|
||||
}
|
||||
BigDecimal stripTrailingZeros = new BigDecimal(totalAmount.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", ""));
|
||||
BigDecimal stripTrailingZeros1 = new BigDecimal(yemSeatransfee.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", ""));
|
||||
BigDecimal stripTrailingZeros2 = new BigDecimal(yemInsurefee.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", ""));
|
||||
dataEntitie.set("yem_remark", yemTradeway + " 成交总额:" + yemSettlement + stripTrailingZeros + " 汇率:" + yemExrate.stripTrailingZeros()
|
||||
+ "\r\n 海运费:" + yemseatransfeecurr + stripTrailingZeros1 + " 保险费:" + yeminsurefeecurr + stripTrailingZeros2
|
||||
+ "\r\n 提单号:" + yemLadbillnum + "\r\n 合同号:" + queryString + "\r\n 起运港:" + yemShipports + "\r\n 目的港:" + yemDestports);
|
||||
+ "\r\n 海运费:"+ yemseatransfeecurr + stripTrailingZeros1 + " 保险费:" + yeminsurefeecurr + stripTrailingZeros2
|
||||
+ "\r\n 提单号:"+ yemLadbillnum + "\r\n 合同号:"+ queryString + "\r\n 起运港:" + yemShipports + "\r\n 目的港:" + yemDestports);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,20 @@ package com.yem.wm.es.exportpresent.op;
|
||||
|
||||
import com.yem.wm.es.exportpresent.validator.ExportPresentSubmitValidator;
|
||||
import com.yem.wm.es.exportpresent.validator.ExportPresentSubmitsValidator;
|
||||
import com.yem.wm.es.shippingdetails.util.PaymentControlUtil;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
import static com.yem.wm.es.contractamtlist.util.FunUtil.getPayBills;
|
||||
import static com.yem.wm.es.contractamtlist.util.FunUtil.getShipBills;
|
||||
|
||||
/**
|
||||
* @Description 寄单放单申请提交
|
||||
@ -12,17 +23,42 @@ import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
* @Created by ZZSLL
|
||||
*/
|
||||
|
||||
public class ExportPresentSubmitOp extends AbstractOperationServicePlugIn {
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
|
||||
}
|
||||
|
||||
public class ExportPresentSubmitOp extends AbstractOperationServicePlugIn
|
||||
{
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
public void onAddValidators(AddValidatorsEventArgs e)
|
||||
{
|
||||
super.onAddValidators(e);
|
||||
e.addValidator(new ExportPresentSubmitValidator());
|
||||
e.addValidator(new ExportPresentSubmitsValidator());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e)
|
||||
{
|
||||
super.endOperationTransaction(e);
|
||||
DynamicObject[] eDataEntities = e.getDataEntities();
|
||||
String operationKey = e.getOperationKey();
|
||||
if ("submit".equals(operationKey)) {
|
||||
for (DynamicObject dataEntity : eDataEntities) {
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_es_exportpre_erf");
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
DynamicObject saleOrder = dynamicObject.getDynamicObject("yem_saleorder");
|
||||
if (saleOrder == null) continue;
|
||||
DynamicObject shipDetail = dynamicObject.getDynamicObject("yem_shipbill");
|
||||
if (shipDetail == null) continue;
|
||||
shipDetail = BusinessDataServiceHelper.loadSingle(shipDetail.getPkValue(), shipDetail.getDataEntityType().getName());
|
||||
saleOrder = BusinessDataServiceHelper.loadSingle(saleOrder.getPkValue(), saleOrder.getDataEntityType().getName());
|
||||
DynamicObject[] shipBills = getShipBills(saleOrder, dataEntity, "A");//出运
|
||||
DynamicObject[] payBills = getPayBills(saleOrder, dataEntity, "B");//收款单
|
||||
|
||||
BigDecimal thisRealityAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shipDetail);
|
||||
dynamicObject.set("yem_debtamt", thisRealityAmt.setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
String yemDetailordernumber = dataEntity.getString("yem_detailordernumber");
|
||||
dataEntity.set("yem_cloudhousetitle","寄单放单申请-"+yemDetailordernumber);
|
||||
}
|
||||
SaveServiceHelper.save(eDataEntities);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,11 +31,8 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
|
||||
// boolean isSendMessage = isTenDaysAfter();
|
||||
|
||||
// QFilter qFilter = RFUtils.getBaseQFilter();
|
||||
// qFilter.and(new QFilter("yem_isladingbill", "=", "A"));
|
||||
|
||||
QFilter qFilter = new QFilter("yem_es_exportpre_erw.yem_payment.yem_isladingbill", "=", "A");
|
||||
|
||||
QFilter qFilter = RFUtils.getBaseQFilter();
|
||||
qFilter.and(new QFilter("yem_isladingbill", "=", "A"));
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_es_exportpresent");
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_es_exportpresent", "yem_es_exportpre_erw");
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_exportpresent", selectfields, qFilter.toArray());
|
||||
@ -88,7 +85,7 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
BigDecimal climeAmt = PaymentControlUtil.getContractClimeAmt(salesorder, "F");
|
||||
if (receiveAmt.containsKey(billno)) {
|
||||
BigDecimal receive = receiveAmt.get(billno);
|
||||
if (climeAmt.compareTo(receive) < 0 && isClaimFinishedMap.containsKey(billno)) {
|
||||
if (receive.compareTo(climeAmt) < 0 && isClaimFinishedMap.containsKey(billno)) {
|
||||
isClaimFinishedMap.put(billno, false);
|
||||
}
|
||||
}
|
||||
@ -102,7 +99,7 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
ladingDateMap.put(billno, tddate);
|
||||
}
|
||||
|
||||
Map<Long, Set<String>> message = new HashMap<>();
|
||||
Map<Long, List<String>> message = new HashMap<>();
|
||||
for (DynamicObject d : load) {
|
||||
DynamicObjectCollection c = d.getDynamicObjectCollection("yem_es_exportpre_erw");
|
||||
for (DynamicObject subD : c) {
|
||||
@ -123,11 +120,11 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
DynamicObject operator = subD.getDynamicObject("yem_operator_e");
|
||||
if (operator == null) continue;
|
||||
long sendUser = operator.getLong("id");
|
||||
Set<String> list;
|
||||
List<String> list;
|
||||
if (message.containsKey(sendUser)) {
|
||||
list = message.get(sendUser);
|
||||
} else {
|
||||
list = new HashSet<>();
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
list.add(String.format("合同:%s,寄单放单单号:%s,应回款日期为:%s,请知悉!\n\r", contractnum, d.getString("billno"), DateUtils.getData(added, "yyyy-MM-dd")));
|
||||
message.put(sendUser, list);
|
||||
@ -138,7 +135,6 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
|
||||
Set<String> phone = new HashSet<>();
|
||||
phone.add("15771670073");
|
||||
phone.add("13127001705");
|
||||
ArrayList<Long> devUserIds = Lists.newArrayList();
|
||||
// 发给开发测试
|
||||
DynamicObject[] users = BusinessDataServiceHelper.load("bos_user", "id, name, phone", new QFilter[]{new QFilter("phone", "in", phone)});
|
||||
@ -146,9 +142,9 @@ public class ExportPresentWarningTask extends AbstractTask {
|
||||
devUserIds.add(user.getLong("id"));
|
||||
}
|
||||
|
||||
for (Map.Entry<Long, Set<String>> sendMsg : message.entrySet()) {
|
||||
for (Map.Entry<Long, List<String>> sendMsg : message.entrySet()) {
|
||||
Long userid = sendMsg.getKey();
|
||||
Set<String> messageContent = sendMsg.getValue();
|
||||
List<String> messageContent = sendMsg.getValue();
|
||||
ArrayList<Long> sendUserId = Lists.newArrayList();
|
||||
sendUserId.add(userid);//销售员
|
||||
sendUserId.addAll(devUserIds);
|
||||
|
@ -13,7 +13,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -36,8 +35,8 @@ public class ExportPresentSubmitValidator extends AbstractValidator {
|
||||
// 款项类型
|
||||
String paymenttype = dataEntity.getString("yem_paymenttype");
|
||||
|
||||
// // 是否见提单
|
||||
// String isladingbill = dataEntity.getString("yem_isladingbill");
|
||||
// 是否见提单
|
||||
String isladingbill = dataEntity.getString("yem_isladingbill");
|
||||
// 收汇信息
|
||||
DynamicObjectCollection receiveC = dataEntity.getDynamicObjectCollection("yem_es_exportpre_erf");
|
||||
DynamicObjectCollection detailC = dataEntity.getDynamicObjectCollection("yem_es_exportpre_el");
|
||||
@ -49,54 +48,42 @@ public class ExportPresentSubmitValidator extends AbstractValidator {
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_es_salesorder");
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_es_salesorder", "yem_es_salescontrac_s");
|
||||
Map<Object, DynamicObject> orders = BusinessDataServiceHelper.loadFromCache("yem_es_salesorder", selectfields, new QFilter[]{new QFilter("billno", "in", salesOrder)});
|
||||
DynamicObjectCollection payColl = dataEntity.getDynamicObjectCollection("yem_es_exportpre_erw");
|
||||
Map<Object, Boolean> isVail = new HashMap<>();
|
||||
for (Map.Entry<Object, DynamicObject> entry : orders.entrySet()) {
|
||||
DynamicObject order = entry.getValue();
|
||||
String billno = order.getString("billno");
|
||||
for (DynamicObject pay : payColl) {
|
||||
String contractnumC = pay.getString("yem_contractnum_c");
|
||||
DynamicObject payment = pay.getDynamicObject("yem_payment");
|
||||
String isladingbill = "B";
|
||||
if (payment.containsProperty("yem_isladingbill")) {
|
||||
payment = BusinessDataServiceHelper.loadSingleFromCache(payment.getPkValue(), payment.getDataEntityType().getName());
|
||||
isladingbill = payment.getString("yem_isladingbill");
|
||||
}
|
||||
if (billno.equals(contractnumC) && "A".equals(isladingbill)) {
|
||||
isVail.put(entry.getKey(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ("A".equals(paymenttype)) {
|
||||
|
||||
prePayAmtValidator(data, orders, isVail, receiveC);
|
||||
if ("A".equals(isladingbill)) {
|
||||
prePayAmtValidator(data, orders, detailC, receiveC);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void prePayAmtValidator(ExtendedDataEntity data, Map<Object, DynamicObject> orders, Map<Object, Boolean> isVail, DynamicObjectCollection receiveC) {
|
||||
/**
|
||||
* 0、见提单并且100%L/C,100%OA、100%DP、100%DA并且没有预收款:判断预收款项是否认领完成
|
||||
* 0、见提单并且100%L/C,100%OA、100%DP、100%DA并且有预收款:只判断预收款项是否认领完成
|
||||
* 通过或不进行1234校验
|
||||
* 1、见提单并且正常款项:判断合同是否认领完成
|
||||
* 2、见提单并且特殊款项:判断合同是否认领完成
|
||||
* 1或2通过不进行后续校验
|
||||
* 3、未件提单并且正常款项:判断合同是否认领完成
|
||||
* 4、未件提单并且特殊款项:判断合同是否认领完成
|
||||
* 3或4通过不进行后续校验
|
||||
*
|
||||
*/
|
||||
private void prePayAmtValidator(ExtendedDataEntity data, Map<Object, DynamicObject> orders, DynamicObjectCollection detailC, DynamicObjectCollection receiveC) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Map.Entry<Object, DynamicObject> entry : orders.entrySet()) {
|
||||
boolean isDoVail = false;
|
||||
if (isVail.containsKey(entry.getKey())) {
|
||||
isDoVail = isVail.get(entry.getKey());
|
||||
}
|
||||
|
||||
DynamicObject order = entry.getValue();
|
||||
BigDecimal shipPreRapRate = PaymentControlUtil.getShipPreRapRate(order);
|
||||
BigDecimal procPreRapRate = PaymentControlUtil.getProcPreRapRate(order);
|
||||
// 该合同是否包含预付
|
||||
boolean isPre = shipPreRapRate.add(procPreRapRate).compareTo(BigDecimal.ZERO) > 0;
|
||||
DynamicObjectCollection collection = order.getDynamicObjectCollection("yem_es_salescontrac_s");
|
||||
boolean isSpecialRapStyle = false;
|
||||
for (DynamicObject d : collection) {
|
||||
DynamicObject rapstyle = d.getDynamicObject("yem_rapstyle_c");
|
||||
if (YEM.isNotEmpty(rapstyle) && "D/A JSFS08 L/C OA D/A O/A".contains(rapstyle.getString("number"))) {
|
||||
BigDecimal raprate = d.getBigDecimal("yem_raprate");
|
||||
if (raprate.compareTo(new BigDecimal("100")) == 0) {
|
||||
isSpecialRapStyle = true;
|
||||
}
|
||||
if (YEM.isNotEmpty(rapstyle) && "D/A JSFS08 L/C OA D/A".contains(rapstyle.getString("number"))) {
|
||||
isSpecialRapStyle = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,40 +92,29 @@ public class ExportPresentSubmitValidator extends AbstractValidator {
|
||||
String billno = order.getString("billno");
|
||||
// 合同已认领金额
|
||||
BigDecimal climeAmt = PaymentControlUtil.getContractClimeAmt(order, "");
|
||||
// 只判断预付款是否认领完成
|
||||
if (isSpecialRapStyle && isPre) {
|
||||
BigDecimal climeAmtShip = PaymentControlUtil.getContractClimeAmt(order, "D");
|
||||
BigDecimal climeAmtProc = PaymentControlUtil.getContractClimeAmt(order, "E");
|
||||
|
||||
if (isSpecialRapStyle) {
|
||||
if (climeAmt.compareTo(offeramount) < 0) {
|
||||
sb.append(String.format("合同 [ %s ] ,合同金额 [ %s ], 合同已认领金额合计 [ %s ],合同未认领完成,请全部认领后提交单据!",
|
||||
BigDecimal climePreAmt = climeAmtShip.add(climeAmtProc);
|
||||
|
||||
BigDecimal shipAmt = PaymentControlUtil.getAdvancePayment(shipPreRapRate, offeramount);
|
||||
BigDecimal procAmt = PaymentControlUtil.getAdvancePayment(procPreRapRate, offeramount);
|
||||
|
||||
BigDecimal orderPreAmt = shipAmt.add(procAmt);
|
||||
|
||||
if (climePreAmt.compareTo(orderPreAmt) < 0) {
|
||||
sb.append(String.format("合同 [ %s ] ,合同预收金额 [ %s ], 合同预收已认领金额合计 [ %s ],合同预收款未认领完成,请核对后提交!(L/C、OA、DP、DA)",
|
||||
billno,
|
||||
offeramount.setScale(4, RoundingMode.HALF_UP).toPlainString(),
|
||||
climeAmt.setScale(4, RoundingMode.HALF_UP).toPlainString())).append("\r\n");
|
||||
orderPreAmt.setScale(4, RoundingMode.HALF_UP).toPlainString(),
|
||||
climePreAmt.setScale(4, RoundingMode.HALF_UP).toPlainString())).append("\r\n");
|
||||
}
|
||||
} else {
|
||||
// 只判断预付款是否认领完成
|
||||
if (!isDoVail) {
|
||||
BigDecimal climeAmtShip = PaymentControlUtil.getContractClimeAmt(order, "D");
|
||||
BigDecimal climeAmtProc = PaymentControlUtil.getContractClimeAmt(order, "E");
|
||||
|
||||
BigDecimal climePreAmt = climeAmtShip.add(climeAmtProc);
|
||||
|
||||
BigDecimal shipAmt = PaymentControlUtil.getAdvancePayment(shipPreRapRate, offeramount);
|
||||
BigDecimal procAmt = PaymentControlUtil.getAdvancePayment(procPreRapRate, offeramount);
|
||||
|
||||
BigDecimal orderPreAmt = shipAmt.add(procAmt);
|
||||
orderPreAmt = orderPreAmt.setScale(4, RoundingMode.HALF_UP);
|
||||
climePreAmt = climePreAmt.setScale(4, RoundingMode.HALF_UP);
|
||||
if (climePreAmt.compareTo(orderPreAmt) < 0) {
|
||||
sb.append(String.format("合同 [ %s ] ,合同预收金额 [ %s ], 合同预收已认领金额合计 [ %s ],合同预收款未认领完成,请核对后提交!",
|
||||
billno,
|
||||
orderPreAmt.toPlainString(),
|
||||
climePreAmt.toPlainString())).append("\r\n");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
if (climeAmt.compareTo(offeramount) < 0) {
|
||||
sb.append(String.format("合同 [ %s ] ,合同金额 [ %s ], 合同已认领金额合计 [ %s ],合同未认领完成,请全部认领后提交单据!",
|
||||
if (climeAmt.compareTo(offeramount) < 0) {
|
||||
boolean passed = arrearsVerification(data.getDataEntity(), data, receiveC);
|
||||
if (!passed) {
|
||||
sb.append(String.format("合同 [ %s ] ,合同金额 [ %s ], 合同已认领金额合计 [ %s ],合同未认领完成,请核对后提交!",
|
||||
billno,
|
||||
offeramount.setScale(4, RoundingMode.HALF_UP).toPlainString(),
|
||||
climeAmt.setScale(4, RoundingMode.HALF_UP).toPlainString())).append("\r\n");
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.yem.wm.es.exportpresent.validator;
|
||||
|
||||
import com.yem.wm.es.shippingdetails.util.PaymentControlUtil;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
@ -10,17 +9,12 @@ import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static com.yem.wm.es.contractamtlist.util.FunUtil.getPayBills;
|
||||
import static com.yem.wm.es.contractamtlist.util.FunUtil.getShipBills;
|
||||
|
||||
/**
|
||||
* @author ljw
|
||||
* @date 2024/9/24 19:04
|
||||
@ -38,22 +32,6 @@ public class ExportPresentSubmitsValidator extends AbstractValidator {
|
||||
if ("A".equals(paymenttype)) {
|
||||
arrearsVerification(dataEntity, data);
|
||||
}
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_es_exportpre_erf");
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
DynamicObject saleOrder = dynamicObject.getDynamicObject("yem_saleorder");
|
||||
if (saleOrder == null) continue;
|
||||
DynamicObject shipDetail = dynamicObject.getDynamicObject("yem_shipbill");
|
||||
if (shipDetail == null) continue;
|
||||
shipDetail = BusinessDataServiceHelper.loadSingle(shipDetail.getPkValue(), shipDetail.getDataEntityType().getName());
|
||||
saleOrder = BusinessDataServiceHelper.loadSingle(saleOrder.getPkValue(), saleOrder.getDataEntityType().getName());
|
||||
DynamicObject[] shipBills = getShipBills(saleOrder, dataEntity, "A");//出运
|
||||
DynamicObject[] payBills = getPayBills(saleOrder, dataEntity, "B");//收款单
|
||||
|
||||
BigDecimal thisRealityAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shipDetail);
|
||||
dynamicObject.set("yem_debtamt", thisRealityAmt.setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
dataEntity.set("yem_cloudhousetitle", "标准出口交单-" + dataEntity.getString("billno") + "-" + dataEntity.getString("yem_salarcontractnum"));
|
||||
SaveServiceHelper.update(dataEntity);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,8 +136,6 @@ public class SaleOrderCreditFromEdit extends AbstractBillPlugIn implements Befor
|
||||
products = "CC";
|
||||
} else if (number.contains("TLJ")) {
|
||||
products = "TLJ";
|
||||
}else if (number.contains("WJJ")){
|
||||
products = "WJJ";
|
||||
}
|
||||
}
|
||||
|
||||
@ -320,8 +318,6 @@ public class SaleOrderCreditFromEdit extends AbstractBillPlugIn implements Befor
|
||||
products = "CC";
|
||||
} else if (number.contains("TLJ")) {
|
||||
products = "TLJ";
|
||||
}else if (number.contains("WJJ")){
|
||||
products = "WJJ";
|
||||
}
|
||||
}
|
||||
QFilter qFilter2 = new QFilter("billstatus", QCP.equals, "C");//
|
||||
|
@ -47,8 +47,6 @@ import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||
import kd.bos.form.operate.FormOperate;
|
||||
import kd.bos.list.ListFilterParameter;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
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.AttachmentServiceHelper;
|
||||
@ -72,7 +70,6 @@ import static com.yem.wm.es.salesorder.utils.SalesOrderUtils.*;
|
||||
*/
|
||||
public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||
|
||||
private final static Log log = LogFactory.getLog(SalesOrderEdit.class);
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
@ -154,7 +151,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
IFormView view = this.getView();
|
||||
setLockIfSignBtn();
|
||||
System.out.println();
|
||||
setUnQty();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -165,6 +161,8 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
// String billno = dataEntity.getString("billno");
|
||||
// String customBillno = SalesOrderUtils.replaceSerialNumberWithLetters(billno, dataEntity.getDataEntityType().getName());
|
||||
// dataEntity.set("billno", customBillno);
|
||||
|
||||
setUnQty();
|
||||
// genShipPortEnName(model, this.getView());
|
||||
String yemAccamtusetype = (String) model.getValue("yem_accamtusetype");
|
||||
extracted(yemAccamtusetype);
|
||||
@ -269,8 +267,8 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
int rowIndex = changeData.getRowIndex();
|
||||
DynamicObject dataEntity = model.getDataEntity(true);
|
||||
String yemCntype = (String) model.getValue("yem_cntypes");
|
||||
// BigDecimal yemcommissionamtba = (BigDecimal) this.getModel().getValue("yem_commissionamtba");
|
||||
// BigDecimal yemCnexrate = (BigDecimal) this.getModel().getValue("yem_cnexrate");
|
||||
BigDecimal yemcommissionamtba = (BigDecimal) this.getModel().getValue("yem_commissionamtba");
|
||||
BigDecimal yemCnexrate = (BigDecimal) this.getModel().getValue("yem_cnexrate");
|
||||
DynamicObject org = (DynamicObject) this.getModel().getValue("org");
|
||||
DynamicObject cncurrency = (DynamicObject) this.getModel().getValue("yem_cncurrency");
|
||||
DynamicObject currencybase = (DynamicObject) this.getModel().getValue("yem_currencybase");
|
||||
@ -343,19 +341,19 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
}
|
||||
break;
|
||||
//计算佣金汇率
|
||||
// case "yem_cncurrency":
|
||||
// this.getModel().setValue("yem_cnexrate", null);
|
||||
// case "yem_currencybase":
|
||||
// case "org":
|
||||
// case "yem_exratedate":
|
||||
// case "yem_exratetable":
|
||||
// if (org != null && cncurrency != null && currencybase != null && exratetable != null) {
|
||||
// BigDecimal exchangeRate = CommonUtils.getExchangeRate(exratetable.getLong("id"), cncurrency.getLong("id"), currencybase.getLong("id"),
|
||||
// org.getLong("id"), exratedate);
|
||||
// this.getModel().setValue("yem_cnexrate", exchangeRate);
|
||||
//
|
||||
// }
|
||||
// break;
|
||||
case "yem_cncurrency":
|
||||
this.getModel().setValue("yem_cnexrate", null);
|
||||
case "yem_currencybase":
|
||||
case "org":
|
||||
case "yem_exratedate":
|
||||
case "yem_exratetable":
|
||||
if (org != null && cncurrency != null && currencybase != null && exratetable != null) {
|
||||
BigDecimal exchangeRate = CommonUtils.getExchangeRate(exratetable.getLong("id"), cncurrency.getLong("id"), currencybase.getLong("id"),
|
||||
org.getLong("id"), exratedate);
|
||||
this.getModel().setValue("yem_cnexrate", exchangeRate);
|
||||
|
||||
}
|
||||
break;
|
||||
case "yem_fundusetype":
|
||||
// 资金使用类型字段切换时,清空 配件客商/借记额度
|
||||
this.getModel().setValue("yem_debitamount", null);
|
||||
@ -398,7 +396,7 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
genTradeTerms(model.getDataEntity(true), view);
|
||||
DynamicObjectCollection yemEsMaterialinfo = this.getModel().getEntryEntity("yem_es_materialinfo");
|
||||
for (DynamicObject dynamicObject : yemEsMaterialinfo) {
|
||||
dynamicObject.set("yem_port", model.getValue("yem_shipports"));
|
||||
dynamicObject.set("yem_port",model.getValue("yem_shipports"));
|
||||
}
|
||||
break;
|
||||
case "yem_destports":
|
||||
@ -469,67 +467,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
// model.setValue("yem_departure", yemShipportsename, row);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 客户需求单、外销合同的价格条款为FCA时,贸易术语=价格条款+目的港.工厂
|
||||
*
|
||||
* @param model
|
||||
* @param view
|
||||
*/
|
||||
public static void genTradeTermsDestports(IDataModel model, IFormView view) {
|
||||
DynamicObject priceitem = (DynamicObject) model.getValue("yem_priceitem");
|
||||
String priceitemString = "";
|
||||
if (priceitem != null) {
|
||||
priceitemString = priceitem.getString("name");
|
||||
}
|
||||
if ("FCA".equals(priceitemString)) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("FCA ");
|
||||
DynamicObjectCollection destports = (DynamicObjectCollection) model.getValue("yem_shipports");
|
||||
for (DynamicObject destport : destports) {
|
||||
DynamicObject port = destport.getDynamicObject("fbasedataid");
|
||||
if (port == null) continue;
|
||||
port = BusinessDataServiceHelper.loadSingle(port.getPkValue(), port.getDataEntityType().getName(), "yem_namecn");
|
||||
if (!port.getString("yem_namecn").isEmpty()) {
|
||||
sb.append(port.getString("yem_namecn")).append(";");
|
||||
}
|
||||
}
|
||||
if (sb.lastIndexOf(";") == sb.length() - 1) {
|
||||
sb.deleteCharAt(sb.length() - 1);
|
||||
}
|
||||
model.setValue("yem_tradeterms", sb.toString());
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 客户需求单、外销合同的价格条款为FCA时,贸易术语=价格条款+目的港.工厂
|
||||
// *
|
||||
// * @param model
|
||||
// * @param view
|
||||
// */
|
||||
// public static void genTradeTermsShipports(IDataModel model, IFormView view) {
|
||||
// DynamicObject priceitem = (DynamicObject) model.getValue("yem_priceitem");
|
||||
// String priceitemString = "";
|
||||
// if (priceitem != null) {
|
||||
// priceitemString = priceitem.getString("name");
|
||||
// }
|
||||
// if ("EXW".equals(priceitemString)) {
|
||||
// StringBuilder sb = new StringBuilder();
|
||||
// sb.append("EXW ");
|
||||
// DynamicObjectCollection shipports = (DynamicObjectCollection) model.getValue("yem_destports");
|
||||
// for (DynamicObject shipport : shipports) {
|
||||
// DynamicObject port = shipport.getDynamicObject("fbasedataid");
|
||||
// if (port == null) continue;
|
||||
// port = BusinessDataServiceHelper.loadSingle(port.getPkValue(), port.getDataEntityType().getName(), "yem_factory");
|
||||
// if (!port.getString("yem_factory").isEmpty()) {
|
||||
// sb.append(port.getString("yem_factory")).append(";");
|
||||
// }
|
||||
// }
|
||||
// if (sb.lastIndexOf(";") == sb.length() - 1) {
|
||||
// sb.deleteCharAt(sb.length() - 1);
|
||||
// }
|
||||
// model.setValue("yem_tradeterms", sb.toString());
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 方数携带
|
||||
@ -621,7 +558,7 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
String string = yemBillbusstype.getString("number");
|
||||
if (string.equals("BBT-2")) {
|
||||
map.put("按金额(折扣)", "A");
|
||||
// map.put("按比例(折扣)", "B");
|
||||
map.put("按比例(折扣)", "B");
|
||||
}
|
||||
if ("BBT-3".equals(string) || "BBT-5".equals(string) || "BBT-4".equals(string)) {
|
||||
map.put("按金额(全额抵扣)", "C");
|
||||
@ -733,28 +670,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
model.setValue("yem_hscode", hscodebase.getLong("id"), rowIndex);
|
||||
carryDeclaration(model, view, rowIndex, load, hscodebase);
|
||||
}
|
||||
} else if (loads.length > 0) {
|
||||
List<DynamicObject> list = new ArrayList<>();
|
||||
for (DynamicObject load : loads) {
|
||||
boolean yemWhetheritdefaults = load.getBoolean("yem_whetheritdefaults");
|
||||
if (yemWhetheritdefaults) {
|
||||
list.add(load);
|
||||
}
|
||||
}
|
||||
if (list.size() == 1) {
|
||||
DynamicObject load = list.get(0);
|
||||
load = BusinessDataServiceHelper.loadSingle(load.getPkValue(), load.getDynamicObjectType().getName());
|
||||
DynamicObject customclass = load.getDynamicObject("yem_customclass");
|
||||
if (YEM.isNotEmpty(customclass)) {
|
||||
model.setValue("yem_customclass", customclass.getLong("id"), rowIndex);
|
||||
}
|
||||
DynamicObject hscodebase = load.getDynamicObject("yem_hscodebase");
|
||||
if (YEM.isNotEmpty(hscodebase)) {
|
||||
hscodebase = BusinessDataServiceHelper.loadSingle(hscodebase.getPkValue(), hscodebase.getDynamicObjectType().getName());
|
||||
model.setValue("yem_hscode", hscodebase.getLong("id"), rowIndex);
|
||||
carryDeclaration(model, view, rowIndex, load, hscodebase);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -793,11 +708,11 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
|
||||
DynamicObject billtype = (DynamicObject) model.getValue("yem_billtype");
|
||||
String type = billtype.getString("number");
|
||||
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase(type, "zj")||"yem_es_storagetrans".equals(type)) {
|
||||
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase(type, "zj")) {
|
||||
if ("Z".equals(businesssort)) {
|
||||
if (YEM.isNotEmpty(productmodel)) {
|
||||
id = productmodel.getLong("id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_baseproductstree.id", QCP.equals, id));
|
||||
id = productmodel.getLong("yem_products.id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_productstree.id", QCP.equals, id));
|
||||
qFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
}
|
||||
}
|
||||
@ -1259,7 +1174,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
|
||||
yem_shippingplan_entry.set("yem_plan_businesssort", key);
|
||||
}
|
||||
log.info("执行 计算已下单数量==");
|
||||
// 生成跟单任务控制台(2023-09-28禁用)
|
||||
SalesOrderUtils.cal_yem_orderqty(dataEntity);
|
||||
SaveServiceHelper.save(new DynamicObject[]{dataEntity});
|
||||
@ -1547,10 +1461,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
BigDecimal yem_thisqty = BigDecimal.ZERO;
|
||||
for (int i = 0; i < yem_es_materialinfo_s.size(); i++) {
|
||||
DynamicObject yem_es_materialinfo = yem_es_materialinfo_s.get(i);
|
||||
boolean yemIsgift = yem_es_materialinfo.getBoolean("yem_isgift");
|
||||
if (yemIsgift) {
|
||||
continue;
|
||||
}
|
||||
long yem_sourceentryid = yem_es_materialinfo.getLong("yem_sourceentryid");
|
||||
DynamicObject yem_plandetail_entry = (DynamicObject) yem_plandetail_entry_map.get(yem_sourceentryid);
|
||||
if (yem_plandetail_entry != null) {
|
||||
@ -1579,7 +1489,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
|
||||
}
|
||||
|
||||
|
||||
// if ("Z".equals(key)) {
|
||||
DynamicObjectCollection yem_multiconfig_s = yem_es_materialinfo.getDynamicObjectCollection("yem_multiconfig");
|
||||
for (int j = 0; j < yem_multiconfig_s.size(); j++) {
|
||||
@ -2006,25 +1915,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
if ("submit".equals(operateKey)) {
|
||||
setNewpPrice(dataEntity, view);
|
||||
checkGiftsGivenNumber(dataEntity, e);
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_es_salesorder_zp");
|
||||
Map<Long, BigDecimal> map = new HashMap<>();
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
DynamicObject yemGiveproactype = dynamicObject.getDynamicObject("yem_giveproactype");
|
||||
if (yemGiveproactype != null) {
|
||||
long aLong = yemGiveproactype.getLong("id");
|
||||
BigDecimal yemSingleamt = dynamicObject.getBigDecimal("yem_singleamt");
|
||||
if (map.get(aLong) != null) {
|
||||
if (map.get(aLong).compareTo(yemSingleamt) != 0) {
|
||||
// ConfirmCallBackListener confirmCallBackListener = new ConfirmCallBackListener("checkGiftsGivenNumber", this);
|
||||
// this.getView().showConfirm("赠送配件分录同一机型存在多个单台配件金额,请检查后在进行提交!!!", MessageBoxOptions.OKCancel, confirmCallBackListener);
|
||||
this.getView().showMessage("赠送配件分录同一机型存在多个单台配件金额,请检查后在进行提交!!!");
|
||||
e.setCancel(true);
|
||||
}
|
||||
} else {
|
||||
map.put(aLong, yemSingleamt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ("save".equals(operateKey)) {
|
||||
@ -2047,7 +1937,6 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
DynamicObjectCollection giftCollection = dataEntity.getDynamicObjectCollection("yem_es_salesorder_zp");
|
||||
DynamicObjectCollection materialinfo = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
Map<Long, BigDecimal> map = new HashMap<>();
|
||||
Map<Long, BigDecimal> maps = new HashMap<>();
|
||||
for (DynamicObject dynamicObject : materialinfo) {
|
||||
String businesssort = dynamicObject.getString("yem_businesssort");
|
||||
boolean ifgift = dynamicObject.getBoolean("yem_ifgift");
|
||||
@ -2070,25 +1959,18 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (DynamicObject dynamicObject : giftCollection) {
|
||||
// int index = giftCollection.indexOf(dynamicObject);
|
||||
int index = giftCollection.indexOf(dynamicObject);
|
||||
DynamicObject giveproactype = dynamicObject.getDynamicObject("yem_giveproactype");
|
||||
BigDecimal qtyint = dynamicObject.getBigDecimal("yem_qtyint");
|
||||
if (giveproactype == null) continue;
|
||||
long id = giveproactype.getLong("id");
|
||||
if (maps.containsKey(id)) {
|
||||
maps.put(id, maps.get(id).add(qtyint));
|
||||
} else {
|
||||
maps.put(id, qtyint);
|
||||
}
|
||||
}
|
||||
for (Long id : maps.keySet()) {
|
||||
if (map.containsKey(id)) {
|
||||
BigDecimal qty = map.get(id);
|
||||
if (maps.get(id).compareTo(qty) != 0) {
|
||||
sb.append("配件赠送明细赠送的数量和明细信息中相关机型数量不一致!\n");
|
||||
BigDecimal qtyint = dynamicObject.getBigDecimal("yem_qtyint");
|
||||
if (qtyint.compareTo(qty) != 0) {
|
||||
sb.append(String.format("配件赠送明细第 [ %s ] 行,赠送的数量和明细信息中相关机型数量不一致!\n", index + 1));
|
||||
}
|
||||
} else {
|
||||
sb.append("配件赠送明细赠送的数量和明细信息中相关机型数量不一致!\n");
|
||||
sb.append(String.format("配件赠送明细第 [ %s ] 行,赠送的数量和明细信息中相关机型数量不一致!\n", index + 1));
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,19 +368,10 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价
|
||||
ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别
|
||||
ClientUtils.calculateInsurancePremiums(rowIndex, model);//保险费
|
||||
// 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.calculateCreditAmount(rowIndex, model);//信保费
|
||||
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
|
||||
break;
|
||||
|
||||
case "yem_onecarsum":
|
||||
ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价
|
||||
// ClientUtils.totalSaFobAmount(model, "yem_es_materialinfo", "yem_ifgift", "yem_onecarsum", "yem_sumcost");//单车总费用 汇总表头 总费用
|
||||
@ -457,7 +448,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
break;
|
||||
case "yem_raprate":
|
||||
TotalUtil.countRapAmt(model, "yem_es_salescontrac_s");
|
||||
// ClientUtils.calculateCreditAmount(-1, model);//信保费
|
||||
ClientUtils.calculateCreditAmount(-1, model);//信保费
|
||||
ClientUtils.calculateBankInterestCharges(-1, model);//银行利息费
|
||||
break;
|
||||
case "yem_rapamt":
|
||||
@ -516,12 +507,12 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
break;
|
||||
case "yem_sinosurerate"://信保费率
|
||||
case "yem_issinosure"://是否信保
|
||||
// ClientUtils.calculateCreditAmount(-1, model);//信保费
|
||||
ClientUtils.calculateCreditAmount(-1, model);//信保费
|
||||
ClientUtils.calculateBankInterestCharges(-1, model);//银行利息费
|
||||
break;
|
||||
case "yem_e_seafreight":// 海运费
|
||||
ClientUtils.calculateInsurancePremiums(rowIndex, model);//保险费
|
||||
// ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
|
||||
ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
|
||||
ClientUtils.calculateBankInterestCharges(rowIndex, model);//银行利息费
|
||||
break;
|
||||
case "yem_insuranceaddrate"://保险加成率
|
||||
@ -531,11 +522,14 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
ClientUtils.calculateInsurancePremiums(-1, model);//保险费
|
||||
break;
|
||||
case "yem_e_marinsupreamt"://保险费
|
||||
// ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
|
||||
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);//信保费
|
||||
ClientUtils.calculateCreditAmount(rowIndex, model);//信保费
|
||||
break;
|
||||
case "yem_interestdays":
|
||||
ClientUtils.calculateBankInterestCharges(-1, model);//银行利息费
|
||||
@ -625,12 +619,10 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
IDataModel model = this.getModel();
|
||||
DynamicObject dynamicObject = model.getDataEntity(true);
|
||||
DynamicObject giveproactype = (DynamicObject) model.getValue("yem_giveproactype", rowIndex);
|
||||
BigDecimal yemSingleamt = (BigDecimal) model.getValue("yem_singleamt", rowIndex);
|
||||
if (giveproactype == null) return;
|
||||
DynamicObjectCollection materialinfo = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
BigDecimal qty = BigDecimal.ZERO;
|
||||
for (DynamicObject object : materialinfo) {
|
||||
BigDecimal yemSinglepartgiftmat = object.getBigDecimal("yem_singlepartgiftmat");
|
||||
String businesssort = object.getString("yem_businesssort");
|
||||
boolean ifgift = object.getBoolean("yem_ifgift");
|
||||
if ("Z".equals(businesssort) && !ifgift) {
|
||||
@ -638,7 +630,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
if (productmodel == null) continue;
|
||||
productmodel = BusinessDataServiceHelper.loadSingle(productmodel.getPkValue(), productmodel.getDynamicObjectType().getName());
|
||||
DynamicObject products = productmodel.getDynamicObject("yem_products");
|
||||
if (products != null && products.getLong("id") == giveproactype.getLong("id")&&yemSingleamt.compareTo(yemSinglepartgiftmat)==0) {
|
||||
if (products != null && products.getLong("id") == giveproactype.getLong("id")) {
|
||||
qty = qty.add(object.getBigDecimal("yem_qty"));
|
||||
}
|
||||
}
|
||||
@ -1450,9 +1442,6 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo
|
||||
for (DynamicObject machineInfo : machineInfos) {//跟单任务控制台 整机生产信息
|
||||
long machineInfoId = machineInfo.getLong("id");
|
||||
DynamicObject saleMachineInfo = saleMachineInfosMap.get(machineInfoId);
|
||||
if (saleMachineInfo==null){
|
||||
continue;
|
||||
}
|
||||
machineInfo.set("yem_resourcescode", saleMachineInfo.get("yem_resourcescode"));//资源号
|
||||
machineInfo.set("yem_milltype", saleMachineInfo.get("yem_milltype"));//机型
|
||||
machineInfo.set("yem_yieldway", saleMachineInfo.get("yem_yieldway"));//物料属性
|
||||
|
@ -10,7 +10,9 @@ import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.entity.validate.ValidateResultCollection;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
@ -68,7 +70,6 @@ public class CreateCreditNoteBillOp extends AbstractOperationServicePlugIn imple
|
||||
debCredNote.set("yem_credittype",accFundDetail.get("yem_debcredtype"));//贷记类型
|
||||
DynamicObject debCredNoteCurr = accFundDetail.getDynamicObject("yem_debcrednotecurr");
|
||||
debCredNote.set("yem_currency",debCredNoteCurr);//结算币别
|
||||
debCredNote.set("yem_sale_type",dataEntitie.getString("yem_sale_type"));//出口
|
||||
if(YEM.isNotEmpty(useDebCredNoteNo)){
|
||||
useDebCredNoteNo = BusinessDataServiceHelper.loadSingle(useDebCredNoteNo.getPkValue(),useDebCredNoteNo.getDynamicObjectType().getName());
|
||||
useRate = useDebCredNoteNo.getBigDecimal("yem_exrate");
|
||||
@ -79,8 +80,6 @@ public class CreateCreditNoteBillOp extends AbstractOperationServicePlugIn imple
|
||||
debCredNote.set("yem_amount_sub",debCUseAmt);//配件资金池扣减金额
|
||||
debCredNote.set("yem_amountbase_sub",useRate.multiply(debCUseAmt));//配件资金池扣减金额本位币
|
||||
|
||||
debCredNote.set("yem_accessories", dataEntitie.getString("yem_accessories"));
|
||||
debCredNote.set("yem_wholemachine", dataEntitie.getString("yem_wholemachine"));
|
||||
DynamicObjectCollection destinations = debCredNote.getDynamicObjectCollection("yem_creditnotedes");
|
||||
DynamicObject addNew = destinations.addNew();
|
||||
addNew.set("yem_contractno_d",dataEntitie);//合同号
|
||||
|
@ -14,8 +14,6 @@ import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
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;
|
||||
@ -23,6 +21,9 @@ import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.fi.gl.accountref.handler.SaveBalDataHandler;
|
||||
import kd.fi.gl.balcal.carriedintoleaf.SaveBalanceHandler;
|
||||
import kd.hr.hies.common.enu.Operate;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
@ -37,9 +38,6 @@ import java.util.Map;
|
||||
* @description 生成贷记单
|
||||
*/
|
||||
public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
|
||||
private final static Log log = LogFactory.getLog(SaleOrdeAddGenerateOp.class);
|
||||
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
|
||||
@ -81,7 +79,6 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
if (yem_debcreditid == 0) {
|
||||
DynamicObject debcrednote = BusinessDataServiceHelper.newDynamicObject("yem_debcrednote");
|
||||
debcrednote.set("billstatus", "A");
|
||||
debcrednote.set("yem_financialcon_status", "B");
|
||||
debcrednote.set("yem_billtype", seelctDyn("bos_billtype", "number", "yem_debcrednote_d"));
|
||||
debcrednote.set("yem_customer", dataEntitie.getDynamicObject("yem_customer"));
|
||||
debcrednote.set("yem_bizdate", new Date());
|
||||
@ -92,10 +89,6 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
debcrednote.set("yem_sourcecreditno", DebCredUtils.getsourcecreditno(dataEntitie, accfunddetail.getDynamicObject("yem_debcredtype"),accfunddetail.getString("yem_debcred")));
|
||||
debcrednote.set("yem_sourcebillno", dataEntitie.getString("billno"));
|
||||
debcrednote.set("yem_source", dataEntitie.getString("billno"));
|
||||
debcrednote.set("yem_accessories", dataEntitie.getString("yem_accessories"));
|
||||
debcrednote.set("yem_wholemachine", dataEntitie.getString("yem_wholemachine"));
|
||||
debcrednote.set("yem_sale_type",dataEntitie.getString("yem_sale_type"));//出口
|
||||
|
||||
String products = "";
|
||||
DynamicObject yem_bd_products = dataEntitie.getDynamicObject("yem_bd_products");
|
||||
if (yem_bd_products != null) {
|
||||
@ -106,8 +99,6 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
products = "CC";
|
||||
} else if (number.contains("TLJ")) {
|
||||
products = "TLJ";
|
||||
}else if (number.contains("WJJ")){
|
||||
products = "WJJ";
|
||||
}
|
||||
}
|
||||
debcrednote.set("yem_bd_products", seelctDyn("yem_bd_productsgroup", "number", products));
|
||||
@ -158,7 +149,6 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
}
|
||||
debcrednote.set("yem_amount_sub",yem_amount_sub);
|
||||
debcrednote.set("yem_amountbase_sub",yem_amountbase_sub);
|
||||
// SaveServiceHelper.save(new DynamicObject[]{debcrednote});
|
||||
OperationResult Operate = OperationServiceHelper.executeOperate("save", debcrednote.getDynamicObjectType().getName(), new DynamicObject[]{debcrednote}, OperateOption.create());
|
||||
if (Operate.isSuccess()) {
|
||||
OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "yem_debcrednote", new Object[]{debcrednote.getPkValue()}, OperateOption.create());
|
||||
@ -177,14 +167,12 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn {
|
||||
} else {
|
||||
List<IOperateInfo> allErrorOrValidateInfo = auditResult.getAllErrorOrValidateInfo();
|
||||
String message = auditResult.getMessage();
|
||||
// throw new KDBizException("贷记单审核失败," + message + "," + allErrorOrValidateInfo);
|
||||
log.error("贷记单审核失败," + message + "," + allErrorOrValidateInfo);
|
||||
throw new KDBizException("贷记单审核失败," + message + "," + allErrorOrValidateInfo);
|
||||
}
|
||||
} else {
|
||||
List<IOperateInfo> allErrorOrValidateInfo = submitResult.getAllErrorOrValidateInfo();
|
||||
String message = submitResult.getMessage();
|
||||
// throw new KDBizException("贷记单提交失败," + message + "," + allErrorOrValidateInfo);
|
||||
log.error("贷记单提交失败," + message + "," + allErrorOrValidateInfo);
|
||||
throw new KDBizException("贷记单提交失败," + message + "," + allErrorOrValidateInfo);
|
||||
}
|
||||
} else {
|
||||
List<IOperateInfo> allErrorOrValidateInfo = Operate.getAllErrorOrValidateInfo();
|
||||
|
@ -1,123 +0,0 @@
|
||||
package com.yem.wm.es.salesorder.task;
|
||||
|
||||
import com.yem.rf.utils.RFUtils;
|
||||
import com.yem.wm.utils.RptUtil;
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description: 处理合同明细信息中已下单数量,未下单数量,已发运数量,未发运数量 错误数据
|
||||
* @Date: 2025/2/22 16:39
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
|
||||
public class FixOrderQtyTask extends AbstractTask {
|
||||
|
||||
private static final Log log = LogFactory.getLog(FixOrderQtyTask.class);
|
||||
|
||||
private final String algoKey = this.getClass().getName();
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
log.info(String.valueOf(System.currentTimeMillis()));
|
||||
QFilter qFilter = RFUtils.getBaseQFilter(new String[]{"B", "C"});
|
||||
DynamicObject[] salesOrder = BusinessDataServiceHelper.load("yem_es_salesorder", "id", new QFilter[]{qFilter});
|
||||
Set<Long> set = new HashSet<>();
|
||||
for (DynamicObject object : salesOrder) {
|
||||
set.add(object.getLong("id"));
|
||||
}
|
||||
salesOrder = BusinessDataServiceHelper.load(set.toArray(), BusinessDataServiceHelper.newDynamicObject("yem_es_salesorder").getDynamicObjectType());
|
||||
Map<Long, BigDecimal> orderQtyCache = new HashMap<>();//商品明细id,已下单数量
|
||||
for (DynamicObject order : salesOrder) {
|
||||
DynamicObjectCollection shipEntry = order.getDynamicObjectCollection("yem_shippingplan_entry");
|
||||
for (DynamicObject object : shipEntry) {
|
||||
DynamicObjectCollection shipEntryDetail = object.getDynamicObjectCollection("yem_plandetail_entry");
|
||||
for (DynamicObject subObj : shipEntryDetail) {
|
||||
Long srcentryid = subObj.getLong("yem_srcentryid");
|
||||
BigDecimal orderedQty = subObj.getBigDecimal("yem_qty2");
|
||||
if (orderQtyCache.containsKey(srcentryid)) {
|
||||
BigDecimal qty = orderQtyCache.get(srcentryid);
|
||||
qty = qty.add(orderedQty);
|
||||
orderQtyCache.put(srcentryid, qty);
|
||||
} else {
|
||||
orderQtyCache.put(srcentryid, orderedQty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<String> orderFields = new ArrayList<>();
|
||||
orderFields.add("id order_id");
|
||||
orderFields.add("billno order_billno");
|
||||
orderFields.add("yem_es_materialinfo.id order_detail_id");
|
||||
DataSet orderDataSet = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", orderFields), new QFilter[]{new QFilter("yem_es_materialinfo.id", "in", orderQtyCache.keySet())});
|
||||
|
||||
|
||||
List<String> shipFields = new ArrayList<>();
|
||||
shipFields.add("id ship_id");
|
||||
shipFields.add("yem_es_materialinfo.id ship_entry_id");
|
||||
shipFields.add("yem_es_materialinfo.yem_qty ship_qty");
|
||||
shipFields.add("yem_es_materialinfo.yem_sourceentryid source_order_entry_id");
|
||||
DataSet shipDataSet = ORM.create().queryDataSet(algoKey, "yem_shippingdetails", String.join(",", shipFields), new QFilter[]{new QFilter("yem_es_materialinfo.yem_sourceentryid", "in", orderQtyCache.keySet())});
|
||||
shipDataSet = shipDataSet.groupBy(new String[]{"source_order_entry_id"}).sum("ship_qty", "ship_qty").finish();
|
||||
shipDataSet = RptUtil.zeroNullNums(shipDataSet);
|
||||
DataSet dataSet = orderDataSet.leftJoin(shipDataSet)
|
||||
.on("order_detail_id", "source_order_entry_id")
|
||||
.select(RptUtil.getDataSetFiledAlias(orderDataSet), RptUtil.getDataSetFiledAlias(shipDataSet))
|
||||
.finish();
|
||||
|
||||
dataSet = RptUtil.zeroNullNums(dataSet);
|
||||
Map<Long, BigDecimal> shipQtyCache = new HashMap<>();//商品明细id,已发运数量
|
||||
DynamicObjectCollection joinSet = ORM.create().toPlainDynamicObjectCollection(dataSet);
|
||||
for (DynamicObject o : joinSet) {
|
||||
Long id = o.getLong("order_detail_id");
|
||||
BigDecimal shipQty = o.getBigDecimal("ship_qty");
|
||||
if (shipQtyCache.containsKey(id)) {
|
||||
BigDecimal qty = shipQtyCache.get(id);
|
||||
qty = qty.add(shipQty);
|
||||
shipQtyCache.put(id, qty);
|
||||
} else {
|
||||
shipQtyCache.put(id, shipQty);
|
||||
}
|
||||
}
|
||||
|
||||
for (DynamicObject o : salesOrder) {
|
||||
DynamicObjectCollection c = o.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
for (DynamicObject d : c) {
|
||||
Long id = d.getLong("id");
|
||||
BigDecimal qty = (BigDecimal) d.get("yem_qty");
|
||||
if (orderQtyCache.containsKey(id)) {
|
||||
BigDecimal orderQty = orderQtyCache.get(id);
|
||||
d.set("yem_orderqty", orderQty);
|
||||
d.set("yem_unorderqty", qty.subtract(orderQty));
|
||||
} else {
|
||||
d.set("yem_orderqty", BigDecimal.ZERO);
|
||||
d.set("yem_unorderqty", qty);
|
||||
}
|
||||
if (shipQtyCache.containsKey(id)) {
|
||||
BigDecimal shipQty = shipQtyCache.get(id);
|
||||
d.set("yem_shippingqty", shipQty);
|
||||
d.set("yem_unshippingqty", qty.subtract(shipQty));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.info("success");
|
||||
log.info(String.valueOf(System.currentTimeMillis()));
|
||||
//save
|
||||
SaveServiceHelper.save(salesOrder);
|
||||
}
|
||||
}
|
@ -24,8 +24,6 @@ import kd.bos.fileservice.FileService;
|
||||
import kd.bos.fileservice.FileServiceFactory;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.ShowType;
|
||||
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;
|
||||
@ -49,8 +47,6 @@ import static com.yem.wm.im.tracktaskconsole.form.tracktaskconsoleFormPlugIn.get
|
||||
*/
|
||||
public class SalesOrderUtils {
|
||||
|
||||
private final static Log log = LogFactory.getLog(SalesOrderUtils.class);
|
||||
|
||||
/**
|
||||
* 外销合同取消下单逻辑:只有下单审批不等于审批中、已审核,就可以进行取消下单任务
|
||||
*
|
||||
@ -102,7 +98,6 @@ public class SalesOrderUtils {
|
||||
for (int i = rows.length - 1; i >= 0; i--) {
|
||||
yem_shippingplan_entry_s.remove(rows[i]);
|
||||
}
|
||||
log.info("执行 计算已下单数量==");
|
||||
cal_yem_orderqty(bill);
|
||||
SaveServiceHelper.save(new DynamicObject[]{bill});
|
||||
}
|
||||
@ -113,7 +108,6 @@ public class SalesOrderUtils {
|
||||
* @param bill 外销合同
|
||||
*/
|
||||
public static void cal_yem_orderqty(DynamicObject bill) {
|
||||
log.info("计算已下单数量==");
|
||||
Map map = new HashMap();
|
||||
DynamicObjectCollection yem_shippingplan_entry_s = bill.getDynamicObjectCollection("yem_shippingplan_entry");
|
||||
for (int i = 0; i < yem_shippingplan_entry_s.size(); i++) {
|
||||
@ -138,9 +132,7 @@ public class SalesOrderUtils {
|
||||
BigDecimal yem_orderqty = BigDecimalUtils.toBigDecimal(map.get(yem_es_materialinfo.getLong("id")));
|
||||
BigDecimal yem_unorderqty = BigDecimalUtils.sub(yem_qty, yem_orderqty, 10);
|
||||
yem_es_materialinfo.set("yem_orderqty", yem_orderqty);
|
||||
log.info("yem_orderqty == " + yem_orderqty);
|
||||
yem_es_materialinfo.set("yem_unorderqty", yem_unorderqty);
|
||||
log.info("yem_unorderqty == " + yem_unorderqty);
|
||||
}
|
||||
}
|
||||
|
||||
@ -424,25 +416,11 @@ public class SalesOrderUtils {
|
||||
materielId.add(materiel.getLong("id"));
|
||||
}
|
||||
}
|
||||
String yemBdProductsid = "";
|
||||
DynamicObject yemBdProducts = dataEntitie.getDynamicObject("yem_bd_products");
|
||||
if (yemBdProducts != null) {
|
||||
yemBdProductsid = yemBdProducts.getString("number");
|
||||
}
|
||||
if ("CC".equals(yemBdProducts.getString("number"))) {//叉车
|
||||
yemBdProductsid = "CCPJ";
|
||||
} else if ("ZZJ".equals(yemBdProducts.getString("number"))) {//装载机
|
||||
yemBdProductsid = "ZZJPJ";
|
||||
} else if ("TLJ".equals(yemBdProducts.getString("number"))) {//拖拉机
|
||||
yemBdProductsid = "TLJPJ";
|
||||
}
|
||||
String selectFields = DynamicObjectUtil.getSelectfields("yem_pricelibrary", false);
|
||||
selectFields = DynamicObjectUtil.getEntrySelectfields(selectFields, "yem_pricelibrary", "yem_accessory", false);
|
||||
DynamicObject[] accPriceLibrarys = BusinessDataServiceHelper.load("yem_pricelibrary", selectFields,
|
||||
new QFilter[]{new QFilter("yem_accessory.yem_material", QCP.in, materielId)
|
||||
, new QFilter("billstatus", QCP.equals, "C")
|
||||
, new QFilter("yem_productclass.number", QCP.equals, yemBdProductsid)
|
||||
,new QFilter("yem_cancelstatus", QCP.equals, "0")});
|
||||
new QFilter[]{new QFilter("yem_accessory.yem_material", QCP.in, materielId),
|
||||
new QFilter("billstatus", QCP.equals, "C")});
|
||||
for (DynamicObject accPriceLibrary : accPriceLibrarys) {
|
||||
Map<Long, Map<String, Object>> allMap = new HashMap<>();
|
||||
Date bizDate = accPriceLibrary.getDate("yem_bizdate");
|
||||
@ -763,18 +741,17 @@ public class SalesOrderUtils {
|
||||
products = (DynamicObject) model.getValue("yem_bd_products");
|
||||
}
|
||||
|
||||
String number = products.getString("number");
|
||||
|
||||
long id = 0L;
|
||||
QFilter qFilter = new QFilter("enable", QCP.equals, "1");
|
||||
String number = products.getString("number");
|
||||
|
||||
DynamicObject billtype = (DynamicObject) model.getValue("yem_billtype");
|
||||
String type = billtype.getString("number");
|
||||
if (StringUtils.containsIgnoreCase(type, "zj")||"yem_es_storagetrans".equals(type)) {
|
||||
if (StringUtils.containsIgnoreCase(type, "zj")) {
|
||||
if ("Z".equals(businesssort)) {
|
||||
if (YEM.isNotEmpty(productmodel)) {
|
||||
id = productmodel.getLong("id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_baseproductstree.id", QCP.equals, id));
|
||||
id = productmodel.getLong("yem_products.id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_productstree.id", QCP.equals, id));
|
||||
qFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
}
|
||||
}
|
||||
@ -803,10 +780,30 @@ public class SalesOrderUtils {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// if (qFilter != null && YEM.isNotEmpty(products)) {
|
||||
// qFilter.and(new QFilter("yem_producttype.id", QCP.equals, products.getLong("id")));
|
||||
// }
|
||||
|
||||
// if ("yem_customclass".equals(currentFilterKey)) {
|
||||
// if (qFilter != null) {
|
||||
// return BusinessDataServiceHelper.load("yem_bd_declarationele", selectfields, qFilter.toArray());
|
||||
// }
|
||||
// }
|
||||
|
||||
if ("yem_hscode".equals(currentFilterKey) && customclass != null) {
|
||||
qFilter.and(new QFilter("yem_customclass.id", QCP.equals, customclass.getLong("id")));
|
||||
}
|
||||
|
||||
// if (qFilter != null) {
|
||||
// if (customclass != null && !"yem_customclass".equals(currentFilterKey)) {
|
||||
// qFilter.and(new QFilter("yem_customclass.id", QCP.equals, customclass.getLong("id")));
|
||||
// }
|
||||
//
|
||||
// if (hscode != null && !"yem_hscode".equals(currentFilterKey)) {
|
||||
// qFilter.and(new QFilter("yem_hscodebase.id", QCP.equals, hscode.getLong("id")));
|
||||
// }
|
||||
// }
|
||||
|
||||
return BusinessDataServiceHelper.load("yem_bd_declarationele", selectfields, qFilter.toArray());
|
||||
}
|
||||
@ -846,11 +843,11 @@ public class SalesOrderUtils {
|
||||
|
||||
DynamicObject billtype = (DynamicObject) model.getValue("yem_billtype");
|
||||
String type = billtype.getString("number");
|
||||
if (StringUtils.containsIgnoreCase(type, "zj")||"yem_es_storagetrans".equals(type)) {
|
||||
if (StringUtils.containsIgnoreCase(type, "zj")) {
|
||||
if ("Z".equals(businesssort)) {
|
||||
if (YEM.isNotEmpty(productmodel)) {
|
||||
id = productmodel.getLong("id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_baseproductstree.id", QCP.equals, id));
|
||||
id = productmodel.getLong("yem_products.id");
|
||||
qFilter.and(new QFilter("yem_bd_declarationele.yem_productstree.id", QCP.equals, id));
|
||||
qFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
}
|
||||
}
|
||||
@ -1237,7 +1234,7 @@ public class SalesOrderUtils {
|
||||
qty = qty.add(dynamicObject.getBigDecimal("yem_qty"));
|
||||
}
|
||||
if (singlepartgiftmat.compareTo(BigDecimal.ZERO) == 0) {
|
||||
singlepartgiftmat = yemSinglepartgiftmat;
|
||||
singlepartgiftmat = yemSinglepartgiftmat ;
|
||||
}
|
||||
}
|
||||
BigDecimal amount = qty.multiply(singlepartgiftmat);
|
||||
|
@ -252,19 +252,19 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
BigDecimal debcuseamt = dynamicObject.getBigDecimal("yem_debcuseamt");
|
||||
DynamicObject yemBdProducts = dataEntity.getDynamicObject("yem_bd_products");
|
||||
Long along = 0L;
|
||||
if (yemBdProducts != null) {
|
||||
if (yemBdProducts!=null){
|
||||
String number = yemBdProducts.getString("number");
|
||||
if ("CC".equals(number) || "CCPJ".equals(number)) {
|
||||
if ("CC".equals(number)||"CCPJ".equals(number)){
|
||||
DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number"
|
||||
, new QFilter[]{new QFilter("number", QCP.equals, "CC")});
|
||||
along = loadSingle.getLong("id");
|
||||
along = loadSingle.getLong("id");
|
||||
}
|
||||
if ("TLJ".equals(number) || "TLJPJ".equals(number)) {
|
||||
if ("TLJ".equals(number)||"TLJPJ".equals(number)){
|
||||
DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number"
|
||||
, new QFilter[]{new QFilter("number", QCP.equals, "TLJ")});
|
||||
along = loadSingle.getLong("id");
|
||||
}
|
||||
if ("ZZJ".equals(number) || "ZZJPJ".equals(number)) {
|
||||
if ("ZZJ".equals(number)||"ZZJPJ".equals(number)){
|
||||
DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number"
|
||||
, new QFilter[]{new QFilter("number", QCP.equals, "ZZJ")});
|
||||
along = loadSingle.getLong("id");
|
||||
@ -275,7 +275,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
.and("yem_spcapitalpool_a.yem_debcredtype", QCP.equals, debcred)
|
||||
.and("yem_spcapitalpool_a.yem_creditype.id", QCP.equals, debcredtype)
|
||||
.and("yem_customer.id", QCP.equals, groupcustomers)
|
||||
.and("yem_bd_products.id", QCP.equals, along);
|
||||
.and("yem_bd_products.id",QCP.equals,along);
|
||||
DynamicObject single = BusinessDataServiceHelper.loadSingle("yem_spcapitalpool", qFilter.toArray());
|
||||
if (single == null) return;
|
||||
DynamicObjectCollection singleCollection = single.getDynamicObjectCollection("yem_spcapitalpool_a");
|
||||
@ -438,12 +438,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
int row = j + 1;
|
||||
DynamicObject object = yem_accfunddetail.get(j);
|
||||
DynamicObject yem_debcredtype = object.getDynamicObject("yem_debcredtype");//贷记单类型
|
||||
long debcredtypeid = 0L;
|
||||
if (yem_debcredtype != null) {
|
||||
debcredtypeid = yem_debcredtype.getLong("id");
|
||||
}else {
|
||||
this.addMessage(dataEntitie,"当前单配件资金使用明细页签中,‘借贷业务类型’存在空值");
|
||||
}
|
||||
long debcredtypeid = yem_debcredtype.getLong("id");
|
||||
DynamicObject yem_debcrednotecurr = object.getDynamicObject("yem_debcrednotecurr");//贷记单使用币别
|
||||
BigDecimal yem_creditrmbamt = object.getBigDecimal("yem_creditrmbamt");//贷记单人民币金额
|
||||
BigDecimal yem_creditusdamt = object.getBigDecimal("yem_creditusdamt");//贷记单美元金额
|
||||
@ -801,32 +796,20 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
DynamicObject method = TotalUtil.getSettlementMethod(dataEntity);
|
||||
DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg");
|
||||
String swiftCode = TotalUtil.getSwiftCode(dataEntity);
|
||||
DynamicObject[] load = getCsrCreditLine(customer, method, company, swiftCode);
|
||||
DynamicObject csrCreditLine = null;
|
||||
if (YEM.isEmpty(load)) {
|
||||
this.addErrorMessage(dataEntitie, "该客户找不到信保额度申请,不可参与信保!");
|
||||
return;
|
||||
}
|
||||
if (load.length == 1) {
|
||||
csrCreditLine = load[0];
|
||||
}
|
||||
if (load.length > 1) {
|
||||
Set<String> set = new HashSet<>();
|
||||
for (DynamicObject d : load) {
|
||||
set.add(d.getString("billno"));
|
||||
}
|
||||
this.addErrorMessage(dataEntitie, "该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set);
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObject[] csrCreditLine = getCsrCreditLine(customer, method, company, swiftCode);
|
||||
boolean bolean = false;
|
||||
if (YEM.isNotEmpty(csrCreditLine)) {
|
||||
BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance");//yem_suminsured
|
||||
String status = csrCreditLine.getString("yem_limitstatus");
|
||||
if ("A".equals(status)) {
|
||||
if (total.compareTo(balance) > 0) {
|
||||
this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance));
|
||||
for (DynamicObject loadSingle : csrCreditLine) {
|
||||
BigDecimal balance = loadSingle.getBigDecimal("yem_balance");//yem_suminsured
|
||||
String status = loadSingle.getString("yem_limitstatus");
|
||||
if ("A".equals(status)) {
|
||||
bolean =true;
|
||||
if (total.compareTo(balance) > 0) {
|
||||
this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
if (!bolean) {
|
||||
this.addErrorMessage(dataEntitie, "当前客户信保额度申请失效,请联系单证确认!!");
|
||||
}
|
||||
} else {
|
||||
@ -836,14 +819,11 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
}
|
||||
|
||||
|
||||
public static DynamicObject[] getCsrCreditLine(DynamicObject customer, DynamicObject method, DynamicObject company, String swiftCode) {
|
||||
public static DynamicObject [] getCsrCreditLine(DynamicObject customer, DynamicObject method, DynamicObject company, String swiftCode) {
|
||||
if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(method) && YEM.isNotEmpty(company)) {
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_im_csrcreditline", false);
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_im_csrcreditline", "yem_im_info", false);
|
||||
if (!customer.containsProperty("yem_customer")) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
}
|
||||
QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer"));
|
||||
QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getPkValue()));
|
||||
// qFilter.and(new QFilter("org", QCP.equals, company.getPkValue()));
|
||||
qFilter.and(new QFilter("billstatus", QCP.equals, "C"));
|
||||
|
@ -109,8 +109,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
BigDecimal yemRaprate = dynamicObject.getBigDecimal("yem_raprate");
|
||||
addNew.set("yem_exchangereceipts", yemRaprate);
|
||||
//订舱投保金额(原币种)
|
||||
BigDecimal bigDecimal = storageAmount.multiply(yemRaprate).divide(new BigDecimal(100), 2);
|
||||
addNew.set("yem_bookinginsured", bigDecimal);
|
||||
addNew.set("yem_bookinginsured",storageAmount.multiply(yemRaprate).divide(new BigDecimal(100) ,2));
|
||||
// 预收金额
|
||||
addNew.set("yem_preamt_cd", raprate.multiply(storageAmount).divide(new BigDecimal(100), 4, RoundingMode.HALF_UP));
|
||||
// 合同认领金额
|
||||
@ -119,17 +118,16 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
// 储运认领金额
|
||||
addNew.set("yem_stclaiamt_cd", amount.get("shipClaimAmt"));
|
||||
// 投保金额(原币)
|
||||
addNew.set("yem_creditamt_cd", bigDecimal);
|
||||
addNew.set("yem_creditamt_cd", storageAmount);
|
||||
|
||||
// 信保本位币金额
|
||||
addNew.set("yem_creditamtbase", storageAmount.multiply(exrate));
|
||||
//应收款金额1(本位币)
|
||||
addNew.set("yem_paymentamt1_cd", bigDecimal);
|
||||
addNew.set("yem_paymentamt1_cdbase", storageAmount.multiply(exrate));
|
||||
|
||||
if ("USD".equals(currency)) {
|
||||
// 投保金额(美元)
|
||||
addNew.set("yem_usacreditamt_cd", bigDecimal);
|
||||
addNew.set("yem_usacreditamt_cd", storageAmount);
|
||||
|
||||
} else {
|
||||
storageAmount = BigDecimal.ZERO;
|
||||
@ -146,7 +144,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
BigDecimal sinosurerate = (BigDecimal) dynamicObject.get("yem_sinosurerate");
|
||||
addNew.set("yem_sinosurerate_cd", sinosurerate);
|
||||
// yem_insuranceamt_cd = yem_usacreditamt_cd * yem_sinosurerate_cd / 100
|
||||
BigDecimal insuranceamt = bigDecimal.multiply(sinosurerate).divide(new BigDecimal("100"), 10, RoundingMode.HALF_UP);
|
||||
BigDecimal insuranceamt = storageAmount.multiply(sinosurerate).divide(new BigDecimal("100"), 10, RoundingMode.HALF_UP);
|
||||
// 保险费
|
||||
addNew.set("yem_insuranceamt_cd", insuranceamt);
|
||||
// 信用期限
|
||||
@ -154,7 +152,6 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
|
||||
// 保险费本位币金额
|
||||
addNew.set("yem_insuranceamtbas_cd", insuranceamt.multiply(exrate));
|
||||
addNew.set("yem_amountowed", bigDecimal);
|
||||
// //SWIFT CODE
|
||||
// addNew.set("yem_swiftcode", dynamicObject.get("yem_swiftcode"));
|
||||
}
|
||||
@ -179,7 +176,6 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
addNew.set("yem_swiftcode", dynamicObject.get("yem_swiftcode"));
|
||||
addNew.set("yem_rapcontent", dynamicObject.get("yem_rapcontent"));
|
||||
addNew.set("yem_lcnumber", dynamicObject.get("yem_lcnumber"));
|
||||
addNew.set("yem_payment_day", dynamicObject.get("yem_payment_day"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -292,27 +292,18 @@ public class ShippingDetailsFormPlugin extends AbstractBillPlugIn implements Bef
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i : selectRows) {
|
||||
DynamicObject[] loads = getDeclarationElementsUseCarry(model, i, null);
|
||||
if (loads.length == 1) {
|
||||
DynamicObject[] load = getDeclarationElementsUseCarry(model, i, null);
|
||||
if (load.length == 1) {
|
||||
// DynamicObject hscode = (DynamicObject) model.getValue("yem_hscode", i);
|
||||
// carryDeclaration(model, view, i, load[0], hscode);
|
||||
carryReportCategoryAndHsCode(model, view, i, "");
|
||||
} else if (loads.length > 0) {
|
||||
List<DynamicObject> list = new ArrayList<>();
|
||||
for (DynamicObject load : loads) {
|
||||
boolean yemWhetheritdefaults = load.getBoolean("yem_whetheritdefaults");
|
||||
if (yemWhetheritdefaults) {
|
||||
list.add(load);
|
||||
}
|
||||
} else {
|
||||
if (load.length == 0) {
|
||||
sb.append(String.format("第 %s 行未获匹配申报要素!!", i + 1)).append("\r\n");
|
||||
}
|
||||
if (list.size() == 1) {
|
||||
carryReportCategoryAndHsCode(model, view, i, "");
|
||||
}
|
||||
if (list.size() != 1) {
|
||||
if (load.length > 1) {
|
||||
sb.append(String.format("第 %s 行匹配到多条申报要素,请手动选择!!", i + 1)).append("\r\n");
|
||||
}
|
||||
} else {
|
||||
sb.append(String.format("第 %s 行未获匹配申报要素!!", i + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
@ -547,7 +538,7 @@ public class ShippingDetailsFormPlugin extends AbstractBillPlugIn implements Bef
|
||||
DynamicObject yemEsMaterialinfo = dynamicObjectCollection.get(currentRowIndex);
|
||||
long yemCoreentryid = yemEsMaterialinfo.getLong("yem_coreentryid");
|
||||
DynamicObjectCollection yemEsSalesorderZ = yemEsMaterialinfo.getDynamicObjectCollection("yem_es_salesorder_z");
|
||||
if (!yemEsSalesorderZ.isEmpty()) {
|
||||
if (!yemEsSalesorderZ.isEmpty()){
|
||||
for (DynamicObject dynamicObject : yemEsSalesorderZ) {
|
||||
String yemVehicleno = dynamicObject.getString("yem_vehicleno");
|
||||
list.add(yemVehicleno);
|
||||
|
@ -70,7 +70,7 @@ public class ShippingDetailSubmitValidator extends AbstractValidator {
|
||||
}
|
||||
}
|
||||
vehicleNoSingle(dataEntitie);
|
||||
// validateTaxRefundRate(dataEntitie);
|
||||
validateTaxRefundRate(dataEntitie);
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,32 +79,28 @@ public class ShippingDetailSubmitValidator extends AbstractValidator {
|
||||
*
|
||||
* @param dataEntitie
|
||||
*/
|
||||
private void validateTaxRefundRate(ExtendedDataEntity dataEntitie) {
|
||||
DynamicObject dataEntity = dataEntitie.getDataEntity();
|
||||
String isdeclare = dataEntity.getString("yem_isdeclare");
|
||||
if (!"A".equals(isdeclare)) return;
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
int index = collection.indexOf(dynamicObject);
|
||||
boolean ifgift = dynamicObject.getBoolean("yem_ifgift");
|
||||
if (!ifgift) {
|
||||
// BigDecimal degrate = dynamicObject.getBigDecimal("yem_degrate");
|
||||
DynamicObject hscode = dynamicObject.getDynamicObject("yem_hscode");
|
||||
if (YEM.isEmpty(hscode)) {
|
||||
sb.append(String.format("商品明细第 [ %s ] 行,海关编码为空,请填写后提交!", index + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消,改为手动配置
|
||||
*/
|
||||
// private void validateTaxRefundRate(ExtendedDataEntity dataEntitie) {
|
||||
// DynamicObject dataEntity = dataEntitie.getDataEntity();
|
||||
// String isdeclare = dataEntity.getString("yem_isdeclare");
|
||||
// if (!"A".equals(isdeclare)) return;
|
||||
// DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
// StringBuilder sb = new StringBuilder();
|
||||
// for (DynamicObject dynamicObject : collection) {
|
||||
// int index = collection.indexOf(dynamicObject);
|
||||
// boolean ifgift = dynamicObject.getBoolean("yem_ifgift");
|
||||
// if (!ifgift) {
|
||||
// DynamicObject hscode = dynamicObject.getDynamicObject("yem_hscode");
|
||||
// if (YEM.isEmpty(hscode)) {
|
||||
// sb.append(String.format("商品明细第 [ %s ] 行,海关编码为空,请填写后提交!", index + 1)).append("\r\n");
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (sb.length() > 0) {
|
||||
// this.addErrorMessage(dataEntitie, sb.toString());
|
||||
// }
|
||||
// }
|
||||
if (sb.length() > 0) {
|
||||
this.addErrorMessage(dataEntitie, sb.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 整机生产信息中整机编号唯一性校验
|
||||
|
@ -38,21 +38,15 @@ public class StorgeTransToExportPresentConvert extends AbstractConvertPlugIn
|
||||
List<DynamicObject> storageTrans = (List<DynamicObject>) findByEntityKey.getValue("ConvertSource");
|
||||
Set<Long> shipIds = new HashSet();
|
||||
Set<Long> saleIds = new HashSet();
|
||||
Set<Long> st_ids = new HashSet();
|
||||
for (DynamicObject storageTran : storageTrans) {
|
||||
long id = storageTran.getLong("id");
|
||||
// storageTran = BusinessDataServiceHelper.loadSingle(id, name);
|
||||
st_ids.add(id);
|
||||
}
|
||||
DynamicObject[] st_load = BusinessDataServiceHelper.load(name, "yem_es_materialinfo.yem_sourcebillid_d, yem_es_materialinfo.yem_corebillid_d, id, billno", new QFilter[]{new QFilter("id", "in", st_ids)});
|
||||
for (DynamicObject st : st_load) {
|
||||
DynamicObjectCollection materialInfos = st.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
storageTran = BusinessDataServiceHelper.loadSingle(id, name);
|
||||
DynamicObjectCollection materialInfos = storageTran.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
for (DynamicObject materialInfo : materialInfos) {
|
||||
shipIds.add(materialInfo.getLong("yem_sourcebillid_d"));
|
||||
saleIds.add(materialInfo.getLong("yem_corebillid_d"));
|
||||
}
|
||||
}
|
||||
|
||||
Map<Long, DynamicObject> saleMap = new HashMap();
|
||||
String selectFields = DynamicObjectUtil.getSelectfields("yem_shippingdetails", false);
|
||||
DynamicObject[] shippingDetails = BusinessDataServiceHelper.load("yem_shippingdetails", selectFields,
|
||||
@ -89,23 +83,42 @@ public class StorgeTransToExportPresentConvert extends AbstractConvertPlugIn
|
||||
DynamicObject[] shipBills = getShipBills(saleOrder, dataEntity, "A");//出运
|
||||
DynamicObject[] payBills = getPayBills(saleOrder, dataEntity, "B");//收款单
|
||||
DynamicObject thisShipDetail = null;
|
||||
// for (DynamicObject shippingDetailObj : shippingDetails) {
|
||||
// long pkValue = (long) shippingDetailObj.getPkValue();
|
||||
// long sourcebillid = dataEntity.getLong("yem_sourcebillid");
|
||||
// DynamicObject single = BusinessDataServiceHelper.loadSingle(sourcebillid, "yem_es_storagetrans" ,"id, billno, yem_sourcebillid");
|
||||
// if (single == null) continue;
|
||||
// long shipDetailId = single.getLong("yem_sourcebillid");
|
||||
// if (shipDetailId == pkValue) {
|
||||
// thisShipDetail = shippingDetailObj;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// thisShipDetail = BusinessDataServiceHelper.loadSingle()
|
||||
// if (shippingDetail == null) continue;
|
||||
BigDecimal thisRealityAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shippingDetail);
|
||||
for (DynamicObject shippingDetailObj : shippingDetails) {
|
||||
long pkValue = (long) shippingDetailObj.getPkValue();
|
||||
long sourcebillid = dataEntity.getLong("yem_sourcebillid");
|
||||
DynamicObject single = BusinessDataServiceHelper.loadSingle(sourcebillid, "yem_es_storagetrans" ,"id, billno, yem_sourcebillid");
|
||||
if (single == null) continue;
|
||||
long shipDetailId = single.getLong("yem_sourcebillid");
|
||||
if (shipDetailId == pkValue) {
|
||||
thisShipDetail = shippingDetailObj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (thisShipDetail == null) continue;
|
||||
BigDecimal thisRealityAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, thisShipDetail);
|
||||
addNew.set("yem_debtamt", thisRealityAmt.setScale(2, RoundingMode.HALF_UP));//欠款金额
|
||||
}
|
||||
}
|
||||
|
||||
// 收汇方式
|
||||
DynamicObjectCollection exportpreErw = dataEntity.getDynamicObjectCollection("yem_es_exportpre_erw");
|
||||
Set<String> salesorder = new HashSet<>();
|
||||
for (DynamicObject d : exportpreErw) {
|
||||
String contractnum = d.getString("yem_contractnum_c");
|
||||
salesorder.add(contractnum);
|
||||
}
|
||||
|
||||
Map<Object, DynamicObject> map = BusinessDataServiceHelper.loadFromCache("yem_es_salesorder", "id, billno, yem_operator", new QFilter[]{new QFilter("billno", "in", salesorder)});
|
||||
for (Map.Entry<Object, DynamicObject> entry : map.entrySet()) {
|
||||
DynamicObject order = entry.getValue();
|
||||
String billno = order.getString("billno");
|
||||
for (DynamicObject d : exportpreErw) {
|
||||
if (billno.equals(d.getString("yem_contractnum_c"))) {
|
||||
DynamicObject operator = order.getDynamicObject("yem_operator");
|
||||
d.set("yem_operator_e", operator);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -87,8 +87,6 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
|
||||
model.setValue("yem_premium", dynamicObject.get("yem_insuranceamt_cd"), addNewRowIdx);//保险费
|
||||
|
||||
model.setValue("yem_contractpayamt", dynamicObject.get("yem_contractpayamt"), addNewRowIdx);//合同回款金额
|
||||
|
||||
DynamicObjectCollection parentSubCollection = dynamicObject.getDynamicObjectCollection("yem_crecollection");
|
||||
|
||||
DynamicObjectCollection subCollection = dataEntity.getDynamicObjectCollection("yem_creditentry").get(currentEntryIdx).getDynamicObjectCollection("yem_crecollection");
|
||||
@ -106,8 +104,6 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
subAddNew.set("yem_crenote", subObject.getString("yem_crenote"));//收款备注
|
||||
subAddNew.set("yem_crecollecurrency", subObject.getDynamicObject("yem_crecollecurrency"));//收款币别
|
||||
subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
subAddNew.set("yem_contractpayamt_e", subObject.getBigDecimal("yem_contractpayamt_e"));//合同回款金额
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -123,33 +119,14 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
Control control = (Control) e.getSource();
|
||||
String key = control.getKey();
|
||||
if ("btnok".equals(key)) {
|
||||
|
||||
if (!beforeOkOperationValidator()) {
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
DynamicObject dataEntity = model.getDataEntity(true);
|
||||
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_creditentry");
|
||||
for (DynamicObject d : c) {
|
||||
int par = c.indexOf(d);
|
||||
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_crecollection");
|
||||
for (DynamicObject subD : subC) {
|
||||
int son = subC.indexOf(subD);
|
||||
BigDecimal contractpayamt_e = subD.getBigDecimal("yem_contractpayamt_e");
|
||||
if (contractpayamt_e.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
sb.append(String.format("请填写明细信息第 %s 行,信保收款明细第 %s 行 合同回款金额!", par + 1, son + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sb.length() > 0) {
|
||||
view.showMessage(sb.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
DynamicObject parentDataEntity = parentModel.getDataEntity(true);
|
||||
@ -237,8 +214,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
} else {
|
||||
contractPayAmtMap.put(salecontractno, contractpayamt);
|
||||
}
|
||||
DynamicObjectCollection subc = d.getDynamicObjectCollection("yem_crecollection");
|
||||
if (contractpayamt.compareTo(BigDecimal.ZERO) <= 0 && !subc.isEmpty()) {
|
||||
if (contractpayamt.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
sb.append(String.format("请填写明细信息第 %s 行,合同回款金额!!", idx + 1)).append("\n\r");
|
||||
}
|
||||
}
|
||||
@ -557,7 +533,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
parentAddNer.set("yem_crenote", crecollection.getString("yem_crenote"));//收款备注
|
||||
parentAddNer.set("yem_crecollecurrency", crecollection.getDynamicObject("yem_crecollecurrency"));//收款币别
|
||||
parentAddNer.set("yem_crecollecamt", crecollection.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
parentAddNer.set("yem_contractpayamt_e", crecollection.getBigDecimal("yem_contractpayamt_e"));//合同回款金额
|
||||
parentAddNer.set("yem_contractpayamt_e", crecollection.getBoolean("yem_contractpayamt_e"));//合同回款金额
|
||||
}
|
||||
}
|
||||
BigDecimal creactualamt = BigDecimal.ZERO;// 实际收汇金额
|
||||
|
@ -21,7 +21,6 @@ import kd.bos.entity.datamodel.events.*;
|
||||
import kd.bos.entity.property.EntryProp;
|
||||
import kd.bos.form.*;
|
||||
import kd.bos.form.control.AttachmentPanel;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.control.events.UploadListener;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||
@ -230,16 +229,13 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
if (!yemEsMaterialinfo.isEmpty()) {
|
||||
Map<String, BigDecimal> map = new HashMap<>();
|
||||
for (DynamicObject loadSingle : yemEsMaterialinfo) {
|
||||
String yemContractnumbersM = loadSingle.getString("yem_contractnumbers_m");
|
||||
String yemShipmentnumbersM = loadSingle.getString("yem_shipmentnumbers_m");
|
||||
String yemProducts = loadSingle.getString("yem_products.number");
|
||||
String aLong = loadSingle.getString("yem_productmodel.yem_products.number");
|
||||
BigDecimal yemQty = loadSingle.getBigDecimal("yem_qty");
|
||||
if (map.get(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong) != null) {
|
||||
BigDecimal bigDecimal = map.get(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong);
|
||||
map.put(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong, bigDecimal.add(yemQty));
|
||||
if (map.get(aLong) != null) {
|
||||
BigDecimal bigDecimal = map.get(aLong);
|
||||
map.put(aLong, bigDecimal.add(yemQty));
|
||||
} else {
|
||||
map.put(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong, yemQty);
|
||||
map.put(aLong, yemQty);
|
||||
}
|
||||
}
|
||||
DynamicObjectCollection yemEsSalesorderL = this.getModel().getEntryEntity("yem_es_salesorder_l");
|
||||
@ -249,11 +245,8 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
DynamicObject yemGiftproactype = loadSingle.getDynamicObject("yem_giftproactype");
|
||||
if (yemGiftproactype != null) {
|
||||
String aLong = yemGiftproactype.getString("number");
|
||||
String yemContractnumbers = loadSingle.getString("yem_contractnumbers");
|
||||
String yemShipmentnumbers = loadSingle.getString("yem_shipmentnumbers");
|
||||
String yemBdProducts = loadSingle.getString("yem_bd_products.number");
|
||||
if (map.get(yemContractnumbers+yemShipmentnumbers+yemBdProducts+aLong) != null) {
|
||||
this.getModel().setValue("yem_tsagerqty", map.get(yemContractnumbers+yemShipmentnumbers+yemBdProducts+aLong), i);
|
||||
if (map.get(aLong) != null) {
|
||||
this.getModel().setValue("yem_tsagerqty", map.get(aLong), i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -290,7 +283,7 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
yem_combo = "Z";
|
||||
}
|
||||
}
|
||||
this.getModel().setValue("yem_sale_type", yem_combo);
|
||||
this.getModel().setValue("yem_combo", yem_combo);
|
||||
}
|
||||
}
|
||||
|
||||
@ -444,41 +437,6 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
if ("test_islastship".equals(operateKey)) {
|
||||
view.showSuccessNotification(String.valueOf(isLastShip(dataEntity)));
|
||||
}
|
||||
if ("requestacdeclaration".equals(operateKey)) {
|
||||
EntryGrid control = this.getControl("yem_es_materialinfo");
|
||||
int[] selectRows = control.getSelectRows();
|
||||
if (selectRows.length == 0) {
|
||||
DynamicObjectCollection yemEsMaterialinfo = this.getModel().getEntryEntity("yem_es_materialinfo");
|
||||
for (int i = 0; i < yemEsMaterialinfo.size(); i++) {
|
||||
carryReportCategoryAndHsCode(model, view, i, "");
|
||||
}
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i : selectRows) {
|
||||
DynamicObject[] loads = getDeclarationElementsUseCarry(model, i, null);
|
||||
if (loads.length == 1) {
|
||||
// DynamicObject hscode = (DynamicObject) model.getValue("yem_hscode", i);
|
||||
// carryDeclaration(model, view, i, load[0], hscode);
|
||||
carryReportCategoryAndHsCode(model, view, i, "");
|
||||
} else if (loads.length > 0) {
|
||||
List<DynamicObject> list = new ArrayList<>();
|
||||
for (DynamicObject load : loads) {
|
||||
boolean yemWhetheritdefaults = load.getBoolean("yem_whetheritdefaults");
|
||||
if (yemWhetheritdefaults) {
|
||||
list.add(load);
|
||||
}
|
||||
}
|
||||
if (list.size() == 1) {
|
||||
carryReportCategoryAndHsCode(model, view, i, "");
|
||||
}
|
||||
if (list.size() != 1) {
|
||||
sb.append(String.format("第 %s 行匹配到多条申报要素,请手动选择!!", i + 1)).append("\r\n");
|
||||
}
|
||||
} else {
|
||||
sb.append(String.format("第 %s 行未获匹配申报要素!!", i + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -771,13 +729,6 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg");
|
||||
String swiftCode = TotalUtil.getSwiftCode(dataEntity);
|
||||
DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode);
|
||||
if (YEM.isEmpty(csrCreditLine)) {
|
||||
sb.append("未找到该客户的信保额度申请,请检查额度申请是否存在,是否已审核!\r\n");
|
||||
e.setCancel(true);
|
||||
view.showErrorNotification(sb.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
// 剩余限额
|
||||
BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance");
|
||||
if (stcreditpreamt_cd.compareTo(preamt_cd) < 0) {
|
||||
@ -817,6 +768,11 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
sb.append(String.format("未上传客户汇款水单附件,不能进行信保确认!\n\r"));
|
||||
}
|
||||
}
|
||||
if (csrCreditLine != null && customer != null) {
|
||||
} else {
|
||||
sb.append(String.format("当前客户不存在信保额度申请,不允许进行信保确认\n\r"));
|
||||
// view.showErrorNotification("当前客户不存在信保额度申请,不允许进行信保确认");
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
e.setCancel(true);
|
||||
@ -1286,7 +1242,6 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
DynamicObjectCollection materialinfo = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
BigDecimal sum = BigDecimal.ZERO;
|
||||
boolean allonPush = true;
|
||||
BigDecimal amt = BigDecimal.ZERO;
|
||||
for (DynamicObject dynamicObject : materialinfo) {
|
||||
|
||||
BigDecimal adstamount = dynamicObject.getBigDecimal("yem_adstamount"); // 销售出库金额-提交
|
||||
@ -1299,13 +1254,13 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
saamtpriceclause = dynamicObject.getBigDecimal("yem_saamtpriceclause"); // 销售金额(价格条款)
|
||||
}
|
||||
|
||||
amt = adstamount.subtract(saamtpriceclause);
|
||||
BigDecimal amt = adstamount.subtract(saamtpriceclause);
|
||||
if (amt.compareTo(BigDecimal.ZERO) != 0) {
|
||||
allonPush = false;
|
||||
}
|
||||
sum = sum.add(amt);
|
||||
dynamicObject.set("yem_exportmat", amt);
|
||||
}
|
||||
if (amt.compareTo(BigDecimal.ZERO) != 0) {
|
||||
allonPush = false;
|
||||
}
|
||||
dataEntity.set("yem_exportmatsum", sum);
|
||||
dataEntity.set("yem_allonpush", allonPush);
|
||||
}
|
||||
|
@ -255,6 +255,21 @@ public class StorageTransZJEdit extends AbstractBillPlugIn implements BeforeF7Se
|
||||
public void selectF7CustomClass(BeforeF7SelectEvent e) {
|
||||
//1、过滤报关分类时,整机行只能过滤业务分类为整机的报关分类;配件行只能过滤业务分类为配件的报关分类
|
||||
int row = e.getRow();
|
||||
List<Long> ids = new ArrayList();
|
||||
IDataModel model = this.getModel();
|
||||
DynamicObject materiel = (DynamicObject) model.getValue("yem_materiel", row);
|
||||
if (YEM.isNotEmpty(materiel)) {
|
||||
DynamicObject[] declarationEles = BusinessDataServiceHelper.load("yem_bd_declarationele", "id,yem_customclass",
|
||||
new QFilter[]{new QFilter("yem_material", QCP.equals, materiel.getPkValue())});
|
||||
for (DynamicObject declarationEle : declarationEles) {
|
||||
DynamicObject hsCodebase = declarationEle.getDynamicObject("yem_customclass");
|
||||
if (YEM.isNotEmpty(hsCodebase)) {
|
||||
ids.add(hsCodebase.getLong("id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
e.addCustomQFilter(new QFilter("id", QCP.in, ids));
|
||||
|
||||
String businesssort = (String) this.getModel().getValue("yem_businesssort", row);
|
||||
if (businesssort == null) {
|
||||
e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, null));
|
||||
@ -263,20 +278,6 @@ public class StorageTransZJEdit extends AbstractBillPlugIn implements BeforeF7Se
|
||||
e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, "Z"));
|
||||
}
|
||||
if ("P".equals(businesssort)) {
|
||||
List<Long> ids = new ArrayList();
|
||||
IDataModel model = this.getModel();
|
||||
DynamicObject materiel = (DynamicObject) model.getValue("yem_materiel", row);
|
||||
if (YEM.isNotEmpty(materiel)) {
|
||||
DynamicObject[] declarationEles = BusinessDataServiceHelper.load("yem_bd_declarationele", "id,yem_customclass",
|
||||
new QFilter[]{new QFilter("yem_material", QCP.equals, materiel.getPkValue())});
|
||||
for (DynamicObject declarationEle : declarationEles) {
|
||||
DynamicObject hsCodebase = declarationEle.getDynamicObject("yem_customclass");
|
||||
if (YEM.isNotEmpty(hsCodebase)) {
|
||||
ids.add(hsCodebase.getLong("id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
e.addCustomQFilter(new QFilter("id", QCP.in, ids));
|
||||
e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, "P"));
|
||||
}
|
||||
|
||||
|
@ -232,9 +232,9 @@ public class StorageTransAuditOp extends AbstractOperationServicePlugIn {
|
||||
entryentitys.set(row, entryentity);
|
||||
row++;
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{giftamountss});
|
||||
GiftAmount.Calculate(customer, org, products);
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{giftamountss});
|
||||
GiftAmount.Calculate(customer, org, products);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.botp.ConvertMetaServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
@ -41,19 +42,6 @@ public class StorageTransSaveOp extends AbstractOperationServicePlugIn {
|
||||
for (DynamicObject storageTran : storageTrans) {
|
||||
repairRelation(storageTran);
|
||||
repairRelationShipping(storageTran);
|
||||
//保存时更新表头业务类型
|
||||
DynamicObjectCollection collection = storageTran.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
Boolean bood = false;
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
if (dynamicObject.getString("yem_businesssort").equals("Z")){
|
||||
bood = true;
|
||||
}
|
||||
}
|
||||
if (bood){
|
||||
storageTran.set("yem_combo","Z");
|
||||
}else {
|
||||
storageTran.set("yem_combo","P");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
@ -50,6 +49,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
* return
|
||||
* @time 2023/9/1 16:59
|
||||
*/
|
||||
|
||||
public void backFillCsrCreditLine(DynamicObject dataEntitie){
|
||||
long id = dataEntitie.getLong("id");
|
||||
DynamicObject customer = dataEntitie.getDynamicObject("yem_customer");
|
||||
@ -57,10 +57,6 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
DynamicObject company = dataEntitie.getDynamicObject("yem_company.yem_erporg");
|
||||
String swiftCode = TotalUtil.getSwiftCode(dataEntitie);
|
||||
DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode);
|
||||
DynamicObjectCollection collection = dataEntitie.getDynamicObjectCollection("yem_creditdetail");
|
||||
if (collection.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
if (YEM.isNotEmpty(csrCreditLine)) {
|
||||
List<DynamicObject> objs = new ArrayList<>();
|
||||
DynamicObjectCollection infos = csrCreditLine.getDynamicObjectCollection("yem_im_info");
|
||||
@ -76,8 +72,6 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
csrCreditLine.set("yem_balance", decimal);
|
||||
SaveServiceHelper.save(new DynamicObject[]{csrCreditLine});
|
||||
}
|
||||
} else {
|
||||
throw new KDBizException("该客户未找到对应的客户信保额度申请,请检查,客户信保额度申请是否审核且有效!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,7 +155,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
|
||||
DynamicObject[] storagetrans = BusinessDataServiceHelper.load("yem_es_storagetrans",
|
||||
"yem_es_materialinfo.yem_productmodel,yem_es_materialinfo.yem_qty,"+
|
||||
"yem_es_materialinfo.yem_contractnumbers_m",
|
||||
"yem_es_materialinfo.yem_contractnumbers_m",
|
||||
new QFilter[]{
|
||||
new QFilter("billstatus", QCP.equals,"C"),
|
||||
new QFilter("yem_customer", QCP.equals,customer),
|
||||
|
@ -56,9 +56,6 @@ public class XSalesOrderFromEdit extends AbstractBillPlugIn {
|
||||
if ("yem_es_materialinfo".equals(name)) {
|
||||
setMaterialType(rowIndex);
|
||||
}
|
||||
if ("yem_multiconfig".equals(name)){
|
||||
this.getModel().setValue("yem_linetypes","add",rowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -349,15 +349,16 @@ public class GatheringClaimFormPlugin extends AbstractFormPlugin implements RowC
|
||||
long id = currency.getLong("id");
|
||||
qFilter.and("yem_currency.id", QCP.equals, id);
|
||||
}
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_salesorder", "id,billno,yem_offeramount", qFilter.toArray());
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_salesorder", "id", qFilter.toArray());
|
||||
Set<Long> pass = new HashSet<>();
|
||||
for (DynamicObject dynamicObject : load) {
|
||||
DynamicObject salesOrder = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), dynamicObject.getDynamicObjectType().getName());
|
||||
// 合同认领金额
|
||||
BigDecimal contractPayment = PaymentControlUtil.getContractClimeAmt(dynamicObject, "");
|
||||
BigDecimal contractPayment = PaymentControlUtil.getContractClimeAmt(salesOrder, "");
|
||||
// 合同金额
|
||||
BigDecimal offeramount = dynamicObject.getBigDecimal("yem_offeramount");
|
||||
BigDecimal offeramount = salesOrder.getBigDecimal("yem_offeramount");
|
||||
if (contractPayment.compareTo(offeramount) < 0) {
|
||||
Long pkValue = (Long) dynamicObject.getPkValue();
|
||||
Long pkValue = (Long) salesOrder.getPkValue();
|
||||
pass.add(pkValue);
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,8 @@ import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@ -46,28 +48,12 @@ public class ClientUtils {
|
||||
int rowInfo = 0;
|
||||
// boolean flag = false;
|
||||
for (DynamicObject temp : detailedinfor) {
|
||||
String yem_linetype = "";
|
||||
|
||||
if (Entityname.equals("yem_es_xsalesorder")) {
|
||||
yem_linetype = temp.getString("yem_linetype");
|
||||
String yem_linetype = temp.getString("yem_linetype");
|
||||
if (!yem_linetype.equals("add")) {
|
||||
boolean tor = true;
|
||||
DynamicObjectCollection yemMulticonfig = temp.getDynamicObjectCollection("yem_multiconfig");
|
||||
if (!yemMulticonfig.isEmpty()) {
|
||||
for (DynamicObject dynamicObject : yemMulticonfig) {
|
||||
String yemLinetypes = dynamicObject.getString("yem_linetypes");
|
||||
if ("add".equals(yemLinetypes)) {
|
||||
tor = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tor) {
|
||||
rowInfo++;
|
||||
continue;
|
||||
}
|
||||
rowInfo++;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
yem_linetype = "add";
|
||||
}
|
||||
//多功能配置分录行获取
|
||||
DynamicObjectCollection multiconfig = null;
|
||||
@ -120,8 +106,7 @@ public class ClientUtils {
|
||||
//客户需求单整机 -整机分录行
|
||||
// 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)) && "Z".equals(businesssort)) {
|
||||
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)) && "Z".equals(businesssort)) {
|
||||
|| "yem_es_salesorder_nmzj".equals(yem_billtype) || "yem_es_xsalesorder_zj".equals(yem_billtype) | "yem_es_xsalesorder_nmzj".equals(yem_billtype)) && "Z".equals(businesssort)) {
|
||||
list.add(new QFilter("yem_bd_products.id", QCP.equals, products));
|
||||
list.add(new QFilter("billstatus", QCP.equals, "C"));
|
||||
list.add(new QFilter("yem_billtype.number", QCP.equals, "yem_pricelibrary_ZJ"));
|
||||
@ -129,7 +114,11 @@ public class ClientUtils {
|
||||
// list.add(new QFilter("yem_productclass.number",QCP.equals,yemBdProductsid));
|
||||
//读取价格库数据
|
||||
DynamicObject yem_pricelibrary = null;
|
||||
yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0]));
|
||||
if (multiconfig != null && !multiconfig.isEmpty()) {
|
||||
yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0]));
|
||||
} else {
|
||||
yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0]));
|
||||
}
|
||||
if (yem_pricelibrary != null) {
|
||||
//多功能配置分录行无数据 则跳过查询价格库
|
||||
if (multiconfig != null && !multiconfig.isEmpty()) {
|
||||
@ -160,23 +149,7 @@ public class ClientUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
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"))) {
|
||||
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 {
|
||||
setPriceNow(multiconfig, dataMap, rowInfo, models);
|
||||
}
|
||||
setPriceNow(multiconfig, dataMap, rowInfo, models);
|
||||
}
|
||||
DynamicObjectCollection yem_basicmodel = yem_pricelibrary.getDynamicObjectCollection("yem_basicmodel");
|
||||
if (yem_basicmodel != null && !yem_basicmodel.isEmpty()) {
|
||||
@ -203,20 +176,14 @@ 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")) {
|
||||
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)) {
|
||||
// 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);
|
||||
}
|
||||
//客户需求单配件
|
||||
|
||||
// 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)) && "P".equals(businesssort)) {
|
||||
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")) {
|
||||
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)) {
|
||||
pjFindPrice(yem_exrate, info, pjDatas, rowInfo, list, materials, models, yemBdProductsid);
|
||||
}
|
||||
rowInfo++;
|
||||
@ -371,7 +338,7 @@ public class ClientUtils {
|
||||
*/
|
||||
public static void setPriceNow(DynamicObjectCollection multiconfig, Map<Long, BigDecimal> dataMap, int rowInfo, IDataModel models) {
|
||||
int multiconfigIndex = 0;
|
||||
if (!multiconfig.isEmpty()) {
|
||||
if (multiconfig != null && multiconfig.size() > 0) {
|
||||
for (DynamicObject dc : multiconfig) {
|
||||
long configentryid = dc.getLong("yem_configentryid");
|
||||
BigDecimal configentry = dataMap.get(configentryid) == null ? BigDecimal.ZERO : dataMap.get(configentryid).setScale(2);
|
||||
@ -1471,8 +1438,7 @@ public class ClientUtils {
|
||||
raprate = BigDecimalUtils.div(raprate, new BigDecimal("100"), 10);
|
||||
BigDecimal sinosurerate = (BigDecimal) model.getValue("yem_sinosurerate", i);//信保费率
|
||||
sinosurerate = BigDecimalUtils.div(sinosurerate, new BigDecimal("100"), 10);
|
||||
BigDecimal multiply = safobprice.add(seafreight).add(marinsupreamt).multiply(raprate);
|
||||
multiply = (multiply.add(interestamt)).multiply(sinosurerate);
|
||||
BigDecimal multiply = safobprice.add(seafreight).add(marinsupreamt).add(interestamt).multiply(raprate).multiply(sinosurerate);
|
||||
calculate = calculate.add(multiply);
|
||||
}
|
||||
}
|
||||
@ -1502,44 +1468,22 @@ 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;
|
||||
int rowCount = model.getEntryRowCount("yem_es_salescontrac_s");
|
||||
BigDecimal setScale = BigDecimal.ZERO;
|
||||
BigDecimal yemEAirliftcosts = BigDecimal.ZERO;
|
||||
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));//利息天数
|
||||
BigDecimal yem_sinosurerate = ((BigDecimal) model.getValue("yem_sinosurerate", i));//信保费率
|
||||
// BigDecimal calculate = raprate;
|
||||
BigDecimal yem_e_interestamt = safobprice.add(seafreight).add(yemELandcarrycost).add(yemEAirliftcost).add(yemPortamt)
|
||||
.add(yemInlandtransportation).add(yemEBankcost).add(yemEElsecost).add(yemCostsinclude).add(marinsupreamt);
|
||||
BigDecimal multiply = BigDecimalUtils.multiply(yem_e_interestamt, raprate, 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);
|
||||
setScale =setScale.add(multiply.setScale(0, RoundingMode.UP));
|
||||
BigDecimal yem_e_creditamt = BigDecimalUtils.multiply(yem_e_interestamt,raprate,10);
|
||||
yem_e_creditamt = BigDecimalUtils.div(yem_e_creditamt, new BigDecimal(100),10);
|
||||
yem_e_creditamt = BigDecimalUtils.add(yem_e_creditamt, setScale, 10);
|
||||
yem_e_creditamt= BigDecimalUtils.multiply(yem_e_creditamt,yem_sinosurerate,10);
|
||||
yemEAirliftcosts = yemEAirliftcosts.add(BigDecimalUtils.div(yem_e_creditamt, new BigDecimal(100),10));
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
model.setValue("yem_e_interestamt", setScale, rowIdx);
|
||||
model.setValue("yem_e_creditamt", yemEAirliftcosts, rowIdx);
|
||||
model.setValue("yem_e_interestamt", calculate.setScale(0, RoundingMode.UP), rowIdx);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2006,13 +1950,12 @@ public class ClientUtils {
|
||||
/**
|
||||
* 计算销售FOB单价
|
||||
* <p>
|
||||
* 销售FOB单价=商品明细对应多功能配置中 单台加价金额(结算币别)合计值 + 销售FCA标配青岛单价
|
||||
* 销售FOB单价=商品明细对应多功能配置中 单台加价金额(结算币别)合计值 + 销售FCA标配青岛单价+FOB与FCA费用差额
|
||||
*/
|
||||
public static void calculateSalesFOBUnitPrice(IDataModel model, int idx) {
|
||||
// if (!isFCAPriceItem(model, idx)) {
|
||||
// return;
|
||||
// }
|
||||
String string = model.getDataEntityType().getName();
|
||||
|
||||
DynamicObject dataEntity = model.getDataEntity(true);
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
@ -2034,15 +1977,6 @@ 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")) {
|
||||
String yemLinetype = d.getString("yem_linetype");
|
||||
if (!"add".equals(yemLinetype)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!"Z".equals(d.getString("yem_businesssort"))) {
|
||||
continue;
|
||||
}
|
||||
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_multiconfig");
|
||||
BigDecimal sumAmt = BigDecimal.ZERO;
|
||||
for (DynamicObject sub : subC) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.yem.wm.im.csrCreditLine.task;
|
||||
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
@ -10,9 +11,9 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@ -35,18 +36,15 @@ public class CsrCreditLineTask extends AbstractTask {
|
||||
Date unused = dynamicObject.getDate("yem_unused");
|
||||
// if (YEM.isNotEmpty(unused)) {
|
||||
// data(dynamicObject, unused, "yem_countdown");
|
||||
BigDecimal yemInactivityperiod = dynamicObject.getBigDecimal("yem_inactivityperiod");
|
||||
Date date = dynamicObject.getDate("yem_recentlapse");
|
||||
recentl(dynamicObject, yemInactivityperiod, date);
|
||||
BigDecimal yemInactivityperiod = dynamicObject.getBigDecimal("yem_inactivityperiod");
|
||||
Date date = dynamicObject.getDate("yem_recentlapse");
|
||||
recentl(dynamicObject, yemInactivityperiod, date);
|
||||
// }
|
||||
DynamicObjectCollection collection = dynamicObject.getDynamicObjectCollection("yem_im_info");
|
||||
for (DynamicObject object : collection) {
|
||||
BigDecimal yemAmountowed = object.getBigDecimal("yem_amountowed");
|
||||
if (yemAmountowed.compareTo(yemInactivityperiod) > 0) {
|
||||
Date receivableDate = object.getDate("yem_paydate1");
|
||||
if (receivableDate == null) continue;
|
||||
daysBetween(object, receivableDate, "yem_countpayback");
|
||||
}
|
||||
Date receivableDate = object.getDate("yem_paydate1");
|
||||
if (receivableDate == null) continue;
|
||||
data(object, receivableDate, "yem_countpayback");
|
||||
}
|
||||
}
|
||||
SaveServiceHelper.save(csrcreditlines);
|
||||
@ -55,12 +53,10 @@ public class CsrCreditLineTask extends AbstractTask {
|
||||
for (DynamicObject storagetran : storagetrans) {
|
||||
DynamicObjectCollection collection = storagetran.getDynamicObjectCollection("yem_creditdetail");
|
||||
for (DynamicObject object : collection) {
|
||||
BigDecimal yemAmountowed = object.getBigDecimal("yem_amountowed");
|
||||
if(yemAmountowed.compareTo(BigDecimal.ZERO) > 0){
|
||||
Date receivableDate = object.getDate("yem_paydate1");
|
||||
if (receivableDate == null) continue;
|
||||
daysBetween(object, receivableDate, "yem_countpayback");
|
||||
}}
|
||||
data(object, receivableDate, "yem_countpayback");
|
||||
}
|
||||
}
|
||||
SaveServiceHelper.save(storagetrans);
|
||||
}
|
||||
@ -68,19 +64,16 @@ public class CsrCreditLineTask extends AbstractTask {
|
||||
public static void recentl(DynamicObject dynamicObject, BigDecimal yemInactivityperiod, Date date) {
|
||||
if (date != null) {
|
||||
if (yemInactivityperiod.compareTo(BigDecimal.ZERO) != 0) {
|
||||
// BigDecimal yemSumamountowed = dynamicObject.getBigDecimal("yem_sumamountowed");
|
||||
// if (yemSumamountowed.compareTo(BigDecimal.ZERO) != 0) {
|
||||
long daysInMilliseconds = yemInactivityperiod.longValue() * TimeUnit.DAYS.toMillis(1);
|
||||
Date yemRecentlapse = new Date(date.getTime() + daysInMilliseconds);
|
||||
dynamicObject.set("yem_unused", yemRecentlapse);
|
||||
Date newdate = new Date();
|
||||
long millisDifference = yemRecentlapse.getTime() - newdate.getTime();
|
||||
long daysDifference = TimeUnit.MILLISECONDS.toDays(millisDifference);
|
||||
BigDecimal bigDecimalDaysDifference = BigDecimal.valueOf(daysDifference);
|
||||
dynamicObject.set("yem_countdown", bigDecimalDaysDifference.add(BigDecimal.ONE));
|
||||
long daysInMilliseconds = yemInactivityperiod.longValue() * TimeUnit.DAYS.toMillis(1);
|
||||
Date yemRecentlapse = new Date(date.getTime() + daysInMilliseconds);
|
||||
dynamicObject.set("yem_unused", yemRecentlapse);
|
||||
Date newdate = new Date();
|
||||
long millisDifference = yemRecentlapse.getTime() - newdate.getTime();
|
||||
long daysDifference = TimeUnit.MILLISECONDS.toDays(millisDifference);
|
||||
BigDecimal bigDecimalDaysDifference = BigDecimal.valueOf(daysDifference);
|
||||
dynamicObject.set("yem_countdown", bigDecimalDaysDifference.add(BigDecimal.ONE));
|
||||
// } else {
|
||||
// csrcreditline.set("yem_unused", yemRecentlapse);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,11 +97,7 @@ public class CsrCreditLineTask extends AbstractTask {
|
||||
long diffInDays = over.toEpochDay() - start.toEpochDay();
|
||||
object.set(yemCountpayback, diffInDays);
|
||||
}
|
||||
}
|
||||
|
||||
public static void daysBetween(DynamicObject object, Date date, String field) {
|
||||
LocalDate localDate = date.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
|
||||
LocalDate today = LocalDate.now();
|
||||
object.set(field, ChronoUnit.DAYS.between(localDate, today));
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,8 +28,8 @@ public class CsrCreditSubmitLineValidator extends AbstractValidator {
|
||||
// DynamicObject org = dataEntity.getDynamicObject("org");
|
||||
Date bizDate = dataEntity.getDate("yem_bizdate");
|
||||
String swiftcode = dataEntity.getString("yem_swiftcode");
|
||||
// Date yearBegin = getYearBegin(bizDate);
|
||||
// Date yearLast = getYearLast(bizDate);
|
||||
Date yearBegin = getYearBegin(bizDate);
|
||||
Date yearLast = getYearLast(bizDate);
|
||||
|
||||
if (!customer.containsProperty("yem_customer")) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
@ -37,19 +37,19 @@ public class CsrCreditSubmitLineValidator extends AbstractValidator {
|
||||
QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer"));
|
||||
// QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
// qFilter.and(new QFilter("org", QCP.equals, org.getPkValue()));
|
||||
// qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin));
|
||||
// qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast));
|
||||
qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin));
|
||||
qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast));
|
||||
qFilter.and(new QFilter("billstatus", QCP.in, new String[]{"B", "C"}));
|
||||
qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getLong("id")));
|
||||
if ("信用证".contains(method.getString("name"))) {
|
||||
if ("信用证".equals(method.getString("name"))) {
|
||||
qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftcode));
|
||||
}
|
||||
DynamicObject[] objs = BusinessDataServiceHelper.load(dataEntity.getDynamicObjectType().getName(), "id", qFilter.toArray());
|
||||
if (objs.length > 0) {
|
||||
if ("信用证".contains(method.getString("name"))) {
|
||||
this.addErrorMessage(dataEntitie, "相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!");
|
||||
if ("信用证".equals(method.getString("name"))) {
|
||||
this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!");
|
||||
} else {
|
||||
this.addErrorMessage(dataEntitie, "相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!");
|
||||
this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.yem.wm.im.debcrednotenew.op;
|
||||
|
||||
import com.alibaba.druid.support.logging.Log;
|
||||
import com.alibaba.druid.support.logging.LogFactory;
|
||||
import com.yem.wm.es.salesorder.validator.SaleOrderDelValidator;
|
||||
import com.yem.wm.im.debcrednotenew.utils.DebCredUtils;
|
||||
import com.yem.wm.im.debcrednotenew.validator.DebCredNewAuditValidatorOp;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
@ -17,6 +18,7 @@ import kd.bos.exception.KDBizException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
@ -59,7 +61,7 @@ public class DebCredNewAuditPlugin extends AbstractOperationServicePlugIn {
|
||||
BigDecimal yemAmountSub = temp.getBigDecimal("yem_amount_sub");//配件资金池扣减金额
|
||||
BigDecimal yemLastrmbamt = temp.getBigDecimal("yem_lastrmbamt");//上次人民币金额
|
||||
if ("USD".equals(yemCurrencyString)){
|
||||
BigDecimal yem_remainingusdamount = yemLastusdamt.add(yemAmount).subtract(yemLastusdamt);
|
||||
BigDecimal yem_remainingusdamount = yemLastusdamt.add(yemAmount).subtract(yemAmountSub);
|
||||
temp.set("yem_remainingusdamount",yem_remainingusdamount);
|
||||
temp.set("yem_remainingamount",yemLastrmbamt);
|
||||
}else if ("CNY".equals(yemCurrencyString)){
|
||||
|
@ -9,6 +9,8 @@ import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.BeforeOperationArgs;
|
||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
@ -17,13 +19,14 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2024/3/30 20:12
|
||||
* @className DebCredNewSubmitOp
|
||||
* @description 贷记单提交服务插件
|
||||
* @date 2024/3/30 20:12
|
||||
* @className DebCredNewSubmitOp
|
||||
* @description 贷记单提交服务插件
|
||||
*/
|
||||
public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
@Override
|
||||
@ -38,34 +41,35 @@ public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
e.addValidator(new DebCredNewAuditValidatorOp());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEnties = e.getDataEntities();
|
||||
for (DynamicObject temp : dataEnties) {
|
||||
//2024-10-08 zhouc 修改至提交前计算
|
||||
// getlast(temp);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
|
||||
super.beforeExecuteOperationTransaction(e);
|
||||
for (ExtendedDataEntity dataEntity : e.getSelectedRows()) {
|
||||
DynamicObject dynamicObject = dataEntity.getDataEntity();
|
||||
getlast(dynamicObject);
|
||||
SaveServiceHelper.update(dynamicObject);
|
||||
DynamicObject billObj = dataEntity.getDataEntity();
|
||||
getlast(billObj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算上次美元金额(实际) 上次人民币金额(实际)
|
||||
* @param temp 单据数据
|
||||
* 计算上次美元金额(实际) 上次人民币金额(实际)
|
||||
* @param temp
|
||||
*/
|
||||
|
||||
public void getlast(DynamicObject temp) {
|
||||
public void getlast(DynamicObject temp){
|
||||
temp = BusinessDataServiceHelper.loadSingle(temp.getPkValue(), temp.getDynamicObjectType().getName());
|
||||
DynamicObject yemCurrency = temp.getDynamicObject("yem_currency");
|
||||
//借贷业务类型
|
||||
DynamicObject yem_credittype = temp.getDynamicObject("yem_credittype");
|
||||
//集团客户
|
||||
DynamicObject yem_customer = temp.getDynamicObject("yem_groupcusfields");
|
||||
//产品类型
|
||||
DynamicObject yem_bd_products = temp.getDynamicObject("yem_bd_products");
|
||||
|
||||
BigDecimal yemAmount = temp.getBigDecimal("yem_amount");//配件资金池增加金额
|
||||
BigDecimal yemAmountSub = temp.getBigDecimal("yem_amount_sub");//配件资金池扣减金额
|
||||
QFilter qFilter1 = new QFilter("billstatus", QCP.equals, "C");
|
||||
qFilter1.and(new QFilter("yem_credittype.id", QCP.equals, yem_credittype.getLong("id")));
|
||||
qFilter1.and(new QFilter("yem_groupcusfields.id", QCP.equals, yem_customer.getLong("id")));
|
||||
@ -76,24 +80,24 @@ public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
String selectfielddebcrednote = DynamicObjectUtil.getSelectfields("yem_debcrednote", false);
|
||||
DynamicObjectCollection debcrednote = QueryServiceHelper.query("yem_debcrednote",
|
||||
selectfielddebcrednote, new QFilter[]{qFilter1}, "billno desc");
|
||||
if (!debcrednote.isEmpty()) {
|
||||
if (debcrednote.size() > 0) {
|
||||
String billno = debcrednote.get(0).getString("billno");
|
||||
temp.set("yem_lastbillno", billno);
|
||||
}
|
||||
//组织
|
||||
DynamicObject org = temp.getDynamicObject("org");
|
||||
String products = "";
|
||||
String yem_bd_productsumber = yem_bd_products.getString("number");
|
||||
if (yem_bd_productsumber.contains("ZZJ")) {
|
||||
products = "ZZJ";
|
||||
} else if (yem_bd_productsumber.contains("CC")) {
|
||||
products = "CC";
|
||||
} else if (yem_bd_productsumber.contains("TLJ")) {
|
||||
products = "TLJ";
|
||||
} else if (yem_bd_productsumber.contains("WJJ")) {
|
||||
products = "WJJ";
|
||||
if (yem_bd_products != null) {
|
||||
String number = yem_bd_products.getString("number");
|
||||
if (number.contains("ZZJ")) {
|
||||
products = "ZZJ";
|
||||
} else if (number.contains("CC")) {
|
||||
products = "CC";
|
||||
} else if (number.contains("TLJ")) {
|
||||
products = "TLJ";
|
||||
}
|
||||
}
|
||||
if (org != null) {
|
||||
if (org != null && yem_customer != null && yem_credittype != null && products != null) {
|
||||
QFilter qFilter = new QFilter("billstatus", QCP.equals, "C");//
|
||||
qFilter.and(new QFilter("org.id", QCP.equals, org.getLong("id")));
|
||||
qFilter.and(new QFilter("yem_customer.id", QCP.equals, yem_customer.getLong("id")));
|
||||
@ -105,21 +109,24 @@ public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
DynamicObjectCollection data = QueryServiceHelper.query("yem_spcapitalpool", selectfields, new QFilter[]{qFilter}, "billno");
|
||||
Map<Long, BigDecimal> map = new HashMap<>();
|
||||
Map<Long, BigDecimal> map1 = new HashMap<>();
|
||||
if (!data.isEmpty()) {
|
||||
for (DynamicObject dynamicObject : data) {
|
||||
if (data.size() > 0) {
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
DynamicObject dynamicObject = data.get(i);
|
||||
long yem_curr = dynamicObject.getLong("yem_spcapitalpool_a.yem_curr");
|
||||
BigDecimal yem_noamo = dynamicObject.getBigDecimal("yem_spcapitalpool_a.yem_actremaamount");//实际剩余金额
|
||||
BigDecimal yem_estamount = dynamicObject.getBigDecimal("yem_spcapitalpool_a.yem_estamount");//预计剩余金额
|
||||
if (map.containsKey(yem_curr)) {
|
||||
map.computeIfPresent(yem_curr, (k, bigDecimal) -> bigDecimal.add(yem_noamo));
|
||||
map1.computeIfPresent(yem_curr, (k, bigDecimal1) -> bigDecimal1.add(yem_estamount));
|
||||
BigDecimal bigDecimal = map.get(yem_curr);
|
||||
map.put(yem_curr, bigDecimal.add(yem_noamo));
|
||||
BigDecimal bigDecimal1 = map1.get(yem_curr);
|
||||
map1.put(yem_curr, bigDecimal1.add(yem_estamount));
|
||||
} else {
|
||||
map.put(yem_curr, yem_noamo);
|
||||
map1.put(yem_curr, yem_estamount);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!map.isEmpty()) {
|
||||
if (map.size() > 0) {
|
||||
for (Long mapkey : map.keySet()) {
|
||||
BigDecimal bigDecimal = map.get(mapkey);
|
||||
DynamicObject yem_em_replace = BusinessDataServiceHelper.loadSingle(mapkey, "bd_currency");
|
||||
@ -127,35 +134,14 @@ public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
String number = yem_em_replace.getString("number");
|
||||
if (number.equals("CNY")) {
|
||||
temp.set("yem_creditrmbamt", bigDecimal);
|
||||
if (yemCurrency != null) {
|
||||
String numbers = yemCurrency.getString("number");
|
||||
if ("CNY".equals(numbers)) {
|
||||
// temp.set("yem_koujianusd", bigDecimal);
|
||||
temp.set("yem_koujiancny", bigDecimal.add(yemAmount.subtract(yemAmountSub)));
|
||||
} else if ("USD".equals(numbers)) {
|
||||
// temp.set("yem_koujianusd", bigDecimal.add(yemAmount.subtract(yemAmountSub)));
|
||||
temp.set("yem_koujiancny", bigDecimal);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (number.equals("USD")) {
|
||||
temp.set("yem_creditusdamt", bigDecimal);
|
||||
if (yemCurrency != null) {
|
||||
String numbers = yemCurrency.getString("number");
|
||||
if ("CNY".equals(numbers)) {
|
||||
temp.set("yem_koujianusd", bigDecimal);
|
||||
// temp.set("yem_koujiancny", bigDecimal.add(yemAmount.subtract(yemAmountSub)));
|
||||
} else if ("USD".equals(numbers)) {
|
||||
temp.set("yem_koujianusd", bigDecimal.add(yemAmount.subtract(yemAmountSub)));
|
||||
// temp.set("yem_koujiancny", bigDecimal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!map1.isEmpty()) {
|
||||
if (map1.size() > 0) {
|
||||
for (Long mapkey : map1.keySet()) {
|
||||
BigDecimal bigDecimal = map1.get(mapkey);
|
||||
DynamicObject yem_em_replace = BusinessDataServiceHelper.loadSingle(mapkey, "bd_currency");
|
||||
@ -170,10 +156,8 @@ public class DebCredNewSubmitOp extends AbstractOperationServicePlugIn {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// throw new RuntimeException("返回");
|
||||
|
||||
SaveServiceHelper.update(temp);
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,27 @@
|
||||
package com.yem.wm.im.debcrednotenew.op;
|
||||
|
||||
import com.yem.wm.im.debcrednotenew.utils.DebCredUtils;
|
||||
import com.yem.wm.im.debcrednotenew.validator.DebCredNewUnAuditValidator;
|
||||
import com.yem.wm.utils.FunctionalCommon;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2024/3/28 14:32
|
||||
@ -23,14 +29,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
* @description 贷记单反审核(新)服务插件
|
||||
*/
|
||||
public class DebCredNewUnAuditPlugin extends AbstractOperationServicePlugIn {
|
||||
|
||||
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
super.onAddValidators(e);
|
||||
e.addValidator(new DebCredNewUnAuditValidator());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEnties = e.getDataEntities();
|
||||
|
@ -570,9 +570,6 @@ public class DebCredUtils {
|
||||
debcrednote.set("yem_sourcecreditno", getsourcecreditno(dataEntitie, object, "B"));
|
||||
debcrednote.set("yem_sourcebillno", dataEntitie.getString("billno"));
|
||||
debcrednote.set("yem_bd_products", dataEntitie.getDynamicObject("yem_bd_products"));
|
||||
debcrednote.set("yem_accessories", dataEntitie.getString("yem_accessories"));
|
||||
debcrednote.set("yem_sale_type",dataEntitie.getString("yem_sale_type"));//出口
|
||||
debcrednote.set("yem_wholemachine", dataEntitie.getString("yem_wholemachine"));
|
||||
debcrednote.set("yem_groupcusfields", dataEntitie.getDynamicObject("yem_customer").getDynamicObject("yem_groupcustomers"));
|
||||
DynamicObject yem_currency = dataEntitie.getDynamicObject("yem_givecurrency");
|
||||
DynamicObject yem_currencybase = OrderUtils.seelctDyn("bd_currency", "number", "CNY");
|
||||
@ -674,10 +671,6 @@ public class DebCredUtils {
|
||||
debcrednote.set("yem_quotation", "0");
|
||||
debcrednote.set("yem_source", billno);
|
||||
debcrednote.set("yem_partscredit", "C");
|
||||
debcrednote.set("yem_accessories", dataEntitie.getString("yem_accessories"));
|
||||
debcrednote.set("yem_wholemachine", dataEntitie.getString("yem_wholemachine"));
|
||||
debcrednote.set("yem_sale_type",dataEntitie.getString("yem_sale_type"));//出口
|
||||
|
||||
// BigDecimal yem_userate = dataEntitie.getBigDecimal("yem_exrate");
|
||||
// if (yem_userate.compareTo(BigDecimal.ZERO) == 0) {
|
||||
if (yem_currency != null && yem_currencybase != null && yem_exratetable != null) {
|
||||
|
@ -35,10 +35,6 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator {
|
||||
if (yem_groupcusfields == null) {
|
||||
this.addErrorMessage(dataEntitie, "对应集团客户不能为空,如果没有集团客户请在《客户》维护后再尝试操作!");
|
||||
}
|
||||
String yemGenerate = dataEntity.getString("yem_generate");
|
||||
if (!"B".equals(yemGenerate)) {
|
||||
return;
|
||||
}
|
||||
//客户
|
||||
String customername = "";
|
||||
DynamicObject yem_customer = dataEntity.getDynamicObject("yem_customer");
|
||||
|
@ -1,45 +0,0 @@
|
||||
package com.yem.wm.im.debcrednotenew.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;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author ljw
|
||||
* @date 2024/12/23 17:43
|
||||
* @description DebCredNewUnAuditValidator
|
||||
*/
|
||||
public class DebCredNewUnAuditValidator extends AbstractValidator {
|
||||
|
||||
@Override
|
||||
public void validate() {
|
||||
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||
for (ExtendedDataEntity dataEntitie : dataEntities) {
|
||||
DynamicObject dataEntity = dataEntitie.getDataEntity();
|
||||
String billno = dataEntity.getString("billno");
|
||||
if (billno.length() > 4) {
|
||||
BigDecimal bigDecimal = BigDecimal.ZERO;
|
||||
String modifiedString = billno.substring(0, billno.length() - 4);
|
||||
String substringed = billno.substring(billno.length() - 4);
|
||||
DynamicObject[] loaded = BusinessDataServiceHelper.load("yem_debcrednote", "id,billno", new QFilter[]{new QFilter("billno", QCP.in, modifiedString + "%")});
|
||||
for (DynamicObject dynamicObject : loaded) {
|
||||
String dynamicObjectString = dynamicObject.getString("billno");
|
||||
String substring = dynamicObjectString.substring(dynamicObjectString.length() - 4);
|
||||
BigDecimal decimal = BigDecimal.valueOf(Double.parseDouble(substring));
|
||||
if (decimal.compareTo(bigDecimal) > 0) {
|
||||
bigDecimal = decimal;
|
||||
}
|
||||
}
|
||||
BigDecimal decimal = BigDecimal.valueOf(Double.parseDouble(substringed));
|
||||
if (bigDecimal.compareTo(BigDecimal.ZERO) != 0 && decimal.compareTo(bigDecimal) != 0) {
|
||||
this.addMessage(dataEntitie, "当前单不是最大单号,请从最大单号开始删除!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,6 @@ import com.yem.em.utils.AtlasUtils;
|
||||
import com.yem.wm.im.delivernotice.utils.DeliverNoticeUtilsEdit;
|
||||
import com.yem.wm.utils.RequestCmmp;
|
||||
import com.yem.wm.utils.StringUtils;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
@ -93,7 +92,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 +100,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 +112,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");
|
||||
@ -126,11 +125,7 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
|
||||
if (yemMilltype != null) {
|
||||
dynamicObject.set("group", seelctDyn("yem_em_electronicgroup", "number", yemMilltype.getString("number")));
|
||||
}
|
||||
DynamicObject customer = dataEntitie.getDynamicObject("yem_customer");
|
||||
dynamicObject.set("yem_customer", customer);
|
||||
if (YEM.isNotEmpty(customer)) {
|
||||
dynamicObject.set("yem_groupcustomer", customer.getDynamicObject("yem_groupcustomers"));
|
||||
}
|
||||
dynamicObject.set("yem_customer", dataEntitie.getDynamicObject("yem_customer"));
|
||||
dynamicObject.set("yem_salesorderno", materialinfo.getString("yem_conbillnumber"));
|
||||
String yemSourcebilltypeE = materialinfo.getString("yem_sourcebilltype_e");
|
||||
if (yemSourcebilltypeE.equals("yem_shippingdetails")) {
|
||||
@ -154,11 +149,7 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
|
||||
dynamicObject.set("yem_enginecode", submaterialinfo.getString("yem_engineno"));
|
||||
dynamicObject.set("yem_enginemodel", submaterialinfo.getString("yem_enginemodel"));
|
||||
dynamicObject.set("yem_enginevendor", submaterialinfo.getString("yem_enginevendor"));
|
||||
DynamicObject order = querySalesOrder(materialinfo.getString("yem_conbillnumber"));
|
||||
if (YEM.isNotEmpty(order)) {
|
||||
dynamicObject.set("yem_dateofpurchase", order.getDate("yem_signdate"));//订单日期
|
||||
dynamicObject.set("yem_ordercustomer", order.get("yem_customer"));//合同客户
|
||||
}
|
||||
dynamicObject.set("yem_dateofpurchase", getdateofpurchase(materialinfo.getString("yem_conbillnumber")));//订单日期
|
||||
dynamicObject.set("yem_heqty", yem_qty);//数量
|
||||
if (yemResourcescode != null) {
|
||||
|
||||
@ -222,25 +213,15 @@ public class DeliverNoticeAssAuditOpEdit extends AbstractOperationServicePlugIn
|
||||
return null;
|
||||
}
|
||||
|
||||
public DynamicObject querySalesOrder(String billno) {
|
||||
QFilter qFilter = new QFilter("billno", QCP.equals, billno);//替换零件编码
|
||||
return BusinessDataServiceHelper.loadSingle("yem_es_salesorder",
|
||||
"id,yem_signdate,yem_customer"
|
||||
, new QFilter[]{qFilter});
|
||||
}
|
||||
|
||||
//获取整机上线时间
|
||||
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'
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -249,14 +230,11 @@ 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'
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -90,8 +90,7 @@ public class DeliverNoticeNewAuditOp extends AbstractOperationServicePlugIn {
|
||||
String yem_contractnum = dataEntitie.getString("yem_contractnum");
|
||||
QFilter qFilter = new QFilter("billstatus", QCP.equals, "C");//
|
||||
qFilter.and(new QFilter("billno", QCP.equals, yem_contractnum));
|
||||
DynamicObject yem_es_salesorder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_partscredit" +
|
||||
",yem_accessories,yem_wholemachine,yem_sale_type", new QFilter[]{qFilter});
|
||||
DynamicObject yem_es_salesorder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_partscredit", new QFilter[]{qFilter});
|
||||
if (yem_es_salesorder != null) {
|
||||
yem_partscredit = yem_es_salesorder.getString("yem_partscredit");
|
||||
}
|
||||
@ -113,11 +112,6 @@ public class DeliverNoticeNewAuditOp extends AbstractOperationServicePlugIn {
|
||||
QFilter qFilter1 = new QFilter("number", QCP.equals, "JDJLX-0002");
|
||||
DynamicObject Object = BusinessDataServiceHelper.loadSingle("yem_bd_debcredtype", "id,number,name", qFilter1.toArray());
|
||||
debCredNote.set("yem_credittype", Object);
|
||||
if (yem_es_salesorder!=null){
|
||||
debCredNote.set("yem_accessories", yem_es_salesorder.getString("yem_accessories"));
|
||||
debCredNote.set("yem_wholemachine", yem_es_salesorder.getString("yem_wholemachine"));
|
||||
debCredNote.set("yem_sale_type",yem_es_salesorder.getString("yem_sale_type"));//出口
|
||||
}
|
||||
String debCredNoteNumber = debCredNote.getDynamicObjectType().getName();
|
||||
OperationResult save = OperationServiceHelper.executeOperate("save", debCredNoteNumber, new DynamicObject[]{debCredNote}, OperateOption.create());
|
||||
if (save.isSuccess()) {
|
||||
|
@ -20,11 +20,11 @@ public class DeliverNoticeValidator extends AbstractValidator {
|
||||
if ("A".equals(yemAttributesneed)) {
|
||||
if (yem_supfinorg != null) {
|
||||
String number = yem_supfinorg.getString("number");
|
||||
extracted(entity, bill, number, "财务", "yem_materialcompanyinfo");
|
||||
extracted(entity, bill, number, "财务", "yem_material_inveninfo");
|
||||
}
|
||||
if (yem_org != null) {
|
||||
String number = yem_org.getString("number");
|
||||
extracted(entity, bill, number, "库存", "yem_material_inveninfo");
|
||||
extracted(entity, bill, number, "库存", "yem_materialcompanyinfo");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package com.yem.wm.im.placeexamine.op;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
@ -10,9 +9,6 @@ import static com.yem.wm.im.placeexamine.op.AlaceexamineAuditOp.back_placeexamin
|
||||
|
||||
public class AlaceexamineSubmitOp extends AbstractOperationServicePlugIn
|
||||
{
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
|
||||
}
|
||||
@Override
|
||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||
super.afterExecuteOperationTransaction(e);
|
||||
|
@ -2,24 +2,28 @@ package com.yem.wm.im.priceLibrary.form;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yem.em.utils.BigDecimalUtils;
|
||||
import com.yem.wm.utils.DynamicObjectUtil;
|
||||
import com.yem.wm.utils.FunctionalCommon;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.IDataEntityProperty;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.property.AmountProp;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.field.AmountEdit;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description 选装动态表单插件
|
||||
@ -90,7 +94,6 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin {
|
||||
List<Long> ids = (List<Long>) customParams.get("ids");
|
||||
qFilters.add(new QFilter("yem_bd_products", QCP.equals, products));
|
||||
qFilters.add(new QFilter("status", QCP.equals, "C"));
|
||||
qFilters.add(new QFilter("enable", QCP.equals, "1"));
|
||||
DynamicObject mechanical = BusinessDataServiceHelper.loadSingle("yem_bd_mechanical", "id", qFilters.toArray(new QFilter[qFilters.size()]));
|
||||
if (mechanical != null) {
|
||||
mechanical = BusinessDataServiceHelper.loadSingle(mechanical.getPkValue(), mechanical.getDynamicObjectType().getName());
|
||||
@ -182,7 +185,7 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin {
|
||||
parentModel.setValue("yem_arguments", model.getValue("yem_parameter", selectRow), optionalRow);
|
||||
parentModel.setValue("yem_remarkss", model.getValue("yem_remarke", selectRow), optionalRow);
|
||||
parentModel.setValue("yem_configentryid", model.getValue("yem_entryid", selectRow), optionalRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_c", selectRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_c", optionalRow);
|
||||
if (YEM.isNotEmpty(modelConfigR)) {
|
||||
parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow);
|
||||
parentModel.setValue("yem_ename_config", modelConfigR.getString("yem_standard_ename"), optionalRow);
|
||||
|
@ -176,7 +176,7 @@ public class ReplaceFormPlugIn extends AbstractFormPlugin implements Plugin {
|
||||
parentModel.setValue("yem_unitsetnumber", model.getValue("yem_unitsetnumber", selectRow), optionalRow);
|
||||
parentModel.setValue("yem_remarkss", model.getValue("yem_remarke", selectRow), optionalRow);
|
||||
parentModel.setValue("yem_configentryid", model.getValue("yem_entryid", selectRow), optionalRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", selectRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", optionalRow);
|
||||
DynamicObject parentDataEntity = parentModel.getDataEntity(true);
|
||||
if (YEM.isNotEmpty(modelConfigR)) {
|
||||
parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow);
|
||||
|
@ -170,7 +170,7 @@ public class RetrofittingFormPlugIn extends AbstractFormPlugin implements Plugin
|
||||
parentModel.setValue("yem_unitsetnumber", model.getValue("yem_unitsetnumber", selectRow), optionalRow);
|
||||
parentModel.setValue("yem_remarkss",model.getValue("yem_remarke",selectRow),optionalRow);
|
||||
parentModel.setValue("yem_configentryid",model.getValue("yem_entryid",selectRow),optionalRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", selectRow);
|
||||
DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", optionalRow);
|
||||
if (YEM.isNotEmpty(modelConfigR)) {
|
||||
parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow);
|
||||
parentModel.setValue("yem_ename_config", modelConfigR.getString("yem_standard_ename"), optionalRow);
|
||||
|
@ -11,12 +11,13 @@ import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.AttachmentPanel;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.control.events.RowClickEvent;
|
||||
import kd.bos.form.control.events.RowClickEventListener;
|
||||
import kd.bos.form.control.events.*;
|
||||
import kd.bos.form.events.*;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
@ -378,9 +379,8 @@ public class TrackplaceFormPlugIn extends AbstractBillPlugIn implements Plugin,
|
||||
DynamicObject yemMateriel = dynamicObject.getDynamicObject("yem_materiel");
|
||||
if (yemMateriel != null) {
|
||||
BigDecimal netweight = yemMateriel.getBigDecimal("netweight");
|
||||
BigDecimal yemNetweight = yemMateriel.getBigDecimal("yem_netweight");
|
||||
boolean yemIsgift = dynamicObject.getBoolean("yem_isgift");
|
||||
if (netweight.compareTo(BigDecimal.ZERO) == 0 && yemNetweight.compareTo(BigDecimal.ZERO) == 0 && !yemIsgift) {
|
||||
if (netweight.compareTo(BigDecimal.ZERO) == 0 && !yemIsgift) {
|
||||
String seq = dynamicObject.getString("seq");
|
||||
newBigDecimal.add(seq);
|
||||
// this.getView().showMessage("第【" + seq + "】行物料中净重为空,请稍后重试!");
|
||||
|
@ -38,7 +38,6 @@ import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
@ -80,7 +79,7 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
map.put("现产", "A");
|
||||
map.put("改制", "B");
|
||||
map.put("外购", "D");
|
||||
map.put("库存车", "G");
|
||||
map.put("库存车","G");
|
||||
fillEntityCombo(map);
|
||||
}
|
||||
if (billtype.equals("yem_tracktaskconsole_pj")) {
|
||||
@ -189,7 +188,7 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
if (yemMateriel != null) {
|
||||
String number = yemMateriel.getString("number");
|
||||
QFilter qFilter = new QFilter("yem_materialentry.yem_materiel.number", QCP.equals, number);
|
||||
qFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
qFilter.and(new QFilter("enable",QCP.equals,"1"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_materialinventoryage", false);
|
||||
String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_materialinventoryage", "yem_materialentry", false);
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_materialinventoryage", selectfields, new QFilter[]{qFilter});
|
||||
@ -205,12 +204,12 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
date = getDate(i, number, dynamicObject, yemBizdate);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}else {
|
||||
this.getModel().setValue("yem_ageingdata", 0, i);
|
||||
this.getModel().setValue("yem_ageingdate", 0, i);
|
||||
this.getModel().setValue("yem_ageing", 0, i);
|
||||
}
|
||||
} else {
|
||||
}else {
|
||||
this.getModel().setValue("yem_ageingdata", 0, i);
|
||||
this.getModel().setValue("yem_ageingdate", 0, i);
|
||||
this.getModel().setValue("yem_ageing", 0, i);
|
||||
@ -230,13 +229,12 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
DynamicObject materialEntry = materialEntries.get(i);
|
||||
String materialNum = materialEntry.getString("yem_materiel.number");
|
||||
long materialNumid = materialEntry.getLong("yem_materiel.id");
|
||||
BigDecimal yemCancelNum = materialEntry.getBigDecimal("yem_cancel_num");
|
||||
//已采购
|
||||
BigDecimal yem_buyfromcmmp = getbuyfromcmmp(materialNum, yem_bd_products);
|
||||
model.setValue("yem_buyfromcmmp", yem_buyfromcmmp, i);
|
||||
//储备
|
||||
DynamicObjectCollection yem_accreserveapply = QueryServiceHelper.query("yem_accreserveapply", "yem_detailinfo.yem_qty", new QFilter[]{new QFilter("yem_detailinfo.yem_materiel.id", QCP.equals, materialNumid), new QFilter("status", QCP.equals, "C")}, "yem_audittime desc", 1);
|
||||
if (yem_accreserveapply != null && !yem_accreserveapply.isEmpty()) {
|
||||
if (yem_accreserveapply != null && yem_accreserveapply.size() > 0) {
|
||||
model.setValue("yem_accreserveqty", yem_accreserveapply.get(0).getBigDecimal("yem_detailinfo.yem_qty"), i);
|
||||
}
|
||||
//VMI-eas数量+CMMP数量
|
||||
@ -256,12 +254,9 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
BigDecimal cmmpyem_gmpjqty = getSumCMMPQty(materialNum, "D", yem_bd_products);
|
||||
model.setValue("yem_gmpjqty", easyem_gmpjqty.add(cmmpyem_gmpjqty), i);
|
||||
BigDecimal tolreqqty = gettolreqqty(yem_bd_products, materialNumid);
|
||||
BigDecimal yemEsDelivernoticeqty = getDelivernoticeqty(yem_bd_products, materialNumid);
|
||||
BigDecimal yem_tolreqqty = tolreqqty.subtract(yemEsDelivernoticeqty);
|
||||
yem_tolreqqty = yem_tolreqqty.subtract(yemCancelNum);
|
||||
model.setValue("yem_tolreqqty", yem_tolreqqty, i);
|
||||
model.setValue("yem_tolreqqty", tolreqqty, i);
|
||||
//处理库存差
|
||||
BigDecimal yem_qtysub = easyem_gmpjqty.add(cmmpyem_gmpjqty).add(yem_buyfromcmmp).subtract(yem_tolreqqty);
|
||||
BigDecimal yem_qtysub = easyem_gmpjqty.add(cmmpyem_gmpjqty).add(yem_buyfromcmmp).subtract(tolreqqty);
|
||||
model.setValue("yem_qtysub", yem_qtysub, i);
|
||||
}
|
||||
this.getView().showMessage("查询库存成功!");
|
||||
@ -286,50 +281,8 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取销售出库其他出库的已审核数量汇总数据
|
||||
*
|
||||
* @param yem_bd_products 产品分类
|
||||
* @param materialNumid 物料编码
|
||||
* @return 数量汇总值
|
||||
*/
|
||||
@NotNull
|
||||
private static BigDecimal getDelivernoticeqty(DynamicObject yem_bd_products, long materialNumid) {
|
||||
List<Long> productId = getProductId(yem_bd_products);
|
||||
QFilter qFilter = new QFilter("billstatus", QCP.equals, "C");
|
||||
qFilter.and("yem_billtype.number", QCP.equals, "yem_es_delivernotice_o");
|
||||
qFilter.and("yem_es_materialinfo.yem_materiel.id", QCP.equals, materialNumid);
|
||||
qFilter.and("yem_bd_products.id", QCP.in, productId);
|
||||
qFilter.and("yem_es_materialinfo.yem_warehouse.yem_sort", QCP.equals, "D");
|
||||
//调出仓库的仓库分类为(国贸各事业部仓库)
|
||||
|
||||
DynamicObject[] yemEsDelivernotice = BusinessDataServiceHelper.load("yem_es_delivernotice", "id,billno" +
|
||||
",yem_es_materialinfo,yem_es_materialinfo.yem_qty,yem_es_materialinfo.yem_materiel,yem_es_materialinfo.yem_warehouse" +
|
||||
",billstatus,yem_billtype,yem_bd_products"
|
||||
, new QFilter[]{qFilter});
|
||||
BigDecimal yemEsDelivernoticeqty = BigDecimal.ZERO;
|
||||
for (DynamicObject dynamicObject : yemEsDelivernotice) {
|
||||
DynamicObjectCollection yemEsMaterialinfo1 = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
for (DynamicObject object : yemEsMaterialinfo1) {
|
||||
DynamicObject yemWarehouse = object.getDynamicObject("yem_warehouse");
|
||||
if (yemWarehouse != null) {
|
||||
String yemSort = yemWarehouse.getString("yem_sort");
|
||||
if (yemSort.equals("D")) {
|
||||
long aLong = object.getLong("yem_materiel.id");
|
||||
BigDecimal yemQty = object.getBigDecimal("yem_qty");
|
||||
if (aLong == materialNumid) {
|
||||
yemEsDelivernoticeqty = yemQty.add(yemEsDelivernoticeqty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return yemEsDelivernoticeqty;
|
||||
}
|
||||
|
||||
/**
|
||||
* 账龄赋值
|
||||
*
|
||||
* @param i
|
||||
* @param number
|
||||
* @param dynamicObject
|
||||
@ -539,7 +492,7 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
"yem_es_materialinfo.yem_qty, yem_es_materialinfo.yem_materiel", new QFilter[]{
|
||||
new QFilter("yem_es_materialinfo.yem_materiel.id", QCP.equals, materialNumid),
|
||||
new QFilter("yem_bd_products.id", QCP.in, productId)
|
||||
});
|
||||
});
|
||||
BigDecimal stockqty = BigDecimal.ZERO;
|
||||
for (DynamicObject yemStockqty : yem_stockqtys) {
|
||||
DynamicObjectCollection collection = yemStockqty.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
@ -947,7 +900,6 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
}
|
||||
|
||||
date.set("yem_materielg", dynamicObject.getDynamicObject("yem_materiel"));
|
||||
date.set("yem_qtyq1", dynamicObject.getString("yem_qtyq"));
|
||||
date.set("yem_stockqty", dynamicObject.getBigDecimal("yem_nqty"));//备料数量
|
||||
date.set("yem_stockunit", dynamicObject.getDynamicObject("yem_unit"));//计量单位
|
||||
date.set("yem_stockbaseunit", dynamicObject.getDynamicObject("yem_baseunit"));//基本计量单位
|
||||
@ -979,7 +931,6 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
}
|
||||
|
||||
salesorder.set("yem_materielg", dynamicObject.getDynamicObject("yem_materiel"));
|
||||
salesorder.set("yem_qtyq1", dynamicObject.getString("yem_qtyq"));
|
||||
salesorder.set("yem_stockqty", dynamicObject.getBigDecimal("yem_nqty"));//备料数量
|
||||
salesorder.set("yem_stockunit", dynamicObject.getDynamicObject("yem_unit"));//计量单位
|
||||
salesorder.set("yem_stockbaseunit", dynamicObject.getDynamicObject("yem_baseunit"));//基本计量单位
|
||||
@ -1081,7 +1032,6 @@ public class tracktaskconsoleFormPlugIn extends AbstractBillPlugIn implements Be
|
||||
// 预计完成时间
|
||||
date.set("yem_yieldetacdate", this.getModel().getValue("yem_yieldetacdate"));
|
||||
date.set("yem_entrtyid", dynamicObject.getLong("yem_entrtyid"));
|
||||
date.set("yem_qtyq1", dynamicObject.getLong("yem_qtyq1"));
|
||||
date.set("yem_materielg", dynamicObject.getDynamicObject("yem_materielg"));
|
||||
date.set("yem_stockqty", nqty);//备料数量
|
||||
date.set("yem_stockunit", dynamicObject.getDynamicObject("yem_stockunit"));//计量单位
|
||||
|
@ -1,10 +1,15 @@
|
||||
package com.yem.wm.im.tracktaskconsole.op;
|
||||
|
||||
import com.yem.wm.im.priceLibrary.validator.PriceLibraryAuditValidator;
|
||||
import com.yem.wm.im.tracktaskconsole.validator.TracktaskconsoleSubmitvalidator;
|
||||
import com.yem.wm.im.yearlybudget.validator.YearlyBudgetValidator;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/8/12 19:26
|
||||
|
@ -5,11 +5,6 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/10/11 19:12
|
||||
@ -42,32 +37,6 @@ public class TracktaskconsoleSavevalidator extends AbstractValidator {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
Map<Long, Integer> cancelQty = new LinkedHashMap<>();
|
||||
for (DynamicObject d : c) {
|
||||
long id = d.getLong("id");
|
||||
BigDecimal cancel_num = d.getBigDecimal("yem_cancel_num");
|
||||
if (cancel_num.compareTo(BigDecimal.ZERO) > 0) {
|
||||
cancelQty.put(id, c.indexOf(d));
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObjectCollection backC = dataEntity.getDynamicObjectCollection("yem_es_salesorder_r");
|
||||
for (DynamicObject d : backC) {
|
||||
long entrtyid = d.getLong("yem_entrtyid");
|
||||
if (cancelQty.containsKey(entrtyid)) {
|
||||
Integer idx = cancelQty.get(entrtyid);
|
||||
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_es_salesorder_z");
|
||||
if (!subC.isEmpty()) {
|
||||
sb.append(String.format("商品明细第 %s 行已维护取消数量,不允许维护整机生产信息!", idx + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
this.addErrorMessage(dataEntitie, sb.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,6 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zhouc
|
||||
* @date 2023/8/12 19:29
|
||||
@ -21,53 +17,36 @@ public class TracktaskconsoleSubmitvalidator extends AbstractValidator {
|
||||
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||
for (ExtendedDataEntity dataEntitie : dataEntities) {
|
||||
DynamicObject dataEntity = dataEntitie.getDataEntity();
|
||||
yemIsvmi(dataEntity, dataEntitie);
|
||||
DynamicObjectCollection yem_es_materialinfo = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
for (int i = 0; i < yem_es_materialinfo.size(); i++) {
|
||||
DynamicObject materialinfo = yem_es_materialinfo.get(i);
|
||||
int yem_nqty = materialinfo.getInt("yem_nqty");
|
||||
//商品信息第**行[**物料编码] 末备料数量[*]大于0,请执行备料!
|
||||
if (yem_nqty > 0) {
|
||||
DynamicObject yem_materiel = materialinfo.getDynamicObject("yem_materiel");
|
||||
if (yem_materiel != null) {
|
||||
int seq = i + 1;
|
||||
String materiel = yem_materiel.getString("number");
|
||||
this.addErrorMessage(dataEntitie, String.format("商品信息第" + seq + "行[" + materiel + "] 末备料数量[" + yem_nqty + "]大于0,请执行备料!"));
|
||||
yemIsvmi(dataEntity,dataEntitie);
|
||||
DynamicObject yemBilltype = dataEntity.getDynamicObject("yem_billtype");
|
||||
String typeNumber = "";
|
||||
if(yemBilltype != null){
|
||||
typeNumber = yemBilltype.getString("number");
|
||||
}
|
||||
//排除下单审批中的备料处理
|
||||
if(!"yem_placeexamine_".equals(typeNumber)){
|
||||
DynamicObjectCollection yem_es_materialinfo = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
for (int i = 0; i < yem_es_materialinfo.size(); i++) {
|
||||
DynamicObject materialinfo = yem_es_materialinfo.get(i);
|
||||
int yem_nqty = materialinfo.getInt("yem_nqty");
|
||||
//商品信息第**行[**物料编码] 末备料数量[*]大于0,请执行备料!
|
||||
if(yem_nqty>0){
|
||||
DynamicObject yem_materiel = materialinfo.getDynamicObject("yem_materiel");
|
||||
if(yem_materiel!=null){
|
||||
int seq = i+1;
|
||||
String materiel = yem_materiel.getString("number");
|
||||
this.addErrorMessage(dataEntitie,String.format("商品信息第"+seq+"行["+materiel+"] 末备料数量["+yem_nqty+"]大于0,请执行备料!"));
|
||||
}
|
||||
}
|
||||
if(yem_nqty<0){
|
||||
DynamicObject yem_materiel = materialinfo.getDynamicObject("yem_materiel");
|
||||
if(yem_materiel!=null){
|
||||
int seq = i+1;
|
||||
String materiel = yem_materiel.getString("number");
|
||||
this.addErrorMessage(dataEntitie,String.format("商品信息第"+seq+"行["+materiel+"] 末备料数量["+yem_nqty+"]小于0,提交失败!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (yem_nqty < 0) {
|
||||
DynamicObject yem_materiel = materialinfo.getDynamicObject("yem_materiel");
|
||||
if (yem_materiel != null) {
|
||||
int seq = i + 1;
|
||||
String materiel = yem_materiel.getString("number");
|
||||
this.addErrorMessage(dataEntitie, String.format("商品信息第" + seq + "行[" + materiel + "] 末备料数量[" + yem_nqty + "]小于0,提交失败!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
Map<Long, Integer> cancelQty = new LinkedHashMap<>();
|
||||
for (DynamicObject d : c) {
|
||||
long id = d.getLong("id");
|
||||
BigDecimal cancel_num = d.getBigDecimal("yem_cancel_num");
|
||||
if (cancel_num.compareTo(BigDecimal.ZERO) > 0) {
|
||||
cancelQty.put(id, c.indexOf(d));
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObjectCollection backC = dataEntity.getDynamicObjectCollection("yem_es_salesorder_r");
|
||||
for (DynamicObject d : backC) {
|
||||
long entrtyid = d.getLong("yem_entrtyid");
|
||||
if (cancelQty.containsKey(entrtyid)) {
|
||||
Integer idx = cancelQty.get(entrtyid);
|
||||
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_es_salesorder_z");
|
||||
if (!subC.isEmpty()) {
|
||||
sb.append(String.format("商品明细第 %s 行已维护取消数量,不允许维护整机生产信息!", idx + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
this.addErrorMessage(dataEntitie, sb.toString());
|
||||
}
|
||||
|
||||
// DynamicObject billType = dataEntity.getDynamicObject("yem_billtype");//单据类型
|
||||
@ -76,14 +55,14 @@ public class TracktaskconsoleSubmitvalidator extends AbstractValidator {
|
||||
|
||||
private void yemIsvmi(DynamicObject dataEntity, ExtendedDataEntity dataEntities) {
|
||||
DynamicObjectCollection yemEsSalesorderR = dataEntity.getDynamicObjectCollection("yem_es_salesorder_r");
|
||||
if (yemEsSalesorderR != null) {
|
||||
if (yemEsSalesorderR!=null){
|
||||
for (DynamicObject dynamicObject : yemEsSalesorderR) {
|
||||
String yemStockway = dynamicObject.getString("yem_stockway");
|
||||
if ("E".equals(yemStockway)) {
|
||||
if ("E".equals(yemStockway)){
|
||||
String yemIsvmi = dynamicObject.getString("yem_isvmi");
|
||||
int seq = dynamicObject.getInt("seq");
|
||||
if ("".equals(yemIsvmi)) {
|
||||
this.addErrorMessage(dataEntities, "备料(生产、采购)信息 第" + seq + "行 仓库类型未填写,请填写后提交!!!");
|
||||
if ("".equals(yemIsvmi)){
|
||||
this.addErrorMessage(dataEntities,"备料(生产、采购)信息 第"+seq+"行 仓库类型未填写,请填写后提交!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.yem.wm.syn.cmmp.addnew;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yem.wm.syn.eas.YemOrderproreqbillWGService;
|
||||
import com.yem.wm.syn.utils.HttpClient;
|
||||
import com.yem.wm.utils.RequestCmmp;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
@ -12,10 +13,13 @@ import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.validate.ErrorLevel;
|
||||
import kd.bos.entity.validate.ValidationErrorInfo;
|
||||
import kd.bos.exception.KDBizException;
|
||||
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.sdk.util.KHttpClientUtils;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
@ -23,8 +27,10 @@ import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 涛
|
||||
@ -160,8 +166,9 @@ public class OrderProReqBill extends AbstractOperationServicePlugIn {
|
||||
for (DynamicObject esMaterial: yemEsMaterialcoll) {
|
||||
JSONObject entry = new JSONObject();
|
||||
DynamicObject yemMateriel = esMaterial.getDynamicObject("yem_materiel");
|
||||
DynamicObject yemRealpurmateriel = esMaterial.getDynamicObject("yem_realpurmateriel");
|
||||
if (yemMateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemMateriel.getString("number"));
|
||||
//物料名称
|
||||
entry.put("mater_name",yemMateriel.getString("name"));
|
||||
//id
|
||||
@ -174,10 +181,6 @@ public class OrderProReqBill extends AbstractOperationServicePlugIn {
|
||||
entry.put("unit_fid",dynamicObject.getString("yem_easid"));
|
||||
}
|
||||
}
|
||||
if (yemRealpurmateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemRealpurmateriel.getString("number"));
|
||||
}
|
||||
entry.put("plmcreator",creator.getString("number"));
|
||||
entry.put("plmcreatedate",localDateTime);
|
||||
//需求数量
|
||||
|
@ -12,10 +12,12 @@ import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.validate.ErrorLevel;
|
||||
import kd.bos.entity.validate.ValidationErrorInfo;
|
||||
import kd.bos.exception.KDBizException;
|
||||
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.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
@ -25,6 +27,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 涛
|
||||
@ -126,9 +129,11 @@ public class OrderProReqBillCG extends AbstractOperationServicePlugIn {
|
||||
entry.put("need_code",dataEntity.getString("billno"));
|
||||
|
||||
|
||||
DynamicObject yemRealpurmateriel = esMaterial.getDynamicObject("yem_realpurmateriel");
|
||||
|
||||
DynamicObject yemMateriel = esMaterial.getDynamicObject("yem_materiel");
|
||||
if (yemMateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemMateriel.getString("number"));
|
||||
//物料名称
|
||||
entry.put("mater_name",yemMateriel.getString("name"));
|
||||
DynamicObject baseunit = yemMateriel.getDynamicObject("baseunit");
|
||||
@ -139,10 +144,6 @@ public class OrderProReqBillCG extends AbstractOperationServicePlugIn {
|
||||
//规格型号
|
||||
entry.put("specification",yemMateriel.getString("modelnum"));
|
||||
}
|
||||
if (yemRealpurmateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemRealpurmateriel.getString("number"));
|
||||
}
|
||||
//需求数量
|
||||
entry.put("need_num",esMaterial.getString("yem_qty"));
|
||||
//提交数量
|
||||
|
@ -15,6 +15,7 @@ import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.property.ComboProp;
|
||||
import kd.bos.entity.validate.ErrorLevel;
|
||||
import kd.bos.entity.validate.ValidationErrorInfo;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.query.QCP;
|
||||
@ -27,10 +28,7 @@ import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author 涛
|
||||
@ -208,8 +206,9 @@ public class OrderProReqBillWMI extends AbstractOperationServicePlugIn {
|
||||
}
|
||||
|
||||
DynamicObject yemMateriel = esMaterial.getDynamicObject("yem_materiel");
|
||||
DynamicObject yemRealpurmateriel = esMaterial.getDynamicObject("yem_realpurmateriel");
|
||||
if (yemMateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemMateriel.getString("number"));
|
||||
//物料名称
|
||||
entry.put("mater_name",yemMateriel.getString("name"));
|
||||
entry.put("mater_fid",yemMateriel.getString("yem_easid"));
|
||||
@ -221,11 +220,7 @@ public class OrderProReqBillWMI extends AbstractOperationServicePlugIn {
|
||||
entry.put("unit_fid",dynamicObject.getString("yem_easid"));
|
||||
}
|
||||
//规格型号
|
||||
entry.put("specification",yemMateriel.getString("modelnum"));
|
||||
}
|
||||
if (yemRealpurmateriel!=null){
|
||||
//物料代码
|
||||
entry.put("mater_code",yemRealpurmateriel.getString("number"));
|
||||
entry.put("specification",yemMateriel.getString("modelnum"));
|
||||
}
|
||||
//需求数量
|
||||
entry.put("order_num",esMaterial.getString("yem_qty"));
|
||||
|
@ -108,7 +108,6 @@ public class PayapplyService extends AbstractOperationServicePlugIn {
|
||||
SimpleDateFormat fmtTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String yemBizdate = fmtDate.format(dataEntitie.getDate("yem_bizdate"));
|
||||
json.put("bizDate", yemBizdate);
|
||||
json.put("cosmic", dataEntitie.getString("yem_cosmic"));
|
||||
//申请人 creator
|
||||
DynamicObject creators = dataEntitie.getDynamicObject("creator");
|
||||
if (creators != null) {
|
||||
|
@ -3,7 +3,6 @@ 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;
|
||||
@ -317,13 +316,11 @@ public class YemDelivernoticeService extends AbstractOperationServicePlugIn {
|
||||
//实际含税单价
|
||||
json.put("price", materialentry.getBigDecimal("yem_priceandtax"));
|
||||
//金额
|
||||
BigDecimal yemAmt = materialentry.getBigDecimal("yem_amt");
|
||||
json.put("nonTaxAmount", BigDecimalUtils.div(yemAmt,1,2));
|
||||
json.put("nonTaxAmount", materialentry.getBigDecimal("yem_amt"));
|
||||
//金额本位币
|
||||
json.put("localNonTaxAmount", materialentry.getBigDecimal("yem_locamt"));
|
||||
//税额
|
||||
BigDecimal yemTaxamount = materialentry.getBigDecimal("yem_taxamount");
|
||||
json.put("tax", BigDecimalUtils.div(yemTaxamount,1,2));
|
||||
json.put("tax", materialentry.getBigDecimal("yem_taxamount"));
|
||||
//税额本位币
|
||||
json.put("localTax", materialentry.getBigDecimal("yem_curtaxamount"));
|
||||
//价税合计
|
||||
|
@ -8,7 +8,6 @@ import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.db.DB;
|
||||
import kd.bos.db.DBRoute;
|
||||
import kd.bos.entity.operate.OperateOptionConst;
|
||||
import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.metadata.dao.MetaCategory;
|
||||
@ -23,7 +22,6 @@ import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.fi.ar.consts.OperationConst;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.validation.Valid;
|
||||
@ -54,9 +52,7 @@ public class OperationalUniversal {
|
||||
FormMetadata formMeta = (FormMetadata) MetadataDao.readRuntimeMeta(id, MetaCategory.Form);
|
||||
String name = formMeta.getName().toString();
|
||||
if (operate.length() > 0) {
|
||||
OperateOption operateOption = OperateOption.create();
|
||||
operateOption.setVariableValue(OperateOptionConst.MUTEX_IGNOREMODIFY, Boolean.toString(false));
|
||||
OperationResult audit = OperationServiceHelper.executeOperate(operateKey, dynamicObject.getDynamicObjectType().getName(), new Object[]{dynamicObject.getPkValue()}, operateOption);
|
||||
OperationResult audit = OperationServiceHelper.executeOperate(operateKey, dynamicObject.getDynamicObjectType().getName(), new Object[]{dynamicObject.getPkValue()}, OperateOption.create());
|
||||
if (!audit.isSuccess()) {
|
||||
List<IOperateInfo> allErrorOrValidateInfo = audit.getAllErrorOrValidateInfo();
|
||||
String message = audit.getMessage();
|
||||
|
@ -30,7 +30,6 @@ import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 云之家审批接口
|
||||
@ -74,59 +73,30 @@ public class YZJAuditController {
|
||||
ArrayList<QFilter> qFilters = new ArrayList<>();
|
||||
qFilters.add(new QFilter("yem_yzjid", QCP.equals, formCodeId));
|
||||
qFilters.add(new QFilter("yem_isdisable", QCP.equals, false));
|
||||
logger.info("QFilter{}", qFilters);
|
||||
DynamicObject yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle("yem_ia_intebilllogon", qFilters.toArray(new QFilter[0]));
|
||||
|
||||
if (yem_ia_intebilllogon != null) {
|
||||
logger.info("智能审批单据注册:{},{}", yem_ia_intebilllogon.getString("billno"), yem_ia_intebilllogon.getPkValue());
|
||||
// yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle(yem_ia_intebilllogon.getLong("id"), "yem_ia_intebilllogon");
|
||||
yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle(yem_ia_intebilllogon.getLong("id"), "yem_ia_intebilllogon");
|
||||
} else {
|
||||
logger.info("未获取到智能审批单据注册");
|
||||
return CustomApiResult.success("调用成功(未获取到智能审批单据注册)");
|
||||
return CustomApiResult.success("调用成功");
|
||||
}
|
||||
DynamicObject formType = yem_ia_intebilllogon.getDynamicObject("yem_formid");
|
||||
String bos_entityobjectnum;
|
||||
if (formType != null) {
|
||||
bos_entityobjectnum = formType.getString("number");
|
||||
} else {
|
||||
return CustomApiResult.fail("501", "智能审批单据注册:" + yem_ia_intebilllogon.getString("billno") + ",中单据类为空!");
|
||||
}
|
||||
logger.info("获取审批单据,查询条件:{},{}", bos_entityobjectnum, formInstId);
|
||||
|
||||
//单据类型
|
||||
String bos_entityobjectnum = yem_ia_intebilllogon.getString("yem_formid.number");
|
||||
//获取单据
|
||||
QFilter qFilter = new QFilter("yem_forminstid", QCP.equals, formInstId);
|
||||
|
||||
DynamicObject[] load = retryLoad(bos_entityobjectnum, "id, billno", qFilter.toArray());
|
||||
|
||||
logger.info("查询到审批单据: {} 条", load.length);
|
||||
for (DynamicObject d : load) {
|
||||
logger.info("审批单据:{}", d.getString("billno"));
|
||||
}
|
||||
if (load.length > 0) {
|
||||
DynamicObject object = load[0];
|
||||
billObj = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDataEntityType().getName());
|
||||
}
|
||||
billObj = BusinessDataServiceHelper.loadSingle(bos_entityobjectnum, new QFilter[]{new QFilter("yem_forminstid", QCP.equals, formInstId)});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return CustomApiResult.fail("501", e.getMessage());
|
||||
}
|
||||
|
||||
DynamicObject ialog = null;
|
||||
DynamicObject ialog;
|
||||
|
||||
try {
|
||||
if (YEM.isNotEmpty(billObj)) {
|
||||
//通过表单实例ID获取日志对象
|
||||
ialog = BusinessDataServiceHelper.loadSingle("yem_ialog", new QFilter[]{new QFilter("yem_forminstid", QCP.equals, billObj.get("yem_forminstid"))});
|
||||
} else {
|
||||
return CustomApiResult.fail("501", "获取审批单据失败!");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return CustomApiResult.fail("501", "获取审批日志失败!" + e.getMessage());
|
||||
if (YEM.isNotEmpty(billObj) && billObj.containsProperty("yem_forminstid")) {
|
||||
//通过表单实例ID获取日志对象
|
||||
ialog = BusinessDataServiceHelper.loadSingle("yem_ialog", new QFilter[]{new QFilter("yem_forminstid", QCP.equals, billObj.get("yem_forminstid"))});
|
||||
} else {
|
||||
return CustomApiResult.fail("501", "获取审批单据失败!");
|
||||
}
|
||||
|
||||
|
||||
if (YEM.isNotEmpty(ialog)) {
|
||||
ialog.set("yem_writeback", data);
|
||||
} else {
|
||||
@ -183,45 +153,6 @@ public class YZJAuditController {
|
||||
return CustomApiResult.success("调用成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询审批单据,如果未查询到则10s之后再次查询
|
||||
* @param bos_entityobjectnum 审批单据编码
|
||||
* @param fields 字段名
|
||||
* @param qFilter 过滤条件
|
||||
* @return 重试5次之后仍未查询到返回空array
|
||||
*/
|
||||
public static DynamicObject[] retryLoad(String bos_entityobjectnum, String fields, QFilter[] qFilter) {
|
||||
int maxRetries = 5; // 最大重试次数
|
||||
int retryDelay = 10; // 重试延迟时间(秒)
|
||||
DynamicObject[] result = null;
|
||||
|
||||
for (int attempt = 0; attempt < maxRetries; attempt++) {
|
||||
logger.info("第 " + attempt + " 次查询!");
|
||||
try {
|
||||
result = BusinessDataServiceHelper.load(bos_entityobjectnum, fields, qFilter);
|
||||
|
||||
if (result != null && result.length > 0) {
|
||||
logger.info("查询到数据:" + result.length + "条");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (attempt < maxRetries - 1) {
|
||||
TimeUnit.SECONDS.sleep(retryDelay);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
logger.info("查询重试被中断: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
logger.error("查询失败,尝试重试: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return new DynamicObject[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* 云之家整机合同驳回
|
||||
*
|
||||
|
@ -90,7 +90,7 @@ public class DelivernoticeSynEAS extends AbstractOperationServicePlugIn {
|
||||
json.put("BusinessType", setJson("number", "510"));
|
||||
//是否跨事业部
|
||||
boolean isacrossdept = dataEntitie.getBoolean("yem_isacrossdept");
|
||||
json.put("isAcross", isacrossdept ? "是" : "不是");
|
||||
json.put("isAcross", isacrossdept ? "是" : "否");
|
||||
//业务日期
|
||||
SimpleDateFormat fmtDate = new SimpleDateFormat("yyyy-MM-dd");
|
||||
SimpleDateFormat fmtTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
@ -1,9 +1,6 @@
|
||||
package com.yem.wm.sys.formplugin.list;
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -125,27 +122,14 @@ public class AbstractVersionListPlugin extends AbstractListPlugin {
|
||||
if (BillFormId.equals("yem_es_storagetrans")) {
|
||||
entityNumber = BillFormId;
|
||||
}
|
||||
if (!entityNumber.isEmpty()) {
|
||||
|
||||
Set<Long> ids = new HashSet<>();
|
||||
|
||||
for (ListSelectedRow datum : listSelectedData) {
|
||||
Long keyValue = (Long) datum.getPrimaryKeyValue();
|
||||
ids.add(keyValue);
|
||||
}
|
||||
|
||||
Map<Object, DynamicObject> loads = BusinessDataServiceHelper.loadFromCache(entityNumber, "id, billno, yem_changing", new QFilter[]{new QFilter("id", "in", ids)});
|
||||
|
||||
for (ListSelectedRow selectedRow : listSelectedData) {
|
||||
Object primaryKeyValue = selectedRow.getPrimaryKeyValue();
|
||||
if (loads.containsKey(primaryKeyValue)) {
|
||||
DynamicObject dynamicObject = loads.get(primaryKeyValue);
|
||||
String billno = dynamicObject.getString("billno");
|
||||
boolean yem_changing = dynamicObject.getBoolean("yem_changing");
|
||||
if (yem_changing) {
|
||||
this.getView().showErrorNotification("单据【" + billno + "】正在变更中,禁止下推!");
|
||||
e.setCancel(true);
|
||||
}
|
||||
if (entityNumber.length() > 0) {
|
||||
for (ListSelectedRow SelectedData : listSelectedData) {
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(SelectedData.getPrimaryKeyValue(), entityNumber);
|
||||
String billNo = SelectedData.getBillNo();
|
||||
boolean yem_changing = dynamicObject.getBoolean("yem_changing");
|
||||
if (yem_changing) {
|
||||
this.getView().showErrorNotification("单据【" + billNo + "】正在变更中,禁止下推!");
|
||||
e.setCancel(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,14 +65,8 @@ public class ServiceRepairTask extends AbstractTask {
|
||||
maintenancerecords.set("yem_servicerepairid", yem_servicerepair.getString("id"));//服务维修单id
|
||||
maintenancerecords.set("yem_servicerepairenryid", dynamicObject.getString("id"));//服务维修单分录id
|
||||
maintenancerecords.set("yem_servicerepairno", yem_servicerepair.getString("billno"));//服务维修单单号
|
||||
|
||||
maintenancerecords.set("yem_pricepf", dynamicObject.getBigDecimal("yem_pricepf"));//赔付单价(人民币)
|
||||
maintenancerecords.set("yem_amtpf", dynamicObject.getBigDecimal("yem_amtpf"));//赔付金额(人民币)
|
||||
}
|
||||
}
|
||||
|
||||
getdevicefiles.set("yem_workyear", yem_servicerepair.getBigDecimal("yem_workyear"));//工作小时
|
||||
|
||||
//保存整机档案
|
||||
OperationResult Operate = OperationServiceHelper.executeOperate("save",
|
||||
getdevicefiles.getDynamicObjectType().getName(), new DynamicObject[]{getdevicefiles}, OperateOption.create());
|
||||
|
@ -35,7 +35,8 @@ public class StoraGetransToDeviceFilesTask extends AbstractTask {
|
||||
long yemResourcescodeLong = yemResourcescode.getLong("id");
|
||||
String yemEmDevicefiles = DynamicObjectUtil.getSelectfields("yem_em_devicefiles", false);
|
||||
QFilter qFilter = new QFilter("yem_framenumber", QCP.equals, yemVehicleno);
|
||||
qFilter.and("yem_model.id", QCP.equals, yemResourcescodeLong);
|
||||
qFilter.and("yem_model.id", QCP.equals, yemResourcescodeLong)
|
||||
.and("billstatus", QCP.equals, "C");
|
||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("yem_em_devicefiles", yemEmDevicefiles
|
||||
, new QFilter[]{qFilter});
|
||||
if (dynamicObjects.length > 0) {
|
||||
|
@ -42,7 +42,7 @@ public class SynWareAreaCMMPTask extends AbstractTask {
|
||||
if (!"true".equals(isInit)) {
|
||||
Date dateed = new Date();
|
||||
dateed = DateUtils.getBeginTime(dateed);
|
||||
Date datebg = DateUtils.getAddDay(dateed, -1);
|
||||
Date datebg = DateUtils.getAddDay(dateed, -2);
|
||||
dateed = DateUtils.getEndTime(dateed);
|
||||
sql.append(" and plmlastupdate>=to_date('" + DateUtils.formatString(datebg) + "','yyyy-mm-dd')" + " and plmlastupdate<=to_date('" + DateUtils.formatString(dateed) + "','yyyy-mm-dd')");
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -48,7 +49,7 @@ public class SynWhLocationCMMPTask extends AbstractTask {
|
||||
if (!"true".equals(isInit)) {
|
||||
Date dateed = new Date();
|
||||
dateed = DateUtils.getBeginTime(dateed);
|
||||
Date datebg = DateUtils.getAddDay(dateed, -1);
|
||||
Date datebg = DateUtils.getAddDay(dateed, -2);
|
||||
dateed = DateUtils.getEndTime(dateed);
|
||||
sql.append(" and plmlastupdate>=to_date('" + DateUtils.formatString(datebg) + "','yyyy-mm-dd')" + " and plmlastupdate<=to_date('" + DateUtils.formatString(dateed) + "','yyyy-mm-dd')");
|
||||
}
|
||||
|
@ -7,26 +7,16 @@ import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.apache.poi.ss.usermodel.Drawing;
|
||||
import org.apache.poi.util.Units;
|
||||
import org.apache.poi.xwpf.usermodel.*;
|
||||
import org.apache.xmlbeans.XmlException;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.*;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 合同盖章
|
||||
@ -39,51 +29,11 @@ public class ContactSignUtils {
|
||||
private static final Logger logger = LoggerFactory.getLogger(ContactSignUtils.class);
|
||||
|
||||
public static List<CTBookmark> getFileBookMarks(InputStream in) {
|
||||
List<CTBookmark> bookmarks = new ArrayList<>();
|
||||
List<CTBookmark> list = new ArrayList<>();
|
||||
try {
|
||||
try (XWPFDocument doc = new XWPFDocument(in)) {
|
||||
for (XWPFParagraph paragraph : doc.getParagraphs()) {
|
||||
bookmarks.addAll(paragraph.getCTP().getBookmarkStartList());
|
||||
}
|
||||
|
||||
for (XWPFTable table : doc.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (XWPFHeader header : doc.getHeaderList()) {
|
||||
for (XWPFParagraph para : header.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
for (XWPFTable table : header.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (XWPFFooter footer : doc.getFooterList()) {
|
||||
for (XWPFParagraph para : footer.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
for (XWPFTable table : footer.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
list.addAll(paragraph.getCTP().getBookmarkStartList());
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
@ -91,7 +41,7 @@ public class ContactSignUtils {
|
||||
}catch (Exception e ){
|
||||
throw new KDBizException("不支持doc格式的word文档,请上传docx格式的word文档!!!");
|
||||
}
|
||||
return bookmarks;
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -109,87 +59,29 @@ public class ContactSignUtils {
|
||||
byte[] imageBytes = readImageFile(imageFile);
|
||||
|
||||
try (XWPFDocument doc = new XWPFDocument(wordFile)) {
|
||||
// 收集所有段落
|
||||
|
||||
// 1. 正文中的段落
|
||||
List<XWPFParagraph> allParagraphs = new ArrayList<>(doc.getParagraphs());
|
||||
|
||||
// 2. 正文中表格内的段落
|
||||
for (XWPFTable table : doc.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
allParagraphs.addAll(cell.getParagraphs());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 页眉中的段落及页眉内表格中的段落
|
||||
for (XWPFHeader header : doc.getHeaderList()) {
|
||||
allParagraphs.addAll(header.getParagraphs());
|
||||
for (XWPFTable table : header.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
allParagraphs.addAll(cell.getParagraphs());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 页脚中的段落及页脚内表格中的段落
|
||||
for (XWPFFooter footer : doc.getFooterList()) {
|
||||
allParagraphs.addAll(footer.getParagraphs());
|
||||
for (XWPFTable table : footer.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
allParagraphs.addAll(cell.getParagraphs());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 遍历所有段落,查找匹配书签并插入图片
|
||||
for (XWPFParagraph paragraph : allParagraphs) {
|
||||
for (XWPFParagraph paragraph : doc.getParagraphs()) {
|
||||
List<CTBookmark> bookmarkStartList = paragraph.getCTP().getBookmarkStartList();
|
||||
for (CTBookmark bookmark : bookmarkStartList) {
|
||||
String name = bookmark.getName();
|
||||
if (name.contains(bookmarkName)) {
|
||||
List<XWPFRun> runs = paragraph.getRuns();
|
||||
XWPFRun run = null;
|
||||
int idx = 0;
|
||||
// 寻找当前段落中书签结束标记所在的前一个分词
|
||||
for (int i = 0; i < runs.size(); i++) {
|
||||
Node previousSibling = runs.get(i).getCTR().getDomNode().getPreviousSibling();
|
||||
if (previousSibling != null) {
|
||||
String nodeName = previousSibling.getNodeName();
|
||||
if ("w:bookmarkEnd".equals(nodeName)) {
|
||||
Node bookmarkStartNode = previousSibling.getPreviousSibling();
|
||||
if (bookmarkStartNode != null) {
|
||||
Node nameAttribute = bookmarkStartNode.getAttributes().getNamedItem("w:name");
|
||||
if (nameAttribute != null && name.equals(nameAttribute.getNodeValue())) {
|
||||
idx = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (idx >= 0 && idx < runs.size()) {
|
||||
run = runs.get(idx);
|
||||
XWPFRun run;
|
||||
if (!runs.isEmpty()) {
|
||||
run = runs.get(0);
|
||||
} else {
|
||||
run = paragraph.createRun();
|
||||
}
|
||||
// 插入图片,设置图片宽度和高度(此处单位为EMU)
|
||||
// 设置图片大小 长宽比: 1.8586387435
|
||||
run.addPicture(new ByteArrayInputStream(imageBytes), XWPFDocument.PICTURE_TYPE_PNG, "imageName.png", Units.toEMU(74), Units.toEMU(40));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 保存文件
|
||||
FileUtil fileUtil = new FileUtil("sales-order-sign-file");
|
||||
File outFile = fileUtil.createNewFile(outfileName);
|
||||
try (FileOutputStream out = new FileOutputStream(outFile)) {
|
||||
doc.write(out);
|
||||
}
|
||||
|
||||
return outFile;
|
||||
} catch (InvalidFormatException e) {
|
||||
throw new KDBizException("无法解析文件 " + outfileName + " 格式:" + e.getMessage());
|
||||
|
@ -56,24 +56,7 @@ public class IABudgetCommon {
|
||||
ListSelectedRow srcBillRows = new ListSelectedRow(id);
|
||||
srcBillRows.setEntryPrimaryKeyValue(object.getPkValue());
|
||||
srcBillRows.setEntryEntityKey(entryKey);
|
||||
List<ListSelectedRow> comp_selectedRows = new ArrayList<>();
|
||||
comp_selectedRows.add(srcBillRows);
|
||||
doPushGenerate(from, to, ruleId, comp_selectedRows, dataEntity, entryKey, new int[]{selectRowId}, billtype);
|
||||
}
|
||||
}
|
||||
|
||||
// 外贸客户需求单-整机 || 内贸客户需求单-整机
|
||||
if ("yem_im_inclientdeman_zj".equals(billtype) || "yem_im_clientdeman_zj".equals(billtype)) {
|
||||
ruleId = "1936312822665345024";
|
||||
DynamicObjectCollection materialinfo = dataEntity.getDynamicObjectCollection(entryKey);
|
||||
for (int selectRowId : selectRows) {
|
||||
DynamicObject object = materialinfo.get(selectRowId);
|
||||
ListSelectedRow srcBillRows = new ListSelectedRow(id);
|
||||
srcBillRows.setEntryPrimaryKeyValue(object.getPkValue());
|
||||
srcBillRows.setEntryEntityKey(entryKey);
|
||||
List<ListSelectedRow> comp_selectedRows = new ArrayList<>();
|
||||
comp_selectedRows.add(srcBillRows);
|
||||
doPushGenerate(from, to, ruleId, comp_selectedRows, dataEntity, entryKey, new int[]{selectRowId}, billtype);
|
||||
selectedRows.add(srcBillRows);
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,7 +69,6 @@ public class IABudgetCommon {
|
||||
}
|
||||
ListSelectedRow srcBillRows = new ListSelectedRow(id);
|
||||
selectedRows.add(srcBillRows);
|
||||
doPushGenerate(from, to, ruleId, selectedRows, dataEntity, entryKey, selectRows, billtype);
|
||||
}
|
||||
|
||||
// 外贸客户需求单-配件 || 内贸客户需求单-配件
|
||||
@ -94,11 +76,21 @@ public class IABudgetCommon {
|
||||
ruleId = "1936311988980316160";
|
||||
ListSelectedRow srcBillRows = new ListSelectedRow(id);
|
||||
selectedRows.add(srcBillRows);
|
||||
doPushGenerate(from, to, ruleId, selectedRows, dataEntity, entryKey, selectRows, billtype);
|
||||
}
|
||||
}
|
||||
|
||||
private static void doPushGenerate(String from, String to, String ruleId, List<ListSelectedRow> selectedRows, DynamicObject dataEntity, String entryKey, int[] selectRows, String billtype) {
|
||||
// 外贸客户需求单-整机 || 内贸客户需求单-整机
|
||||
if ("yem_im_inclientdeman_zj".equals(billtype) || "yem_im_clientdeman_zj".equals(billtype)) {
|
||||
ruleId = "1936312822665345024";
|
||||
DynamicObjectCollection materialinfo = dataEntity.getDynamicObjectCollection(entryKey);
|
||||
for (int selectRowId : selectRows) {
|
||||
DynamicObject object = materialinfo.get(selectRowId);
|
||||
ListSelectedRow srcBillRows = new ListSelectedRow(id);
|
||||
srcBillRows.setEntryPrimaryKeyValue(object.getPkValue());
|
||||
srcBillRows.setEntryEntityKey(entryKey);
|
||||
selectedRows.add(srcBillRows);
|
||||
}
|
||||
}
|
||||
|
||||
PushArgs pushArgs = new PushArgs();
|
||||
pushArgs.setSourceEntityNumber(from); // 必选,源单标识
|
||||
pushArgs.setTargetEntityNumber(to); // 必选,目标单标识
|
||||
|
@ -1,5 +1,8 @@
|
||||
package kd.cosmic;
|
||||
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.cosmic.server.Launcher;
|
||||
import kd.cosmic.server.Launcher;
|
||||
|
||||
/**
|
||||
@ -14,20 +17,20 @@ public class Application {
|
||||
// cosmic.setServerIP("10.64.112.152");
|
||||
|
||||
cosmic.setAppName("cosmic-25655-N0OqzfBY");
|
||||
cosmic.setWebPath("E:/Cosmic/Comics_YXZG/YXZG-server/webapp");
|
||||
cosmic.setWebPath("D:/Cosine/Comics_Debug/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();
|
||||
|
Loading…
Reference in New Issue
Block a user