Compare commits

..

22 Commits

Author SHA1 Message Date
zzs
a807a3476d Merge remote-tracking branch 'origin/dev-1217-req' into dev-1217-req 2025-01-09 10:30:04 +08:00
zzs
d48973e46f 寄单放单提交校验 2025-01-09 10:29:08 +08:00
zzs
6814db3516 merge:选装、替换、加装增加字段,携带到合同 2025-01-09 10:29:08 +08:00
zzs
632d9e21c2 merge:信保未回款预警task 2025-01-09 10:29:08 +08:00
zzs
4f39e70dbc feat:订舱下推寄单放单带出合同的销售员 2025-01-09 10:29:08 +08:00
zzs
e3de4132ff merger:信保回填相关 2025-01-09 10:29:08 +08:00
zzs
89cc1bca4e WIP:寄单放单提交校验 2025-01-04 16:10:48 +08:00
zzs
3432942a58 WIP:寄单放单提交校验 2025-01-03 18:18:48 +08:00
zzs
91bb471d10 WIP:寄单放单提交校验 2025-01-03 18:00:23 +08:00
zzs
9bc2063f98 feat:可选装增加俄语名称 2024-12-31 18:23:18 +08:00
zzs
eae969ce9b feat:可选装增加俄语名称 2024-12-31 17:55:05 +08:00
zzs
a0d082a2cc feat:使用订舱中非预收金额合计判断是否回款 2024-12-23 14:46:31 +08:00
zzs
7a3638ca84 WIP:寄单放单提交校验 2024-12-20 17:32:47 +08:00
zzs
cd747987eb feat:信保未回款预警task 2024-12-20 16:31:21 +08:00
zzs
f47b4a70a7 WIP:信保未回款预警task 2024-12-20 14:46:24 +08:00
zzs
3abdb3bb3f feat:选装、替换无字段跳过 2024-12-20 11:39:24 +08:00
zzs
330509aed2 feat:选装、替换增加字段,选装时携带到合同 2024-12-20 11:24:58 +08:00
zzs
871005c558 feat:信保未回款预警task 2024-12-19 16:11:44 +08:00
zzs
e599288765 feat:订舱下推寄单放单带出合同的销售员 2024-12-19 10:22:50 +08:00
zzs
a996973e01 feat:信保回填,合同回款金额字段回填额度申请 2024-12-18 17:24:53 +08:00
zzs
1f2b2b9799 feat:信保回填,合同回款金额校验 2024-12-18 17:24:51 +08:00
zzs
d255d994a6 feat:查询客户信保额度申请改为使用客户信保通买方代码 2024-12-18 14:19:53 +08:00
98 changed files with 1150 additions and 2972 deletions
src/main/java
com/yem
em
or
rf/salescommission
tws/task
wm
bc/bill/op
bd/customer/from/Validator
es
fm/gathering/dynamic
im
syn
sys/formplugin/list
task
utils
kd/cosmic

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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});
}
}
}

View File

@ -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());
}
/**
* 给图号单据体赋值
*

View File

@ -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());
}
}

View File

@ -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, "当前单有下级,不允许删除!!!");
}
}
}
}

View File

@ -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);
// }
// }
// }
// }
// }
}
}
}

View File

@ -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);

View File

@ -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: 1PLM变更单分录替换关系=相互替换新替换旧互不替换,分录启用停用状态=停用并且替换件启用停用状态=启用更新当前行执行状态完成完成时间默认当前时间并生成替换关系记录替换关系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});
}
}

View File

@ -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;
}
}

View File

@ -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");

View File

@ -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编号为12456
* 层级为1编号为1.11.21.3
* 层级为2编号为1.1.11.1.21.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} 451.1.31.4
* {false} .1232..323.--
*/
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;
}
}

View File

@ -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();

View File

@ -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"));
}
}
}
}

View File

@ -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);
}
}
}

View File

@ -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 {

View File

@ -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();

View File

@ -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());
}

View File

@ -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());

View File

@ -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");//铭牌类型

View File

@ -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))

View File

@ -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());
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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)) {

View File

@ -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);
}
}
}

View File

@ -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)) {

View File

@ -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"));
}
}
}
}

View File

@ -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;
}

View File

@ -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) {

View File

@ -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)) {

View File

@ -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());
}

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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/C100%OA100%DP100%DA并且没有预收款判断预收款项是否认领完成
* 0见提单并且100%L/C100%OA100%DP100%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");

View File

@ -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);
}
}

View File

@ -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");//

View File

@ -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) {

View File

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

View File

@ -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"));//物料属性

View File

@ -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);//合同号

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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"));

View File

@ -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"));
}
}

View File

@ -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);

View File

@ -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 整机生产信息中整机编号唯一性校验

View File

@ -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);
}
}
}
}
}
}

View File

@ -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;// 实际收汇金额

View File

@ -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);
}

View File

@ -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"));
}

View File

@ -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);
}
}

View File

@ -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");
}
}
}

View File

@ -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),

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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) {

View File

@ -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));
}
}

View File

@ -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, "同一年内,相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!");
}
}
}

View File

@ -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)){

View File

@ -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
* &#064;date 2024/3/30 20:12
* &#064;className DebCredNewSubmitOp
* &#064;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);
}
}

View File

@ -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();

View File

@ -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) {

View File

@ -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");

View File

@ -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, "当前单不是最大单号,请从最大单号开始删除!!!");
}
}
}
}
}

View File

@ -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;
}

View File

@ -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()) {

View File

@ -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");
}
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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 + "】行物料中净重为空,请稍后重试!");

View File

@ -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"));//计量单位

View File

@ -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

View File

@ -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());
}
}
}
}

View File

@ -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+"行 仓库类型未填写,请填写后提交!!!");
}
}
}

View File

@ -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);
//需求数量

View File

@ -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"));
//提交数量

View File

@ -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"));

View File

@ -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) {

View File

@ -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"));
//价税合计

View File

@ -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();

View File

@ -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];
}
/**
* 云之家整机合同驳回
*

View File

@ -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");

View File

@ -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);
}
}
}

View File

@ -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());

View File

@ -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) {

View File

@ -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')");
}

View File

@ -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')");
}

View File

@ -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());

View File

@ -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); // 必选目标单标识

View File

@ -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();