fix:报关对比日志定时任务问题处理

This commit is contained in:
ljw 2024-09-25 11:14:32 +08:00
parent a9b0deebb5
commit ac07c89372

View File

@ -112,75 +112,78 @@ public class CusdecToDeclaredocxTask extends AbstractTask {
String yemCaCusdec = DynamicObjectUtil.getSelectfields("yem_ca_cusdec", false);
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_ca_cusdec", yemCaCusdec
, new QFilter[]{new QFilter("id", QCP.equals, yemCustomsdocumentid)});
String yemCusdecstatusname = "";
if (dynamicObject != null) {
String yemCusdecstatusname = dynamicObject.getString("yem_cusdecstatusname");//申报状态
yemCusdecstatusname = dynamicObject.getString("yem_cusdecstatusname");//申报状态
declaredocx.set("yem_declarationstatus", yemCusdecstatusname);
if ("结关".equals(yemCusdecstatusname)) {
extracted(Long.valueOf(declaredocx.getPkValue().toString()));
}
} else {
declaredocx.set("yem_customsdocumentid", 0);
}
SaveServiceHelper.update(declaredocx);
SaveServiceHelper.save(new DynamicObject[]{declaredocx});
if ("结关".equals(yemCusdecstatusname)) {
extracted(Long.valueOf(declaredocx.getPkValue().toString()));
}
} else {
//出口报关单分录
DynamicObjectCollection dynamicObjectCollection = declaredocx.getDynamicObjectCollection("yem_es_declare_ec");
//结算币别
DynamicObject yemCurrency = declaredocx.getDynamicObject("yem_currency");
String aLong = "";
if (yemCurrency != null) {
aLong = yemCurrency.getString("number");
}
//单据编号
String declaredocxbillno = declaredocx.getString("billno");
int i = dynamicObjectCollection.size();
String seq = "";
for (DynamicObject object : dynamicObjectCollection) {
//海关商品编码
DynamicObject yemCusboxgoods = object.getDynamicObject("yem_cushscode");
String billno = "";
if (yemCusboxgoods != null) {
billno = yemCusboxgoods.getString("number");
}
//报关名称
String yemDecmatericalname = object.getString("yem_decmatericalname");
//数量
BigDecimal yemCusqty = object.getBigDecimal("yem_cusqty");
//单价
BigDecimal yemCusconsalesprice = object.getBigDecimal("yem_cusconsalesprice");
//金额
BigDecimal yemCusamount = object.getBigDecimal("yem_cusamount");
//拼接KEY + "-" + billno
String yemErroriskey = billno + "-" + yemDecmatericalname + "-" + yemCusqty + "-" + yemCusconsalesprice + "-" + yemCusamount + "-" + aLong;
DynamicObject dynamicObject = maps.get(yemErroriskey);
if (dynamicObject != null) {
i = i - 1;
} else {
seq = seq + object.getString("seq") + ",";
}
}
if (i != 0) {
extracted(data, "出口报关报关单号【" + declaredocxbillno + "】,第" + seq + "行未匹配到单一窗口报关单;\n", id, declaredocxbillno, yemBillno);
} else {
String yemCusdecstatusname = user.getString("yem_cusdecstatusname");//申报状态
Date yemFiedatets = user.getDate("yem_fiedatets");//出口日期
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("exchangeRate",exchangeRate);
if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) {
extracted(Long.valueOf(declaredocx.getPkValue().toString()));
}
SaveServiceHelper.update(declaredocx);
SaveServiceHelper.save(new DynamicObject[]{declaredocx});
//出口报关单分录
DynamicObjectCollection dynamicObjectCollection = declaredocx.getDynamicObjectCollection("yem_es_declare_ec");
//结算币别
DynamicObject yemCurrency = declaredocx.getDynamicObject("yem_currency");
String aLong = "";
if (yemCurrency != null) {
aLong = yemCurrency.getString("number");
}
//单据编号
String declaredocxbillno = declaredocx.getString("billno");
int i = dynamicObjectCollection.size();
String seq = "";
for (DynamicObject object : dynamicObjectCollection) {
//海关商品编码
DynamicObject yemCusboxgoods = object.getDynamicObject("yem_cushscode");
String billno = "";
if (yemCusboxgoods != null) {
billno = yemCusboxgoods.getString("number");
}
//报关名称
String yemDecmatericalname = object.getString("yem_decmatericalname");
//数量
BigDecimal yemCusqty = object.getBigDecimal("yem_cusqty");
//单价
BigDecimal yemCusconsalesprice = object.getBigDecimal("yem_cusconsalesprice");
//金额
BigDecimal yemCusamount = object.getBigDecimal("yem_cusamount");
//拼接KEY + "-" + billno
String yemErroriskey = billno + "-" + yemDecmatericalname + "-" + yemCusqty + "-" + yemCusconsalesprice + "-" + yemCusamount + "-" + aLong;
DynamicObject dynamicObject = maps.get(yemErroriskey);
if (dynamicObject != null) {
i = i - 1;
} else {
seq = seq + object.getString("seq") + ",";
}
}
if (i != 0) {
extracted(data, "出口报关报关单号【" + declaredocxbillno + "】,第" + seq + "行未匹配到单一窗口报关单;\n", id, declaredocxbillno, yemBillno);
} else {
String yemCusdecstatusname = user.getString("yem_cusdecstatusname");//申报状态
Date yemFiedatets = user.getDate("yem_fiedatets");//出口日期
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);
SaveServiceHelper.update(declaredocx);
SaveServiceHelper.save(new DynamicObject[]{declaredocx});
if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) {
extracted(Long.valueOf(declaredocx.getPkValue().toString()));
}
}
}
}